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:
{
"userId": 18076325029,
"groupId": 1800116178,
"attributes": []
}' 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: {
"errorActor": "CLIENT",
"errorCode": "INVALID_REQUEST",
"message": "Not Found"
}' /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:
{
"userId": 18076325029,
"groupId": 1800116178,
"attributes": []
}' '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: {
"errorActor": "CLIENT",
"errorCode": "INVALID_REQUEST",
"message": "Not Found"
}' /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:

[{
"userId": 18061450504,
"groupId": 1800116178,
"attributes": [] }, {
"userId": 18061450504,
"groupId": 1800138927,
"attributes": []
}]' 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:
[{
"userId": 18061450504,
"groupId": 1800116178,
"attributes": [] }, {
"userId": 18061450504,
"groupId": 1800138927,
"attributes": []
}]' 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:

{
"userId": 18223800009,
"groupId": 1800190005,
"attributes": [{
"name": "member.bounceCounter",
"value": "0"
}, {
"name": "member.type",
"value": "normal"
}, {
"name": "member.readMode",
"value": "mail"
}, {
"name": "member.creationDate",
"value": "2015-07-21 16:10:30.0"
}, {
"name": "member.bounced",
"value": "false"
}, {
"name": "member.role",
"value": "member"
}, {
"name": "member.messageCounter",
"value": "0"
}, {
"name": "member.systemWideDeactivated",
"value": "false"
}]
}' content: application/json: schema: $ref: '#/components/schemas/Membership' application/xml: schema: $ref: '#/components/schemas/Membership' '400': description: 'Bad email or group, for example:

{
"errorActor": "CLIENT",
"errorCode": "NO_SUCH_OBJECT",
"message": "User with email=no.email@example.com does not exist.",
"objectType": "User",
"propertyName": "email",
"propertyValue": "no.email@example.com"
}


Correct email, but that contact is not a member of the specified group:

{
"errorActor": "CLIENT",
"errorCode": "NO_SUCH_OBJECT",
"message": "Membership with membership=userId:18152367016/groupId:2400792595 does not exist.",
"objectType": "Membership",
"propertyName": "membership",
"propertyValue": "userId:18152367016/groupId:2400792595"
}
' /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:

{
"userId": 18223800009,
"groupId": 1800190005,
"attributes": [{
"name": "member.bounceCounter",
"value": "0"
}, {
"name": "member.type",
"value": "normal"
}, {
"name": "member.readMode",
"value": "mail"
}, {
"name": "member.creationDate",
"value": "2015-07-21 16:10:30.0"
}, {
"name": "member.bounced",
"value": "false"
}, {
"name": "member.role",
"value": "member"
}, {
"name": "member.messageCounter",
"value": "0"
}, {
"name": "member.systemWideDeactivated",
"value": "false"
}]
}' 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: {
"errorActor": "CLIENT",
"errorCode": "INVALID_REQUEST",
"message": "Not Found"
}' /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:
[{
"name": "attribute1",
"value": "0001" }, {
"name": "attribute2",
"value": "0002"
}]' 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: {
"errorActor": "CLIENT",
"errorCode": "INVALID_REQUEST",
"message": "Not Found"
}' /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:
[{
"name": "attribute1",
"value": "0001" }, {
"name": "attribute2",
"value": "0002"
}]' 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: '{
"errorActor": "CLIENT",
"errorCode": "INVALID_REQUEST",
"message": "Not Found"
}' /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: {
"errorActor": "CLIENT",
"errorCode": "INVALID_REQUEST",
"message": "Not Found"
}' 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.

Important note! Some special characters in an email address must be URL encoded, such as the "+", "]" and "]" characters, for example:

name+surname@test.com should be encoded as name%2Bsurname@test.com

name[surname@test.com should be encoded as name%5Bsurname@test.com

name]surname@test.com should be encoded as name%5Dsurname@test.com

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.``
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.
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: {
"errorActor": "CLIENT",
"errorCode": "INVALID_REQUEST",
"message": "Not Found"
}' /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.
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
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: {
"errorActor": "CLIENT",
"errorCode": "INVALID_REQUEST",
"message": "Not Found"
}' /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.
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: {
"errorActor": "CLIENT",
"errorCode": "INVALID_REQUEST",
"message": "Not Found"
}' /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: {
"errorActor": "CLIENT",
"errorCode": "INVALID_REQUEST",
"message": "Not Found"
}' /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:///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