Mapp Marketing Cloud Membership API

The Membership API from Mapp Marketing Cloud — 16 operation(s) for membership.

Operations 16

Each operation below carries the questions people ask an LLM about it and the instructions they give an agent to run it. Generated by API Evangelist overlay

GET /membership/create Add a contact to a group silently · Create a membership #
Ask an LLM
“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?”
Tell an agent
Create a membership for user {userId} in group {groupId} without notifying them.
Quietly add contact {userId} as a member of group {groupId}.
DELETE /membership/delete Remove a contact from a group silently · Delete a membership #
Ask an LLM
“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?”
Tell an agent destructive · confirm first
Delete the membership of user {userId} in group {groupId} without notifying them.
Silently remove contact {userId} from group {groupId}.
GET /membership/findAllByEmail List every group a contact belongs to by email · Find all memberships for a user by email #
Ask an LLM
“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?”
Tell an agent
List all group memberships for {email}.
Show every group that {email} is subscribed to.
GET /membership/findAll List every group a contact belongs to by user ID · Find all memberships for a user #
Ask an LLM
“What groups is user ID 12345 a member of?”
“How do I get one membership record per group for a single user ID?”
Tell an agent
List all group memberships for user {userId}.
Show every group that contact {userId} belongs to.
GET /membership/getByEmail Check a contact's membership in one group by email · Get a membership by email #
Ask an LLM
“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?”
Tell an agent
Get the membership of {email} in group {groupId}.
Check whether {email} belongs to group {groupId}.
GET /membership/get Check a contact's membership in one group by ID · Get a membership #
Ask an LLM
“What does the membership record look like for one user ID in one group?”
“Is user 12345 currently a member of a particular group?”
Tell an agent
Fetch the group {groupId} membership record for user ID {userId}.
Check whether contact {userId} is a member of group {groupId}.
GET /membership/getAttributesByEmail Read a contact's member attributes by email · Get membership attributes by email #
Ask an LLM
“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?”
Tell an agent
Get the member attributes for {email} in group {groupId}.
Show the group-specific values stored for {email} in group {groupId}.
GET /membership/getAttributes Read a contact's member attributes by ID · Get membership attributes #
Ask an LLM
“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?”
Tell an agent
Read user ID {userId}'s member attribute values within group {groupId}.
Show group {groupId} attribute values for contact {userId}.
POST /membership/replaceAttributes Replace a member's group attributes · Replace membership attributes #
Ask an LLM
“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?”
Tell an agent
Replace all member attributes for user {userId} in group {groupId} with the values I give you.
Overwrite contact {userId}'s attributes in group {groupId}.
POST /membership/subscribeByEmail Subscribe an existing contact to a group by email · Subscribe a contact to a group by email #
Ask an LLM
“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?”
Tell an agent
Subscribe {email} to group {groupId} with mode {subscriptionMode}.
Add {email} to group {groupId} using confirmed opt-in.
POST /membership/subscribe Subscribe a user to a group by ID · Subscribe a user to a group #
Ask an LLM
“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?”
Tell an agent
Subscribe user {userId} to group {groupId} with mode {subscriptionMode}.
Sign contact {userId} up for group {groupId} as a self subscription.
POST /membership/unsubscribeByEmail Unsubscribe a contact from a group by email · Unsubscribe a contact from a group by email #
Ask an LLM
“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?”
Tell an agent destructive · confirm first
Unsubscribe {email} from group {groupId}.
Remove {email} from group {groupId} and send the unsubscribe confirmation.
POST /membership/unsubscribeFromMessageByEmail Unsubscribe an email and credit it to a message · Unsubscribe a contact from a message by email #
Ask an LLM
“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?”
Tell an agent destructive · confirm first
Unsubscribe {email} from group {groupId} and attribute it to message {messageId}.
Record that {email} left group {groupId} because of message {messageId}.
POST /membership/unsubscribe Unsubscribe a user from a group by ID · Unsubscribe a user from a group #
Ask an LLM
“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?”
Tell an agent destructive · confirm first
Unsubscribe user {userId} from group {groupId} with mode {unsubscriptionMode}.
Take contact {userId} out of group {groupId} and let the manager know.
POST /membership/unsubscribeFromMessage Unsubscribe a user ID and credit it to a message · Unsubscribe a user from a message #
Ask an LLM
“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?”
Tell an agent destructive · confirm first
Unsubscribe user {userId} from group {groupId} because of message {messageId}.
Attribute contact {userId}'s exit from group {groupId} to message {messageId}.
POST /membership/updateAttributes Update or add a member's group attributes · Update membership attributes #
Ask an LLM
“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?”
Tell an agent
Update member attributes for user {userId} in group {groupId}, creating any that are missing.
Set car to BMW for contact {userId} in group {groupId}, leaving other attributes alone.

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/mapp:mapp-membership-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

mapp-membership-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Mapp Engage public Membership API
  version: '1'
  description: 'Mapp Engage REST API (REST 2.0, incremental version v19). Assembled verbatim from the per-operation OpenAPI fragments Mapp publishes on each endpoint page of https://docs.mapp.com/apidocs/. The base URL is tenant-specific: take your Mapp Engage login host and append /api/rest/v19.'
  contact:
    name: Mapp Technical Support
    url: https://mapp.com/tech-support/
servers:
- url: /api/rest/v19
security:
- basicAuth: []
tags:
- name: Membership
paths:
  /membership/create:
    get:
      tags:
      - Membership
      summary: Create a membership
      description: Subscribes a contact to a group, creating a new membership. Unlike normal subscription, a notification is not sent.
      operationId: CreateMembership
      parameters:
      - name: userId
        in: query
        description: ID of the user.
        required: true
        schema:
          type: integer
          format: int64
      - name: groupId
        in: query
        description: ID of the group.
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: 'Example response: <br>{<br>    "userId": 18076325029,<br>    "groupId": 1800116178,<br>    "attributes": []<br>}'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Membership'
            application/xml:
              schema:
                $ref: '#/components/schemas/Membership'
        '400':
          description: userId and groupId are mandatory, but are missing or incorrect. / User with id does not exist. / Group with id does not exist.
        '404':
          description: 'Error response: {<br>"errorActor": "CLIENT",<br>"errorCode": "INVALID_REQUEST",<br>"message": "Not Found"<br>}'
  /membership/delete:
    delete:
      tags:
      - Membership
      summary: Delete a membership
      description: Deletes an existing membership (meaning the user is unsubscribed from the group). This call differs from the unsubscribe method in that the user is not notified about the unsubscription
      operationId: DeleteMembership
      parameters:
      - name: userId
        in: query
        description: ID of the user.
        required: true
        schema:
          type: integer
          format: int64
      - name: groupId
        in: query
        description: ID of the group.
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '204':
          description: 'Example response: <br>{<br>    "userId": 18076325029,<br>    "groupId": 1800116178,<br>    "attributes": []<br>}'
        '400':
          description: userId and groupId are mandatory, but are missing or incorrect. / User with id does not exist. / Group with id does not exist.
        '404':
          description: 'Error response: {<br>"errorActor": "CLIENT",<br>"errorCode": "INVALID_REQUEST",<br>"message": "Not Found"<br>}'
  /membership/findAllByEmail:
    get:
      tags:
      - Membership
      summary: Find all memberships for a user by email
      description: Returns the membership information of a user identified by email.
      operationId: findAllByEmail
      parameters:
      - name: email
        in: query
        description: Email of the user
        required: true
        schema:
          type: string
      responses:
        '200':
          description: 'Example response: <br><br>[{<br>    "userId": 18061450504,<br>    "groupId": 1800116178,<br>    "attributes": [] }, {<br>    "userId": 18061450504,<br>    "groupId": 1800138927,<br>    "attributes": []<br>}]'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Membership'
            application/xml:
              schema:
                $ref: '#/components/schemas/Membership'
        '400':
          description: email is mandatory, but is missing or incorrect. / User with email does not exist.
  /membership/findAll:
    get:
      tags:
      - Membership
      summary: Find all memberships for a user
      description: Returns a list of membership objects, one membership object for each group in which the user is a member.
      operationId: findAll
      parameters:
      - name: userId
        in: query
        description: ID of the user
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: 'Example response: <br>[{<br>    "userId": 18061450504,<br>    "groupId": 1800116178,<br>    "attributes": [] }, {<br>    "userId": 18061450504,<br>    "groupId": 1800138927,<br>    "attributes": []<br>}]'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Membership'
            application/xml:
              schema:
                $ref: '#/components/schemas/Membership'
        '400':
          description: userId is mandatory, but is missing or incorrect. / User with id does not exist.
        '404':
          description: Not found
  /membership/getByEmail:
    get:
      tags:
      - Membership
      summary: Get a membership by email
      description: Retrieves the membership information of a contact identified by email in a group specified by groupId.
      operationId: getByEmail
      parameters:
      - name: email
        in: query
        description: Email of the user.
        required: true
        schema:
          type: string
      - name: groupId
        in: query
        description: ID of the group.
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: 'Example response:<br><br>{<br>    "userId": 18223800009,<br>    "groupId": 1800190005,<br>    "attributes": [{<br>        "name": "member.bounceCounter",<br>        "value": "0"<br>    }, {<br>        "name": "member.type",<br>        "value": "normal"<br>    }, {<br>        "name": "member.readMode",<br>        "value": "mail"<br>    }, {<br>        "name": "member.creationDate",<br>        "value": "2015-07-21 16:10:30.0"<br>    }, {<br>        "name": "member.bounced",<br>        "value": "false"<br>    }, {<br>        "name": "member.role",<br>        "value": "member"<br>    }, {<br>        "name": "member.messageCounter",<br>        "value": "0"<br>    }, {<br>        "name": "member.systemWideDeactivated",<br>        "value": "false"<br>    }]<br>}'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Membership'
            application/xml:
              schema:
                $ref: '#/components/schemas/Membership'
        '400':
          description: 'Bad email or group, for example:<br><br><pre>{<br>  "errorActor": "CLIENT",<br>  "errorCode": "NO_SUCH_OBJECT",<br>  "message": "User with email=no.email@example.com does not exist.",<br>  "objectType": "User",<br>  "propertyName": "email",<br>  "propertyValue": "no.email@example.com"<br>}</pre><br><br>Correct email, but that contact is not a member of the specified group:<br><br><pre>{<br>  "errorActor": "CLIENT",<br>  "errorCode": "NO_SUCH_OBJECT",<br>  "message": "Membership with membership=userId:18152367016/groupId:2400792595 does not exist.",<br>  "objectType": "Membership",<br>  "propertyName": "membership",<br>  "propertyValue": "userId:18152367016/groupId:2400792595"<br>}</pre>'
  /membership/get:
    get:
      tags:
      - Membership
      summary: Get a membership
      description: Retrieves the membership information of a user identified by the userId in a group identified by groupId.
      operationId: GetMembership
      parameters:
      - name: userId
        in: query
        description: ID of the user.
        required: true
        schema:
          type: integer
          format: int64
      - name: groupId
        in: query
        description: ID of the group.
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: 'Example response: <br><br>{<br>    "userId": 18223800009,<br>    "groupId": 1800190005,<br>    "attributes": [{<br>        "name": "member.bounceCounter",<br>        "value": "0"<br>    }, {<br>        "name": "member.type",<br>        "value": "normal"<br>    }, {<br>        "name": "member.readMode",<br>        "value": "mail"<br>    }, {<br>        "name": "member.creationDate",<br>        "value": "2015-07-21 16:10:30.0"<br>    }, {<br>        "name": "member.bounced",<br>        "value": "false"<br>    }, {<br>        "name": "member.role",<br>        "value": "member"<br>    }, {<br>        "name": "member.messageCounter",<br>        "value": "0"<br>    }, {<br>        "name": "member.systemWideDeactivated",<br>        "value": "false"<br>    }]<br>}'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Membership'
            application/xml:
              schema:
                $ref: '#/components/schemas/Membership'
        '400':
          description: userId and groupId are mandatory, but are missing or incorrect. / User with id does not exist. / Group with id does not exist.
        '404':
          description: 'Error response: {<br>"errorActor": "CLIENT",<br>"errorCode": "INVALID_REQUEST",<br>"message": "Not Found"<br>}'
  /membership/getAttributesByEmail:
    get:
      tags:
      - Membership
      summary: Get membership attributes by email
      description: 'Returns a collection of member attributes for a user within the specified group.

        Member attributes are used to save information for an individual user, but in the context of a specific group.

        A member attribute contains a specific value for each recipient. The user is identified by the email'
      operationId: getAttributesByEmail
      parameters:
      - name: email
        in: query
        description: Email of the user
        required: true
        schema:
          type: string
      - name: groupId
        in: query
        description: ID of the group
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: 'Example response: <br>[{<br>    "name": "attribute1",<br>    "value": "0001" }, {<br>    "name": "attribute2",<br>    "value": "0002"<br>}]'
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
            application/xml:
              schema:
                type: array
                items:
                  type: object
        '400':
          description: userId and groupId are mandatory, but are missing or incorrect.
        '404':
          description: 'Error response: {<br>"errorActor": "CLIENT",<br>"errorCode": "INVALID_REQUEST",<br>"message": "Not Found"<br>}'
  /membership/getAttributes:
    get:
      tags:
      - Membership
      summary: Get membership attributes
      description: 'Returns a collection of member attributes for a user within the specified group.

        Member attributes are used to save information for an individual user but in the context of a specific group.

        A member attribute contains a specific value for each recipient'
      operationId: GetMembershipAttributes
      parameters:
      - name: userId
        in: query
        description: ID of the user
        required: true
        schema:
          type: integer
          format: int64
      - name: groupId
        in: query
        description: ID of the group
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: 'Example response: <br>[{<br>    "name": "attribute1",<br>    "value": "0001" }, {<br>    "name": "attribute2",<br>    "value": "0002"<br>}]'
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
            application/xml:
              schema:
                type: array
                items:
                  type: object
        '400':
          description: userId and groupId are mandatory, but are missing or incorrect.
        '404':
          description: '{<br>"errorActor": "CLIENT",<br>"errorCode": "INVALID_REQUEST",<br>"message": "Not Found"<br>}'
  /membership/replaceAttributes:
    post:
      tags:
      - Membership
      summary: Replace membership attributes
      description: 'Replaces the member attributes for a contact within a group where the contact is a member

        Request body example:


        [{

        "name" : "attribute1",

        "value" : "0001"

        },

        {

        "name" : "attribute2",

        "value" : "0002"

        }]'
      operationId: replaceAttributes
      parameters:
      - name: userId
        in: query
        description: ID of the user
        required: true
        schema:
          type: integer
          format: int64
      - name: groupId
        in: query
        description: ID of the group
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: ''
        '400':
          description: userId and groupId are mandatory, but are missing or incorrect.
        '404':
          description: 'Error response: {<br>"errorActor": "CLIENT",<br>"errorCode": "INVALID_REQUEST",<br>"message": "Not Found"<br>}'
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/Attribute'
  /membership/subscribeByEmail:
    post:
      tags:
      - Membership
      summary: Subscribe a contact to a group by email
      description: 'Subscribes a recipient to a group.

        The recipient must exist in the system.


        Example:

        https:///api/rest/v19/membership/subscribeByEmail?email=j.mcexample@example.com&groupId=12345978&subscriptionMode=OPT_IN'
      operationId: subscribeByEmail
      parameters:
      - name: email
        in: query
        description: 'Email of the user.<br><br>Important note! Some special characters in an email address must be URL encoded, such as the "+", "]" and "]" characters, for example:<br><br>name+surname@test.com should be encoded as name%2Bsurname@test.com<br><br>name[surname@test.com should be encoded as name%5Bsurname@test.com<br><br>name]surname@test.com should be encoded as name%5Dsurname@test.com<br><br>The "@" symbol used to separate the local part from the domain can be used with or without being URL encoded. Engage will accept both formats as the separator symbol. For example, both the following addresses are valid and identical for Engage:

          my.address@example.com or my.address%40example.com'
        required: true
        schema:
          type: string
      - name: groupId
        in: query
        description: ID of the group
        required: true
        schema:
          type: integer
          format: int64
          enum:
          - 0-100
      - name: subscriptionMode
        in: query
        description: CONFIRMED_OPT_IN - New contacts receive a welcome message via email when they are added to the group. Despite the label used for this value, the contact does not need to confirm the subscription. A single opt-in subscription.``<br>DOUBLE_OPT_IN - New contacts receive an invitation to join the group via email. The contact must accept the invitation before they are added to the group. A double opt-in subscription.<br>OPT_IN - New contacts are added to the group without notification.
        required: true
        schema:
          type: string
          enum:
          - CONFIRMED_OPT_IN
          - DOUBLE_OPT_IN
          - OPT_IN
      responses:
        '204':
          description: ''
        '400':
          description: Parameter 'email' is not a valid email address. / User with email does not exist. / Group with id is archived.
        '404':
          description: 'Error response: {<br>"errorActor": "CLIENT",<br>"errorCode": "INVALID_REQUEST",<br>"message": "Not Found"<br>}'
  /membership/subscribe:
    post:
      tags:
      - Membership
      summary: Subscribe a user to a group
      description: 'Subscribes a user to a group. With this call, the subscription is handled as a self subscription.

        Depending on the subscription mode used, the user may have to confirm the subscription (opt-in) and may be notified of the successful subscription.'
      operationId: subscribe
      parameters:
      - name: userId
        in: query
        description: ID of the user
        required: true
        schema:
          type: integer
          format: int64
      - name: groupId
        in: query
        description: ID of the group
        required: true
        schema:
          type: integer
          format: int64
      - name: subscriptionMode
        in: query
        description: CONFIRMED_OPT_IN - New contacts receive a welcome message via email when they are added to the group. The contact does not need to confirm the subscription. A single opt-in subscription.<br>DOUBLE_OPT_IN - New contacts receive an invitation to join the group via email. The contact must accept the invitation before they are added to the group. A double opt-in subscription<br>OPT_IN - New contacts are added to the group without notification. OPT_IN is creating self-subscribers
        required: true
        schema:
          type: string
          enum:
          - CONFIRMED_OPT_IN
          - DOUBLE_OPT_IN
          - OPT_IN
      responses:
        '204':
          description: ''
        '400':
          description: Parameter 'userId' is mandatory but no value was specified. / User with id does not exist.
        '404':
          description: Not found
  /membership/unsubscribeByEmail:
    post:
      tags:
      - Membership
      summary: Unsubscribe a contact from a group by email
      description: Unsubscribes a contact from a group based on their email address. An unsubscription confirmation email is sent to the contact.
      operationId: unsubscribeByEmail
      parameters:
      - name: email
        in: query
        description: Email of the user.
        required: true
        schema:
          type: string
      - name: groupId
        in: query
        description: ID of the group.
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '204':
          description: ''
        '400':
          description: email and groupId are mandatory, but are missing or incorrect. / User with email does not exist. / Group with id does not exist.
  /membership/unsubscribeFromMessageByEmail:
    post:
      tags:
      - Membership
      summary: Unsubscribe a contact from a message by email
      description: Unsubscribes a user from a group based on an email address. The unsubscription is associated with a specific message. An unsubscribe confirmation email is sent to the user. Returns success only when the user is unsubscribed from the group and the unsubscription is associated with the specified message.
      operationId: unsubscribeFromMessageByEmail
      parameters:
      - name: email
        in: query
        description: Email of the user.
        required: true
        schema:
          type: string
      - name: groupId
        in: query
        description: ID of the group.
        required: true
        schema:
          type: integer
          format: int64
      - name: messageId
        in: query
        description: ID of the message.
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '204':
          description: ''
        '400':
          description: email, groupId and messageId are mandatory, but are missing or incorrect. / User with email does not exist. / Group with id does not exist. / Message with id does not exist. / Membership with groupId does not exist.
        '404':
          description: 'Error response: {<br>"errorActor": "CLIENT",<br>"errorCode": "INVALID_REQUEST",<br>"message": "Not Found"<br>}'
  /membership/unsubscribe:
    post:
      tags:
      - Membership
      summary: Unsubscribe a user from a group
      description: Unsubscribes a user from a group. A notification is sent to the manager.
      operationId: unsubscribe
      parameters:
      - name: userId
        in: query
        description: ID of the user
        required: true
        schema:
          type: integer
          format: int64
      - name: groupId
        in: query
        description: ID of the group
        required: true
        schema:
          type: integer
          format: int64
      - name: unsubscriptionMode
        in: query
        description: CONFIRMED_OPT_IN - Contacts receive a message via email when they are removed from the group. Despite the label used for this value, the contact does not need to confirm the unsubscription. A single opt-in unsubscription.<br>OPT_IN - Contacts are removed from the group without notification email.
        required: true
        schema:
          type: string
          enum:
          - CONFIRMED_OPT_IN
          - OPT_IN
      responses:
        '204':
          description: ''
        '400':
          description: userId, groupId and unsubscriptionMode are mandatory, but are missing or incorrect. / User with id does not exist. / Group with id does not exist.
        '404':
          description: 'Error response: {<br>"errorActor": "CLIENT",<br>"errorCode": "INVALID_REQUEST",<br>"message": "Not Found"<br>}'
  /membership/unsubscribeFromMessage:
    post:
      tags:
      - Membership
      summary: Unsubscribe a user from a message
      description: 'Unsubscribes a user from a group. The unsubscription is associated with a specific message. Notification is sent to the group manager.

        Returns success only when the user is unsubscribed from the group and the unsubscription is associated with the specified message.'
      operationId: unsubscribeFromMessage
      parameters:
      - name: userId
        in: query
        description: ID of the user.
        required: true
        schema:
          type: integer
          format: int64
      - name: groupId
        in: query
        description: ID of the group.
        required: true
        schema:
          type: integer
          format: int64
      - name: messageId
        in: query
        description: ID of the message.
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '204':
          description: ''
        '400':
          description: userId, groupId and messageId are mandatory, but are missing or incorrect. / User with id does not exist. / Group with id does not exist. / Message with id does not exist. / Membership with groupId does not exist.
        '404':
          description: 'Error response: {<br>"errorActor": "CLIENT",<br>"errorCode": "INVALID_REQUEST",<br>"message": "Not Found"<br>}'
  /membership/updateAttributes:
    post:
      tags:
      - Membership
      summary: Update membership attributes
      description: 'Updates the member attributes for a user within a group if the user is a member of the group.


        If an attribute already exists, the value will be updated


        If not, a new attribute will be created.

        Request body example:

        [


        [

        {"name":"car","value":"BMW"},

        {"name":"mascot","value":"cat"},

        {"name":"age","value":"18"}

        ]'
      operationId: updateAttributes
      parameters:
      - name: userId
        in: query
        description: ID of the user
        required: true
        schema:
          type: integer
          format: int64
      - name: groupId
        in: query
        description: ID of the group
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: ''
        '400':
          description: userId and groupId are mandatory, but are missing or incorrect.
        '404':
          description: Not found
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/Attribute'
components:
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
      description: HTTP Basic authentication with a Mapp Engage system user of type API (or Hybrid).
x-apievangelist-provenance:
  method: searched
  generated: '2026-08-12'
  source: https://docs.mapp.com/apidocs/ (per-endpoint OpenAPI fragments)
  note: Union of the OpenAPI JSON fragments Mapp publishes on each endpoint page. Mapp does not serve one consolidated document at a public URL; the tenant-served Swagger lives at https://<your-engage-host>/apidoc/swagger.json and requires a tenant. Operation bodies, parameters, responses, tags, summaries and descriptions are verbatim from Mapp. The swagger/basePath/schemes/securityDefinitions envelope is added by API Evangelist from the published Getting Started guide; no operation content was authored.
  duplicate_operation_ids_suffixed: 30