# Invitations

## GET /v1/organization/invitations

> List organization invitations. Requires the 'invitations:read' scope.

```json
{"openapi":"3.0.1","info":{"title":"Opine API","version":"1.0.0"},"servers":[{"url":"https://api.tryopine.com","description":"Production server"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-Key","description":"API key for authentication"}},"schemas":{"ListOrganizationInvitations200ResponseBody":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"inviterUserId":{"nullable":true,"type":"number"},"inviteeEmail":{"type":"string"},"status":{"default":"PENDING","type":"string","enum":["PENDING","ACCEPTED","REJECTED","REVOKED"]},"role":{"default":"COLLABORATOR","type":"string","enum":["ADMIN","MANAGER","EDITOR","COLLABORATOR"]},"organizationId":{"type":"number"}},"required":["id","createdAt","updatedAt","expiresAt","inviterUserId","inviteeEmail","status","role","organizationId"],"additionalProperties":false}},"limit":{"type":"number"},"offset":{"type":"number"},"totalCount":{"type":"number"}},"required":["items","limit","offset","totalCount"],"additionalProperties":false},"ErrorMessage":{"type":"object","properties":{"message":{"type":"string"}},"additionalProperties":false}}},"paths":{"/v1/organization/invitations":{"get":{"operationId":"listOrganizationInvitations","responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListOrganizationInvitations200ResponseBody"}}}},"500":{"description":"An unknown error occurred, trying again might help.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}},"description":"List organization invitations. Requires the 'invitations:read' scope.","tags":["organization-invitation"],"parameters":[{"name":"limit","in":"query","description":"The number of results to return","required":false,"schema":{"type":"number","minimum":1,"maximum":1000,"default":100}},{"name":"offset","in":"query","description":"The number of results to skip","required":false,"schema":{"type":"number","minimum":0,"default":0}},{"name":"status","in":"query","description":"The status of the invitations to list","required":false,"schema":{"type":"string","enum":["PENDING","ACCEPTED","REJECTED","REVOKED"]}},{"name":"includeExpired","in":"query","description":"Whether to include expired invitations in the list","required":false,"schema":{"type":"boolean","default":false}}]}}}}
```

## Invite User

> Invite a user to join an organization. Requires the 'invitations:write' scope.

```json
{"openapi":"3.0.1","info":{"title":"Opine API","version":"1.0.0"},"servers":[{"url":"https://api.tryopine.com","description":"Production server"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-Key","description":"API key for authentication"}},"schemas":{"InviteUserToOrganizationRequestBody":{"type":"object","properties":{"inviteeEmail":{"description":"The email of the user to invite","type":"string"},"role":{"description":"The role of the user to invite","type":"string","enum":["ADMIN","MANAGER","EDITOR","COLLABORATOR"]}},"required":["inviteeEmail","role"]},"InviteUserToOrganization200ResponseBody":{"type":"object","properties":{"id":{"type":"number"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"inviterUserId":{"nullable":true,"type":"number"},"inviteeEmail":{"type":"string"},"status":{"default":"PENDING","type":"string","enum":["PENDING","ACCEPTED","REJECTED","REVOKED"]},"role":{"default":"COLLABORATOR","type":"string","enum":["ADMIN","MANAGER","EDITOR","COLLABORATOR"]},"organizationId":{"type":"number"}},"required":["id","createdAt","updatedAt","expiresAt","inviterUserId","inviteeEmail","status","role","organizationId"],"additionalProperties":false},"ErrorMessage":{"type":"object","properties":{"message":{"type":"string"}},"additionalProperties":false}}},"paths":{"/v1/organization/invitations":{"post":{"operationId":"inviteUserToOrganization","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteUserToOrganizationRequestBody"}}}},"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteUserToOrganization200ResponseBody"}}}},"500":{"description":"An unknown error occurred, trying again might help.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}},"summary":"Invite User","description":"Invite a user to join an organization. Requires the 'invitations:write' scope.","tags":["organization-invitation"]}}}}
```

## Revoke Invitation

> Revoke an invitation to join an organization. Requires the 'invitations:write' scope.

```json
{"openapi":"3.0.1","info":{"title":"Opine API","version":"1.0.0"},"servers":[{"url":"https://api.tryopine.com","description":"Production server"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-Key","description":"API key for authentication"}},"schemas":{"RevokeOrganizationInvitation200ResponseBody":{"type":"object","properties":{"id":{"description":"The ID of the invitation that was revoked","type":"number"}},"required":["id"],"additionalProperties":false},"ErrorMessage":{"type":"object","properties":{"message":{"type":"string"}},"additionalProperties":false}}},"paths":{"/v1/organization/invitations/{id}/revoke":{"post":{"operationId":"revokeOrganizationInvitation","responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RevokeOrganizationInvitation200ResponseBody"}}}},"500":{"description":"An unknown error occurred, trying again might help.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorMessage"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"number","minimum":1},"description":"The ID of the invitation to revoke"}],"summary":"Revoke Invitation","description":"Revoke an invitation to join an organization. Requires the 'invitations:write' scope.","tags":["organization-invitation"]}}}}
```
