8 endpoints.
| Method | Path | Summary |
|---|---|---|
GET | /api/communities/{communityId}/join-requests/apply/form | What a visitor sees on the join tab — the PUBLISHED description and, when the plan and the admin allow, the form |
GET | /api/communities/{communityId}/join-requests/apply/me | The signed-in person's application state here — verified, membership, latest request, draft, whether they can apply |
POST | /api/communities/{communityId}/join-requests/apply/me/attachments | Upload one file for a document requirement of the published form (?documentId=…; multipart field file) |
DELETE | /api/communities/{communityId}/join-requests/apply/me/attachments/{attachmentId} | Remove a file from the signed-in applicant's draft |
PUT | /api/communities/{communityId}/join-requests/apply/me/draft | Autosave the application draft (details, answers, step) |
POST | /api/communities/{communityId}/join-requests/apply/me/submit | Submit the application (details, answers, acceptedTerms, formVersion) |
POST | /api/communities/{communityId}/join-requests/apply/me/withdraw | Withdraw the signed-in person's request while it is under review |
POST | /api/communities/{communityId}/join-requests/apply/verify-email | Finish the sign-up from the emailed link — the link holder types name, phone and password; creates the account (verified) and signs them in |
GET /api/communities/{communityId}/join-requests/apply/formAuth: Bearer JWT required.
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
communityId | path | yes | string | — |
Responses
| Status | Description | Body |
|---|---|---|
200 | description, postSubmitMessage, form (null = the plain form), version | — |
GET /api/communities/{communityId}/join-requests/apply/meAuth: Bearer JWT required.
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
communityId | path | yes | string | — |
Responses
| Status | Description | Body |
|---|---|---|
200 | ApplicantState | — |
POST /api/communities/{communityId}/join-requests/apply/me/attachmentsAuth: Bearer JWT required.
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
communityId | path | yes | string | — |
Responses
| Status | Description | Body |
|---|---|---|
201 | The stored file (id, documentId, originalName, mimeType, sizeBytes) | — |
400 | JOIN_DOCUMENT_FILE_MISSING / JOIN_DOCUMENT_UNKNOWN / JOIN_DOCUMENT_TYPE_NOT_ALLOWED / JOIN_DOCUMENT_UPLOAD_INVALID | — |
409 | JOIN_DOCUMENT_TOO_MANY_FILES / JOIN_REQUEST_ALREADY_PENDING / ALREADY_A_COMMUNITY_MEMBER | — |
413 | JOIN_DOCUMENT_TOO_LARGE | — |
507 | JOIN_DOCUMENT_STORAGE_FULL | — |
DELETE /api/communities/{communityId}/join-requests/apply/me/attachments/{attachmentId}Auth: Bearer JWT required.
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
communityId | path | yes | string | — |
attachmentId | path | yes | string | — |
Responses
| Status | Description | Body |
|---|---|---|
204 | Removed | — |
404 | JOIN_DOCUMENT_NOT_FOUND | — |
PUT /api/communities/{communityId}/join-requests/apply/me/draftAuth: Bearer JWT required.
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
communityId | path | yes | string | — |
Responses
| Status | Description | Body |
|---|---|---|
200 | ApplicantState | — |
400 | JOIN_ANSWER_INVALID with field answers. | — |
409 | ALREADY_A_COMMUNITY_MEMBER / JOIN_REQUEST_ALREADY_PENDING | — |
POST /api/communities/{communityId}/join-requests/apply/me/submitAuth: Bearer JWT required.
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
communityId | path | yes | string | — |
Responses
| Status | Description | Body |
|---|---|---|
200 | ApplicantState with the PENDING request | — |
400 | JOIN_FORM_REQUIRED_ANSWER_MISSING / JOIN_FORM_REQUIRED_DOCUMENT_MISSING (ids), JOIN_ANSWER_INVALID (field), TERMS_ACCEPTANCE_REQUIRED, JOIN_REQUEST_* input codes | — |
403 | EMAIL_NOT_VERIFIED / JOIN_REQUEST_MEMBER_BANNED | — |
409 | JOIN_REQUEST_ALREADY_PENDING / ALREADY_A_COMMUNITY_MEMBER / JOIN_REQUEST_COOLDOWN_ACTIVE (reapplyAfter) / JOIN_FORM_VERSION_CHANGED | — |
POST /api/communities/{communityId}/join-requests/apply/me/withdrawAuth: Bearer JWT required.
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
communityId | path | yes | string | — |
Responses
| Status | Description | Body |
|---|---|---|
200 | ApplicantState | — |
404 | JOIN_REQUEST_NOT_FOUND — nothing under review | — |
POST /api/communities/{communityId}/join-requests/apply/verify-emailAuth: Bearer JWT required.
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
communityId | path | yes | string | — |
Responses
| Status | Description | Body |
|---|---|---|
200 | token, refreshToken, user | — |
400 | VERIFY_TOKEN_INVALID / VERIFY_TOKEN_EXPIRED; JOIN_REQUEST_* field codes or APPLICANT_PASSWORD_INVALID (these do not use up the link) | — |
409 | ACCOUNT_EXISTS_SIGN_IN — an account was created for this address meanwhile | — |