Teams > Membership > Moves

Subscription_type: teams/membership/move. Triggered when a membership is moved to another team, whether the move is made through the API or from Factorial. The payload is the membership row created in the destination team, so team_id is that team and id is a new one — the row in the source team is removed without an event of its own, so reconcile by employee_id rather than by id, or the employee ends up in both teams. A move emits no create or delete event for the two teams involved, so this is the event that reports a change of team made through this verb — and only through it. Most ways an employee changes team in Factorial do not use it: some are carried out as a separate addition and removal, which arrive as their own events and not as this one, and some emit nothing at all. Treat this as one signal among several rather than a complete feed, and reconcile against the memberships endpoint.

Payload

Callback payload

string
required

Membership ID

string

Company ID of the membership

string
required

Employee ID of the membership

string
required

Team ID of the membership

boolean
required

Whether the employee is a lead of the team or not

source_team_ids
array of strings
required

IDs of the teams this membership originates from (nested teams). In a company with nested teams, a direct membership includes the team itself; an inherited one, the sub-team(s) where the employee is a direct member. Only populated on reads that compute source attribution — reads filtered by a single team, or by a single employee with with_source_attribution enabled. Empty otherwise, including create, update and delete responses, and always empty for companies without nested teams. An empty array does not distinguish "computed and genuinely empty" from "not computed for this read" or "could not be computed", so only apply attribution-dependent logic to a read you explicitly shaped for it. A team-anchored read stops attributing above roughly a thousand members of the filtered team: past that the attribution is not computed at all and every row comes back empty, behind a normal 200.

source_team_ids*
parent_team_ids
array of strings
required

IDs of the ancestor teams that receive an inherited membership through this row (nested teams) — the teams this membership rolls up into. Populated under the same conditions as source_team_ids; empty otherwise.

parent_team_ids*
boolean

Whether the employee is a direct member of the team (nested teams). Always present. true means direct member; false means the row exists only through inheritance from a sub-team; null means not computed for this read. Only computed on reads filtered by a single employee with with_source_attribution enabled — always null otherwise, including create, update and delete responses and companies without nested teams. null is also returned when directness could not be resolved for a transient reason, even with with_source_attribution enabled, so never treat null as false — retry the read instead.

Response
200

Return a 200 status to indicate that the data was received successfully

LoadingLoading…