JavaScript Organization Invitation OrganizationInvitation
The OrganizationInvitation
object is the model around an organization invitation.
Name id
Type string
Description A unique identifier for this organization membership.
Name emailAddress
Type string
Description The email address the invitation has been sent.
Name organizationId
Type string
Description The organization ID of the organization this invitation is for.
Name publicMetadata
Type object
Description The public metadata of the organization membership.
Name role
Type OrganizationCustomRoleKey
Description The role of the current user in the organization.
Name status
Type 'pending' | 'accepted' | 'revoked'
Description The status of the invitation.
Name createdAt
Type Date
Description Date of the time the membership was created.
Name updatedAt
Type Date
Description Date of the last time the membership was updated.
OrganizationCustomRoleKey
is a string that represents the user's role in the organization. Clerk provides the default roles org:admin
and org:member
. However, you can create custom roles as well.
Revokes the invitation for the email it corresponds to.
function revoke () : Promise < OrganizationInvitation >;
The following example demonstrates how to revoke an organization invitation. It first gets the list of organization invitations using getInvitations()
and then revokes the first invitation in the list.
It assumes:
main.js import Clerk from '@clerk/clerk-js' ;
// Initialize Clerk with your Clerk publishable key
const clerk = new Clerk ( ' YOUR_PUBLISHABLE_KEY ' );
await clerk .load ();
if ( clerk .user) {
// Check for an active organization
if ( clerk .organization) {
// Get list of organization invitations
const { totalCount , data } = await clerk . organization .getInvitations ();
const invitations = data;
console .log ( `Invitations:` , invitations);
if ( invitations . length === 0 ) {
console .log ( "No invitations to revoke." );
}
// Revoke the first invitation in the list
invitations[ 0 ] .revoke ()
.then ((res) => console .log (res))
.catch ((error) => console .log ( error .errors));
} else {
// If there is no active organization,
// mount Clerk's <OrganizationSwitcher />
// to allow the user to set an organization as active
document .getElementById ( "app" ).innerHTML = `
<h2>Select an organization to set it as active</h2>
<div id="org-switcher"></div>
` ;
const orgSwitcherDiv = document .getElementById ( "org-switcher" );
clerk .mountOrganizationSwitcher (orgSwitcherDiv);
}
} else {
document .getElementById ( "app" ).innerHTML = `
<div id="sign-in"></div>
` ;
const signInDiv = document .getElementById ( "sign-in" );
clerk .mountSignIn (signInDiv);
}
index.html < div id = "app" ></ div >
<!-- Initialize Clerk with your
Clerk Publishable key and Frontend API URL -->
< script
async
crossorigin = "anonymous"
data-clerk-publishable-key = " YOUR_PUBLISHABLE_KEY "
src = "https:// YOUR_FRONTEND_API_URL /npm/@clerk/clerk-js@latest/dist/clerk.browser.js"
type = "text/javascript"
></ script >
< script >
window .addEventListener ( "load" , async function () {
await Clerk .load ();
if ( Clerk .user) {
// Check for an active organization
if ( Clerk .organization) {
// Get list of organization invitations
const { totalCount , data } = await Clerk . organization .getInvitations ();
const invitations = data;
console .log ( `Invitations:` , invitations);
if ( invitations . length === 0 ) {
console .log ( "No invitations to revoke." );
}
// Revoke the first invitation in the list
invitations[ 0 ] .revoke ()
.then ((res) => console .log (res))
.catch ((error) => console .log ( error .errors));
} else {
// If there is no active organization,
// mount Clerk's <OrganizationSwitcher />
// to allow the user to set an organization as active
document .getElementById ( "app" ).innerHTML = `
<h2>Select an organization to set it as active</h2>
<div id="org-switcher"></div>
` ;
const orgSwitcherDiv = document .getElementById ( "org-switcher" );
Clerk .mountOrganizationSwitcher (orgSwitcherDiv);
}
} else {
document .getElementById ( "app" ).innerHTML = `
<div id="sign-in"></div>
` ;
const signInDiv = document .getElementById ( "sign-in" );
Clerk .mountSignIn (signInDiv);
}
});
</ script >
Last updated on Aug 20, 2024