Skip to main content

3. Developing

Table of Contents

We currently support 2 events:

privacy_request.received
privacy_request.updated

Those events contain the latest state of the privacy request data. When a voicemail privacy request comes in, you may receive 2 privacy_request.updated after that – one when the voicemail recording is available, and another once the transcription is ready. Here is an example or privacy_request.received for a webform:

{
  "event_name": "privacy_request.received",
  "signature": {
    "random_token": "b39a5c7ac85ec479f921cdfaae4b4eee",
    "timestamp": "1584300477293",
    "signature": "599a40fb2d25f995a40dc43f725a57be4e8df90"
  },
  "id": "4e2c7dcd-8277-40bb-1082-66c7cb417df2",
  "type": "WebForm",
  "primary_identifier": "john@doe.com",
  "consumer_email": "john@doe.com",
  "email_verified_at": "2025-01-01",
  "acknowledged": true,
  "categorized": false,
  "verified": false,
  "email_verified_at": null,
  "extended": false,
  "completed": false,
  "completed_rights": {
    "data_categories_request": {
      "completed": false,
      "completed_at": null
    },
    "do_not_sell": {
      "completed": true,
      "completed_at": "2025-01-01"
    },
    "erase_my_information": {
      "completed": false,
      "completed_at": null
    },
    "send_me_a_copy_of_information": {
      "completed": false,
      "completed_at": null
    },
    "other": {
      "completed": false,
      "completed_at": null
    }
  },
  "deadline": "2025-07-02",
  "created_at": "2025-05-18T17:36:44.399Z",
  "updated_at": "2025-05-18T17:36:45.187Z",
  "categorized_rights": [
    {
      "data_categories_request": false,
      "do_not_sell": true,
      "erase_my_information": false,
      "send_me_a_copy_of_information": false,
      "other": {
        "checked": false,
        "answer": ""
      }
    },
    [
      {
        "displayName": "Tell me more about the data you collect, share and/or sell",
        "internalName": "data_categories_request",
        "daysToProcess": 45,
        "additionalDaysExtension": 45
      },
      {
        "displayName": "Do not sell or share my personal information (if applicable)",
        "internalName": "do_not_sell",
        "daysToProcess": 45,
        "additionalDaysExtension": 45
      },
      {
        "displayName": "Delete my personal information",
        "internalName": "erase_my_information",
        "daysToProcess": 45,
        "additionalDaysExtension": 45
      },
      {
        "displayName": "Send me a copy of my personal information",
        "internalName": "send_me_a_copy_of_information",
        "daysToProcess": 45,
        "additionalDaysExtension": 45
      },
      {
        "displayName": "Other",
        "internalName": "other",
        "daysToProcess": 45,
        "additionalDaysExtension": 45
      }
    ]
  ],
  "categorized_questions_data": [
    {
      "first_name": "John",
      "last_name": "Doe",
      "email": "John@Doe.com",
      "requester_type": "customer"
    },
    [
      {
        "displayName": "First Name",
        "internalName": "first_name",
        "inputType": "text",
        "options": [],
        "isPrimaryIdentifier": false,
        "verifyEmail": false,
        "isOptional": false
      },
      {
        "displayName": "Last Name",
        "internalName": "last_name",
        "inputType": "text",
        "options": [],
        "isPrimaryIdentifier": false,
        "verifyEmail": false,
        "isOptional": false
      },
      {
        "displayName": "Email Address",
        "internalName": "email",
        "inputType": "email",
        "options": [],
        "isPrimaryIdentifier": true,
        "verifyEmail": true
      },
      {
        "displayName": "I am a",
        "internalName": "requester_type",
        "inputType": "select",
        "options": [
          {
            "displayName": "Customer",
            "internalName": "customer"
          },
          {
            "displayName": "Employee",
            "internalName": "employee"
          },
          {
            "displayName": "Job Applicant",
            "internalName": "job_applicant"
          },
          {
            "displayName": "Vendor",
            "internalName": "vendor"
          },
          {
            "displayName": "Other",
            "internalName": "other"
          }
        ],
        "isPrimaryIdentifier": false,
        "verifyEmail": false
      }
    ]
  ],
  "categorized_country": "USA",
  "categorized_state": "California",
  "service_code": {
    "code": 1,
    "name": "Privacy Toll Free, LLC",
    "created_at": "2024-07-16T20:31:24.915Z",
    "updated_at": "2025-05-18T16:40:19.894Z"
  },
  "jurisdiction_rule": {
    "name": "USA only",
    "description": "Description of applied Jurisdiction Rule",
    "created_at": "2025-05-17T18:48:59.391Z",
    "days_to_process": 45,
    "notes": "This jurisdiction is available to see/edit in the dashboard in the Jurisdictions tab."
  },
  "web_form_session": {
    "id": "904c1b30-2ba8-49cf-a349-46f7c6b29e70",
    "created_at": "2025-05-18T17:36:44.394Z",
    "remote_ip": "24.102.96.226"
  }
}

Here is an example of a privacy_request.updated for a voicemail request:


{
  "event_name": "privacy_request.updated",
  "signature": {
    "random_token": "a021778c09cdae8897859340d3f0b32f",
    "timestamp": "1584305606907",
    "signature": "201de4703b7ce1eb33878fa29d77d8572ddeb2af"
  },
  "id": "abf78bbb-a152-4f09-90ad-5802f53721d7",
  "type": "Voicemail",
  "primary_identifier": "john@doe.com",
  "consumer_email": "john@doe.com",
  "email_verified_at": "2025-01-01",
  "acknowledged": "false",
  "categorized": false,
  "verified": true, 
  "extended": "false",
  "completed": "true",
  "completed_rights": {
    "data_categories_request": {
      "completed": false,
      "completed_at": null
    },
    "do_not_sell": {
      "completed": true,
      "completed_at": "2025-01-01"
    },
    "erase_my_information": {
      "completed": false,
      "completed_at": null
    },
    "send_me_a_copy_of_information": {
      "completed": false,
      "completed_at": null
    },
    "other": {
      "completed": false,
      "completed_at": null
    }
  },
  "deadline": "2019-11-05",
  "created_at": "2019-09-21 16:31:11 UTC",
  "updated_at": "2020-03-15 20:48:05 UTC",
  "categorized_rights": [
    {
      "data_categories_request": false,
      "do_not_sell": true,
      "erase_my_information": false,
      "send_me_a_copy_of_information": false,
      "other": {
        "checked": false,
        "answer": ""
      }
    },
    [
      {
        "displayName": "Tell me more about the data you collect, share and/or sell",
        "internalName": "data_categories_request",
        "daysToProcess": 45,
        "additionalDaysExtension": 45
      },
      {
        "displayName": "Do not sell or share my personal information (if applicable)",
        "internalName": "do_not_sell",
        "daysToProcess": 45,
        "additionalDaysExtension": 45
      },
      {
        "displayName": "Delete my personal information",
        "internalName": "erase_my_information",
        "daysToProcess": 45,
        "additionalDaysExtension": 45
      },
      {
        "displayName": "Send me a copy of my personal information",
        "internalName": "send_me_a_copy_of_information",
        "daysToProcess": 45,
        "additionalDaysExtension": 45
      },
      {
        "displayName": "Other",
        "internalName": "other",
        "daysToProcess": 45,
        "additionalDaysExtension": 45
      }
    ]
  ],
  "categorized_questions_data": [
    {
      "first_name": "John",
      "last_name": "Doe",
      "email": "John@Doe.com",
      "requester_type": "customer"
    },
    [
      {
        "displayName": "First Name",
        "internalName": "first_name",
        "inputType": "text",
        "options": [],
        "isPrimaryIdentifier": false,
        "verifyEmail": false,
        "isOptional": false
      },
      {
        "displayName": "Last Name",
        "internalName": "last_name",
        "inputType": "text",
        "options": [],
        "isPrimaryIdentifier": false,
        "verifyEmail": false,
        "isOptional": false
      },
      {
        "displayName": "Email Address",
        "internalName": "email",
        "inputType": "email",
        "options": [],
        "isPrimaryIdentifier": true,
        "verifyEmail": true
      },
      {
        "displayName": "I am a",
        "internalName": "requester_type",
        "inputType": "select",
        "options": [
          {
            "displayName": "Customer",
            "internalName": "customer"
          },
          {
            "displayName": "Employee",
            "internalName": "employee"
          },
          {
            "displayName": "Job Applicant",
            "internalName": "job_applicant"
          },
          {
            "displayName": "Vendor",
            "internalName": "vendor"
          },
          {
            "displayName": "Other",
            "internalName": "other"
          }
        ],
        "isPrimaryIdentifier": false,
        "verifyEmail": false
      }
    ]
  ],
  "categorized_country": "USA",
  "categorized_state": "California",
  "service_code": {
    "code": "2",
    "name": "test",
    "created_at": "2019-09-21 16:31:11 UTC",
    "updated_at": "2020-01-26 05:59:40 UTC"
  },
  "call_session": {
    "created_at": "2019-09-21 16:31:11 UTC",
    "ended_at": "2019-09-21 16:33:11 UTC",
    "caller_id": "+15555555555",
    "caller_name": "John Smith",
    "caller_state": "CA",
    "recording_status": "",
    "mp3_encoded_bytes": "",
    "transcription_status": "completed",
    "transcription_text": "Hello world!"
  }
}

Privacy Request

KeyDescription
event_nameString, eg: “privacy_request.received”



signature

Object, with a random token, a timestamp in milliseconds, and a signature. Please refer to the security section to use this
idUUID, the id as a string of the privacy request in our system.
typeString, e.g. “Voicemail”
primary_identifierString, the primary identifier of the request
consumer_emailString, the email used to communicate with the requester
email_verified_atDateTime at which the email was verified
acknowledgedBoolean, e.g: false represent if the privacy request was acknowledged.
verifiedBoolean, e.g true if the request is marked as verified
categorizedBoolean, eg true if the request is marked as categorized (always true for webform)
completedBoolean, e.g: true represent if the privacy request was completed.
completed_rightsHash of internal_key to completed hash; e.g “delete_me”: { completed: true/false, completed_at: 2025-01-01 }
extendedBoolean, e.g: “false” represent if the privacy request was extended.
deadlineDate, eg: “2019-11-05”, calculated based on the extended field, and created_at, and the jurisdiction rules. It will also calculate the nearest deadline for a non-completed right if you have different deadlines per right.
created_atTimestamp, the time at which we received this request
updated_atTimestamp, the time at which we updated this request
categorized_rightsThe recommended way to see the submitted rights. This is an array, the first index contains a key value pairs of rights submitted eg {“delete_me”} => true, the second index contains the configurations of rights: [ {internalName: “delete_me”, displayName: “Delete my personal information”, daysToProcess: 45}] etc…
categorized_questions_dataThe recommended way to see the submitted answers to the form field set OR when you categorize a voicemail or email request. This is an array, the first index contains a key value pairs of rights submitted eg {“first_name”} => “John”, the second index contains the configurations of rights: [ {internalName: “first_name”, displayName: “First Name”, isPrimaryIdentifier: false,
verifyEmail: false, isOptional: false}] etc…
categorized_countryThe recommended way to use the country associated with the request. This field is used for all types of request.
categorized_stateNull if not United States. This is the recommended way to get the state for a USA submission.

Service code

KeyDescription
codeString, your service code for this request.
nameString, your service code name for this request
created_atTimestamp at which your created the service code
updated_atTimestamp, the last time this object was updated.

Call Session

KeyDescription
created_atTimestamp at we received the call for this request
ended_atTimestamp when the caller hung up
caller_idString, the phone number we received
caller_nameString CNAM Lookup of the caller name
caller_stateString e.g. “CA” state of the consumer derived from area code of the number
recording_statusString, “completed”, when bytes are available, or “failed”.
mp3_encoded_byesString, a based64 encoded string representing the bytes of the mp3
transcription_statusString, “completed” if we completed the transcription.
transcription_text“Hello world!”

Web From Session

KeyDescription
idUUID of the web form session
created_atTimestamp at we received the webform for this request
webform_questions_dataThe object as an Array containing the information submitted as first index, and an object representing the forms questions as a second index. This field is copied in categorized_questions_data, we recommend using categorized_questions_data.
rightsAn array with first index the rights submitted by user, and second index the rights offered in the webform. This is field is copied in the categorized_rights; we recommend using categorized_rights.
remote_ipString, The IP address of the requester
country_of_residenceThe country submitted, copied over to categorized_country
stateNull if not USA; the USA State otherwise also copied over to categorized_state

Table of Contents