mirror of https://github.com/zulip/zulip.git
api_docs: Document "/invites/{invite_id}/resend" endpoint.
This commit is contained in:
parent
ef88057d2c
commit
faa06497ed
|
@ -95,6 +95,7 @@
|
||||||
* [Get all invitations](/api/get-invites)
|
* [Get all invitations](/api/get-invites)
|
||||||
* [Send invitations](/api/send-invites)
|
* [Send invitations](/api/send-invites)
|
||||||
* [Create a reusable invitation link](/api/create-invite-link)
|
* [Create a reusable invitation link](/api/create-invite-link)
|
||||||
|
* [Resend an email invitation](/api/resend-email-invite)
|
||||||
* [Revoke an email invitation](/api/revoke-email-invite)
|
* [Revoke an email invitation](/api/revoke-email-invite)
|
||||||
* [Revoke a reusable invitation link](/api/revoke-invite-link)
|
* [Revoke a reusable invitation link](/api/revoke-invite-link)
|
||||||
|
|
||||||
|
|
|
@ -431,6 +431,20 @@ def revoke_reusable_invitation_link(client: Client) -> None:
|
||||||
validate_against_openapi_schema(result, "/invites/multiuse/{invite_id}", "delete", "200")
|
validate_against_openapi_schema(result, "/invites/multiuse/{invite_id}", "delete", "200")
|
||||||
|
|
||||||
|
|
||||||
|
@openapi_test_function("/invites/{invite_id}/resend:post")
|
||||||
|
def resend_email_invitation(client: Client) -> None:
|
||||||
|
invites = client.call_endpoint(url="/invites", method="GET")["invites"]
|
||||||
|
email_invites = [s for s in invites if not s["is_multiuse"]]
|
||||||
|
assert len(email_invites) > 0
|
||||||
|
invite_id = email_invites[0]["id"]
|
||||||
|
# {code_example|start}
|
||||||
|
# Resend email invitation.
|
||||||
|
result = client.call_endpoint(url=f"/invites/{invite_id}/resend", method="POST")
|
||||||
|
# {code_example|end}
|
||||||
|
validate_response_result(result)
|
||||||
|
validate_against_openapi_schema(result, "/invites/{invite_id}/resend", "post", "200")
|
||||||
|
|
||||||
|
|
||||||
@openapi_test_function("/users/{user_id}:get")
|
@openapi_test_function("/users/{user_id}:get")
|
||||||
def get_single_user(client: Client) -> None:
|
def get_single_user(client: Client) -> None:
|
||||||
user_id = 8
|
user_id = 8
|
||||||
|
@ -1801,6 +1815,7 @@ def test_invitations(client: Client) -> None:
|
||||||
create_reusable_invitation_link(client)
|
create_reusable_invitation_link(client)
|
||||||
revoke_reusable_invitation_link(client)
|
revoke_reusable_invitation_link(client)
|
||||||
get_invitations(client)
|
get_invitations(client)
|
||||||
|
resend_email_invitation(client)
|
||||||
|
|
||||||
|
|
||||||
def test_the_api(client: Client, nonadmin_client: Client, owner_client: Client) -> None:
|
def test_the_api(client: Client, nonadmin_client: Client, owner_client: Client) -> None:
|
||||||
|
|
|
@ -12794,6 +12794,44 @@ paths:
|
||||||
description: |
|
description: |
|
||||||
A typical failed JSON response for when the invitation link has already
|
A typical failed JSON response for when the invitation link has already
|
||||||
been revoked:
|
been revoked:
|
||||||
|
/invites/{invite_id}/resend:
|
||||||
|
post:
|
||||||
|
operationId: resend-email-invite
|
||||||
|
summary: Resend an email invitation
|
||||||
|
tags: ["invites"]
|
||||||
|
description: |
|
||||||
|
Resend an [email invitation](/help/invite-new-users#send-email-invitations).
|
||||||
|
|
||||||
|
A user can only resend [invitations that they can
|
||||||
|
manage](/help/invite-new-users#manage-pending-invitations).
|
||||||
|
parameters:
|
||||||
|
- name: invite_id
|
||||||
|
in: path
|
||||||
|
description: |
|
||||||
|
The ID of the email invitation to be resent.
|
||||||
|
schema:
|
||||||
|
type: integer
|
||||||
|
example: 1
|
||||||
|
required: true
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
$ref: "#/components/responses/SimpleSuccess"
|
||||||
|
"400":
|
||||||
|
description: Bad request.
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
oneOf:
|
||||||
|
- allOf:
|
||||||
|
- $ref: "#/components/schemas/CodedError"
|
||||||
|
- example:
|
||||||
|
{
|
||||||
|
"result": "error",
|
||||||
|
"msg": "No such invitation",
|
||||||
|
"code": "BAD_REQUEST",
|
||||||
|
}
|
||||||
|
description: |
|
||||||
|
A typical failed JSON response for an invalid email invitation ID:
|
||||||
/register:
|
/register:
|
||||||
post:
|
post:
|
||||||
operationId: register-queue
|
operationId: register-queue
|
||||||
|
|
|
@ -237,8 +237,6 @@ class OpenAPIArgumentsTest(ZulipTestCase):
|
||||||
"/default_stream_groups/create",
|
"/default_stream_groups/create",
|
||||||
"/default_stream_groups/{group_id}",
|
"/default_stream_groups/{group_id}",
|
||||||
"/default_stream_groups/{group_id}/streams",
|
"/default_stream_groups/{group_id}/streams",
|
||||||
# Administer invitations
|
|
||||||
"/invites/{prereg_id}/resend",
|
|
||||||
# Single-stream settings alternative to the bulk endpoint
|
# Single-stream settings alternative to the bulk endpoint
|
||||||
# users/me/subscriptions/properties; probably should just be a
|
# users/me/subscriptions/properties; probably should just be a
|
||||||
# section of the same page.
|
# section of the same page.
|
||||||
|
|
|
@ -181,10 +181,10 @@ def revoke_multiuse_invite(
|
||||||
@require_member_or_admin
|
@require_member_or_admin
|
||||||
@has_request_variables
|
@has_request_variables
|
||||||
def resend_user_invite_email(
|
def resend_user_invite_email(
|
||||||
request: HttpRequest, user_profile: UserProfile, prereg_id: int
|
request: HttpRequest, user_profile: UserProfile, invite_id: int
|
||||||
) -> HttpResponse:
|
) -> HttpResponse:
|
||||||
try:
|
try:
|
||||||
prereg_user = PreregistrationUser.objects.get(id=prereg_id)
|
prereg_user = PreregistrationUser.objects.get(id=invite_id)
|
||||||
except PreregistrationUser.DoesNotExist:
|
except PreregistrationUser.DoesNotExist:
|
||||||
raise JsonableError(_("No such invitation"))
|
raise JsonableError(_("No such invitation"))
|
||||||
|
|
||||||
|
|
|
@ -318,7 +318,7 @@ v1_api_and_json_patterns = [
|
||||||
# invites -> zerver.views.invite
|
# invites -> zerver.views.invite
|
||||||
rest_path("invites", GET=get_user_invites, POST=invite_users_backend),
|
rest_path("invites", GET=get_user_invites, POST=invite_users_backend),
|
||||||
rest_path("invites/<int:invite_id>", DELETE=revoke_user_invite),
|
rest_path("invites/<int:invite_id>", DELETE=revoke_user_invite),
|
||||||
rest_path("invites/<int:prereg_id>/resend", POST=resend_user_invite_email),
|
rest_path("invites/<int:invite_id>/resend", POST=resend_user_invite_email),
|
||||||
# invites/multiuse -> zerver.views.invite
|
# invites/multiuse -> zerver.views.invite
|
||||||
rest_path("invites/multiuse", POST=generate_multiuse_invite_backend),
|
rest_path("invites/multiuse", POST=generate_multiuse_invite_backend),
|
||||||
# invites/multiuse -> zerver.views.invite
|
# invites/multiuse -> zerver.views.invite
|
||||||
|
|
Loading…
Reference in New Issue