@mercurjs/core/workflows and run them against the Medusa container: await workflow(container).run({ input }). Workflows roll back their completed steps when a later step fails.
additional_data pass it to their hooks. Register a hook handler with workflow.hooks.<hookName>(handler).
createSellersWorkflow
Creates one or more stores, links each to the default region plusregion_ids, and invites one member per store with role_seller_administration. Returns SellerDTO[].
- Hooks:
validate({ input }),sellersCreated({ sellers, additional_data }) - Events:
seller.createdper store,member_invite.createdper invite
createSellerAccountWorkflow
Creates one store inpending_approval and adds a member as its owner with role_seller_administration. Returns SellerDTO.
- Hooks:
validate({ input }),sellerAccountCreated({ seller, member_id, additional_data }) - Events:
seller.created
updateSellersWorkflow
Updates every store that matchesselector with the same update. Returns SellerDTO[].
- Hooks:
sellersUpdated({ sellers, additional_data }) - Events:
seller.updatedper store
deleteSellersWorkflow
Soft deletes stores by id. Compensation restores them.- Hooks: none
- Events:
seller.deletedper store
approveSellerWorkflow
Moves apending_approval store to open, clears status_reason, and sets approved_at if it’s empty.
- Hooks:
sellerApproved({ seller_id, additional_data }) - Events:
seller.approved
suspendSellerWorkflow
Moves apending_approval or open store to suspended, saves reason in status_reason, and sets rejected_at if it’s empty.
- Hooks:
sellerSuspended({ seller_id, additional_data }) - Events:
seller.suspended
unsuspendSellerWorkflow
Moves asuspended store to open and clears status_reason.
- Hooks:
sellerUnsuspended({ seller_id, additional_data }) - Events:
seller.unsuspended
terminateSellerWorkflow
Moves apending_approval or suspended store to terminated and saves reason in status_reason. Fails for an open store.
- Hooks:
sellerTerminated({ seller_id, additional_data }) - Events:
seller.terminated
unterminateSellerWorkflow
Moves aterminated store to suspended and clears status_reason.
- Hooks:
sellerUnterminated({ seller_id, additional_data }) - Events:
seller.unterminated
linkSellerRegionsWorkflow
Adds and removes store region links in one run. Fails if a region or seller doesn’t exist, or if a store would be left with no region.- Hooks: none
- Events: none
updateSellerAddressWorkflow
Creates or updates a store’sSellerAddress. Returns SellerAddressDTO.
- Hooks:
addressUpdated({ address, additional_data }) - Events: none
updateSellerProfessionalDetailsWorkflow
Creates or updates a store’sProfessionalDetails. Returns ProfessionalDetailsDTO.
- Hooks:
professionalDetailsUpdated({ professional_details, additional_data }) - Events: none
deleteSellerProfessionalDetailsWorkflow
Deletes a store’sProfessionalDetails, if it has any.
- Hooks:
professionalDetailsDeleted({ seller_id, additional_data }) - Events: none
updateSellerPaymentDetailsWorkflow
Creates or updates a store’sPaymentDetails. Returns PaymentDetailsDTO.
- Hooks:
paymentDetailsUpdated({ payment_details, additional_data }) - Events: none
inviteSellerWorkflow
Sends an email that invites someone to register a new store. It creates a notification with the templatenewSellerInvitation on the email channel, and writes no Seller module records.
- Hooks: none
- Events: none
createMemberInvitesWorkflow
Creates team invites with signed tokens. Fails if an email already belongs to the store. ReturnsMemberInviteDTO[].
The input is an array of invites, not an object.
- Hooks: none
- Events:
member_invite.createdper invite
resendMemberInviteWorkflow
Deletes an invite and creates a replacement with the same email and role, a new token, and a new expiry. ReturnsMemberInviteDTO[].
- Hooks: none
- Events:
member_invite.created
deleteMemberInviteWorkflow
Deletes an invite.- Hooks: none
- Events: none
acceptMemberInviteWorkflow
Validates an invite token, upserts the member by email, creates the membership with the invite’s role, and deletes the invite. The member becomes owner when the store has no owner yet. ReturnsMemberDTO.
- Hooks:
validate({ input, invite }),memberInviteAccepted({ member, invite, additional_data }) - Events:
member_invite.accepted
addSellerMemberWorkflow
Adds an existing member to a store. Returns theSellerMember.
- Hooks: none
- Events:
seller_member.created
updateMemberRoleWorkflow
Changes the role on a membership. Fails for the owner membership.- Hooks: none
- Events:
seller_member.updated
removeSellerMemberWorkflow
Deletes a membership and keeps theMember record. Fails for the owner membership.
- Hooks: none
- Events:
seller_member.deleted
updateMemberWorkflow
Updates the profile of every member that matchesselector. Returns MemberDTO[].
- Hooks:
membersUpdated({ members, additional_data }) - Events: none