> For the complete documentation index, see [llms.txt](https://docs.thewalletcrew.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.thewalletcrew.io/api-reference/advanced/invitations.md).

# Invitations

## Activate invitation

> Valid link only; usable once. Marks the e-mail as verified and returns the URL of the page where the invitee chooses a password.

```json
{"openapi":"3.1.1","info":{"title":"Neostore internal API","version":"v1"},"tags":[{"name":"Invitations"}],"servers":[{"url":"https://app.neostore.cloud","description":"Production Server"},{"url":"https://app-qa.neostore.cloud","description":"Staging Server"}],"paths":{"/api/invitations/activate":{"post":{"tags":["Invitations"],"summary":"Activate invitation","description":"Valid link only; usable once. Marks the e-mail as verified and returns the URL of the page where the invitee chooses a password.","requestBody":{"description":"The invitation token.","content":{"application/json":{"schema":{"description":"Request body carrying an invitation link's token.","$ref":"#/components/schemas/InvitationTokenRequest"}},"text/json":{"schema":{"description":"Request body carrying an invitation link's token.","$ref":"#/components/schemas/InvitationTokenRequest"}},"application/*+json":{"schema":{"description":"Request body carrying an invitation link's token.","$ref":"#/components/schemas/InvitationTokenRequest"}}}},"responses":{"200":{"description":"Password page URL returned.","content":{"text/plain":{"schema":{"description":"Where to send the invitee to choose a password.","$ref":"#/components/schemas/ActivateInvitationResponse"}},"application/json":{"schema":{"description":"Where to send the invitee to choose a password.","$ref":"#/components/schemas/ActivateInvitationResponse"}},"text/json":{"schema":{"description":"Where to send the invitee to choose a password.","$ref":"#/components/schemas/ActivateInvitationResponse"}}}},"400":{"description":"`token` is missing.","content":{"text/plain":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"text/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}}}},"409":{"description":"The link is not valid.","content":{"text/plain":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"text/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}}}},"429":{"description":"Too many requests; see `Retry-After`.","content":{"text/plain":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"text/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}}}}}}}},"components":{"schemas":{"InvitationTokenRequest":{"required":["token"],"type":"object","properties":{"token":{"minLength":1,"type":"string","description":"Token from the invitation link. An unusable token resolves to `invalid`, not an error."}},"additionalProperties":false,"description":"Request body carrying an invitation link's token."},"ActivateInvitationResponse":{"required":["ticketUrl"],"type":"object","properties":{"ticketUrl":{"minLength":1,"type":"string","description":"URL of the page where the invitee chooses a password. Valid for 15 minutes."}},"additionalProperties":false,"description":"Where to send the invitee to choose a password."},"ProblemDetails":{"type":"object","properties":{"type":{"type":["null","string"]},"title":{"type":["null","string"]},"status":{"type":["null","integer"],"format":"int32"},"detail":{"type":["null","string"]},"instance":{"type":["null","string"]}},"additionalProperties":{}},"HttpValidationProblemDetails":{"type":"object","allOf":[{"$ref":"#/components/schemas/ProblemDetails"}],"properties":{"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}},"additionalProperties":{}}}}}
```

## Resend invitation

> Accepts a valid or expired link. Issues a new link, invalidating all previous ones, and e-mails it to the invitee.

```json
{"openapi":"3.1.1","info":{"title":"Neostore internal API","version":"v1"},"tags":[{"name":"Invitations"}],"servers":[{"url":"https://app.neostore.cloud","description":"Production Server"},{"url":"https://app-qa.neostore.cloud","description":"Staging Server"}],"paths":{"/api/invitations/resend":{"post":{"tags":["Invitations"],"summary":"Resend invitation","description":"Accepts a valid or expired link. Issues a new link, invalidating all previous ones, and e-mails it to the invitee.","requestBody":{"description":"The invitation token.","content":{"application/json":{"schema":{"description":"Request body carrying an invitation link's token.","$ref":"#/components/schemas/InvitationTokenRequest"}},"text/json":{"schema":{"description":"Request body carrying an invitation link's token.","$ref":"#/components/schemas/InvitationTokenRequest"}},"application/*+json":{"schema":{"description":"Request body carrying an invitation link's token.","$ref":"#/components/schemas/InvitationTokenRequest"}}}},"responses":{"204":{"description":"New link issued and sent."},"400":{"description":"`token` is missing.","content":{"text/plain":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"text/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}}}},"409":{"description":"Already activated, or the link can no longer be renewed.","content":{"text/plain":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"text/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}}}},"429":{"description":"Too many requests; see `Retry-After`.","content":{"text/plain":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"text/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}}}}}}}},"components":{"schemas":{"InvitationTokenRequest":{"required":["token"],"type":"object","properties":{"token":{"minLength":1,"type":"string","description":"Token from the invitation link. An unusable token resolves to `invalid`, not an error."}},"additionalProperties":false,"description":"Request body carrying an invitation link's token."},"ProblemDetails":{"type":"object","properties":{"type":{"type":["null","string"]},"title":{"type":["null","string"]},"status":{"type":["null","integer"],"format":"int32"},"detail":{"type":["null","string"]},"instance":{"type":["null","string"]}},"additionalProperties":{}},"HttpValidationProblemDetails":{"type":"object","allOf":[{"$ref":"#/components/schemas/ProblemDetails"}],"properties":{"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}},"additionalProperties":{}}}}}
```

## Get invitation status

> Anonymous; the token in the body is the credential. Opening a link that resolves to a user is recorded in the tenant's user events.

```json
{"openapi":"3.1.1","info":{"title":"Neostore internal API","version":"v1"},"tags":[{"name":"Invitations"}],"servers":[{"url":"https://app.neostore.cloud","description":"Production Server"},{"url":"https://app-qa.neostore.cloud","description":"Staging Server"}],"paths":{"/api/invitations/status":{"post":{"tags":["Invitations"],"summary":"Get invitation status","description":"Anonymous; the token in the body is the credential. Opening a link that resolves to a user is recorded in the tenant's user events.","requestBody":{"description":"The invitation token.","content":{"application/json":{"schema":{"description":"Request body carrying an invitation link's token.","$ref":"#/components/schemas/InvitationTokenRequest"}},"text/json":{"schema":{"description":"Request body carrying an invitation link's token.","$ref":"#/components/schemas/InvitationTokenRequest"}},"application/*+json":{"schema":{"description":"Request body carrying an invitation link's token.","$ref":"#/components/schemas/InvitationTokenRequest"}}}},"responses":{"200":{"description":"State resolved; an unusable link returns `state: invalid`.","content":{"text/plain":{"schema":{"description":"What an invitation link currently means.","$ref":"#/components/schemas/InvitationStatusResponse"}},"application/json":{"schema":{"description":"What an invitation link currently means.","$ref":"#/components/schemas/InvitationStatusResponse"}},"text/json":{"schema":{"description":"What an invitation link currently means.","$ref":"#/components/schemas/InvitationStatusResponse"}}}},"400":{"description":"`token` is missing.","content":{"text/plain":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"text/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}}}},"429":{"description":"Too many requests; see `Retry-After`.","content":{"text/plain":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"text/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}}}}}}}},"components":{"schemas":{"InvitationTokenRequest":{"required":["token"],"type":"object","properties":{"token":{"minLength":1,"type":"string","description":"Token from the invitation link. An unusable token resolves to `invalid`, not an error."}},"additionalProperties":false,"description":"Request body carrying an invitation link's token."},"InvitationStatusResponse":{"required":["state"],"type":"object","properties":{"state":{"minLength":1,"type":"string","description":"`valid`: latest link, ready to activate. `expired`: latest link timed out and no password set; a new link can be sent.\n            `used`: already activated. `invalid`: unusable, e.g. access removed or a newer link sent."},"tenantName":{"type":["null","string"],"description":"Tenant display name. Null when `state` is `invalid`."},"role":{"type":["null","string"],"description":"Role granted on the tenant. Null when `state` is `invalid`."},"maskedEmail":{"type":["null","string"],"description":"Invitee e-mail with the local part hidden, e.g. `j***@brand.com`. Null when `state` is `invalid`."},"language":{"type":["null","string"],"description":"Invitee's stored back-office language. Null when none is stored or `state` is `invalid`."}},"additionalProperties":false,"description":"What an invitation link currently means."},"ProblemDetails":{"type":"object","properties":{"type":{"type":["null","string"]},"title":{"type":["null","string"]},"status":{"type":["null","integer"],"format":"int32"},"detail":{"type":["null","string"]},"instance":{"type":["null","string"]}},"additionalProperties":{}},"HttpValidationProblemDetails":{"type":"object","allOf":[{"$ref":"#/components/schemas/ProblemDetails"}],"properties":{"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}},"additionalProperties":{}}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.thewalletcrew.io/api-reference/advanced/invitations.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
