# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand. overlay: 1.0.0 info: title: API Evangelist conversational phrasing for Mapp Engage public Membership API version: 1.0.0 extends: openapi/mapp-membership-api-openapi.yml actions: - target: $.info update: x-apievangelist-phrasing: method: generated generated: '2026-09-26' generator: build-phrasing.py label: Generated by API Evangelist operations: 16 - target: $.paths['/membership/create'].get update: x-apievangelist-phrasing: intent: Add a contact to a group silently effect: write questions: - Can I put a contact into a group in Mapp Engage without sending them a subscription notification? - What call creates a group membership for a user ID with no welcome email? instructions: - text: Create a membership for user {userId} in group {groupId} without notifying them. slots: userId: query.userId groupId: query.groupId - text: Quietly add contact {userId} as a member of group {groupId}. slots: userId: query.userId groupId: query.groupId method: generated generated: '2026-09-26' - target: $.paths['/membership/delete'].delete update: x-apievangelist-phrasing: intent: Remove a contact from a group silently effect: destructive questions: - Is there a way to drop someone from a group without them getting an unsubscribe notice? - Which call deletes a membership outright instead of running an unsubscribe? instructions: - text: Delete the membership of user {userId} in group {groupId} without notifying them. slots: userId: query.userId groupId: query.groupId - text: Silently remove contact {userId} from group {groupId}. slots: userId: query.userId groupId: query.groupId method: generated generated: '2026-09-26' - target: $.paths['/membership/findAllByEmail'].get update: x-apievangelist-phrasing: intent: List every group a contact belongs to by email effect: read questions: - Which groups is a given email address a member of? - Can I look up all memberships for a contact when I only know their email? instructions: - text: List all group memberships for {email}. slots: email: query.email - text: Show every group that {email} is subscribed to. slots: email: query.email method: generated generated: '2026-09-26' - target: $.paths['/membership/findAll'].get update: x-apievangelist-phrasing: intent: List every group a contact belongs to by user ID effect: read questions: - What groups is user ID 12345 a member of? - How do I get one membership record per group for a single user ID? instructions: - text: List all group memberships for user {userId}. slots: userId: query.userId - text: Show every group that contact {userId} belongs to. slots: userId: query.userId method: generated generated: '2026-09-26' - target: $.paths['/membership/getByEmail'].get update: x-apievangelist-phrasing: intent: Check a contact's membership in one group by email effect: read questions: - Is this email address a member of a specific group, and what does the membership look like? - Can I fetch the membership details for one email in one group? instructions: - text: Get the membership of {email} in group {groupId}. slots: email: query.email groupId: query.groupId - text: Check whether {email} belongs to group {groupId}. slots: email: query.email groupId: query.groupId method: generated generated: '2026-09-26' - target: $.paths['/membership/get'].get update: x-apievangelist-phrasing: intent: Check a contact's membership in one group by ID effect: read questions: - What does the membership record look like for one user ID in one group? - Is user 12345 currently a member of a particular group? instructions: - text: Fetch the group {groupId} membership record for user ID {userId}. slots: userId: query.userId groupId: query.groupId - text: Check whether contact {userId} is a member of group {groupId}. slots: userId: query.userId groupId: query.groupId method: generated generated: '2026-09-26' - target: $.paths['/membership/getAttributesByEmail'].get update: x-apievangelist-phrasing: intent: Read a contact's member attributes by email effect: read questions: - What group-specific attribute values are stored for an email address in a group? - Can I read someone's member attributes in a group using their email? instructions: - text: Get the member attributes for {email} in group {groupId}. slots: email: query.email groupId: query.groupId - text: Show the group-specific values stored for {email} in group {groupId}. slots: email: query.email groupId: query.groupId method: generated generated: '2026-09-26' - target: $.paths['/membership/getAttributes'].get update: x-apievangelist-phrasing: intent: Read a contact's member attributes by ID effect: read questions: - Which member attribute values does a user ID have within a given group? - How do I read the per-group attributes saved for one user ID? instructions: - text: Read user ID {userId}'s member attribute values within group {groupId}. slots: userId: query.userId groupId: query.groupId - text: Show group {groupId} attribute values for contact {userId}. slots: userId: query.userId groupId: query.groupId method: generated generated: '2026-09-26' - target: $.paths['/membership/replaceAttributes'].post update: x-apievangelist-phrasing: intent: Replace a member's group attributes effect: write questions: - Can I overwrite the whole set of member attributes for a contact in a group? - What call replaces, rather than merges, someone's group attribute values? instructions: - text: Replace all member attributes for user {userId} in group {groupId} with the values I give you. slots: userId: query.userId groupId: query.groupId - text: Overwrite contact {userId}'s attributes in group {groupId}. slots: userId: query.userId groupId: query.groupId method: generated generated: '2026-09-26' - target: $.paths['/membership/subscribeByEmail'].post update: x-apievangelist-phrasing: intent: Subscribe an existing contact to a group by email effect: write questions: - Can I subscribe an existing contact to a group using just their email and an opt-in mode? - Does the contact need to exist already before subscribing them by email? instructions: - text: Subscribe {email} to group {groupId} with mode {subscriptionMode}. slots: email: query.email groupId: query.groupId subscriptionMode: query.subscriptionMode - text: Add {email} to group {groupId} using confirmed opt-in. slots: email: query.email groupId: query.groupId method: generated generated: '2026-09-26' - target: $.paths['/membership/subscribe'].post update: x-apievangelist-phrasing: intent: Subscribe a user to a group by ID effect: write questions: - How do I self-subscribe a user ID to a group with double opt-in? - Which subscription modes decide whether the user has to confirm joining a group? instructions: - text: Subscribe user {userId} to group {groupId} with mode {subscriptionMode}. slots: userId: query.userId groupId: query.groupId subscriptionMode: query.subscriptionMode - text: Sign contact {userId} up for group {groupId} as a self subscription. slots: userId: query.userId groupId: query.groupId method: generated generated: '2026-09-26' - target: $.paths['/membership/unsubscribeByEmail'].post update: x-apievangelist-phrasing: intent: Unsubscribe a contact from a group by email effect: destructive questions: - How can I unsubscribe an email address from a group and send them a confirmation? - Does unsubscribing by email send the contact a confirmation message? instructions: - text: Unsubscribe {email} from group {groupId}. slots: email: query.email groupId: query.groupId - text: Remove {email} from group {groupId} and send the unsubscribe confirmation. slots: email: query.email groupId: query.groupId method: generated generated: '2026-09-26' - target: $.paths['/membership/unsubscribeFromMessageByEmail'].post update: x-apievangelist-phrasing: intent: Unsubscribe an email and credit it to a message effect: destructive questions: - Can I record which email campaign caused an unsubscribe when removing someone by email? - What happens if the unsubscription can't be tied to the message I pass? instructions: - text: Unsubscribe {email} from group {groupId} and attribute it to message {messageId}. slots: email: query.email groupId: query.groupId messageId: query.messageId - text: Record that {email} left group {groupId} because of message {messageId}. slots: email: query.email groupId: query.groupId messageId: query.messageId method: generated generated: '2026-09-26' - target: $.paths['/membership/unsubscribe'].post update: x-apievangelist-phrasing: intent: Unsubscribe a user from a group by ID effect: destructive questions: - How do I unsubscribe a user ID from a group and notify the group manager? - Which unsubscription modes control whether the contact gets a removal email? instructions: - text: Unsubscribe user {userId} from group {groupId} with mode {unsubscriptionMode}. slots: userId: query.userId groupId: query.groupId unsubscriptionMode: query.unsubscriptionMode - text: Take contact {userId} out of group {groupId} and let the manager know. slots: userId: query.userId groupId: query.groupId method: generated generated: '2026-09-26' - target: $.paths['/membership/unsubscribeFromMessage'].post update: x-apievangelist-phrasing: intent: Unsubscribe a user ID and credit it to a message effect: destructive questions: - Can I tie a user ID's unsubscribe to the specific message that triggered it? - Is the unsubscribe reported as successful if it can't be linked to the message? instructions: - text: Unsubscribe user {userId} from group {groupId} because of message {messageId}. slots: userId: query.userId groupId: query.groupId messageId: query.messageId - text: Attribute contact {userId}'s exit from group {groupId} to message {messageId}. slots: userId: query.userId groupId: query.groupId messageId: query.messageId method: generated generated: '2026-09-26' - target: $.paths['/membership/updateAttributes'].post update: x-apievangelist-phrasing: intent: Update or add a member's group attributes effect: write questions: - Can I change some member attribute values for a contact and add new ones at the same time? - What happens to a member attribute that doesn't exist yet when I update it? instructions: - text: Update member attributes for user {userId} in group {groupId}, creating any that are missing. slots: userId: query.userId groupId: query.groupId - text: Set car to BMW for contact {userId} in group {groupId}, leaving other attributes alone. slots: userId: query.userId groupId: query.groupId method: generated generated: '2026-09-26'