{"openapi":"3.1.0","info":{"title":"PUT /api/v1/businesses/users/{user_id}","version":"1.0.0","description":"Update user role"},"servers":[{"url":"https://api.ondayzero.com","description":"Production"}],"paths":{"/api/v1/businesses/users/{user_id}":{"put":{"tags":["businesses"],"summary":"Update user role","description":"Change a user's access level and/or sidebar section visibility in this business.","operationId":"update_user_role_in_business_api_v1_businesses_users__user_id__put","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}},{"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"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusinessUserRoleUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope_UpdateUserRoleInBusinessResponse_"}}}},"400":{"description":"Bad Request - Invalid input","content":{"application/json":{"example":{"detail":"Invalid request parameters"}}}},"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"}}}},"404":{"description":"Not Found - Resource does not exist","content":{"application/json":{"example":{"detail":"Resource not found"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"BusinessUserRoleUpdateRequest":{"properties":{"role":{"$ref":"#/components/schemas/Role","description":"Role: owner, admin, member, or viewer"},"visible_sections":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Visible Sections","description":"Sidebar section keys visible to this user for this business. null = all sections visible (default). Empty list = none visible. Opaque strings owned by the frontend; UI-level visibility only (not a data authorization control). Omit this field entirely to leave visibility unchanged."}},"type":"object","required":["role"],"title":"BusinessUserRoleUpdateRequest","description":"Request schema for updating a user's role in a business.\n\n``visible_sections`` is optional and only updated when explicitly\nincluded in the request body (omit it to leave visibility unchanged;\npass ``null`` to reset to \"all sections visible\").","example":{"role":"accountant","visible_sections":["accounts_payable","banking"]}},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"Role":{"type":"string","enum":["owner","admin","member","viewer","accountant"],"title":"Role","description":"User roles in a business.\n\nSee ROLE_ABILITIES_DOC in app.models.user_businesses for detailed role descriptions.\nValid roles: owner, admin, member, viewer, accountant (legacy)."},"SuccessEnvelope_UpdateUserRoleInBusinessResponse_":{"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/UpdateUserRoleInBusinessResponse"},{"type":"null"}]}},"additionalProperties":true,"type":"object","title":"SuccessEnvelope[UpdateUserRoleInBusinessResponse]"},"UpdateUserRoleInBusinessResponse":{"properties":{"business_id":{"type":"string","title":"Business Id"},"user_id":{"type":"string","title":"User Id"},"new_role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"New Role"},"visible_sections":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Visible Sections"}},"additionalProperties":true,"type":"object","required":["business_id","user_id"],"title":"UpdateUserRoleInBusinessResponse","description":"Envelope data for ``update_user_role_in_business``.\n\nShared by the business-facing member-management endpoint\n(``PUT /businesses/{business_id}/users/{user_id}``) and the admin\ninternal-tools endpoint. ``visible_sections`` reflects the value after\nthe update (unchanged if the request did not include it)."},"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"}},"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"API Token","description":"API token authentication. Format: `Bearer dz_...`"}}},"security":[{"BearerAuth":[]}]}