{"openapi":"3.1.0","info":{"title":"GET /api/v1/agents/sops/suggestions","version":"1.0.0","description":"Suggested SOPs"},"servers":[{"url":"https://api.ondayzero.com","description":"Production"}],"paths":{"/api/v1/agents/sops/suggestions":{"get":{"tags":["agents"],"summary":"Suggested SOPs","description":"SOPs worth writing for this business, ranked, from what it has connected (bank and card feeds, Shopify, Stripe, QuickBooks, payroll), its bill and invoice volume, open periods, and the SOPs and roles it already has. Each names a starter template and an owner role; already_have marks one a draft or live SOP covers.","operationId":"agents_sops_suggestions","parameters":[{"name":"include_existing","in":"query","required":false,"schema":{"type":"boolean","description":"Also return suggestions an SOP already covers","default":false,"title":"Include Existing"},"description":"Also return suggestions an SOP already covers"},{"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/SuccessEnvelope_SopSuggestionListResponse_"}}}},"401":{"description":"Unauthorized - Missing or expired token, an MCP OAuth token used against the REST API, or no access to this business","content":{"application/json":{"example":{"error":"unauthorized","message":"Authentication required","code":"AUTH_001","request_id":"3f0e7c2a-9b4d-4e1a-8c6f-2d5b7a1e9c30"},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden - Insufficient permissions","content":{"application/json":{"example":{"error":"forbidden","message":"You don't have permission to access this resource","code":"AUTH_002","request_id":"3f0e7c2a-9b4d-4e1a-8c6f-2d5b7a1e9c30"},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"validation_error","message":"Validation failed: amount: Input should be a valid integer","errors":{"amount":"Input should be a valid integer"},"code":"GEN_002","request_id":"3f0e7c2a-9b4d-4e1a-8c6f-2d5b7a1e9c30"}}}}},"x-fastapi-operation-id":"agents_sops_suggestions_api_v1_agents_sops_suggestions_get"}}},"components":{"schemas":{"SopSuggestionListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/SopSuggestionOut"},"type":"array","title":"Items"}},"type":"object","required":["items"],"title":"SopSuggestionListResponse"},"SopSuggestionOut":{"properties":{"key":{"type":"string","title":"Key"},"title":{"type":"string","title":"Title"},"why":{"type":"string","title":"Why","description":"One line: the business signal behind it."},"template_key":{"type":"string","enum":["client_service","month_end_close","weekly_ap","daily_bank_feed","ar_collections","blank"],"title":"Template Key"},"owner_role":{"type":"string","title":"Owner Role","description":"Suggested owner role, as an SOP Owner line names it."},"owner_role_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner Role Name","description":"The team role that fits the owner, when there is one."},"already_have":{"type":"boolean","title":"Already Have","description":"A draft or live SOP already covers it.","default":false},"sop_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sop Id","description":"That SOP, when already_have."}},"type":"object","required":["key","title","why","template_key","owner_role"],"title":"SopSuggestionOut","description":"An SOP worth writing for this business, from what it has connected and does."},"SuccessEnvelope_SopSuggestionListResponse_":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"},"code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code"},"data":{"anyOf":[{"$ref":"#/components/schemas/SopSuggestionListResponse"},{"type":"null"}]}},"additionalProperties":true,"type":"object","title":"SuccessEnvelope[SopSuggestionListResponse]"},"ErrorResponse":{"title":"ErrorResponse","type":"object","description":"Envelope returned by every non-2xx response. Branch on `code` (stable) rather than `message` (human-readable, may change).","required":["error","message","code"],"properties":{"error":{"type":"string","description":"Error category: `validation_error`, `unauthorized`, `forbidden`, `not_found`, `conflict`, `rate_limited`, `server_error`, or `service_unavailable`."},"message":{"type":"string","description":"Human-readable explanation, safe to show to end users."},"code":{"type":"string","description":"Stable machine-readable code in `CATEGORY_NNN` form (e.g. `NOT_FOUND_006`, `AUTH_010`, `GEN_002`)."},"request_id":{"type":"string","description":"Correlation id for support requests. Echoes the `x-request-id` request header when one was supplied."},"errors":{"type":"object","additionalProperties":{"type":"string"},"description":"Field-level validation messages keyed by field name. Present on 400/422 validation failures only."}}}},"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"API Token","description":"API token authentication. Format: `Bearer dz_...`"}}},"security":[{"BearerAuth":[]}]}