Field | Value | Req/Default | Notes |
---|---|---|---|
id |
id | Auto-generated | Invitation’s ID. Always starts with “nvt_”. Example: |
invitation_type |
org , preverify , referral , request |
Required | Invitation's type. |
created_at |
time_t | Auto-generated | Time this invitation was created. |
email |
string | Required | |
expires_at |
time_t | +30 days |
Time after which this invitation will be automatically deleted. |
invited_at |
time_t | Auto-generated | Time this invitation was sent. |
inviting_user_id |
user_id | Optional | ID of User initiating the invitation (n/a for type `request`). |
locale |
string | Realm's default |
Locale to use for outbound email. |
realm_id |
realm_id | Required | ID of Realm this Invitation belongs to. |
request |
hash | Hash of request attributes to add to Event. See notes. |
|
token |
string | Auto-generated | Token to be used to accept this invitation. |
|
|||
org_id |
org_id | Optional | ID of Org the user will be added to when accepting the invitation. |
permissions |
string | Optional | One, or an array of, permission(s) to be granted to the user when accepting the invitation. |
|
|||
auth_provider_id |
auth_provider_id | Optional | When present, ID of AuthProvider used to build the OAuth login URL in the outbound email. When blank, URL is normal signup link. |
org
Represents a user who has been invited to join a specific Org by one of the Org’s admin users. Upon acceptance, the invited user will be automatically added to the Org with the specified permissions. If the accepting user already has a profile (perhaps with a different email), the new membership will be added to the existing profile. Created by LoginRocket in multi_user account mode as part of team management.
preverify
Represents a user who initiated a signup to your app and needs to verify their email address. Created by LoginRocket when signup mode is ‘open’ /and/ email verifications are ‘preverify’.
referral
Represents a user who has been invited by another user (inviting_user_id
) to join your app. Created by LoginRocket in single_user account mode when a user invites another person.
request
Represents a user who is requesting access to your app. Created by LoginRocket when signup mode is ‘invitation’ (request invites).
See Permissions under Memberships for details.
Each invitation_type creates its own scoped set of of events. For example, type request
will create invitation.request.*
events.
Invitations will trigger an invitation.*.expired
event upon expiration. If for some reason multiple invitations exist for a single user, when one is accepted, duplicates will be deleted without triggering an event.
Other events are as indicated below.
Method | Permissions |
---|---|
List, Get | read |
Create, Update, Invite, Delete | write |
List all invitations for a realm or an org.
Param | Value | Default | |
---|---|---|---|
invitation_type |
string | Filter by invitation_type | |
org_id |
org_id | Filter by org_id | |
state |
pending , invited |
Filter by not-yet-invited / invited | |
email |
Filter by invitee email | ||
after |
invitation_id | ID of the last invitation you've seen | |
max_results |
integer | 100 |
Range: 1-1000 |
sort |
id , email |
id |
|
direction |
asc , desc |
asc |
GET /v2/invitations?invitation_type=request
var resp = await authrocket.invitations.all({invitation_type: 'request'})
$res = $authrocket->invitations->all(['invitation_type' => 'request']);
AuthRocket::Invitation.all invitation_type: 'request'
Status: 200
{ "more_results" : false,
"collection" : [
{ "id" : "nvt_0v1zWp1IEkl40q69WIQRaN",
"email" : "jane@example.com",
"invitation_type" : "request",
"realm_id" : "rl_0v1zTHXhtNgmDaXaDYSAqx",
"object" : "invitation",
"created_at" : 1399882358,
"expires_at" : 1402474358,
"invited_at" : null,
"token" : "nvt_0v1zWp1IEkl40q69WIQRaN"
}
]
}
console.log(resp.results)
[ { id: "nvt_0v1zWp1IEkl40q69WIQRaN",
email: "jane@example.com",
invitation_type: "request",
realm_id: "rl_0v1zTHXhtNgmDaXaDYSAqx",
object: "invitation",
created_at: 1399882358,
expires_at: 1402474358,
invited_at: null,
token: "nvt_0v1zWp1IEkl40q69WIQRaN"
}
]
var_dump($res->results);
array(1) {
[0]=>
array(9) {
["id"]=> string(26) "nvt_0v1zWp1IEkl40q69WIQRaN"
["email"]=> string(16) "jane@example.com"
["invitation_type"]=> string(7) "request"
["realm_id"]=> string(26) "rl_0v1zTHXhtNgmDaXaDYSAqx"
["object"]=> string(10) "invitation"
["created_at"]=> 1399882358
["expires_at"]=> 1402474358
["invited_at"]=> null
["token"]=> string(26) "nvt_0v1zWp1IEkl40q69WIQRaN"
}
}
[#<AuthRocket::Invitation:0x3fc218640acc>
id: "nvt_0v1zWp1IEkl40q69WIQRaN",
attribs: {
"email"=>"jane@example.com",
"invitation_type"=>"request",
"realm_id"=>"rl_0v1zTHXhtNgmDaXaDYSAqx",
"object"=>"invitation",
"created_at"=>1399882358,
"expires_at"=>1402474358,
"invited_at"=>nil,
"token"=>"nvt_0v1zWp1IEkl40q69WIQRaN"
},
metadata: {
"more_results"=>false
}
]
Retrieve a specific invitation.
GET /v2/invitations/:invitation_id
var resp = await authrocket.invitations.find('nvt_0v1zWp1IEkl40q69WIQRaN')
$res = $authrocket->invitations->find('nvt_0v1zWp1IEkl40q69WIQRaN');
invitation = AuthRocket::Invitation.find 'nvt_0v1zWp1IEkl40q69WIQRaN'
Status: 200
{ "id" : "nvt_0v1zWp1IEkl40q69WIQRaN",
"email" : "jane@example.com",
"invitation_type" : "request",
"realm_id" : "rl_0v1zTHXhtNgmDaXaDYSAqx",
"object" : "invitation",
"created_at" : 1399882358,
"expires_at" : 1402474358,
"invited_at" : null,
"token" : "nvt_0v1zWp1IEkl40q69WIQRaN"
}
console.log(resp.results)
{ id: "nvt_0v1zWp1IEkl40q69WIQRaN",
email: "jane@example.com",
invitation_type: "request",
realm_id: "rl_0v1zTHXhtNgmDaXaDYSAqx",
object: "invitation",
created_at: 1399882358,
expires_at: 1402474358,
invited_at: null,
token: "nvt_0v1zWp1IEkl40q69WIQRaN"
}
var_dump($res->fields);
array(9) {
["id"]=> string(26) "nvt_0v1zWp1IEkl40q69WIQRaN"
["email"]=> string(16) "jane@example.com"
["invitation_type"]=> string(7) "request"
["realm_id"]=> string(26) "rl_0v1zTHXhtNgmDaXaDYSAqx"
["object"]=> string(10) "invitation"
["created_at"]=> 1399882358
["expires_at"]=> 1402474358
["invited_at"]=> null
["token"]=> string(26) "nvt_0v1zWp1IEkl40q69WIQRaN"
}
#<AuthRocket::Invitation:0x3fc218640acc>
id: "nvt_0v1zWp1IEkl40q69WIQRaN",
attribs: {
"email"=>"jane@example.com",
"invitation_type"=>"request",
"realm_id"=>"rl_0v1zTHXhtNgmDaXaDYSAqx",
"object"=>"invitation",
"created_at"=>1399882358,
"expires_at"=>1402474358,
"invited_at"=>nil,
"token"=>"nvt_0v1zWp1IEkl40q69WIQRaN"
}
Create a new invitation.
POST /v2/invitations
{ "invitation" :
{ "invitation_type" : "org",
"org_id" : "org_0v1zWRHJVm7JY8vUqDRuyx",
"email" : "jane@example.com"
"permissions": ["forum:member"]
}
}
var resp = await authrocket.invitations.create({
invitation_type: "org",
org_id: "org_0v1zWRHJVm7JY8vUqDRuyx",
email: "jane@example.com",
permissions: ["forum:member"]
})
$res = $authrocket->invitations->create([
"invitation_type" => "org",
"org_id" => "org_0v1zWRHJVm7JY8vUqDRuyx",
"email" => "jane@example.com",
"permissions" => ["forum:member"]
]);
invitation = AuthRocket::Invitation.create(
invitation_type: "org",
org_id: "org_0v1zWRHJVm7JY8vUqDRuyx",
email: "jane@example.com",
permissions: ["forum:member"]
)
Status: 201, with same body as Get an Invitation.
On success, returns same object as Get an Invitation.
On failure, returns an object with errors:
resp.hasErrors()
// => true
console.log(resp.errors)
// => ["Org not found"]
On success, returns same object as Get an Invitation.
On failure, returns an object with errors:
$res->hasErrors();
// => true
var_dump($res->errors);
array(1) {
[0]=> string(14) "Org not found"
}
On success, returns same object as Get an Invitation.
On failure, returns an object without an id, but with errors:
# => #<AuthRocket::Invitation:0x3fde5fa18df8> id: nil, ...
invitation.errors?
# => true
invitation.valid?
# => false
invitation.errors
# => ["Org not found"]
Triggers an invitation.*.created
event.
Update an invitation. Only provided attributes are changed.
Only expires_at
and permissions
may be changed. In other cases, replace the invitation instead.
PUT /v2/invitations/:invitation_id
{ "invitation" :
{ "permissions" : ["forum:admin", "forum:moderator"]
}
}
Permissions may also be submitted as a single string, space delimited (but will be returned as an array):
{ "invitation" :
{ "permissions" : "forum:admin forum:moderator"
}
}
var resp = await authrocket.invitations.update('nvt_0v1zWp1IEkl40q69WIQRaN', {
permissions: ["forum:admin", "forum:moderator"]
})
$res = $authrocket->invitations->update('nvt_0v1zWp1IEkl40q69WIQRaN', [
"permissions" => ["forum:admin", "forum:moderator"]
]);
invitation = AuthRocket::Invitation.find 'nvt_0v1zWp1IEkl40q69WIQRaN'
invitation.update permissions: ["forum:admin", "forum:moderator"]
Status: 200, with same body as Get an Invitation.
On success, returns same object as Get an Invitation.
On failure, returns an object with errors:
resp.hasErrors()
// => true
console.log(resp.errors)
// => ["Org not found"]
On success, returns same object as Get an Invitation.
On failure, returns an object with errors:
$res->hasErrors();
// => true
var_dump($res->errors);
array(1) {
[0]=> string(14) "Org not found"
}
On success, returns same object as Get an Invitation.
On failure, returns false:
# => false
invitation.errors
# => ["Org not found"]
Triggers an invitation.*.updated
event.
Triggers sending of the actual invitation. If previously sent, will resend. Uses an event trigger to perform the actual send.
POST /v2/invitations/:invitation_id/invite
var resp = await authrocket.invitations.invite('nvt_0v1zWp1IEkl40q69WIQRaN')
$res = $authrocket->invitations->invite('nvt_0v1zWp1IEkl40q69WIQRaN');
invitation = AuthRocket::Invitation.find 'nvt_0v1zWp1IEkl40q69WIQRaN'
invitation.invite
Status: 200, with same body as Get an Invitation.
On success, returns same object as Get an Invitation.
On failure, returns an object with errors:
resp.hasErrors()
// => true
console.log(resp.errors)
// => ["No hook available to send an invitation"]
On success, returns same object as Get an Invitation.
On failure, returns an object with errors:
$res->hasErrors();
// => true
var_dump($res->errors);
array(1) {
[0]=> string(39) "No hook available to send an invitation"
}
On success, returns same object as Get an Invitation.
On failure, returns false:
# => false
invitation.errors
# => ["No hook available to send an invitation"]
Triggers an invitation.*.invited
event.
Deletes (immediately expires) an invitation.
DELETE /v2/invitations/:invitation_id
var resp = await authrocket.invitations.delete('nvt_0v1zWp1IEkl40q69WIQRaN')
$res = $authrocket->invitations->delete('nvt_0v1zWp1IEkl40q69WIQRaN');
invitation = AuthRocket::Invitation.find 'nvt_0v1zWp1IEkl40q69WIQRaN'
invitation.delete
Status: 204
On success, returns an object with no errors.
On failure, returns an object with errors.
resp.hasErrors()
// => true
On success, returns an object with no errors.
On failure, returns an object with errors.
$res->hasErrors();
// => true
On success, returns original object.
On failure, returns false.
Triggers an invitation.*.expired
event.
Accepts an invitation for the given user using the token
.
When Invitation.org_id
not present, simply marks the invitation as accepted so it cannot be reused.
When org_id
is present, creates a Membership as described above and also marks the invitation as accepted.
POST /v2/users/:user_id/accept_invitation/:invitation_token
var resp = await authrocket.users.acceptInvitation('usr_0ve4Xq92G8Kfxq5ZB5SRyw', {
token: 'nvt_0v1zWp1IEkl40q69WIQRaN'
})
$res = $authrocket->users->acceptInvitation('usr_0ve4Xq92G8Kfxq5ZB5SRyw', [
'token'=>'nvt_0v1zWp1IEkl40q69WIQRaN'
]);
user = AuthRocket::User.find 'usr_0ve4Xq92G8Kfxq5ZB5SRyw'
res = user.accept_invitation('nvt_0v1zWp1IEkl40q69WIQRaN')
Status: 200, with same body as Get a User.
On success, returns a User object with no errors.
On failure, returns an object with errors.
resp.hasErrors()
// => true
On success, returns a User object with no errors.
On failure, returns an object with errors.
$res->hasErrors();
// => true
On success, returns original (User) object.
On failure, returns false.
Triggers an invitation.*.accepted
event.