{
  "openapi": "3.0.1",
  "info": {
    "title": "Consumer Identity Data API - Person, Household, Business",
    "description": "Resolve names, postal addresses, emails, phone numbers and hashed keys to person, household, place, residency, business and entity documents, with the demographic and contact bundles your contract covers. Batch up to 100 records per call, or look a key up without sending any personal data.",
    "version": "0.1",
    "x-build-id": "TLeEOvEV6DDLTNpJl"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/nabeelbaghoor~consumer-identity-data-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-nabeelbaghoor-consumer-identity-data-api",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/nabeelbaghoor~consumer-identity-data-api/runs": {
      "post": {
        "operationId": "runs-sync-nabeelbaghoor-consumer-identity-data-api",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/nabeelbaghoor~consumer-identity-data-api/run-sync": {
      "post": {
        "operationId": "run-sync-nabeelbaghoor-consumer-identity-data-api",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "mode": {
            "title": "What to do",
            "enum": [
              "match",
              "lookup"
            ],
            "type": "string",
            "description": "Match takes identity details and finds the best document for them. Lookup takes a key you already hold, such as a persistent link or a hashed email, and fetches its document exactly. Lookup never sends personal details over the wire, which is the reason to prefer it when you have the keys.",
            "default": "match"
          },
          "documentClass": {
            "title": "Document class to match",
            "enum": [
              "people",
              "households",
              "places",
              "residencies",
              "businesses",
              "entities"
            ],
            "type": "string",
            "description": "In match mode, which kind of document to resolve to. The class decides what comes back: a person document carries the individual, a household document carries the address group they belong to, a place document carries the address itself. Ask for the one you actually want, because the wrong class returns nothing rather than an error.",
            "default": "people"
          },
          "records": {
            "title": "Records to match",
            "type": "array",
            "description": "In match mode, one object per record. Recognised keys are firstName, middleName, lastName, generationalSuffix, name, businessName, streetAddress, primaryNumber, preDirectional, street, streetSuffix, postDirectional, unitDesignator, secondaryNumber, city, state, zipCode, email, emailMD5, phone, areaCode, exchange, subscriberNumber, latitude, longitude, sumLastFourSSN and yearOfBirth. Do not mix a parsed and an unparsed form of the same thing in one record."
          },
          "emails": {
            "title": "Email addresses",
            "type": "array",
            "description": "In match mode, a shortcut for records that are nothing but an email address, one per line. An email alone resolves to entity, household, person and place documents at this provider, and a name alongside it produces a stronger match.",
            "items": {
              "type": "string"
            }
          },
          "phones": {
            "title": "Phone numbers",
            "type": "array",
            "description": "In match mode, a shortcut for records that are nothing but a phone number, one per line. Punctuation is stripped for you; the provider wants ten digits for a United States number.",
            "items": {
              "type": "string"
            }
          },
          "lookupDocumentClass": {
            "title": "Document class to look up",
            "enum": [
              "people",
              "households",
              "places",
              "residencies",
              "entities"
            ],
            "type": "string",
            "description": "In lookup mode, which kind of document the key should resolve to.",
            "default": "people"
          },
          "lookupType": {
            "title": "Kind of key",
            "enum": [
              "er",
              "MD5",
              "SHA1",
              "SHA256",
              "IP",
              "abilitec",
              "anonymousAbilitec",
              "documentId"
            ],
            "type": "string",
            "description": "In lookup mode, what the values are. An entity representation is the lowercased name and address written as one string. The hash types are built from that same representation, so nothing personal leaves your side. The link types are the provider's own persistent identifiers.",
            "default": "er"
          },
          "lookupValues": {
            "title": "Keys to look up",
            "type": "array",
            "description": "In lookup mode, the values to fetch, one per line. They all have to be of the kind chosen above.",
            "items": {
              "type": "string"
            }
          },
          "clientId": {
            "title": "Client id",
            "type": "string",
            "description": "The OAuth client id issued to your account by this provider. It is half of the credential pair and is stored encrypted."
          },
          "apiKey": {
            "title": "Client secret",
            "type": "string",
            "description": "The OAuth client secret issued to your account by this provider. Bring your own credentials: nothing is shared between runs and the secret is never written to the dataset. Credentials at this provider expire every six months, so a pair that used to work may simply have aged out."
          },
          "tokenUrl": {
            "title": "Token endpoint",
            "type": "string",
            "description": "Where to exchange the client id and secret for a bearer token. The default is the provider's published endpoint. Change it only if your credentials were issued on a dedicated authorisation server, in which case the value is the token_endpoint from your own OpenID configuration document.",
            "default": "https://login.acxiom.com/oauth2/v1/token"
          },
          "scope": {
            "title": "OAuth scope",
            "type": "string",
            "description": "An optional scope to request with the token. Leave empty unless your account was told to send one."
          },
          "baseUrl": {
            "title": "Data host",
            "type": "string",
            "description": "The host serving the data. Change it only if your account is served from a region with its own hostname.",
            "default": "https://api.acxiom.com"
          },
          "role": {
            "title": "Role",
            "type": "string",
            "description": "The contracted role to run this request under. Required whenever your account is mapped to more than one. A missing or wrong role is refused in a way that reads like a permissions problem, so set it if you have one."
          },
          "tenant": {
            "title": "Tenant id",
            "type": "string",
            "description": "The contracted tenant to run this request under. Required whenever your account is mapped to more than one."
          },
          "bundles": {
            "title": "Bundles to return",
            "type": "array",
            "description": "Which named data bundles to ask for, one per line, for example postalContact or basicDemographics. Leave empty to receive every bundle your contract covers. Asking for fewer returns a smaller document; it does not unlock bundles you are not contracted for.",
            "items": {
              "type": "string"
            }
          },
          "limit": {
            "title": "Documents per record",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "In match mode, how many matching documents to accept per record, best first, up to ten. This does not loosen what counts as a match; it only allows more of them through when they exist. Each document is a separate transaction at the provider and a separate row here.",
            "default": 1
          },
          "persistedDocumentsOnly": {
            "title": "Stored documents only",
            "type": "boolean",
            "description": "On by default, meaning only documents that already exist are returned. Turn it off to allow documents calculated at request time as well. The provider refuses that together with more than one document per record, so if both are set the document limit wins and the run says so.",
            "default": true
          },
          "matchLevel": {
            "title": "Match strictness",
            "enum": [
              "default",
              "strict"
            ],
            "type": "string",
            "description": "Default runs the whole match cascade, including phone only, email only and name plus postcode steps. Strict skips those three, which trades recall for certainty about who the document belongs to.",
            "default": "default"
          },
          "strictValidation": {
            "title": "Fail a record with an invalid field",
            "type": "boolean",
            "description": "On by default at the provider: a malformed postcode or email produces a validation error for that request. Turn it off to have the provider blank the invalid field and match on what is left. This actor checks the documented rules before sending either way, so a whole batch is never lost to one bad record.",
            "default": true
          },
          "geoCoderLevel": {
            "title": "Geocoding precision",
            "enum": [
              "defaultLevel",
              "addressPoint",
              "streetSegment",
              "zip9",
              "zip7",
              "zip5"
            ],
            "type": "string",
            "description": "The most precise level at which to attempt geocoding for the bundles that carry coordinates. Coarser levels resolve more often; finer levels resolve more exactly.",
            "default": "defaultLevel"
          },
          "skipPostal": {
            "title": "Skip postal cleansing",
            "type": "boolean",
            "description": "Sends the address to matching exactly as given, without running it through postal correction first. Leave off unless your addresses are already standardised, because the correction step usually improves the match.",
            "default": false
          },
          "docIdOnly": {
            "title": "Return only the document id",
            "type": "boolean",
            "description": "Asks for nothing but the document id. Useful for a cheap existence check or for building a key list to look up later.",
            "default": false
          },
          "onlyFullNameMatches": {
            "title": "Drop partial name matches",
            "type": "boolean",
            "description": "This provider reports a partial name match when only part of the name lined up alongside an email or a phone number. Turn this on to keep only documents where the whole name matched. Only meaningful when the match metadata bundle is in your contract.",
            "default": false
          },
          "requireDocId": {
            "title": "Keep only documents that carry an id",
            "type": "boolean",
            "description": "Drops documents with no document id, which is the case for some calculated documents.",
            "default": false
          },
          "skipNotFound": {
            "title": "Leave misses out of the dataset",
            "type": "boolean",
            "description": "Records that resolved to nothing are written as rows with the reason, so you can see what happened to every input. Turn this on to keep only the ones that resolved. Misses are never charged for either way.",
            "default": false
          },
          "maxResults": {
            "title": "Maximum rows",
            "minimum": 1,
            "maximum": 50000,
            "type": "integer",
            "description": "Stop after this many rows. Rows are charged individually, so this is the ceiling on what a run can cost.",
            "default": 100
          },
          "requestsPerMinute": {
            "title": "Requests per minute",
            "minimum": 1,
            "maximum": 600,
            "type": "integer",
            "description": "How fast to call the provider. This provider sets a throttle rate per account as part of the contract, so lower this to match yours rather than relying on the retries.",
            "default": 60
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}