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 } }
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
| Permission | Scope |
|---|---|
READ_ONLY | View list and talent details |
EDIT | Add/remove talents, update list metadata |
ADMIN | Full 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.
Deleting a list cascades through SharedTalentListTalent and all share tables. The underlying talent records are preserved.