Download OpenAPI specification:Download
You can access our API using the OAuth 2 standard, via the machine-to-machine "Client Credentials" flow.
clientCredentials
https://privacyapi.privacyhawk.com/token
all
- Full partner access to the API
Alternatively, we also support the potentially more secure JSON Web Token (JWT) authentication method.
The widely-adopted JWT standard has ready-made libraries for nearly every common language and exceeds most authentication or security requirements.
First, securely generate your secret key.
You must choose an algorithm from the table below. For the highest level of security use Ed25519. Otherwise use RSA with a 4096bit key for the most compatible option.
# EdDSA
openssl genpkey -algorithm ED25519 -out api-key
# RS256
openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:4096 -out api-key
Next, generate your public key based on the secret key file.
openssl pkey -in api-key -pubout > api-key.pub
Send the public key to us over an authenticated channel such as email with DKIM or PGP.
Use the secret key to cryptographically sign a JSON Web Token (JWT) accompanying each API request. Send the token in the Authorization HTTP header, via the bearer scheme (originally part of OAuth, but often used by itself), e.g.
Authorization: Bearer <signed token here>
Each JWT MUST include the following fields:
Name | Description | Example value |
---|---|---|
alg |
Algorithm | "RS256" |
jti |
Unique token ID | "IRFa-VaY2b" |
iat |
UNIX timestamp | 1580674288 |
iss |
Issuer ID (assigned to you) | "NSVyQajyYE" |
Each JWT may also include the following fields:
Name | Description | Example value |
---|---|---|
nbf |
A token will not be considered valid prior to the specified timestamp. | 1580450000 |
exp |
A token will not be considered valid after the specified timestamp. | 1580690000 |
Use one of the following algorithms for the alg
field:
Name | Algorithm | Notes |
---|---|---|
EdDSA |
ECDH using Curve25519 or Ed448 | Most secure |
RS256 |
RSASSA-PKCS1-v1_5 using SHA-256 | Most portable |
See this JavaScript pseudocode example of generating the JWT:
import jwt from 'jwt';
import uuid from 'uuid-random';
function generateJwt(appId, privateKey) {
return jwt.sign(privateKey, {
alg: 'RS256',
iss: appId,
jti: uuid(),
iat: Math.round((+new Date()) / 1000),
});
}
For more information about security and authentication, please contact us.
bearer
JWT
Clients with sandbox environment access may specify additional parameters for specific endpoints to manipulate how they perform in order to build against a number of possible conditions. See the specific endpoint documentation for information on which parameters are available and how they may be utilized.
The following request headers may be utilized within the sandbox environment to further modify the behavior of the platform for the purposes of development and integration testing. These will have no effect in the production environment.
Name | Description | Example value |
---|---|---|
X-HTTP-Response |
Force the endpoint to respond with the specific HTTP response code | 500 |
Enqueue a private info scan.
As scans complete, we will send a callback to your configured
endpoint. For a realtime
scan, we will send several event-triggered
callbacks containing deltas. Otherwise, the system will wait until the
scan completes to trigger a callback.
customerId required | string (CustomerId) [ 1 .. 64 ] characters ^[!=#-&*-:?-~]{1,64}$ The cross-reference ID provided with a Scan or Enrollment. Customer IDs can include any
printable ASCII characters except: |
required | object (Profile) The user's personal information. |
realtime | boolean (ScanRealtime) Default: false Whether scan callbacks emit in "real-time" as it processes (deltas).
If set to |
scanType | string (ScanType) Default: "standard" The name of the scan's subscription plan. Subscription plans offer API clients the ability to create scans with different data broker groups and other configurable settings. API clients with only one subscription plan do not need to submit this field when creating scans. API clients with multiple subscription plans should, unless they have a default plan pre-configured. |
desiredResults | string (DesiredResults) Default: "random" Enum: "all" "random" "static" "none" In the sandbox environment, this determines which brokers in this scan (or all related scans, when creating an enrollment) will return results. THIS VALUE IS IGNORED IN ALL OTHER ENVIRONMENTS.
Note: Regardless of the value of this parameter, two factors will always limit the brokers which return results:
So if your client has broker |
desiredRetries | string (DesiredRetries) Default: "none" Enum: "none" "static" "random" In the sandbox environment, this determines which brokers in this scan
(or all related scans, when creating an enrollment) will simulate a "retry"
condition: e.g. the broker site is down, etc. It is used in conjunction
with the THIS VALUE IS IGNORED IN ALL OTHER ENVIRONMENTS.
|
{- "customerId": "adcb24aa-5026-11ea-a555-1352677bac24",
- "profile": {
- "birthYear": 1934,
- "birthMonth": 6,
- "name": {
- "prefix": "Dame",
- "first": "Jane",
- "middle": "M",
- "last": "Goodall",
- "suffix": "DBE"
}, - "otherNames": [
- {
- "first": "Valerie",
- "middle": "Jane",
- "last": "Morris-Goodall"
}, - {
- "prefix": "Baroness",
- "first": "Jane",
- "last": "van Lawick-Goodall"
}
], - "addresses": [
- {
- "city": "New York",
- "state": "NY",
- "country": "US",
- "current": true
}
], - "emailAddresses": [
- "jgoodall@cam.ac.uk"
], - "phoneNumbers": [
- "+15701234444"
]
}, - "realtime": true,
- "scanType": "standard",
- "desiredResults": "all",
- "desiredRetries": "none"
}
{- "id": "UApLJ13NVX819Di5rbXsn",
- "customerId": "adcb24aa-5026-11ea-a555-1352677bac24",
- "enrollmentId": null,
- "scanType": "standard",
- "brokerCount": 23,
- "brokerIds": [
- "11"
], - "realtime": true,
- "status": "created",
- "createdAt": "2020-02-28T19:00:04.433Z",
- "modifiedAt": "2020-02-28T19:00:04.433Z",
- "startedAt": null,
- "stoppedAt": null
}
{- "eventType": "scans",
- "scans": [
- {
- "id": "UApLJ13NVX819Di5rbXsn",
- "customerId": "adcb24aa-5026-11ea-a555-1352677bac24",
- "enrollmentId": "string",
- "scanType": "standard",
- "brokerCount": 23,
- "brokerIds": [
- "11"
], - "realtime": true,
- "status": "created",
- "createdAt": "2020-02-28T19:00:04.433Z",
- "modifiedAt": "2020-02-28T19:00:04.433Z",
- "startedAt": null,
- "stoppedAt": null
}
], - "brokerScans": [
- {
- "id": "bJKzf_K2DoHJDwfaRb3_4",
- "scanId": "UApLJ13NVX819Di5rbXsn",
- "brokerId": "11",
- "recordsMatched": 0,
- "status": "success",
- "startedAt": "2020-02-28T19:00:04.527Z",
- "stoppedAt": "2020-02-28T19:00:10.984Z"
}
], - "records": [
- {
- "id": "DR9a3pWlwpJj_xNpDeiMM",
- "scanId": "UApLJ13NVX819Di5rbXsn",
- "brokerId": "11",
- "customerId": "adcb24aa-5026-11ea-a555-1352677bac24",
- "score": 1,
- "createdAt": "2020-02-14T12:21:46.433Z",
- "submittedAt": "2020-02-14T12:21:46.433Z",
- "confirmedAt": null,
- "verifiedAt": null,
- "modifiedAt": "2020-02-14T12:21:46.433Z",
- "age": "30-35",
- "addresses": [
- "Scranton, PA",
- "Allenhurst, GA",
- "Hinesville, GA",
- "Savannah, GA"
], - "fullName": "Toby Flanderson",
- "relatives": [
- "John Laskowski",
- "Paul Wilkerson"
], - "phoneNumbers": [
- "(646) 863-8226"
], - "emailAddresses": [
- "tflen67@hotmail.com"
], - "education": "Completed High School",
- "employment": [
- "Academic Adviser, Undergraduate Education at Pennsylvania State University"
], - "gender": "Female",
- "occupation": "Software engineer",
- "property": [
- "Presumed owner of the real estate located at 1234 Main St, Bradford"
]
}
]
}
Use this endpoint to trigger removal of an existing scan's PII.
id required | string (ScanId) Example: UApLJ13NVX819Di5rbXsn the unique ID for a scan |
{- "customerId": "adcb24aa-5026-11ea-a555-1352677bac24"
}
Enroll a customer in ongoing private info removal.
If there is already an active enrollment with the same customerId
,
you will receive an HTTP 409
response.
Note: the above uniqueness check is done using "eventual consistency",
so two requests in quick succession with the same customerId
value
could potentially result in a duplicate.
Enrolling a customer will automatically trigger an immediate
realtime
scan, as well as non-realtime scans on a regular basis.
As scans complete, we will send a callback to your configured
endpoint. For a realtime
scan, we will send several event-triggered
callbacks containing deltas. Otherwise, the system will wait for the
scan to complete before sending a callback.
As we verify the removal of private info records, we will also post
a records
callback with the updated record information.
If a callback fails, we will retry with exponential back-off until it succeeds.
customerId required | string (CustomerId) [ 1 .. 64 ] characters ^[!=#-&*-:?-~]{1,64}$ The cross-reference ID provided with a Scan or Enrollment. Customer IDs can include any
printable ASCII characters except: |
required | object (Profile) The user's personal information. |
enrollmentType | string (EnrollmentType) Default: "standard" The name of the enrollment's subscription Plan Subscription plans offer API clients the ability to create enrollments with different data broker groups, billing cycles, rescan cadences and other configurable settings. API clients with only one subscription plan do not need to submit this field when creating enrollments. API clients with multiple subscription plans should, unless they have a default plan pre-configured. |
monthsPerBillingCycle | integer This field is now associated with plans and will be removed from enrollments in a future release. |
desiredResults | string (DesiredResults) Default: "random" Enum: "all" "random" "static" "none" In the sandbox environment, this determines which brokers in this scan (or all related scans, when creating an enrollment) will return results. THIS VALUE IS IGNORED IN ALL OTHER ENVIRONMENTS.
Note: Regardless of the value of this parameter, two factors will always limit the brokers which return results:
So if your client has broker |
desiredRetries | string (DesiredRetries) Default: "none" Enum: "none" "static" "random" In the sandbox environment, this determines which brokers in this scan
(or all related scans, when creating an enrollment) will simulate a "retry"
condition: e.g. the broker site is down, etc. It is used in conjunction
with the THIS VALUE IS IGNORED IN ALL OTHER ENVIRONMENTS.
|
desiredVerifications | string (DesiredVerifications) Default: "all" Enum: "all" "random" "static" "none" In the sandbox environment, this determines which brokers will verify results for the related enrollment scans. THIS VALUE IS IGNORED IN ALL OTHER ENVIRONMENTS.
|
{- "customerId": "adcb24aa-5026-11ea-a555-1352677bac24",
- "profile": {
- "birthYear": 1934,
- "birthMonth": 6,
- "name": {
- "prefix": "Dame",
- "first": "Jane",
- "middle": "M",
- "last": "Goodall",
- "suffix": "DBE"
}, - "otherNames": [
- {
- "first": "Valerie",
- "middle": "Jane",
- "last": "Morris-Goodall"
}, - {
- "prefix": "Baroness",
- "first": "Jane",
- "last": "van Lawick-Goodall"
}
], - "addresses": [
- {
- "city": "New York",
- "state": "NY",
- "country": "US",
- "current": true
}
], - "emailAddresses": [
- "jgoodall@cam.ac.uk"
], - "phoneNumbers": [
- "+15701234444"
]
}, - "enrollmentType": "standard",
- "monthsPerBillingCycle": 0,
- "desiredResults": "all",
- "desiredRetries": "none",
- "desiredVerifications": "all"
}
{- "id": "LD89DON3hzRDXq9T_7KWq",
- "customerId": "adcb24aa-5026-11ea-a555-1352677bac24",
- "enrollmentType": "standard",
- "modifiedAt": "2020-02-14T14:07:36.283Z",
- "createdAt": "2020-02-14T12:21:46.433Z",
- "canceledAt": null,
- "rescanAt": "2020-03-14T00:00:00.000Z",
- "monthsPerBillingCycle": 0
}
{- "eventType": "enrollments",
- "enrollments": [
- {
- "id": "LD89DON3hzRDXq9T_7KWq",
- "customerId": "adcb24aa-5026-11ea-a555-1352677bac24",
- "enrollmentType": "standard",
- "modifiedAt": "2020-02-14T14:07:36.283Z",
- "createdAt": "2020-02-14T12:21:46.433Z",
- "canceledAt": null,
- "rescanAt": "2020-03-14T00:00:00.000Z",
- "monthsPerBillingCycle": 0
}
]
}
Performs a shallow update of the enrollment object.
For example, if you want to update any part of the profile
attribute,
you must pass the entire profile
object.
id required | string (EnrollmentId) Example: LD89DON3hzRDXq9T_7KWq the unique ID for the enrollment |
required | object (Profile) The user's personal information. |
{- "profile": {
- "birthYear": 1934,
- "birthMonth": 6,
- "name": {
- "prefix": "Dame",
- "first": "Jane",
- "middle": "M",
- "last": "Goodall",
- "suffix": "DBE"
}, - "otherNames": [
- {
- "first": "Valerie",
- "middle": "Jane",
- "last": "Morris-Goodall"
}, - {
- "prefix": "Baroness",
- "first": "Jane",
- "last": "van Lawick-Goodall"
}
], - "addresses": [
- {
- "city": "New York",
- "state": "NY",
- "country": "US",
- "current": true
}
], - "emailAddresses": [
- "jgoodall@cam.ac.uk"
], - "phoneNumbers": [
- "+15701234444"
]
}
}
{- "errors": [
- {
- "status": "422",
- "title": "Unprocessable Entity",
- "detail": "Missing required field."
}
]
}
Use this endpoint to trigger removal of an existing enrollment's PII.
WARNING: This may result in orphaned records that can no longer be remediated.
The Cancel Enrollment endpoint is preferred, as it will only delete this information once all records have been remediated.
id required | string (EnrollmentId) Example: LD89DON3hzRDXq9T_7KWq the unique ID for the enrollment |
{- "customerId": "_JvG4bUe3m8jDT9C5jrOz"
}
Use this endpoint to add an authentication token for a third-party service to a customer.
The token
parameter should be the entire JSON token received from the service's OAuth flow. For example,
for gmail, the token would look something like this:
{
"access_token":"ya29...0163",
"refresh_token":"1//0...erfU",
"scope":"https://www.googleapis.com/auth/gmail.readonly openid https://www.googleapis.com/auth/userinfo.email",
"token_type":"Bearer",
"id_token":"eyJh...lzNg",
"expiry_date":1664403894958
}
id required | string (CustomerId) [ 1 .. 64 ] characters ^[!=#-&*-:?-~]{1,64}$ Example: adcb24aa-5026-11ea-a555-1352677bac24 The unique ID for a customer |
tokenType | any Enum: "gmail" "outlook" "yahoo" |
object |
{- "tokenType": "gmail",
- "token": {
- "access_token": "ya29...0163",
- "refresh_token": "1//0...erfU",
- "scope": "https://www.googleapis.com/auth/gmail.readonly openid https://www.googleapis.com/auth/userinfo.email",
- "token_type": "Bearer",
- "id_token": "eyJh...lzNg",
- "expiry_date": 1664403894958
}
}
{- "id": "adcb24aa-5026-11ea-a555-1352677bac24",
- "requiredActions": [
- "addEmailToken"
], - "createdAt": "2020-02-14T12:21:46.433Z",
- "modifiedAt": "2020-02-14T12:21:46.433Z"
}
Use this endpoint to invalidate all third-party authentication tokens for a customer
id required | string (CustomerId) [ 1 .. 64 ] characters ^[!=#-&*-:?-~]{1,64}$ Example: adcb24aa-5026-11ea-a555-1352677bac24 The unique ID for a customer |
{- "id": "adcb24aa-5026-11ea-a555-1352677bac24",
- "requiredActions": [
- "addEmailToken"
], - "createdAt": "2020-02-14T12:21:46.433Z",
- "modifiedAt": "2020-02-14T12:21:46.433Z"
}
Use this endpoint to set the authorized signature data for a customer
id required | string (CustomerId) [ 1 .. 64 ] characters ^[!=#-&*-:?-~]{1,64}$ Example: adcb24aa-5026-11ea-a555-1352677bac24 The unique ID for a customer |
object |
{- "signature": { }
}
{- "id": "adcb24aa-5026-11ea-a555-1352677bac24",
- "requiredActions": [
- "addEmailToken"
], - "createdAt": "2020-02-14T12:21:46.433Z",
- "modifiedAt": "2020-02-14T12:21:46.433Z"
}
Use this endpoint to revoke the authorized signature for a customer
id required | string (CustomerId) [ 1 .. 64 ] characters ^[!=#-&*-:?-~]{1,64}$ Example: adcb24aa-5026-11ea-a555-1352677bac24 The unique ID for a customer |
{- "id": "adcb24aa-5026-11ea-a555-1352677bac24",
- "requiredActions": [
- "addEmailToken"
], - "createdAt": "2020-02-14T12:21:46.433Z",
- "modifiedAt": "2020-02-14T12:21:46.433Z"
}
Tracks a customer interaction on the client website.
id required | string (CustomerId) [ 1 .. 64 ] characters ^[!=#-&*-:?-~]{1,64}$ Example: adcb24aa-5026-11ea-a555-1352677bac24 The unique ID for a customer |
brokerFamilyId required | string (BrokerFamilyId) [ 10 .. 100 ] characters ID referring to a specific Broker Family object |
interactedAt required | string (DateTime) |
actionType required | any Value: "completedManualOptout" |
{- "brokerFamilyId": "brokerFamily:PeopleConnect",
- "interactedAt": "2020-02-14T12:21:46.433Z",
- "actionType": "completedManualOptout"
}
{- "errors": [
- {
- "status": "404",
- "title": "Not Found",
- "detail": "The requested resource was not found"
}
]
}
Reconcile any inconsistency between data sources.
In general, data will flow back to your servers via callbacks/webhooks. However, we provide these endpoints for mostly-automated reconciliation of missing or inconsistent data.
Retrieve the current manifest of public keys that can validate callback POSTs from the Privacy API. They are expressed in JWKS (JSON Web Key Set) format that should be easily loadable into a number of JWT/JWK implementations for the purposes of validation. Since the manifest changes very rarely, you can safely cache the manifest for performance and only re-fetch if you find you are missing a key ID.
Privacy API callbacks will include a X-Webhook-JWS
signature that is a payload-decoupled
JSON Web Token (JWT) signed with the private side of the presented public keys.
By validating the POST body against this token, you will confirm that not only did
the callback originate from the Privacy API, but also that the contents have not been
manipulated as changes to the data would invalidate the signature. Inside the "header"
section of the token is a kid
property which matches up with one of the keys in the
manifest.
The steps required to validate a callback are as follows:
<JWT Header>.<Payload>.<Signature>
. Most
languages should have a library to do this encoding, such as
url-safe-base64 for Node.js or
this helper function for PHP.Effectively the algorithm is:
1) Perform a standard Base64 "encode" on the string.
2) Replace all "+" characters with "-"
3) Replace all "/" characters with "_"
4) Trim any "=" padding characters at the end
decode/parse
the JWT so you can access the decoded
header. This will reveal the ID of the key you need to authenticate against. Some
implementations, such as jose for Node.js or
php-jwt for PHP allow you to simply provide the
entire key set.verify
the token against the appropriate key
(or key set if supported by your JWT implementation) from the manifest.kid
value in the header is not one of the keys in the manifest, try
re-fetching the manifest and attempting your verification loop again. The Privacy API
will not start signing callbacks using a key until its public counterpart is
available via this endpoint in Production.{- "keys": [
- {
- "e": "AQAB",
- "n": "Dw4D23...QtHtC",
- "kty": "RSA",
- "kid": "DklFvTtyX",
- "alg": "RS256"
}
]
}
Get the status of a scan.
id required | string (ScanId) Example: UApLJ13NVX819Di5rbXsn the unique ID for a scan |
{- "id": "UApLJ13NVX819Di5rbXsn",
- "customerId": "adcb24aa-5026-11ea-a555-1352677bac24",
- "enrollmentId": "string",
- "scanType": "standard",
- "brokerCount": 23,
- "brokerIds": [
- "11"
], - "realtime": true,
- "status": "created",
- "createdAt": "2020-02-28T19:00:04.433Z",
- "modifiedAt": "2020-02-28T19:00:04.433Z",
- "startedAt": null,
- "stoppedAt": null
}
Get all records matched by a specific scan.
id required | string (ScanId) Example: UApLJ13NVX819Di5rbXsn the unique ID for a scan |
[- {
- "id": "DR9a3pWlwpJj_xNpDeiMM",
- "scanId": "UApLJ13NVX819Di5rbXsn",
- "brokerId": "11",
- "customerId": "adcb24aa-5026-11ea-a555-1352677bac24",
- "score": 1,
- "createdAt": "2020-02-14T12:21:46.433Z",
- "submittedAt": "2020-02-14T12:21:46.433Z",
- "confirmedAt": null,
- "verifiedAt": null,
- "modifiedAt": "2020-02-14T12:21:46.433Z",
- "age": "30-35",
- "addresses": [
- "Scranton, PA",
- "Allenhurst, GA",
- "Hinesville, GA",
- "Savannah, GA"
], - "fullName": "Toby Flanderson",
- "relatives": [
- "John Laskowski",
- "Paul Wilkerson"
], - "phoneNumbers": [
- "(646) 863-8226"
], - "emailAddresses": [
- "tflen67@hotmail.com"
], - "education": "Completed High School",
- "employment": [
- "Academic Adviser, Undergraduate Education at Pennsylvania State University"
], - "gender": "Female",
- "occupation": "Software engineer",
- "property": [
- "Presumed owner of the real estate located at 1234 Main St, Bradford"
]
}
]
Get all Broker Scans associated with a specific scan.
id required | string (ScanId) Example: UApLJ13NVX819Di5rbXsn the unique ID for a scan |
[- {
- "id": "bJKzf_K2DoHJDwfaRb3_4",
- "scanId": "UApLJ13NVX819Di5rbXsn",
- "brokerId": "11",
- "recordsMatched": 0,
- "status": "success",
- "startedAt": "2020-02-28T19:00:04.527Z",
- "stoppedAt": "2020-02-28T19:00:10.984Z"
}
]
Get the status of a customer.
id required | string (CustomerId) [ 1 .. 64 ] characters ^[!=#-&*-:?-~]{1,64}$ Example: adcb24aa-5026-11ea-a555-1352677bac24 The unique ID for a customer |
{- "id": "adcb24aa-5026-11ea-a555-1352677bac24",
- "requiredActions": [
- "addEmailToken"
], - "createdAt": "2020-02-14T12:21:46.433Z",
- "modifiedAt": "2020-02-14T12:21:46.433Z"
}
Get all scans belonging to a specific customer
id required | string (CustomerId) [ 1 .. 64 ] characters ^[!=#-&*-:?-~]{1,64}$ Example: adcb24aa-5026-11ea-a555-1352677bac24 The unique ID for a customer |
[- {
- "id": "UApLJ13NVX819Di5rbXsn",
- "customerId": "adcb24aa-5026-11ea-a555-1352677bac24",
- "enrollmentId": "string",
- "scanType": "standard",
- "brokerCount": 23,
- "brokerIds": [
- "11"
], - "realtime": true,
- "status": "created",
- "createdAt": "2020-02-28T19:00:04.433Z",
- "modifiedAt": "2020-02-28T19:00:04.433Z",
- "startedAt": null,
- "stoppedAt": null
}
]
Get all Enrollments belonging to a specific customer
id required | string (CustomerId) [ 1 .. 64 ] characters ^[!=#-&*-:?-~]{1,64}$ Example: adcb24aa-5026-11ea-a555-1352677bac24 The unique ID for a customer |
[- {
- "id": "LD89DON3hzRDXq9T_7KWq",
- "customerId": "adcb24aa-5026-11ea-a555-1352677bac24",
- "enrollmentType": "standard",
- "modifiedAt": "2020-02-14T14:07:36.283Z",
- "createdAt": "2020-02-14T12:21:46.433Z",
- "canceledAt": null,
- "rescanAt": "2020-03-14T00:00:00.000Z",
- "monthsPerBillingCycle": 0
}
]
Get the status of an enrollment.
id required | string (EnrollmentId) Example: LD89DON3hzRDXq9T_7KWq the unique ID for the enrollment |
{- "id": "LD89DON3hzRDXq9T_7KWq",
- "customerId": "adcb24aa-5026-11ea-a555-1352677bac24",
- "enrollmentType": "standard",
- "modifiedAt": "2020-02-14T14:07:36.283Z",
- "createdAt": "2020-02-14T12:21:46.433Z",
- "canceledAt": null,
- "rescanAt": "2020-03-14T00:00:00.000Z",
- "monthsPerBillingCycle": 0
}
Get scans belonging to an enrollment
id required | string (EnrollmentId) Example: LD89DON3hzRDXq9T_7KWq the unique ID for the enrollment |
[- {
- "id": "UApLJ13NVX819Di5rbXsn",
- "customerId": "adcb24aa-5026-11ea-a555-1352677bac24",
- "enrollmentId": "string",
- "scanType": "standard",
- "brokerCount": 23,
- "brokerIds": [
- "11"
], - "realtime": true,
- "status": "created",
- "createdAt": "2020-02-28T19:00:04.433Z",
- "modifiedAt": "2020-02-28T19:00:04.433Z",
- "startedAt": null,
- "stoppedAt": null
}
]
Get the list of data brokers for all plans associated with your client.
includeIcons | boolean Default: false Set to |
includeRequiredFields | boolean Default: false Set to |
[- {
- "id": "11",
- "name": "InstantPeopleFinder",
- "enabled": true,
- "icon": "iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYA...",
- "infoTypes": [
- "Address"
], - "estimatedDaysToRemoveRecords": 10,
- "activeAt": "2020-02-14T12:21:46.433Z",
- "removedAt": null,
- "brokerType": "Scan Only",
- "capabilities": {
- "allowsSearch": true,
- "allowsOptOut": false,
- "allowsVerify": false
}, - "removalInstructions": "Send an email to [mailto: privacy-removals@example.com] that requests the identified record be removed.",
- "additionalProfileRequiredFields": [
- "addresses[0].address1",
- "addresses[0].postalCode",
- "phoneNumbers[0]",
- "emailAddresses[0]"
]
}
]
Get a specific broker by the broker's ID
id required | string (BrokerId) Example: 11 The unique ID for a Broker |
{- "id": "11",
- "name": "InstantPeopleFinder",
- "enabled": true,
- "icon": "iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYA...",
- "infoTypes": [
- "Address"
], - "estimatedDaysToRemoveRecords": 10,
- "activeAt": "2020-02-14T12:21:46.433Z",
- "removedAt": null,
- "brokerType": "Scan Only",
- "capabilities": {
- "allowsSearch": true,
- "allowsOptOut": false,
- "allowsVerify": false
}, - "removalInstructions": "Send an email to [mailto: privacy-removals@example.com] that requests the identified record be removed.",
- "additionalProfileRequiredFields": [
- "addresses[0].address1",
- "addresses[0].postalCode",
- "phoneNumbers[0]",
- "emailAddresses[0]"
]
}
Get a list of scan IDs from failed callback requests.
If a scan callback request fails to yield a success response, we will retry submitting the request over a period of time. If requests continue to fail after a configurable threshold, they will be logged as failures and future attempts will be halted. You will be notified via email that a failure has occurred. You may then use this endpoint to retrieve the scan IDs from the failed callbacks.
This endpoint is intended to be used to recover lost data after a system or network failure. Rate limits will not allow you to rely solely on this endpoint for polling scan updates.
The number and duration of retries vary by environment and can be provided on request.
start | integer (UnixTimestamp) Example: start=1609822800 The start of the reporting period formatted as a Unix timestamp. If not set, the default value is set at 30 days prior to the current date. |
end | integer (UnixTimestamp) Example: end=1609822800 The end of the reporting period formatted as a Unix timestamp. If not set, the default value is set to the current date. |
{- "scanIds": [
- "UApLJ13NVX819Di5rbXsn"
]
}
Get a list of enrollment IDs from failed callback requests.
If an enrollment callback request fails to yield a success response, we will retry submitting the request over a period of time. If requests continue to fail after a configurable threshold, they will be logged as failures and future attempts will be halted. You will be notified via email that a failure has occurred. You may then use this endpoint to retrieve the enrollment IDs from the failed callbacks.
This endpoint is intended to be used to recover lost data after a system or network failure. Rate limits will not allow you to rely solely on this endpoint for polling scan updates.
The number and duration of retries vary by environment and can be provided on request.
start | integer (UnixTimestamp) Example: start=1609822800 The start of the reporting period formatted as a Unix timestamp. If not set, the default value is set at 30 days prior to the current date. |
end | integer (UnixTimestamp) Example: end=1609822800 The end of the reporting period formatted as a Unix timestamp. If not set, the default value is set to the current date. |
{- "enrollmentIds": [
- "LD89DON3hzRDXq9T_7KWq"
]
}
If you encounter missing data, a scan or removal that was not submitted when expected, or a scan that failed, you can notify us programmatically using this endpoint.
Certain exceptionType
values imply the inclusion of specific id fields. These
are "soft" requirements - meaning that the endpoint will still accept your POST
without the ids, but we may not be able to act on the report without additional information.
failedBrokerScan
requires brokerScanIds
missingBrokerScans
, missingRecurringRecords
, and missingFreeScanRecords
require scanIds
removalsNotSubmitted
and removalsNotVerified
require recordIds
missingFreeScanId
requires customerIds
missingRecurringScan
requires enrollmentIds
exceptionType required | string (ExceptionType) Enum: "failedBrokerScan" "missingBrokerScans" "missingFreeScanId" "missingFreeScanRecords" "missingRecurringScan" "missingRecurringRecords" "removalsNotSubmitted" "removalsNotVerified" The type of an Exception |
brokerScanIds | Array of strings (BrokerScanId) |
customerIds required | Array of strings (CustomerId) [ items [ 1 .. 64 ] characters ^[!=#-&*-:?-~]{1,64}$ ] |
enrollmentIds | Array of strings (EnrollmentId) |
scanIds | Array of strings (ScanId) |
recordIds | Array of strings (RecordId) |
{- "exceptionType": "missingRecurringScan",
- "brokerScanIds": [
- "bJKzf_K2DoHJDwfaRb3_4"
], - "customerIds": [
- "adcb24aa-5026-11ea-a555-1352677bac24"
], - "enrollmentIds": [
- "LD89DON3hzRDXq9T_7KWq"
], - "scanIds": [
- "UApLJ13NVX819Di5rbXsn"
], - "recordIds": [
- "DR9a3pWlwpJj_xNpDeiMM"
]
}
{- "id": "ISSYUdYoqpVmrSlqJAN0G"
}
Get the full list of subscription plans assigned to an API client account. Subscription plans allow API clients to define multiple configuration sets for enrollments. Each subscription plan defines the following settings:
[- {
- "id": "N1Sdk3R8_Z5jdHi6B-myT",
- "name": "Default",
- "description": "Domestic plan with all default settings",
- "brokerPackageType": "domestic",
- "monthsPerBillingCycle": 1,
- "createdAt": "2020-02-28T19:00:04.433Z",
- "modifiedAt": "2020-02-28T19:00:04.433Z"
}
]
Get a single subscription plan. Subscription plans allow API clients to define multiple configuration sets for enrollments. Each subscription plan defines the following settings:
id required | string (PlanId) Example: id=N1Sdk3R8_Z5jdHi6B-myT the unique ID for a plan |
{- "id": "N1Sdk3R8_Z5jdHi6B-myT",
- "name": "Default",
- "description": "Domestic plan with all default settings",
- "brokerPackageType": "domestic",
- "monthsPerBillingCycle": 1,
- "createdAt": "2020-02-28T19:00:04.433Z",
- "modifiedAt": "2020-02-28T19:00:04.433Z"
}
Get the full list of broker families. A broker family will only include brokers ids that are active for the client's plans.
[- {
- "id": "brokerFamily:PeopleConnect",
- "name": "PeopleConnect",
- "parentBrokerId": "string",
- "brokerIds": [
- "11"
], - "removalInstructions": {
- "removalSteps": "string",
- "removalURL": "string",
- "supportEmail": "string",
- "notGettingRemoved": "string",
- "lastModifiedDate": "2020-02-28T19:00:04.433Z"
}, - "createdAt": "2020-02-28T19:00:04.433Z",
- "modifiedAt": "2020-02-28T19:00:04.433Z"
}
]