Private Info Scan & Removal API (v1)

Download OpenAPI specification:Download

Authentication

OAuth

You can access our API using the OAuth 2 standard, via the machine-to-machine "Client Credentials" flow.

Security Scheme Type: OAuth2
Flow type: clientCredentials
Token URL: https://privacyapi.privacyhawk.com/token
Scopes:
  • all -

    Full partner access to the API

JWT

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.

  • Neither party transmits private keys
  • Industry-standard asymmetric cryptography
  • Gracefully update keys with no downtime
  • Secure against MITM and replay attacks
  • Unique, compact base64 tokens

Generate a key pair

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.

HTTP Header

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>

Required Fields

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"

Optional Fields

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

Algorithm

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.

Security Scheme Type: HTTP
HTTP Authorization Scheme: bearer
Bearer format: JWT

Sandbox Testing

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.

Request Headers

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

Scan

Ad-hoc scans for private information across all data broker sites.

Create a Scan

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.

Authorizations:
OAuthJWT
Request Body schema: application/json
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 false, the system will wait until the scan completes before emitting a callback.

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.

  • all: Every eligible broker will return at least one result.
  • random: A random selection of brokers will return at least one result. This may be 0, or it may be all the brokers, or any value in between. For enrollments, the selection will be determined independently for each recurring scan, so you may get a different set of brokers each time we rescan that enrollment.
  • static: A fixed set of brokers will return at least one result. This will always be the same set of brokers for any scan, ad-hoc or recurring. The set of included brokers may change between API versions, and as brokers are added to or removed from your client's enabled list.
  • none: No brokers will return results.

Note: Regardless of the value of this parameter, two factors will always limit the brokers which return results:

  • The set of brokers that are enabled for your client.
  • The set of brokers that match the primary address country in the profile.

So if your client has broker X disabled, you will not get results for broker X regardless the value of this parameter. Similarly, if the profile has a US primary address, brokers that don't include US addresses will return 0 results, even if this value is all.

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 desiredResults parameter above to help further simulate real-world operating conditions.

THIS VALUE IS IGNORED IN ALL OTHER ENVIRONMENTS.

  • none: No brokers will require retries.
  • static: A fixed set of brokers will result in one or more retries. This will always be the same set of brokers for any scan, ad-hoc or recurring. The set of included brokers may change between API versions, and as brokers are added to or removed from your client's enabled list.
  • random: A random selection of brokers will result in one or more scan retries. This may be none, or it may be all the brokers, or any value in between. For enrollments, the selection will be determined independently for each recurring scan, so you may get a different set of brokers each time we rescan that enrollment.

Responses

Callbacks

Request samples

Content type
application/json
{
  • "customerId": "adcb24aa-5026-11ea-a555-1352677bac24",
  • "profile": {
    },
  • "realtime": true,
  • "scanType": "standard",
  • "desiredResults": "all",
  • "desiredRetries": "none"
}

Response samples

Content type
application/json
{
  • "id": "UApLJ13NVX819Di5rbXsn",
  • "customerId": "adcb24aa-5026-11ea-a555-1352677bac24",
  • "enrollmentId": null,
  • "scanType": "standard",
  • "brokerCount": 23,
  • "brokerIds": [
    ],
  • "realtime": true,
  • "status": "created",
  • "createdAt": "2020-02-28T19:00:04.433Z",
  • "modifiedAt": "2020-02-28T19:00:04.433Z",
  • "startedAt": null,
  • "stoppedAt": null
}

Callback payload samples

Callback
POST: Scan Callback (Real-Time)
Content type
application/json
{
  • "eventType": "scans",
  • "scans": [
    ],
  • "brokerScans": [
    ],
  • "records": [
    ]
}

Delete a Scan

Use this endpoint to trigger removal of an existing scan's PII.

Authorizations:
OAuthJWT
path Parameters
id
required
string (ScanId)
Example: UApLJ13NVX819Di5rbXsn

the unique ID for a scan

Responses

Response samples

Content type
application/json
{
  • "customerId": "adcb24aa-5026-11ea-a555-1352677bac24"
}

Enrollment

Enroll a user in ongoing private info removal.

Create Enrollment

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.

Authorizations:
OAuthJWT
Request Body schema: application/json
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.

  • all: Every eligible broker will return at least one result.
  • random: A random selection of brokers will return at least one result. This may be 0, or it may be all the brokers, or any value in between. For enrollments, the selection will be determined independently for each recurring scan, so you may get a different set of brokers each time we rescan that enrollment.
  • static: A fixed set of brokers will return at least one result. This will always be the same set of brokers for any scan, ad-hoc or recurring. The set of included brokers may change between API versions, and as brokers are added to or removed from your client's enabled list.
  • none: No brokers will return results.

Note: Regardless of the value of this parameter, two factors will always limit the brokers which return results:

  • The set of brokers that are enabled for your client.
  • The set of brokers that match the primary address country in the profile.

So if your client has broker X disabled, you will not get results for broker X regardless the value of this parameter. Similarly, if the profile has a US primary address, brokers that don't include US addresses will return 0 results, even if this value is all.

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 desiredResults parameter above to help further simulate real-world operating conditions.

THIS VALUE IS IGNORED IN ALL OTHER ENVIRONMENTS.

  • none: No brokers will require retries.
  • static: A fixed set of brokers will result in one or more retries. This will always be the same set of brokers for any scan, ad-hoc or recurring. The set of included brokers may change between API versions, and as brokers are added to or removed from your client's enabled list.
  • random: A random selection of brokers will result in one or more scan retries. This may be none, or it may be all the brokers, or any value in between. For enrollments, the selection will be determined independently for each recurring scan, so you may get a different set of brokers each time we rescan that enrollment.
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.

  • all: Every eligible record will be verified successfully.
  • random: A random selection of records will pass verification, and all other records will fail. This may be 0, or it may be all the records, or any value in between. If a broker returned multiple records in a scan, some may succeed and some may fail.
  • static: Records for a fixed set of brokers will pass verification, and all other records will fail. This will always be the same set of brokers. The set of included brokers may change between API versions, and as brokers are added to or removed from your client's enabled list.
  • none: No records for any associated scan will pass verification.

Responses

Callbacks

Request samples

Content type
application/json
{
  • "customerId": "adcb24aa-5026-11ea-a555-1352677bac24",
  • "profile": {
    },
  • "enrollmentType": "standard",
  • "monthsPerBillingCycle": 0,
  • "desiredResults": "all",
  • "desiredRetries": "none",
  • "desiredVerifications": "all"
}

Response samples

Content type
application/json
{
  • "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
}

Callback payload samples

Callback
Content type
application/json
{
  • "eventType": "enrollments",
  • "enrollments": [
    ]
}

Update Enrollment

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.

Authorizations:
OAuthJWT
path Parameters
id
required
string (EnrollmentId)
Example: LD89DON3hzRDXq9T_7KWq

the unique ID for the enrollment

Request Body schema: application/json
required
object (Profile)

The user's personal information.

Responses

Request samples

Content type
application/json
{
  • "profile": {
    }
}

Response samples

Content type
application/json
{
  • "errors": [
    ]
}

Cancel Enrollment

Cancel an enrollment.

Authorizations:
OAuthJWT
path Parameters
id
required
string (EnrollmentId)
Example: LD89DON3hzRDXq9T_7KWq

the unique ID for the enrollment

Responses

Response samples

Content type
application/json
{
  • "customerId": "_JvG4bUe3m8jDT9C5jrOz"
}

Delete Enrollment

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.

Authorizations:
OAuthJWT
path Parameters
id
required
string (EnrollmentId)
Example: LD89DON3hzRDXq9T_7KWq

the unique ID for the enrollment

Responses

Response samples

Content type
application/json
{
  • "customerId": "_JvG4bUe3m8jDT9C5jrOz"
}

Customer

Assign auth tokens and authorized signatures for customers.

Add Token To Customer

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
}
Authorizations:
OAuthJWT
path Parameters
id
required
string (CustomerId) [ 1 .. 64 ] characters ^[!=#-&*-:?-~]{1,64}$
Example: adcb24aa-5026-11ea-a555-1352677bac24

The unique ID for a customer

Request Body schema: application/json
tokenType
any
Enum: "gmail" "outlook" "yahoo"
object

Responses

Request samples

Content type
application/json
{
  • "tokenType": "gmail",
  • "token": {
    }
}

Response samples

Content type
application/json
{
  • "id": "adcb24aa-5026-11ea-a555-1352677bac24",
  • "requiredActions": [
    ],
  • "createdAt": "2020-02-14T12:21:46.433Z",
  • "modifiedAt": "2020-02-14T12:21:46.433Z"
}

Invalidate All Customer Tokens

Use this endpoint to invalidate all third-party authentication tokens for a customer

Authorizations:
OAuthJWT
path Parameters
id
required
string (CustomerId) [ 1 .. 64 ] characters ^[!=#-&*-:?-~]{1,64}$
Example: adcb24aa-5026-11ea-a555-1352677bac24

The unique ID for a customer

Responses

Response samples

Content type
application/json
{
  • "id": "adcb24aa-5026-11ea-a555-1352677bac24",
  • "requiredActions": [
    ],
  • "createdAt": "2020-02-14T12:21:46.433Z",
  • "modifiedAt": "2020-02-14T12:21:46.433Z"
}

Set Authorized Signature For Customer

Use this endpoint to set the authorized signature data for a customer

Authorizations:
OAuthJWT
path Parameters
id
required
string (CustomerId) [ 1 .. 64 ] characters ^[!=#-&*-:?-~]{1,64}$
Example: adcb24aa-5026-11ea-a555-1352677bac24

The unique ID for a customer

Request Body schema: application/json
object

Responses

Request samples

Content type
application/json
{
  • "signature": { }
}

Response samples

Content type
application/json
{
  • "id": "adcb24aa-5026-11ea-a555-1352677bac24",
  • "requiredActions": [
    ],
  • "createdAt": "2020-02-14T12:21:46.433Z",
  • "modifiedAt": "2020-02-14T12:21:46.433Z"
}

Revoke Customer Signature

Use this endpoint to revoke the authorized signature for a customer

Authorizations:
OAuthJWT
path Parameters
id
required
string (CustomerId) [ 1 .. 64 ] characters ^[!=#-&*-:?-~]{1,64}$
Example: adcb24aa-5026-11ea-a555-1352677bac24

The unique ID for a customer

Responses

Response samples

Content type
application/json
{
  • "id": "adcb24aa-5026-11ea-a555-1352677bac24",
  • "requiredActions": [
    ],
  • "createdAt": "2020-02-14T12:21:46.433Z",
  • "modifiedAt": "2020-02-14T12:21:46.433Z"
}

Track a Customer Interaction

Tracks a customer interaction on the client website.

Authorizations:
OAuthJWT
path Parameters
id
required
string (CustomerId) [ 1 .. 64 ] characters ^[!=#-&*-:?-~]{1,64}$
Example: adcb24aa-5026-11ea-a555-1352677bac24

The unique ID for a customer

Request Body schema: application/json
brokerFamilyId
required
string (BrokerFamilyId) [ 10 .. 100 ] characters

ID referring to a specific Broker Family object

interactedAt
required
string (DateTime)
actionType
required
any
Value: "completedManualOptout"

Responses

Request samples

Content type
application/json
{
  • "brokerFamilyId": "brokerFamily:PeopleConnect",
  • "interactedAt": "2020-02-14T12:21:46.433Z",
  • "actionType": "completedManualOptout"
}

Response samples

Content type
application/json
{
  • "errors": [
    ]
}

Reconciliation

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.

Get API Webhook Keys

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:

  • Encode the received POST body as "URI-safe" Base64 and replace it into the token provided in the header so the token reads: <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
  • Use your JWT implementation to 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.
  • Use your JWK/JWKS implementation to verify the token against the appropriate key (or key set if supported by your JWT implementation) from the manifest.
  • If the verification fails, you cannot be certain the callback contents are genuine.
  • If the 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.

Responses

Response samples

Content type
application/json
{
  • "keys": [
    ]
}

Get Scan

Get the status of a scan.

Authorizations:
OAuthJWT
path Parameters
id
required
string (ScanId)
Example: UApLJ13NVX819Di5rbXsn

the unique ID for a scan

Responses

Response samples

Content type
application/json
{
  • "id": "UApLJ13NVX819Di5rbXsn",
  • "customerId": "adcb24aa-5026-11ea-a555-1352677bac24",
  • "enrollmentId": "string",
  • "scanType": "standard",
  • "brokerCount": 23,
  • "brokerIds": [
    ],
  • "realtime": true,
  • "status": "created",
  • "createdAt": "2020-02-28T19:00:04.433Z",
  • "modifiedAt": "2020-02-28T19:00:04.433Z",
  • "startedAt": null,
  • "stoppedAt": null
}

Get Records for a Scan

Get all records matched by a specific scan.

Authorizations:
OAuthJWT
path Parameters
id
required
string (ScanId)
Example: UApLJ13NVX819Di5rbXsn

the unique ID for a scan

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get Broker Scans for a Scan

Get all Broker Scans associated with a specific scan.

Authorizations:
OAuthJWT
path Parameters
id
required
string (ScanId)
Example: UApLJ13NVX819Di5rbXsn

the unique ID for a scan

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get Customer

Get the status of a customer.

Authorizations:
OAuthJWT
path Parameters
id
required
string (CustomerId) [ 1 .. 64 ] characters ^[!=#-&*-:?-~]{1,64}$
Example: adcb24aa-5026-11ea-a555-1352677bac24

The unique ID for a customer

Responses

Response samples

Content type
application/json
{
  • "id": "adcb24aa-5026-11ea-a555-1352677bac24",
  • "requiredActions": [
    ],
  • "createdAt": "2020-02-14T12:21:46.433Z",
  • "modifiedAt": "2020-02-14T12:21:46.433Z"
}

Get Customer Scans

Get all scans belonging to a specific customer

Authorizations:
OAuthJWT
path Parameters
id
required
string (CustomerId) [ 1 .. 64 ] characters ^[!=#-&*-:?-~]{1,64}$
Example: adcb24aa-5026-11ea-a555-1352677bac24

The unique ID for a customer

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get Customer Enrollments

Get all Enrollments belonging to a specific customer

Authorizations:
OAuthJWT
path Parameters
id
required
string (CustomerId) [ 1 .. 64 ] characters ^[!=#-&*-:?-~]{1,64}$
Example: adcb24aa-5026-11ea-a555-1352677bac24

The unique ID for a customer

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get Enrollment

Get the status of an enrollment.

Authorizations:
OAuthJWT
path Parameters
id
required
string (EnrollmentId)
Example: LD89DON3hzRDXq9T_7KWq

the unique ID for the enrollment

Responses

Response samples

Content type
application/json
{
  • "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 Enrollment Scans

Get scans belonging to an enrollment

Authorizations:
OAuthJWT
path Parameters
id
required
string (EnrollmentId)
Example: LD89DON3hzRDXq9T_7KWq

the unique ID for the enrollment

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get Data Brokers

Get the list of data brokers for all plans associated with your client.

Authorizations:
OAuthJWT
query Parameters
includeIcons
boolean
Default: false

Set to true to include a Base64-encoded image/png icon for each broker as part of the request. Since these icons can inflate the size of the response significantly, the default value is false.

includeRequiredFields
boolean
Default: false

Set to true to include the additional required fields for each broker as part of the request.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get Broker

Get a specific broker by the broker's ID

Authorizations:
OAuthJWT
path Parameters
id
required
string (BrokerId)
Example: 11

The unique ID for a Broker

Responses

Response samples

Content type
application/json
{
  • "id": "11",
  • "name": "InstantPeopleFinder",
  • "enabled": true,
  • "icon": "iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYA...",
  • "infoTypes": [
    ],
  • "estimatedDaysToRemoveRecords": 10,
  • "activeAt": "2020-02-14T12:21:46.433Z",
  • "removedAt": null,
  • "brokerType": "Scan Only",
  • "capabilities": {
    },
  • "removalInstructions": "Send an email to [mailto: privacy-removals@example.com] that requests the identified record be removed.",
  • "additionalProfileRequiredFields": [
    ]
}

Get Failed Scan Webhooks

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.

Authorizations:
OAuthJWT
query Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "scanIds": [
    ]
}

Get Failed Enrollment Webhooks

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.

Authorizations:
OAuthJWT
query Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "enrollmentIds": [
    ]
}

Send Exception

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
Authorizations:
OAuthJWT
Request Body schema: application/json
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)

Responses

Request samples

Content type
application/json
{
  • "exceptionType": "missingRecurringScan",
  • "brokerScanIds": [
    ],
  • "customerIds": [
    ],
  • "enrollmentIds": [
    ],
  • "scanIds": [
    ],
  • "recordIds": [
    ]
}

Response samples

Content type
application/json
{
  • "id": "ISSYUdYoqpVmrSlqJAN0G"
}

Get Plans

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:

  • The list of brokers to be scanned for an enrollment.
  • The scan settings used for scoring and matching records.
  • The rescan cadence of an enrollment. (How often we run rescans)
  • The billing cycle for enrollments created under the plan.
Authorizations:
OAuthJWT

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get Plan

Get a single subscription plan. Subscription plans allow API clients to define multiple configuration sets for enrollments. Each subscription plan defines the following settings:

  • The list of brokers to be scanned for an enrollment.
  • The scan settings used for scoring and matching records.
  • The rescan cadence of an enrollment. (How often we run rescans)
  • The billing cycle for enrollments created under the plan.
Authorizations:
OAuthJWT
query Parameters
id
required
string (PlanId)
Example: id=N1Sdk3R8_Z5jdHi6B-myT

the unique ID for a plan

Responses

Response samples

Content type
application/json
{
  • "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"
}

Broker Families

Get Broker Families

Get the full list of broker families. A broker family will only include brokers ids that are active for the client's plans.

Authorizations:
OAuthJWT

Responses

Response samples

Content type
application/json
[
  • {
    }
]