Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(organizations): create endpoints to handle organization invitati…
…ons TASK-969 (#5395) ### 📣 Summary Implemented endpoints for organization invitations, allowing organization owners to invite existing users or unregistered users to join their organization. The invitee can either accept or decline the invitation. If the invitee accepts, their assets will be transferred to the organization. ### 📖 Description - Organization owners can send invitations to users (both registered and unregistered) via email or username. - The invitee can accept or decline the invitation. If accepted, the invitee's assets will be transferred to the organization owner. > POST https://[kpi]/api/v2/organizations/org_12345/invites/ - Create organization invites for registered and unregistered users. - Set the role for which the user is being invited - (Choices: `member`, `admin`). Default is `member`. Payload: ``` { "invitees": ["demo14", "demo13@demo13.com", "demo25@demo25.com"], "role": "admin" } ``` Response: ``` [ { "url": "http://kf.kobo.local/api/v2/organizations/org_12345/invites/7a4f9a3b-9112-43cc-a6ae-bb4a6583b4b2/", "invited_by": "http://kf.kobo.local/api/v2/users/gtl_raj/", "status": "pending", "invitee_role": "admin", "created": "2025-01-06T13:01:40Z", "modified": "2025-01-06T13:01:40Z", "invitee": "demo14" }, { "url": "http://kf.kobo.local/api/v2/organizations/org_12345/invites/6746121a-7a87-4c2d-9994-85e38d8cff65/", "invited_by": "http://kf.kobo.local/api/v2/users/gtl_raj/", "status": "pending", "invitee_role": "admin", "created": "2025-01-06T13:01:40Z", "modified": "2025-01-06T13:01:40Z", "invitee": "demo13" }, { "url": "http://kf.kobo.local/api/v2/organizations/org_12345/invites/2af706a9-4f67-4145-a0d3-8d66fbc77a19/", "invited_by": "http://kf.kobo.local/api/v2/users/gtl_raj/", "status": "pending", "invitee_role": "admin", "created": "2025-01-06T13:01:40Z", "modified": "2025-01-06T13:01:40Z", "invitee": "demo25@demo25.com" } ] ``` > GET https://[kpi]/api/v2/organizations/org_12345/invites/ Response: ``` { "count": 3, "next": null, "previous": null, "results": [ { "url": "http://kf.kobo.local/api/v2/organizations/org_12345/invites/6746121a-7a87-4c2d-9994-85e38d8cff65/", "invited_by": "http://kf.kobo.local/api/v2/users/gtl_raj/", "status": "pending", "invitee_role": "admin", "created": "2025-01-06T13:01:40Z", "modified": "2025-01-06T13:01:40Z", "invitee": "demo13" }, { "url": "http://kf.kobo.local/api/v2/organizations/org_12345/invites/7a4f9a3b-9112-43cc-a6ae-bb4a6583b4b2/", "invited_by": "http://kf.kobo.local/api/v2/users/gtl_raj/", "status": "pending", "invitee_role": "admin", "created": "2025-01-06T13:01:40Z", "modified": "2025-01-06T13:01:40Z", "invitee": "demo14" }, { "url": "http://kf.kobo.local/api/v2/organizations/org_12345/invites/2af706a9-4f67-4145-a0d3-8d66fbc77a19/", "invited_by": "http://kf.kobo.local/api/v2/users/gtl_raj/", "status": "pending", "invitee_role": "admin", "created": "2025-01-06T13:01:40Z", "modified": "2025-01-06T13:01:40Z", "invitee": "demo25@demo25.com" } ] } ``` > PATCH https://[kpi]/api/v2/organizations/org_12345/invites/7a4f9a3b-9112-43cc-a6ae-bb4a6583b4b2/ - Update an organization invite to accept, decline, cancel, expire, or resend. Payload: ``` { "status": "accepted" } ``` Response: ``` { "url": "http://kf.kobo.local/api/v2/organizations/org_12345/invites/7a4f9a3b-9112-43cc-a6ae-bb4a6583b4b2/", "invited_by": "http://kf.kobo.local/api/v2/users/gtl_raj/", "status": "accepted", "invitee_role": "admin", "created": "2025-01-06T13:01:40Z", "modified": "2025-01-06T13:01:40Z", "invitee": "demo14" } ``` > DELETE https://[kpi]/api/v2/organizations/org_12345/invites/7a4f9a3b-9112-43cc-a6ae-bb4a6583b4b2/ - Organization owner or admin can delete an organization invite. Response: 204 --------- Co-authored-by: Olivier Leger <olivierleger@gmail.com>
- Loading branch information