Skip to main content

Shared Talent Lists

Shared talent lists are curated, cross-functional collections of talents designed for collaboration with teammates, partner companies, and external stakeholders. They provide granular permissions and public-token access similar to talent pool sharing.

Creating Lists

mutation {
createSharedTalentList(input: {
name: "Q1 Engineering Candidates"
description: "Shortlisted backend engineers"
companyId: "company-uuid"
}) { id name description createdAt }
}

mutation {
updateSharedTalentList(input: {
id: "list-uuid"
name: "Updated List Name"
}) { id name updatedAt }
}

mutation { deleteSharedTalentList(id: "list-uuid") { success message } }

Managing Talents

mutation { addTalentToList(input: { listId: "list-uuid", talentId: "talent-uuid" }) { id } }
mutation { removeTalentFromList(input: { listId: "list-uuid", talentId: "talent-uuid" }) { success } }

Querying Lists

# Lists owned by current company
query { companySharedTalentLists { id name description } }

# All accessible lists (owned + shared with me + external)
query {
allMyAccessibleTalentLists {
id name description
talents { id user { firstName lastName } }
}
}

# Detail view
query {
sharedTalentList(id: "list-uuid") {
id name description
talents { id user { firstName lastName email } }
}
}

Sharing Mechanisms

1. User Share

Share with a specific user at a given permission level.

mutation {
shareListWithUser(input: {
listId: "list-uuid"
userId: "user-uuid"
permissionLevel: EDIT
}) { id permissionLevel }
}

query { sharedTalentListsSharedWithMe { id name permissionLevel } }

2. Company Share

Grant access to all users of another company.

mutation {
shareListWithCompany(input: {
listId: "list-uuid"
companyId: "company-uuid"
permissionLevel: READ_ONLY
}) { id permissionLevel }
}

query { sharedTalentListsSharedWithMyCompany { id name permissionLevel } }

3. External Email Share

Generate a token-based link sent via email. If the recipient is a registered user, the system creates a direct user share instead.

mutation {
shareListWithEmail(input: {
listId: "list-uuid"
email: "client@partner.com"
expirationHours: 168
}) {
... on SharedTalentListUserShare { id permissionLevel }
... on SharedTalentListExternalShare { id token expiresAt accessCount isActive }
}
}

# Revoke external share
mutation { revokeExternalShare(shareId: "share-uuid") { success } }

# View external shares created by current user
query { myExternalTalentListShares { id token email expiresAt accessCount isActive } }
info

External share tokens default to 7 days. The shareListWithEmail mutation returns a union type -- if the email matches an existing user, a direct user share is created instead of an external token.

Public Access

External stakeholders access lists via token without authentication:

query {
sharedTalentListByToken(token: "secure-token") {
id name description
talents { id user { firstName lastName } }
}
}

Access Control

PermissionScope
READ_ONLYView list and talent details
EDITAdd/remove talents, update list metadata
ADMINFull access including sharing management and deletion

The service validates ownership (creator or company admin) before allowing mutations. Share records track sharedByUserId for audit purposes, and accessCount is incremented on each external token use.

warning

Deleting a list cascades through SharedTalentListTalent and all share tables. The underlying talent records are preserved.