You may need to have information about an Issue or end user redacted under the following circumstances:

  • An end user has sent sensitive data in a message to an Agent unknowingly.
  • An end user has attached or uploaded a file with sensitive data to an Issue.
  • An end user has invoked Article 17 of the GDPR, “Right to Be Forgotten”.

The following types of information can be redacted via a redaction request:

  • Username
  • Email
  • The content of messages sent by the Agent or end user
  • CSAT feedback
  • Attachments
  • Custom Issue Fields
  • Campaigns related data (user attributes)
  • Titles and user identifiers in Helpshift Analytics

Please note the following regarding our Issue redaction processes:

  • Archived Issues will be redacted along with Open and Closed Issues.
  • After Issue or user data has been redacted, all redacted Issues will look like this in your Dashboard:

To see what an Issue will look like to an end user after redaction, see What will my end users see after an Issue has been redacted?

There are two ways to submit a redaction request, as detailed below. Option 1 is recommended, as it streamlines the process, is easier for a larger amount of redaction requests, and has a faster completion time. Option 2 should be used only for small one-off requests, and is scheduled to be deprecated in mid-2019.

1. Complete redaction requests using our REST APIs (recommended)

Helpshift provides a set of REST APIs that you can use to automatically create redaction requests to have personal support data removed per GDPR requirements. Redactions are processed on a weekly basis.

These redaction requests can be either ‘User’, ‘Message’, ‘Attachment’ or ‘Issue’ redactions, which indicates what type of content is to be redacted from our system (see the table below for details). Your organization will then use the REST /redaction API and provide a set of requests to Helpshift for processing. Once created, Helpshift will automatically schedule a periodic batch process that will perform the actual removal of that information. Your organization can periodically use the /redaction API to monitor the status of the current set of redaction requests.

To provide flexibility, user redactions can be identified via a variety of different methods, as defined in the table below.

TypeWhat is redacted?How is the information identified?Creating a redaction request
UserUser redactions will redact a specific HS user object from Helpshift, along with all private data for the user, and all Issues associated with that user.HS user objects can found under the /users endpoint, or through the ‘reporter’ property on a specific Issue.User redactions are created by indicating that the ”redaction_type’ is ‘user’, then providing one of the following identities:
IssueIssue redactions will remove private data from a specific Issue, and also remove the association with any user object. However, the user object and any other associated Issues will remain in Helpshift.This is identified via the Helpshift Issue ID.Issue redactions are created by indicating that the ”redaction_type’ is ‘issue’, then providing the ID of the Issue.
MessageMessage redaction will remove the message contents of the given Message ID.This is identified via the Helpshift Message ID.Message redactions are created by indicating that the ‘redaction_type’ is ‘message’, then providing the ID of the Message.
AttachmentAttachment redaction will delete all the attachments in a given message.The attachments are identified via the Helpshift Message ID.Attachment redactions are created by indicating that the ‘redaction_type’ is ‘attachment’, then providing the ID of the Message that contains the attachment/s.

Once your organization has a set of users or a set of Issues identified for redaction, you can use the REST APIs to create and monitor these redaction requests. (See our developer documentation on getting started to learn more about how to use the REST API).

PART 1: Creating Redaction Requests (POST /redaction)

API: POST /redaction

The POST /redaction API can be used to submit a set of redaction requests. They can be given in the ‘requests’ parameter as an array of requests in JSON format, as follows:

requests: [ {
redaction_type (string) = [‘issue’, ‘user’],
property (string) = [’email’, ‘issue_id’, ‘hs_user_id’, ‘external_user_id’],
value (string),
app_publish_id (string),
external_redaction_id (string, optional) } ]

A maximum of 25 redaction requests is allowed per API call. The requests object contains the following properties:

PropertyTypeRequired?Description
redaction_typeStringYes“user” or “issue” to indicate the type of redaction
propertyStringYes“user_id” OR “hs_user_id” OR “issue_id” OR “email” to indicate what identity will be provided
valueStringYesThe actual identity (User ID, HS User ID, Issue ID or Email) used to identify what to be redacted
app_publish_idStringYesThe app that the redaction will take place for – this must match the app for the user or Issue
external_redaction_idStringNoAn optional external tracking ID that can be set when creating the redaction request

Example:

Sample CURL Request:

curl -u <api-key>: -H ‘Accept:application/json’ ‘https://api.helpshift.com/v1/<domain>/redactions’ –data-urlencode ‘requests=[{“redaction_type”: “issue”, “property”:”issue_id”,”value”:”6001″, “app_publish_id”: “99”,”external_redaction_id”:”KB-tracker”}]’

 

Response:

The following will be returned from the POST request:

ParameterTypeDescription
redaction_idIDA unique ID used to track the redaction request
successT/FIndication if the creation of the redaction request was a success
external_redaction_idIDThe external ID given in the request for tracking
etaDateThe estimated date when the job may complete
reasonStringIf there is a failure to create a request, this is the reason why that request failed – user id / issue id is invalid / is already redacted / has existing redaction request / is part of existing user redaction request

Example Response:

PART 2: Confirming Redaction Status

API: GET /redaction/status

The GET /redaction/status API will return a set of existing redaction requests along with the current status of each request.

Filters:

The GET /redaction/status API is used to identify specific redaction requests. At least one of the following filters is required.

FilterUse
/redactions/status?external_redaction_id=valueUses an external redaction ID to filter redaction requests
/redactions/status?redaction_id=valueFind a specific redaction request based on redaction ID
/redactions/status?issue_id=valueFind redaction request based on issue ID
/redactions/status?email=valueFind redaction requests created for a specific email address
/redactions/status?external_user_id=valueFind redaction requests created based on the external user ID
/redactions/status?hs_user_id=valueFind redaction requests created based on the Helpshift user ID

Additional Parameters:

 

  • page(Optional)

 

  • = Returns a specific page when handling large lists

Response:

The GET request will return a JSON response that includes the set of redaction request objects in the following format.

{
“redaction_id”: “string”,
“status”: “created”,
“eta”: “string”,
“reason”: “string”,
“request”: {
“redaction_type”: “issue”,
“property”: “email”,
“value”: “string”,
“app_publish_id”: “string”,
“external_redaction_id”: “string”
}
}

Request object details:

PropertiesTypeDescription
redaction_idStringHS returned ID of the redaction request
etaStringexpected date of redaction
statusStringcreated: The export or remove job is started
done: The export or remove job is complete
not_found: There is no export or remove job with the given job id
running: The export or remove job is in progress
waiting: The export or remove job has not started
reasonStringReason for any failure to process a request
requestObjectOriginal redaction request object passed in through POST

Examples:

Using the GET /redactions/status?(filter) to list redactions

CURL:

curl -u <api-key>: ‘https://api.helpshift.com/v1/<domain>/redactions/status?external_redaction_id=KB-tracker&page=1

Example Response:

 

2. Manually submit CSVs to Helpshift Support

Please note: this option should be reserved for small, one-off redaction requests, and is scheduled to be deprecated in mid-2019.

To submit a manual request for Issue redaction to our support team, complete the following steps:

1. Create a CSV file and name it {YourDomain}_RedactionRequest_AdminName_DDMMYY (date, month, year).

2. Within that CSV file, copy-paste the following information about the Issue. All fields are mandatory.

    • Column A: your domain name (exact match as it appears in your Dashboard URL)
    • Column B: the app publish ID, which can be found on your Settings > App Settings page (per the screenshot below)

  • Column C: the Issue ID number (you only need to enter one, numbers only)
  • Column D: the end user’s email address (only required for user redaction requests; optional for Issue redaction requests)
  • Column E: the type of redaction, either ‘I’ for an entire Issue or ‘U’ for an end user
    • Please note: ‘U’ is meant for end users who are invoking their “Right to be Forgotten” per GDPR legislation.

We have provided our template spreadsheet you can use to format and submit your redaction requests. Please note that the header row is required in order for this request to be processed.

3. Once you’ve created this spreadsheet, notify the Admin of your team that you have a redaction request.

4. As the Admin, you should then review the redaction nominations and the CSV filename to ensure everything is correct. Once you’ve done so, send use our contact form to reach out to our support team and attach the .CSV file with the file name as: {DOMAIN}_RedactionRequest_AdminName_DDMMYY.

Our support team will follow up with an email confirmation once the submitted file has been processed for redaction. We will process all redaction requests within 28 days from the time of submission.