--- openapi: 3.0.0 info: title: Suppression API description: " With this API, you can control your outgoing messages using suppression and allow lists.

The suppression list helps you with honoring the ISPs’ feedback to preserve sending IP reputation while allow list helps you ensure that you send only to those email addresses which are in the allowed list , typically to ensure that you don't send mails to customers from your development sandbox." version: "1.0.1" security: - BearerAuth: [] servers: - url: https://platform-stage.adobe.io/ajo description: Stage Environment - url: https://platform.adobe.io/ajo description: Production Environment paths: /config/suppression/addresses: parameters: - $ref: '#/components/parameters/x-api-key' - $ref: '#/components/parameters/x-request-id' - $ref: '#/components/parameters/x-gw-ims-org-id' - $ref: '#/components/parameters/x-sandbox-name' get: summary: Query suppressed or allowed emails addresses tags: - Suppression operationId: getAddressesId parameters: - $ref: '#/components/parameters/type' - $ref: '#/components/parameters/orderby' - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/start' - $ref: '#/components/parameters/property' responses: '200': description: A list of suppressed or allowed entities content: application/json: schema: type: object properties: _page: $ref: '#/components/schemas/page' items: type: array items: $ref: '#/components/schemas/suppressionListResponse' _links: $ref: '#/components/schemas/suppressionListLink' post: parameters: - $ref: '#/components/parameters/type' summary: Add a suppressed or allowed email address tags: - Suppression operationId: addAddressId requestBody: description: The JSON for the entity required: true content: application/json: schema: type: array items: $ref: '#/components/schemas/addEmailAddress' responses: '201': description: The newly added entity content: application/json: schema: type: array items: $ref: '#/components/schemas/suppressionListAddResponse' /config/suppression/addresses/{email}: parameters: - in: path description: email address sought name: email required: true schema: type: string - $ref: '#/components/parameters/type' - $ref: '#/components/parameters/x-api-key' - $ref: '#/components/parameters/x-request-id' - $ref: '#/components/parameters/x-gw-ims-org-id' - $ref: '#/components/parameters/x-sandbox-name' get: summary: Query a specific suppressed or allowed email address tags: - Suppression operationId: getEmailAddressId responses: '200': description: Returning a specific suppression or allowed entity content: application/json: schema: $ref: '#/components/schemas/suppressionListResponse' delete: summary: Delete a specific suppressed or allowed email address tags: - Suppression operationId: deleteEmailAddressId responses: '204': description: Entity deleted /config/suppression/domains: parameters: - $ref: '#/components/parameters/x-api-key' - $ref: '#/components/parameters/x-request-id' - $ref: '#/components/parameters/x-gw-ims-org-id' - $ref: '#/components/parameters/x-sandbox-name' get: summary: Query suppressed or allowed domains tags: - Suppression operationId: getDomainsId parameters: - $ref: '#/components/parameters/type' - $ref: '#/components/parameters/orderby' - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/start' - $ref: '#/components/parameters/property' responses: '200': description: A list of suppressed or allowed entities content: application/json: schema: type: object properties: _page: $ref: '#/components/schemas/page' items: type: array items: $ref: '#/components/schemas/domainSuppressionListResponse' _links: $ref: '#/components/schemas/suppressionListLink' post: parameters: - $ref: '#/components/parameters/type' summary: Add a suppressed or allowed domain tags: - Suppression operationId: addDomainId requestBody: description: The JSON for the entity required: true content: application/json: schema: type: array items: $ref: '#/components/schemas/addDomain' responses: '201': description: The newly added entity content: application/json: schema: type: array items: $ref: '#/components/schemas/suppressionListAddResponse' /config/suppression/domains/{domain}: parameters: - in: path description: domain sought name: domain required: true schema: type: string - $ref: '#/components/parameters/x-api-key' - $ref: '#/components/parameters/x-request-id' - $ref: '#/components/parameters/x-gw-ims-org-id' - $ref: '#/components/parameters/x-sandbox-name' get: summary: Query a specific suppressed or allowed domain tags: - Suppression operationId: getDomainId responses: '200': description: A list of suppressed or allowed entities content: application/json: schema: $ref: '#/components/schemas/domainSuppressionListResponse' delete: summary: Delete a specific suppressed or allowed domain tags: - Suppression operationId: deleteDomainId responses: '204': description: Entity deleted content: application/json: schema: $ref: '#/components/schemas/domainSuppressionListResponse' /config/suppression/uploads: parameters: - $ref: '#/components/parameters/x-api-key' - $ref: '#/components/parameters/x-request-id' - $ref: '#/components/parameters/x-gw-ims-org-id' - $ref: '#/components/parameters/x-sandbox-name' post: parameters: - name: Content-Type description: The content type of the request body. Should be 'multipart/form-data'. required: true in: header schema: type: string example: multipart/form-data summary: Upload a CSV file of suppressed entities tags: - Suppression operationId: uploadId requestBody: required: true content: multipart/form-data: schema: type: object properties: file: description: The full path of the file that is to be uploaded. type: string example: mysuppressions.csv responses: '201': description: The CSV file has been accepted. This is an asynchronous call and will finish sometime in the future. content: application/json: schema: $ref: '#/components/schemas/uploadPost' get: summary: Fetch upload jobs tags: - Suppression operationId: getUploadsId parameters: - $ref: '#/components/parameters/orderby' - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/start' - $ref: '#/components/parameters/property' responses: '200': description: A list of suppressed or allowed entities content: application/json: schema: type: object properties: _page: $ref: '#/components/schemas/uploadPage' items: type: array items: $ref: '#/components/schemas/uploadListResponse' _links: $ref: '#/components/schemas/uploadListLink' /config/suppression/uploads/{jobId}: parameters: - in: path description: Upload job to fetch name: jobId required: true schema: type: string - $ref: '#/components/parameters/x-api-key' - $ref: '#/components/parameters/x-request-id' - $ref: '#/components/parameters/x-gw-ims-org-id' - $ref: '#/components/parameters/x-sandbox-name' get: summary: Query a specific upload job tags: - Suppression operationId: getUploadJobId responses: '200': description: Returns a specific upload job content: application/json: schema: $ref: '#/components/schemas/uploadJob' delete: summary: Delete a specific upload job. description: The purpose of this operation is to delete the job record created. It does not delete the suppressions created through the job. tags: - Suppression operationId: deleteUploadJobId responses: '204': description: Job deleted /config/suppression/admin/{imsOrgId}/{sandboxId}: parameters: - in: path description: IMS Organization Id name: imsOrgId required: true schema: type: string - in: path description: Sandbox Id name: sandboxId required: true schema: type: string - $ref: '#/components/parameters/x-api-key' - $ref: '#/components/parameters/x-request-id' - $ref: '#/components/parameters/x-gw-ims-org-id' - $ref: '#/components/parameters/x-sandbox-name' delete: summary: Delete all suppressions from a given sandbox-Id and IMS-Org-Id tags: - Suppression operationId: deleteAllSuppressions responses: '202': description: The request has been accepted and will be completed asynchronously components: securitySchemes: BearerAuth: type: http scheme: bearer description: The authentication token to access the service. parameters: type: name: type description: For suppressed entities use 'client', for allowed entities use 'allowed'. Default is 'client' in: query schema: type: string enum: [client, allowed] x-api-key: name: x-api-key description: The API key belonging to the calling client. required: true in: header schema: type: string x-request-id: name: x-request-id description: A unique id generated by Adobe.io. required: false in: header schema: type: string x-gw-ims-org-id: name: x-gw-ims-org-id description: The ims org id for which the action is being taken. required: true in: header schema: type: string x-sandbox-name: name: x-sandbox-name description: >- Provides the platform Sandbox Name required: true in: header schema: type: string orderby: name: orderby description: >- Sort parameter and direction for sorting the response. Add the `-` prefix to sort the responding in descending order. If unspecified, the response will be sorted in ascending order. Ex. orderby=creationdate. in: query schema: type: string default: -creationdate required: false limit: name: limit description: >- Limit response to a specified positive number of objects. Ex. limit=10 in: query schema: type: integer default: 20 required: false start: name: start description: >- Used for pagination. Specifies the criteria for next page with respect to the property specified in orderby. Ex. start=1631739725150. in: query schema: type: string required: false property: name: property description: >-

Optional property filters. Please refer to api guidelines for filtering support in APIs. Filtering is supported on the following properties: creationdate, channel Ex. property=creationdate<1631739725150

in: query schema: items: type: string type: array required: false schemas: uploadPost: type: object properties: success: type: object properties: jobId: type: string example: 6caaed1b-d7bd-4065-a745-185e9af3b63a description: Unique job identifier. addEmailAddress: type: object required: - entity properties: entity: properties: type: type: string example: email entityValue: type: string description: An email address example: bademailaddress@domain.com comment: type: string example: Known bad email address user: type: string example: myusername@corp.com addDomain: type: object required: - entity properties: entity: properties: type: type: string example: domain entityValue: type: string description: A domain example: baddomain.com comment: type: string example: Known bad domain user: type: string example: myusername@corp.com uploadJob: type: object allOf: - $ref: '#/components/schemas/uploads' properties: imsOrgId: type: string example: 225F37C35E4B776E0A49421B@AdobeOrg sandboxId: type: string example: 70f22060-5d47-11ea-bdff-a5384333ff34 failedRecords: type: array items: $ref: '#/components/schemas/failedRecord' failedRecord: type: object properties: type: description: The entity type. This is value provided in the user's data type: string example: Email value: description: The value of the entity. This is value provided in the user's data type: string example: examplegmail@com comments: description: The comments associated with the failed record. This is value provided in the user's data. type: string example: This is a known bad email address failureReason: description: This is the reason the recdord could not be ingested. This is provided buy the service itself type: string example: "Invalid format for the entry: examplegmail@com" uploads: type: object properties: jobId: type: string format: uuid example: 6caaed1b-d7bd-4065-a745-185e9af3b63a user: type: string example: username@mydomain.com filename: type: string example: mysuppressions.csv createTime: description: Number of seconds since the epoc since the job was started type: number example: 1643768895 endTime: description: Number of seconds since the epoc when the job finished type: number example: 1643768895 status: $ref: '#/components/schemas/uploadStatus' responseCode: description: the HTTP response code upon accepting the file and the creation of an upload job type: number example: 200 responseText: description: in the case of a non-200 responseCode, this field provides more insight as to any failues. May be null in the case of no error. type: string example: The file is malformed, only CSV files are allowed. recordCount: description: The number of entity records found in the provided upload file. type: number example: 14502 handledCount: type: number description: The number of records handled example: 12342 failedCount: description: Numebr of records that failed to be imported. These records are provided for an individual jobId when requesting a single jobId using /upload/{jobId} type: number example: 17 uploadStatus: description: "The current state of the upload. Can be one of the following:\n\n_Accepted: The file has been accepted and a jobId has ben created.\n\n" type: string enum: - ACCEPTED - PENDING, - COMPLETE - CANCELED - ERROR entityObject: type: object required: - id - entity - suppressed - creationDate - lastModifiedDate - status - listType - client - bounceState properties: id: type: string description: The identifier of entity. format: uuid example: 91acd0b4-753b-4366-8893-d5440c4d9b15 entity: properties: type: type: string example: email entityValue: type: string description: An email address example: bademailaddress@domain.com suppressed: $ref: '#/components/schemas/suppressed' creationDate: type: number example: '1631739725150' lastModifiedDate: type: number example: '1631739725150' status: $ref: '#/components/schemas/status' listType: $ref: '#/components/schemas/listType' client: $ref: '#/components/schemas/client' bounceState: $ref: '#/components/schemas/bounceState' addEntityObject: type: object required: - id - entity - suppressed - creationDate - lastModifiedDate - status - listType - client properties: id: type: string description: The identifier of entity. format: uuid example: 91acd0b4-753b-4366-8893-d5440c4d9b15 entity: properties: type: type: string example: email entityValue: type: string description: An email address example: bademailaddress@domain.com suppressed: $ref: '#/components/schemas/suppressed' creationDate: type: number example: '1631739725150' lastModifiedDate: type: number example: '1631739725150' status: $ref: '#/components/schemas/status' listType: $ref: '#/components/schemas/listType' client: $ref: '#/components/schemas/client' domainEntityObject: type: object required: - id - entity - suppressed - creationDate - lastModifiedDate - status - listType - client properties: id: type: string description: The identifier of entity. format: uuid example: 91acd0b4-753b-4366-8893-d5440c4d9b15 entity: properties: type: type: string example: "domain" entityValue: type: string description: An email domain example: baddomain.com suppressed: $ref: '#/components/schemas/suppressed' creationDate: type: number example: '1631739725150' lastModifiedDate: type: number example: '1631739725150' status: $ref: '#/components/schemas/status' listType: $ref: '#/components/schemas/listType' client: $ref: '#/components/schemas/client' client: type: object properties: imsOrgId: type: string description: The IMS Org id of the calling client sandboxId: type: string description: The sandbox name of the calling client listType: type: string enum: - client - allowed status: type: string enum: - active - deleted suppressed: type: object properties: type: $ref: '#/components/schemas/type' user: type: string description: The name or email address of the user that created the suppression example: myemail@myemail.com comment: type: string description: An optional comment about the suppression example: deemed to be a fake date: type: number example: '1631739725150' type: type: string enum: - MANUAL - HARD - SOFT # entityType: # type: string # enum: # - email # - domain bounceType: type: string enum: - HARD - SOFT - SUCCEEDED - IGNORED bounceState: type: object properties: softCount: type: integer description: The current soft bounce count example: 1 bounceEvents: type: array items: $ref: '#/components/schemas/bounceEvents' bounceEvents: properties: messageId: type: string description: The message Id associated with the message execution send attempt. date: type: string format: date-time example: '2016-08-29T19:12:33.001Z' message: type: string example: Mailbox is full bounceType: type: string example: SOFT hRefLink: type: object required: - href properties: href: type: string suppressionListLink: type: object required: - self properties: self: $ref: '#/components/schemas/hRefLink' next: $ref: '#/components/schemas/hRefLink' example: self: href: '/config/suppression/addresses?type=CLIENT&limit=20&orderby=entityvalue' next: href: '/config/suppression/addresses?type=CLIENT&limit=20&start=bademailtest10013@bademail.com&orderby=entityvalue' page: type: object properties: orderby: type: string enum: - entityvalue - entitytype - creationdate - lastmodifieddate - suppresseddate - suppresseduser - suppressedcomment example: '-entityvalue' next: type: string example: bademailtest10013@bademail.com count: type: integer example: 1 suppressionListResponse: type: object allOf: - $ref: '#/components/schemas/entityObject' suppressionListAddResponse: type: object allOf: - $ref: '#/components/schemas/addEntityObject' domainSuppressionListResponse: type: object allOf: - $ref: '#/components/schemas/domainEntityObject' uploadListLink: type: object required: - self properties: self: $ref: '#/components/schemas/hRefLink' next: $ref: '#/components/schemas/hRefLink' example: self: href: '/upload/jobs?limit=1&orderby=-createtime' next: href: '/upload/jobs?limit=1&start=1639983247&orderby=-createtime' uploadPage: type: object properties: orderby: type: string enum: - jobid - user - filename - createtime - endtime - status - responsecode - recordcount - handledcount - failedcount - id example: '-createtime' next: type: string example: "1639983247" count: type: integer example: 1 uploadListResponse: type: object allOf: - $ref: '#/components/schemas/uploads' uploadJobResponse: type: object allOf: - $ref: '#/components/schemas/uploadJob'