{"openapi":"3.0.0","info":{"title":"Data Quality API V1","version":"1.0","contact":{"name":"ZoomInfo Customer Support","email":"help@zoominfo.com"},"description":"API for interacting with ZoomInfo data quality services."},"tags":[{"name":"Data Quality"},{"name":"Score"},{"name":"Segment"}],"paths":{"/data-quality/v1/prepare":{"post":{"operationId":"PrepareController_prepare","summary":"Prepare Data Quality","description":"Processes values (phone, email, address, job title, or person name) through the Data Qualitypipeline and returns the prepared results.The request body is bulk and polymorphic: `data` is a single resource whose `type`selects the domain, and the batch of values is the `items[]` array inside itsattributes. Because the request targets onedomain, the batch is homogeneous by construction — `items` is typed to the selecteddomain and cannot mix domains. Each domain runs a fixed set of in-house defaultsteps automatically — the caller does not name parse/validate/normalize. Additional work isadded at the batch level via `enrichments` (per-domain signal list) and/or customnormalization (`config`), both on the resource's attributes; they apply to every item.The response `data` is an ARRAY of per-item result resources, in STRICT POSITIONAL 1:1ORDER with the request's `items`: `data[i]` is the result for `items[i]`. Each resource's`id` is that positional index (`id == i`) — the hard link back to the originating item.Each element's `type` is the OUTCOME: a successfully processed item is its domain resource(`type` = the request domain), whose `attributes` echoes the request `input` (confirmation,and to disambiguate duplicate input values), the `parsed` and `normalized` stage products,and the final prepared `value`; an item that failed to process is a `PrepareError` resource(`type` = `PrepareError`), whose `attributes` carries the failure `detail`. Success and failure aredistinct resource types (value XOR error). Items are processed independently: a failed itemstill occupies its ordinal slot while the rest of the batch succeeds (the `data` length andorder always match `items`).Error classes:  - WHOLE-REQUEST `400` — the request is malformed as a whole and nothing is    processed: an empty `items[]` or one exceeding the item cap, or a body that does    not parse. (A mixed-domain batch is not possible — `items` is typed to one domain    — so it does not arise as a runtime error.) Batch-level `config` violations the schema    does not enforce are also rejected here: supplying both inline `rules` and a `configId`,    or a normalization-rule `value` that is not legal for its `type`.  - PER-ITEM `PrepareError` resource — the request was well-formed but an individual value could    not be processed; that item's `data[i]` is a `PrepareError` resource (failure `detail` in its    attributes) while the rest of the batch succeeds (partial success, still a `200`). This is    a processing error, distinct from validation: a value that processes but does not pass    validation is a domain success resource reporting `isValid: false` (for the domains that    validate — address has no validator and omits `isValid`), NOT a `PrepareError`    resource. Item-level input combinations the schema permits but does not enforce fall here    too: an item that supplies both its raw string and `components`, or neither (or a    `components` with too little to process), becomes a `PrepareError` resource at its slot.  - `429` — the request was rate-limited; retry with backoff.This operation is synchronous: values are supplied inline and prepared results arereturned inline. No records are persisted.","parameters":[],"responses":{"200":{"description":"Success","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/DataQualityResponse"}}}},"400":{"description":"Bad Request","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"401":{"description":"Unauthorized","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"403":{"description":"Forbidden","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"429":{"description":"Too Many Requests","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}}},"tags":["Data Quality"],"requestBody":{"required":true,"content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/DataQualityRequest"}}},"description":"The Data Quality request body. Polymorphic: `data` is a single resource typed by `data.type`, carrying the batch in `attributes.items`. Item order is significant — results are returned in the same order, so preserve `items` ordering when correlating responses."},"security":[{"OAuth2Auth":["api:data-quality:execute"]}],"x-additional-content-types":["application/json"],"x-api-roles":["fea:zia"]}},"/data-quality/v1/prepare/normalize/configs":{"get":{"operationId":"NormalizeConfigs_listNormalizeConfigs","summary":"List Normalize Configs","description":"Returns a paginated list of stored normalization configurations, each with its full `name`,\n`description`, `status`, and `rules`, plus `createdAt`/`updatedAt` under `meta`.\n\nFilter by `filter[name]` (case-insensitive contains match on `name`) and `filter[status]`\n(`ACTIVE` or `ARCHIVED`). Order with `sort` — allowed fields: `name`, `createdAt`, `updatedAt`;\nprefix a field with `-` for descending order. Use `page[number]` (1-based) and `page[size]`\n(default `20`, max `200`) to paginate.\n\nReturns `200` with a paginated array of config resources and JSON:API pagination links.\nReturns `400` if filter, sort, or pagination parameters are invalid.","parameters":[{"name":"filter[name]","in":"query","required":false,"description":"Filter configurations by name. The filter is not case-sensitive and performs a contains search on the configurations` `name`","schema":{"type":"string"},"explode":false},{"name":"filter[status]","in":"query","required":false,"description":"Filter by lifecycle status: `ACTIVE` or `ARCHIVED`.","schema":{"$ref":"#/components/schemas/NormalizeConfigStatus"},"explode":false},{"name":"page[number]","in":"query","required":false,"description":"Page number for the results. Defaults to `1`.","schema":{"type":"integer","format":"int32","minimum":1,"default":1},"explode":false},{"name":"page[size]","in":"query","required":false,"description":"Number of records to return per page. Default `20`, maximum `200`.","schema":{"type":"integer","format":"int32","minimum":1,"maximum":200,"default":20},"explode":false},{"name":"sort","in":"query","required":false,"description":"Field to sort by. Prefix with `-` for descending order. Allowed values: `name`,\n`createdAt`, `updatedAt`.","schema":{"type":"string"},"explode":false}],"responses":{"200":{"description":"Success","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/NormalizeConfigListJsonApiModel"}}}},"400":{"description":"Bad Request","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"401":{"description":"Unauthorized","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"403":{"description":"Forbidden","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"429":{"description":"Too Many Requests","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}}},"tags":["Data Quality"],"security":[{"OAuth2Auth":["api:data-quality:read"]}],"x-api-roles":["fea:zia"]},"post":{"operationId":"NormalizeConfigs_createNormalizeConfig","summary":"Create Normalize Config","description":"Creates a new normalization configuration.\n\nProvide `name`, an optional `description`, and the `rules` grouped by rule group. Server-assigned\nfields (`id`, `status`, and timestamps) are ignored on input and returned in the response.\n\nReturns `201` with the created config. Returns `400` if the payload is malformed (for example an\nunknown rule group, or a `type`/`value` combination that is not allowed for its group).","parameters":[],"responses":{"201":{"description":"Created","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/NormalizeConfigJsonApiModel"}}}},"400":{"description":"Bad Request","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"401":{"description":"Unauthorized","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"403":{"description":"Forbidden","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"429":{"description":"Too Many Requests","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}}},"tags":["Data Quality"],"requestBody":{"required":true,"content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/NormalizeConfigJsonApiModelCreate"}}},"description":"The normalization config to create."},"security":[{"OAuth2Auth":["api:data-quality:manage"]}],"x-additional-content-types":["application/json"],"x-api-roles":["fea:zia"]}},"/data-quality/v1/prepare/normalize/configs/{configId}":{"get":{"operationId":"NormalizeConfigs_getNormalizeConfig","summary":"Get Normalize Config","description":"Returns a single normalization configuration by id, including its full `name`, `description`,\n`status`, and `rules`.\n\nReturns `200` with the config. Returns `404` if no config has the given `configId`.","parameters":[{"name":"configId","in":"path","required":true,"description":"Identifier of the config to retrieve.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/NormalizeConfigJsonApiModel"}}}},"400":{"description":"Bad Request","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"401":{"description":"Unauthorized","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"403":{"description":"Forbidden","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"404":{"description":"Not Found","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"429":{"description":"Too Many Requests","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}}},"tags":["Data Quality"],"security":[{"OAuth2Auth":["api:data-quality:read"]}],"x-api-roles":["fea:zia"]},"patch":{"operationId":"NormalizeConfigs_updateNormalizeConfig","summary":"Update Normalize Config","description":"Partially updates a normalization configuration. Only the attributes present in the request body\nare changed; omitted attributes are left untouched. Supports updating `name`, `description`,\n`status`, and `rules`.\n\nReturns `200` with the updated config. Returns `400` if the payload is malformed and `404` if no\nconfig has the given `configId`.","parameters":[{"name":"configId","in":"path","required":true,"description":"Identifier of the config to update.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/NormalizeConfigJsonApiModel"}}}},"400":{"description":"Bad Request","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"401":{"description":"Unauthorized","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"403":{"description":"Forbidden","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"404":{"description":"Not Found","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"429":{"description":"Too Many Requests","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}}},"tags":["Data Quality"],"requestBody":{"required":true,"content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/NormalizeConfigJsonApiModelUpdate"}}},"description":"The config attributes to change."},"security":[{"OAuth2Auth":["api:data-quality:manage"]}],"x-additional-content-types":["application/json"],"x-api-roles":["fea:zia"]},"delete":{"operationId":"NormalizeConfigs_deleteNormalizeConfig","summary":"Delete Normalize Config","description":"Permanently deletes a normalization configuration along with its rules.\n\nReturns `204` with no body on success. Returns `404` if no config has the given `configId`.","parameters":[{"name":"configId","in":"path","required":true,"description":"Identifier of the config to delete.","schema":{"type":"string"}}],"responses":{"204":{"description":"Success","content":{"application/vnd.api+json":{"schema":{"nullable":true}}}},"400":{"description":"Bad Request","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"401":{"description":"Unauthorized","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"403":{"description":"Forbidden","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"404":{"description":"Not Found","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"429":{"description":"Too Many Requests","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}}},"tags":["Data Quality"],"security":[{"OAuth2Auth":["api:data-quality:manage"]}],"x-api-roles":["fea:zia"]}},"/data-quality/v1/score/configs":{"get":{"operationId":"Score_listScoreConfigs","summary":"List Score Configs","description":"Returns a paginated list of attribute-score model configurations.\n\nEach item carries the full config definition — `name`, `status`,\n`modelType`, the ordered `elements` (with their `rules` and `criteria`), and\nthe derived `fieldsUsedInRules` — plus `createdAt` and `updatedAt` under\n`meta`.\n\nFilter by `filter[name]` (case-insensitive contains match on `name`).\nOrder with `sort` — allowed fields: `name`, `createdAt`, `updatedAt`.\nPrefix the field with `-` for descending order. Use `page[number]`\n(1-based) and `page[size]` (default `25`, max `200`) to paginate.\n\nReturns `200` with a paginated array of score config resources and JSON:API\npagination links. Returns `400` if filter, sort, or pagination parameters\nare invalid.","parameters":[{"name":"filter[name]","in":"query","required":false,"description":"Case-insensitive contains match on the score config `name`.","schema":{"type":"string"},"explode":false},{"name":"page[number]","in":"query","required":false,"description":"Page number for the results. Defaults to `1`.","schema":{"type":"integer","format":"int32","minimum":1,"default":1},"explode":false},{"name":"page[size]","in":"query","required":false,"description":"Number of records to return per page. Default `25`, maximum `200`.","schema":{"type":"integer","format":"int32","minimum":1,"maximum":200,"default":25},"explode":false},{"name":"sort","in":"query","required":false,"description":"Field to sort by. Prefix with `-` for descending order. Allowed values:\n`name`, `createdAt`, `updatedAt`.","schema":{"type":"string"},"explode":false}],"responses":{"200":{"description":"Success","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ScoreConfigListJsonApiModel"}}}},"400":{"description":"Bad Request","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"401":{"description":"Unauthorized","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"403":{"description":"Forbidden","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"429":{"description":"Too Many Requests","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}}},"tags":["Score"],"security":[{"OAuth2Auth":["api:data-quality:read"]}],"x-api-roles":["fea:zia"]},"post":{"operationId":"Score_createScoreConfig","summary":"Create Score Config","description":"Creates a new score configuration.\n\nProvide `name` and the ordered `elements` (each with its `field`, `weight`,\nand `rules` → `criteria`). Server-assigned fields (`id`, `status`,\n`modelType`, `fieldsUsedInRules`, and timestamps) are ignored on input and\nreturned in the response.\n\nReturns `201` with the created score config. Returns `400` if the payload\nis malformed (e.g. an element missing its `field`, an out-of-range `weight`,\nor a rule with no criteria).","parameters":[],"responses":{"201":{"description":"Created","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ScoreConfigJsonApiModel"}}}},"400":{"description":"Bad Request","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"401":{"description":"Unauthorized","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"403":{"description":"Forbidden","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"429":{"description":"Too Many Requests","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}}},"tags":["Score"],"requestBody":{"required":true,"content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ScoreConfigJsonApiModelCreate"}}},"description":"The score config to create."},"security":[{"OAuth2Auth":["api:data-quality:manage"]}],"x-additional-content-types":["application/json"],"x-api-roles":["fea:zia"]}},"/data-quality/v1/score/configs/{configId}":{"get":{"operationId":"Score_getScoreConfig","summary":"Get Score Config","description":"Returns a single score configuration by id, including its full `elements`\n(with their `rules` and `criteria`), `status`, and the derived\n`fieldsUsedInRules`.\n\nReturns `200` with the score config. Returns `404` if no config has the\ngiven `configId`.","parameters":[{"name":"configId","in":"path","required":true,"description":"Identifier of the score config to retrieve.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ScoreConfigJsonApiModel"}}}},"400":{"description":"Bad Request","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"401":{"description":"Unauthorized","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"403":{"description":"Forbidden","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"404":{"description":"Not Found","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"429":{"description":"Too Many Requests","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}}},"tags":["Score"],"security":[{"OAuth2Auth":["api:data-quality:read"]}],"x-api-roles":["fea:zia"]},"patch":{"operationId":"Score_updateScoreConfig","summary":"Update Score Config","description":"Partially updates a score configuration. Only the attributes present in the\nrequest body are changed; omitted attributes are left untouched.\n\nReturns `200` with the updated score config. Returns `400` if the payload\nis malformed and `404` if no config has the given `configId`.","parameters":[{"name":"configId","in":"path","required":true,"description":"Identifier of the score config to update.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ScoreConfigJsonApiModel"}}}},"400":{"description":"Bad Request","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"401":{"description":"Unauthorized","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"403":{"description":"Forbidden","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"404":{"description":"Not Found","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"429":{"description":"Too Many Requests","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}}},"tags":["Score"],"requestBody":{"required":true,"content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ScoreConfigJsonApiModelUpdate"}}},"description":"The score config attributes to change."},"security":[{"OAuth2Auth":["api:data-quality:manage"]}],"x-additional-content-types":["application/json"],"x-api-roles":["fea:zia"]},"delete":{"operationId":"Score_deleteScoreConfig","summary":"Delete Score Config","description":"Permanently deletes a score configuration.\n\nReturns `204` with no body on success. Returns `404` if no config has the\ngiven `configId`.","parameters":[{"name":"configId","in":"path","required":true,"description":"Identifier of the score config to delete.","schema":{"type":"string"}}],"responses":{"204":{"description":"Success","content":{"application/vnd.api+json":{"schema":{"nullable":true}}}},"400":{"description":"Bad Request","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"401":{"description":"Unauthorized","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"403":{"description":"Forbidden","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"404":{"description":"Not Found","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"429":{"description":"Too Many Requests","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}}},"tags":["Score"],"security":[{"OAuth2Auth":["api:data-quality:manage"]}],"x-api-roles":["fea:zia"]}},"/data-quality/v1/score/actions/run":{"post":{"operationId":"Score_runScore","summary":"Run Scoring","description":"Submits a batch of records for scoring and blocks until results are\navailable. Returns `200 OK` with per-record scores inline.\n\nUnknown `configIds` are ignored: a well-formed id that does not match an\nexisting score config is skipped rather than failing the run. Returns `400`\nif `configIds` or `records` are missing/empty, exceed their limits (10\nconfigs, 25 records), if a `configId` is malformed (not a valid integer id),\nor if none of the supplied `configIds` match an existing config. Returns\n`5xx` if the run errors before any record can be scored; partial errors are\nreported per-record in the response.","parameters":[],"responses":{"200":{"description":"Success","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ScoreResultsJsonApiModel"}}}},"400":{"description":"Bad Request","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"401":{"description":"Unauthorized","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"403":{"description":"Forbidden","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"429":{"description":"Too Many Requests","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}}},"tags":["Score"],"requestBody":{"required":true,"content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ScoreRunRequestJsonApiModel"}}},"description":"Score run request with configuration IDs and records to process."},"security":[{"OAuth2Auth":["api:data-quality:execute"]}],"x-additional-content-types":["application/json"],"x-api-roles":["fea:zia"]}},"/data-quality/v1/segment/configs":{"get":{"operationId":"Segments_listSegmentConfigs","summary":"List Segment Configs","description":"Returns a paginated list of segment configurations.\n\nEach item carries the full config definition including `segments` and their\n`rules`. Filter by `filter[name]` (case-insensitive contains match on\n`name`). Order with `sort` — allowed fields: `name`, `createdAt`,\n`updatedAt`. Prefix the field with `-` for descending order. Use\n`page[number]` (1-based) and `page[size]` (default `25`, max `200`) to\npaginate.\n\nReturns `200` with a paginated array of segment config resources and\nJSON:API pagination links. Returns `400` if filter, sort, or pagination\nparameters are invalid.","parameters":[{"name":"filter[name]","in":"query","required":false,"description":"Case-insensitive contains match on the segment config `name`.","schema":{"type":"string"},"explode":false},{"name":"page[number]","in":"query","required":false,"description":"Page number for the results. Defaults to `1`.","schema":{"type":"integer","format":"int32","minimum":1,"default":1},"explode":false},{"name":"page[size]","in":"query","required":false,"description":"Number of records to return per page. Default `25`, maximum `200`.","schema":{"type":"integer","format":"int32","minimum":1,"maximum":200,"default":25},"explode":false},{"name":"sort","in":"query","required":false,"description":"Field to sort by. Prefix with `-` for descending order. Allowed values:\n`name`, `createdAt`, `updatedAt`.","schema":{"type":"string"},"explode":false}],"responses":{"200":{"description":"Success","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/SegmentConfigListJsonApiModel"}}}},"400":{"description":"Bad Request","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"401":{"description":"Unauthorized","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"403":{"description":"Forbidden","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"429":{"description":"Too Many Requests","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}}},"tags":["Segment"],"security":[{"OAuth2Auth":["api:data-quality:read"]}],"x-api-roles":["fea:zia"]},"post":{"operationId":"Segments_createSegmentConfig","summary":"Create Segment Config","description":"Creates a new segment configuration.\n\nProvide `name`, `action`, and the ordered `segments[]` (each with its\n`outputValue` and `rules[]`). `mergeOperator` is optional and defaults to\n`,`. Server-assigned fields (`id`, per-segment `order`,\n`fieldsUsedInRules`, and timestamps) are ignored on input and returned in\nthe response.\n\nReturns `201` with the created segment config. Returns `400` if the\npayload is malformed (e.g. unknown `action`, a rule missing its `field`, or\na segment missing its `outputValue`).","parameters":[],"responses":{"201":{"description":"Created","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/SegmentConfigJsonApiModel"}}}},"400":{"description":"Bad Request","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"401":{"description":"Unauthorized","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"403":{"description":"Forbidden","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"429":{"description":"Too Many Requests","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}}},"tags":["Segment"],"requestBody":{"required":true,"content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/SegmentConfigJsonApiModelCreate"}}},"description":"The segment config to create."},"security":[{"OAuth2Auth":["api:data-quality:manage"]}],"x-additional-content-types":["application/json"],"x-api-roles":["fea:zia"]}},"/data-quality/v1/segment/configs/{configId}":{"get":{"operationId":"Segments_getSegmentConfig","summary":"Get Segment Config","description":"Returns a single segment configuration by id, including its full\n`segments[]` / `rules[]` definition and the distinct `fieldsUsedInRules`.\n\nReturns `200` with the segment config. Returns `404` if no config has\nthe given `configId`.","parameters":[{"name":"configId","in":"path","required":true,"description":"Identifier of the segment config to retrieve.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/SegmentConfigJsonApiModel"}}}},"400":{"description":"Bad Request","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"401":{"description":"Unauthorized","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"403":{"description":"Forbidden","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"404":{"description":"Not Found","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"429":{"description":"Too Many Requests","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}}},"tags":["Segment"],"security":[{"OAuth2Auth":["api:data-quality:read"]}],"x-api-roles":["fea:zia"]},"patch":{"operationId":"Segments_updateSegmentConfig","summary":"Update Segment Config","description":"Partially updates a segment configuration. Only the attributes present\nin the request body are changed; omitted attributes are left untouched.\nWhen `segments` is provided, it replaces the existing segment list in full.\n\nReturns `200` with the updated segment config. Returns `400` if the\npayload is malformed and `404` if no config has the given `configId`.","parameters":[{"name":"configId","in":"path","required":true,"description":"Identifier of the segment config to update.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/SegmentConfigJsonApiModel"}}}},"400":{"description":"Bad Request","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"401":{"description":"Unauthorized","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"403":{"description":"Forbidden","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"404":{"description":"Not Found","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"429":{"description":"Too Many Requests","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}}},"tags":["Segment"],"requestBody":{"required":true,"content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/SegmentConfigJsonApiModelUpdate"}}},"description":"The segment config attributes to change."},"security":[{"OAuth2Auth":["api:data-quality:manage"]}],"x-additional-content-types":["application/json"],"x-api-roles":["fea:zia"]},"delete":{"operationId":"Segments_deleteSegmentConfig","summary":"Delete Segment Config","description":"Permanently deletes a segment configuration.\n\nReturns `204` with no body on success. Returns `404` if no config has the\ngiven `configId`.","parameters":[{"name":"configId","in":"path","required":true,"description":"Identifier of the segment config to delete.","schema":{"type":"string"}}],"responses":{"204":{"description":"Success","content":{"application/vnd.api+json":{"schema":{"nullable":true}}}},"400":{"description":"Bad Request","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"401":{"description":"Unauthorized","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"403":{"description":"Forbidden","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"404":{"description":"Not Found","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"429":{"description":"Too Many Requests","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}}},"tags":["Segment"],"security":[{"OAuth2Auth":["api:data-quality:manage"]}],"x-api-roles":["fea:zia"]}},"/data-quality/v1/segment/actions/run":{"post":{"operationId":"Segments_runSegment","summary":"Run Segmentation","description":"Submits a batch of records for segmentation and blocks until results are\navailable. Returns `200 OK` with per-record segment assignments inline.\n\nUnknown `configIds` are ignored: a well-formed id that does not match an\nexisting segment config is skipped rather than failing the run. Returns\n`400` if `configIds` or `records` are missing/empty, exceed their limits\n(10 configs, 25 records), if a `configId` is malformed (not a valid integer\nid), or if none of the supplied `configIds` match an existing config.\nReturns `5xx` if the run errors before any record can be segmented; partial\nerrors are reported per-record in the response.","parameters":[],"responses":{"200":{"description":"Success","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/SegmentResultsJsonApiModel"}}}},"400":{"description":"Bad Request","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"401":{"description":"Unauthorized","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"403":{"description":"Forbidden","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}},"429":{"description":"Too Many Requests","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorResponseModel"}}}}},"tags":["Segment"],"requestBody":{"required":true,"content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/SegmentRunRequestJsonApiModel"}}},"description":"Segment run request with configuration IDs and records to process."},"security":[{"OAuth2Auth":["api:data-quality:execute"]}],"x-additional-content-types":["application/json"],"x-api-roles":["fea:zia"]}}},"security":[{"OAuth2Auth":[]}],"components":{"schemas":{"PhoneComponents":{"type":"object","properties":{"number":{"type":"string","description":"The phone number. On input: raw digits in national or full form (non-digit characters are tolerated). On output: the full, formatted number (the exact format depends on the normalization applied) — not a bare national component."},"countryCode":{"type":"string","description":"Country calling code or ISO 3166-1 alpha-2 country, if already known."},"extension":{"type":"string","description":"Extension, if present."}},"description":"Structured phone components, shared by phone input (`components`) and the phone output value."},"PhoneInputItem":{"type":"object","properties":{"phone":{"type":"string","description":"The phone number to process as raw text. Accepts common formats; non-digit characters are tolerated. Supply exactly one of `phone` or `components` — supplying both, or neither, does not fail the whole request and neither field takes precedence; the individual item fails (its `data[i]` result carries `error` while the rest of the batch still succeeds, HTTP 200)."},"components":{"allOf":[{"$ref":"#/components/schemas/PhoneComponents"}],"description":"Pre-structured phone input. Supply exactly one of `phone` or `components`. When present, the parse step is skipped."}},"description":"A single phone value to prepare."},"PhoneLineType":{"type":"string","enum":["MOBILE","FIXED_LINE","VOIP","TOLL_FREE","PREMIUM_RATE","SHARED_COST","PERSONAL_NUMBER","PAGER","UAN","UNKNOWN"],"description":"Phone line-type classification (folded-in enrichment, requested via `LINE_TYPE`).","x-enumDescriptions":{"MOBILE":"Mobile / cellular number.","FIXED_LINE":"Fixed-line landline number.","VOIP":"Voice-over-IP number.","TOLL_FREE":"Toll-free number.","PREMIUM_RATE":"Premium-rate number.","SHARED_COST":"Shared-cost number.","PERSONAL_NUMBER":"Personal number.","PAGER":"Pager number.","UAN":"Universal Access Number.","UNKNOWN":"Type could not be determined."}},"PhoneValue":{"type":"object","properties":{"number":{"type":"string","description":"The phone number. On input: raw digits in national or full form (non-digit characters are tolerated). On output: the full, formatted number (the exact format depends on the normalization applied) — not a bare national component."},"countryCode":{"type":"string","description":"Country calling code or ISO 3166-1 alpha-2 country, if already known."},"extension":{"type":"string","description":"Extension, if present."},"region":{"type":"string","description":"Region associated with the number."},"lineType":{"allOf":[{"$ref":"#/components/schemas/PhoneLineType"}],"description":"Line type classification (folded-in enrichment, requested via `LINE_TYPE`)."}},"description":"Phone value: parsed/normalized components plus folded-in enrichments."},"PhoneResultAttributes":{"type":"object","required":["input"],"properties":{"input":{"allOf":[{"$ref":"#/components/schemas/PhoneInputItem"}],"description":"The request item this result corresponds to, echoed back for correlation. Results are in the same order as request `items`; `input` confirms the pairing (notably under duplicate input values)."},"parsed":{"allOf":[{"$ref":"#/components/schemas/PhoneValue"}],"description":"Parsed view of the value (the parse-stage data product)."},"normalized":{"allOf":[{"$ref":"#/components/schemas/PhoneValue"}],"description":"Normalized view of the value (the normalization-stage data product)."},"value":{"allOf":[{"$ref":"#/components/schemas/PhoneValue"}],"description":"The final prepared value — the canonical result the caller buys, after parse and normalize. This is where the post-parse/normalize enrichment output (`lineType`) is populated."},"isValid":{"type":"boolean","description":"Whether the input passed validation. A result-level verdict about the item as a whole, not a property of any single stage view."}},"description":"Attributes of a single phone result resource: the echoed input, the parsed and normalized data products, and the final prepared value."},"PhoneResultResource":{"type":"object","required":["id","type","attributes"],"properties":{"id":{"type":"string","description":"The unique identifier for the resource"},"type":{"type":"string","description":"The type of the resource","default":"Phone","pattern":"Phone"},"attributes":{"allOf":[{"$ref":"#/components/schemas/PhoneResultAttributes"}],"description":"The attributes defining the resource"}},"description":"Phone success result resource — one element of the response `data[]` for a successfully processed phone item. `id` is the request positional index (`items[i]` → `id == i`); the prepared result is in `attributes`."},"EmailComponents":{"type":"object","properties":{"localPart":{"type":"string","description":"Local part (before the @)."},"domain":{"type":"string","description":"Domain part (after the @)."}},"description":"Structured email components, shared by email input (`components`) and the email output value."},"EmailInputItem":{"type":"object","properties":{"email":{"type":"string","description":"The email address to process as raw text. Supply exactly one of `email` or `components` — supplying both, or neither, does not fail the whole request and neither field takes precedence; the individual item fails (its `data[i]` result carries `error` while the rest of the batch still succeeds, HTTP 200)."},"components":{"allOf":[{"$ref":"#/components/schemas/EmailComponents"}],"description":"Pre-structured email input. Supply exactly one of `email` or `components`. When present, the parse step is skipped."}},"description":"A single email value to prepare."},"EmailValue":{"type":"object","properties":{"localPart":{"type":"string","description":"Local part (before the @)."},"domain":{"type":"string","description":"Domain part (after the @)."},"subdomain":{"type":"string","description":"Subdomain, if present."},"tld":{"type":"string","description":"Top-level domain."},"fullEmail":{"type":"string","description":"Full reassembled email address (serves as the formatted form for email)."}},"description":"Email value: parsed/normalized components."},"EmailResultAttributes":{"type":"object","required":["input"],"properties":{"input":{"allOf":[{"$ref":"#/components/schemas/EmailInputItem"}],"description":"The request item this result corresponds to, echoed back for correlation. Results are in the same order as request `items`; `input` confirms the pairing (notably under duplicate input values)."},"parsed":{"allOf":[{"$ref":"#/components/schemas/EmailValue"}],"description":"Parsed view of the value (the parse-stage data product)."},"normalized":{"allOf":[{"$ref":"#/components/schemas/EmailValue"}],"description":"Normalized view of the value (the normalization-stage data product)."},"value":{"allOf":[{"$ref":"#/components/schemas/EmailValue"}],"description":"The final prepared value — the canonical result the caller buys, after parse and normalize."},"isValid":{"type":"boolean","description":"Whether the input passed validation. A result-level verdict about the item as a whole, not a property of any single stage view."}},"description":"A single email result: the echoed input, the parsed and normalized data products, and the final prepared value."},"EmailResultResource":{"type":"object","required":["id","type","attributes"],"properties":{"id":{"type":"string","description":"The unique identifier for the resource"},"type":{"type":"string","description":"The type of the resource","default":"Email","pattern":"Email"},"attributes":{"allOf":[{"$ref":"#/components/schemas/EmailResultAttributes"}],"description":"The attributes defining the resource"}},"description":"Email success result resource — one element of the response `data[]` for a successfully processed email item. `id` is the request positional index (`items[i]` → `id == i`); the prepared result is in `attributes`."},"AddressComponents":{"type":"object","properties":{"streetNumber":{"type":"string","description":"Street number (e.g., `123`)."},"street":{"type":"string","description":"Street name (e.g., `Main St`)."},"unit":{"type":"string","description":"Unit / suite / apartment designator (e.g., `Ste 200`)."},"poBox":{"type":"string","description":"PO Box identifier, if present."},"city":{"type":"string","description":"City name."},"county":{"type":"string","description":"County or district."},"state":{"type":"string","description":"State / province / region."},"postalCode":{"type":"string","description":"Postal / ZIP code."},"postalExtension":{"type":"string","description":"Postal code extension (e.g., ZIP+4)."},"country":{"type":"string","description":"Country name or ISO code."}},"description":"Structured address components, shared by address input (`components`) and the address output value. All fields optional to support messy/partial values on both sides (for example, separate CRM columns with no country)."},"AddressInputItem":{"type":"object","properties":{"address":{"type":"string","description":"The address to process as raw text. May be a single free-text line or a partially structured value. Supply exactly one of `address` or `components` — supplying both, or neither, does not fail the whole request and neither field takes precedence; the individual item fails (its `data[i]` result carries `error` while the rest of the batch still succeeds, HTTP 200)."},"components":{"allOf":[{"$ref":"#/components/schemas/AddressComponents"}],"description":"Pre-structured address input (for example, separate CRM columns). Supply exactly one of `address` or `components`. When present, the parse step is skipped."}},"description":"A single address value to prepare."},"AddressVerify":{"type":"string","enum":["CONFIRMED","PARTIAL","NOT_FOUND"],"description":"Deliverability confirmation result for an address.","x-enumDescriptions":{"CONFIRMED":"The address was confirmed as deliverable.","PARTIAL":"The address was partially confirmed.","NOT_FOUND":"The address could not be found."}},"AddressType":{"type":"string","enum":["RESIDENTIAL","COMMERCIAL","UNKNOWN"],"description":"Whether an address is residential or commercial.","x-enumDescriptions":{"RESIDENTIAL":"Residential address.","COMMERCIAL":"Commercial address.","UNKNOWN":"Address type could not be determined."}},"AddressPrecision":{"type":"string","enum":["UNKNOWN","NONE","STATE","SCF","CITY_CENTROID","ZIP5","ZIP6","ZIP7","ZIP8","ZIP9","STRUCTURE"],"description":"How precisely the coordinates locate the address.","x-enumDescriptions":{"UNKNOWN":"Precision could not be determined.","NONE":"No coordinates could be assigned.","STATE":"Located to the state.","SCF":"Located to the sectional center facility (SCF — first three ZIP digits).","CITY_CENTROID":"Located to the city centroid.","ZIP5":"Located to the 5-digit ZIP code.","ZIP6":"Located to the ZIP+2.","ZIP7":"Located to the ZIP+4.","ZIP8":"Located to the ZIP+4 with greater confidence.","ZIP9":"Located to the full ZIP+4 delivery point.","STRUCTURE":"Located to the individual structure / rooftop."}},"AddressValue":{"type":"object","properties":{"streetNumber":{"type":"string","description":"Street number (e.g., `123`)."},"street":{"type":"string","description":"Street name (e.g., `Main St`)."},"unit":{"type":"string","description":"Unit / suite / apartment designator (e.g., `Ste 200`)."},"poBox":{"type":"string","description":"PO Box identifier, if present."},"city":{"type":"string","description":"City name."},"county":{"type":"string","description":"County or district."},"state":{"type":"string","description":"State / province / region."},"postalCode":{"type":"string","description":"Postal / ZIP code."},"postalExtension":{"type":"string","description":"Postal code extension (e.g., ZIP+4)."},"country":{"type":"string","description":"Country name or ISO code."},"formattedAddress":{"type":"string","description":"The full address rendered as a single human-readable string (e.g., `123 Main St, San Francisco, CA 94102, United States`). A flattened convenience view of the component fields; populated on the normalized/final value. This is a single STRING, distinct from the structured components above."},"verify":{"allOf":[{"$ref":"#/components/schemas/AddressVerify"}],"description":"Deliverability confirmation result."},"addressType":{"allOf":[{"$ref":"#/components/schemas/AddressType"}],"description":"Whether the address is residential or commercial."},"latitude":{"type":"number","format":"double","description":"Latitude coordinate."},"longitude":{"type":"number","format":"double","description":"Longitude coordinate."},"precision":{"allOf":[{"$ref":"#/components/schemas/AddressPrecision"}],"description":"How precisely the coordinates locate the address."}},"description":"Address value: parsed/normalized components plus folded-in enrichments. All component fields optional to support messy/partial input."},"AddressResultAttributes":{"type":"object","required":["input"],"properties":{"input":{"allOf":[{"$ref":"#/components/schemas/AddressInputItem"}],"description":"The request item this result corresponds to, echoed back for correlation. Results are in the same order as request `items`; `input` confirms the pairing (notably under duplicate input values)."},"parsed":{"allOf":[{"$ref":"#/components/schemas/AddressValue"}],"description":"Parsed view of the value (the parse-stage data product)."},"normalized":{"allOf":[{"$ref":"#/components/schemas/AddressValue"}],"description":"Normalized view of the value (the normalization-stage data product)."},"value":{"allOf":[{"$ref":"#/components/schemas/AddressValue"}],"description":"The final prepared value — the canonical result the caller buys, after parse and normalize. This is where the enrichment signals (`verify`, `addressType`, `latitude`/`longitude`/`precision`) are populated."}},"description":"A single address result: the echoed input, the parsed and normalized data products, and the final prepared value."},"AddressEnrichment":{"type":"string","enum":["NORMALIZE","VERIFY","ADDRESS_TYPE","GEOCODE"],"description":"Enrichment signals available for the address domain.","x-enumDescriptions":{"NORMALIZE":"Standardization and correction of the address.","VERIFY":"Postal deliverability confirmation. Populates `value.verify`.","ADDRESS_TYPE":"Residential or commercial classification. Populates `value.addressType`. Supported for United States addresses.","GEOCODE":"Geographic coordinates. Populates `value.latitude`/`value.longitude`/`value.precision`. Supported for a subset of countries."}},"AddressUnfulfilledEnrichment":{"type":"object","required":["enrichment"],"properties":{"enrichment":{"allOf":[{"$ref":"#/components/schemas/AddressEnrichment"}],"description":"The enrichment signal that was not returned."},"reason":{"type":"string","description":"Why the signal was not returned, for example `Address type is not supported for country CN.`"}},"description":"An enrichment signal that was not returned for this item."},"AddressResultMeta":{"type":"object","properties":{"unfulfilled":{"type":"array","items":{"$ref":"#/components/schemas/AddressUnfulfilledEnrichment"},"description":"Enrichment signals that were not returned for this item. Absent when every signal was returned."}},"description":"Per-item metadata for an address result, reporting enrichment signals that were not returned. The item is still a success, and signals that were not returned are not charged."},"AddressResultResource":{"type":"object","required":["id","type","attributes"],"properties":{"id":{"type":"string","description":"The unique identifier for the resource"},"type":{"type":"string","description":"The type of the resource","default":"Address","pattern":"Address"},"attributes":{"allOf":[{"$ref":"#/components/schemas/AddressResultAttributes"}],"description":"The attributes defining the resource"},"meta":{"allOf":[{"$ref":"#/components/schemas/AddressResultMeta"}],"description":"Non-standard meta information about the resource"}},"description":"Address success result resource — one element of the response `data[]` for a successfully processed address item. `id` is the request positional index (`items[i]` → `id == i`); the prepared result is in `attributes`; `meta` reports any enrichment signal that was not returned."},"JobTitleInputItem":{"type":"object","required":["jobTitle"],"properties":{"jobTitle":{"type":"string","description":"The job title to normalize."}},"description":"A single job title value to prepare."},"JobTitleValue":{"type":"object","properties":{"title":{"type":"string","description":"The job title string. Serves as both the canonical value and its formatted form."}},"description":"Job title value: the normalized/standardized title string."},"JobTitleResultAttributes":{"type":"object","required":["input"],"properties":{"input":{"allOf":[{"$ref":"#/components/schemas/JobTitleInputItem"}],"description":"The request item this result corresponds to, echoed back for correlation. Results are in the same order as request `items`; `input` confirms the pairing (notably under duplicate input values)."},"parsed":{"allOf":[{"$ref":"#/components/schemas/JobTitleValue"}],"description":"Parsed view of the value (the parse-stage data product)."},"normalized":{"allOf":[{"$ref":"#/components/schemas/JobTitleValue"}],"description":"Normalized view of the value (the normalization-stage data product)."},"value":{"allOf":[{"$ref":"#/components/schemas/JobTitleValue"}],"description":"The final prepared value — the canonical result the caller buys, after normalization."},"isValid":{"type":"boolean","description":"Whether the input passed validation. A result-level verdict about the item as a whole, not a property of any single stage view."}},"description":"A single job title result: the echoed input, the parsed and normalized data products, and the final prepared value."},"JobTitleResultResource":{"type":"object","required":["id","type","attributes"],"properties":{"id":{"type":"string","description":"The unique identifier for the resource"},"type":{"type":"string","description":"The type of the resource","default":"JobTitle","pattern":"JobTitle"},"attributes":{"allOf":[{"$ref":"#/components/schemas/JobTitleResultAttributes"}],"description":"The attributes defining the resource"}},"description":"Job title success result resource — one element of the response `data[]` for a successfully processed job-title item. `id` is the request positional index (`items[i]` → `id == i`); the prepared result is in `attributes`."},"PersonNameComponents":{"type":"object","properties":{"prefix":{"type":"string","description":"Name prefix / salutation (e.g., `Dr`, `Ms`)."},"first":{"type":"string","description":"First / given name."},"middle":{"type":"string","description":"Middle name or initial."},"last":{"type":"string","description":"Last / family name."},"suffix":{"type":"string","description":"Name suffix (e.g., `Jr`, `III`, `PhD`)."}},"description":"Structured person-name components, shared by person-name input (`components`) and the person-name output value. All fields optional to support messy/partial values on both sides (for example, separate CRM first/last columns)."},"PersonNameInputItem":{"type":"object","properties":{"name":{"type":"string","description":"The full name to process as raw text. Accepts common formats. Supply exactly one of `name` or `components` — supplying both, or neither, does not fail the whole request and neither field takes precedence; the individual item fails (its `data[i]` result carries `error` while the rest of the batch still succeeds, HTTP 200)."},"components":{"allOf":[{"$ref":"#/components/schemas/PersonNameComponents"}],"description":"Pre-structured name input (for example, separate CRM first/last columns). Supply exactly one of `name` or `components`. When present, the parse step is skipped."}},"description":"A single person-name value to prepare."},"PersonNameValue":{"type":"object","properties":{"prefix":{"type":"string","description":"Name prefix / salutation (e.g., `Dr`, `Ms`)."},"first":{"type":"string","description":"First / given name."},"middle":{"type":"string","description":"Middle name or initial."},"last":{"type":"string","description":"Last / family name."},"suffix":{"type":"string","description":"Name suffix (e.g., `Jr`, `III`, `PhD`)."},"fullName":{"type":"string","description":"Full reassembled name (serves as the formatted form for person name)."}},"description":"Person-name value: parsed/normalized components plus the reassembled full name."},"PersonNameResultAttributes":{"type":"object","required":["input"],"properties":{"input":{"allOf":[{"$ref":"#/components/schemas/PersonNameInputItem"}],"description":"The request item this result corresponds to, echoed back for correlation. Results are in the same order as request `items`; `input` confirms the pairing (notably under duplicate input values)."},"parsed":{"allOf":[{"$ref":"#/components/schemas/PersonNameValue"}],"description":"Parsed view of the value (the parse-stage data product)."},"normalized":{"allOf":[{"$ref":"#/components/schemas/PersonNameValue"}],"description":"Normalized view of the value (the normalization-stage data product)."},"value":{"allOf":[{"$ref":"#/components/schemas/PersonNameValue"}],"description":"The final prepared value — the canonical result the caller buys, after parse and normalize."},"isValid":{"type":"boolean","description":"Whether the input passed validation. A result-level verdict about the item as a whole, not a property of any single stage view."}},"description":"A single person-name result: the echoed input, the parsed and normalized data products, and the final prepared value."},"PersonNameResultResource":{"type":"object","required":["id","type","attributes"],"properties":{"id":{"type":"string","description":"The unique identifier for the resource"},"type":{"type":"string","description":"The type of the resource","default":"PersonName","pattern":"PersonName"},"attributes":{"allOf":[{"$ref":"#/components/schemas/PersonNameResultAttributes"}],"description":"The attributes defining the resource"}},"description":"Person name success result resource — one element of the response `data[]` for a successfully processed person-name item. `id` is the request positional index (`items[i]` → `id == i`); the prepared result is in `attributes`."},"PrepareItemError":{"type":"object","properties":{"detail":{"type":"string","description":"Human-readable detail describing why this item could not be processed."}},"description":"Attributes of a `PrepareError` result resource — a single item that failed to process. Item-scoped and statusless: the HTTP status belongs to the response as a whole (a per-item failure is still part of a `200`), and the failing item is located by its ordinal position (`data[i].id == i` ↔ `items[i]`). Distinct from the document-level error object used for whole-request failures."},"PrepareErrorResource":{"type":"object","required":["id","type","attributes"],"properties":{"id":{"type":"string","description":"The unique identifier for the resource"},"type":{"type":"string","description":"The type of the resource","default":"PrepareError","pattern":"PrepareError"},"attributes":{"allOf":[{"$ref":"#/components/schemas/PrepareItemError"}],"description":"The attributes defining the resource"}},"description":"Error result resource — one element of the response `data[]` for an item that failed to process (the value XOR error counterpart to the domain success resources, modeled on the enrich `NoMatch` precedent). `id` is the request positional index (`items[i]` → `id == i`), the link back to the failing item; the failure detail is in `attributes`. A failed item still occupies its ordinal slot, and the rest of the batch still succeeds (partial success, HTTP 200)."},"DataQualityResultResource":{"type":"object","oneOf":[{"$ref":"#/components/schemas/PhoneResultResource"},{"$ref":"#/components/schemas/EmailResultResource"},{"$ref":"#/components/schemas/AddressResultResource"},{"$ref":"#/components/schemas/JobTitleResultResource"},{"$ref":"#/components/schemas/PersonNameResultResource"},{"$ref":"#/components/schemas/PrepareErrorResource"}],"discriminator":{"propertyName":"type","mapping":{"Phone":"#/components/schemas/PhoneResultResource","Email":"#/components/schemas/EmailResultResource","Address":"#/components/schemas/AddressResultResource","JobTitle":"#/components/schemas/JobTitleResultResource","PersonName":"#/components/schemas/PersonNameResultResource","PrepareError":"#/components/schemas/PrepareErrorResource"}},"description":"Polymorphic Data Quality result resource, discriminated by `type`. One element of the response `data[]`. `type` encodes the OUTCOME: a successful item is its domain resource (`Phone`/`Email`/`Address`/`JobTitle`/`PersonName`, prepared value in `attributes`); a failed item is the `PrepareError` resource (`PrepareItemError` in `attributes`). Successful items in one response all share the request domain; failed items are `PrepareError` regardless of domain."},"DataQualityResponse":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/DataQualityResultResource"},"description":"The primary data of the document"}},"description":"Data Quality response body. `data` is an ARRAY of per-item result resources, in STRICT POSITIONAL 1:1 ORDER with the request's `items` — `data[i]` is the result for `items[i]`, and each resource's `id` is that index (`id == i`). The array is never reordered or filtered; a failed item still occupies its slot. Each element's `type` is the OUTCOME: a successfully processed item is its domain resource (`type` = the request domain) whose `attributes` carries the echoed `input`, the `parsed` and `normalized` stage products, and the final prepared `value`; an item that failed to process is a `PrepareError` resource (`type` = `PrepareError`) whose `attributes` carries the failure `detail`. Success and failure are distinct types (value XOR error), so a single item is never ambiguously both. Item failures are independent — the rest of the batch still succeeds (partial success at HTTP 200)."},"ZoomInfo.Core.Foundations.ErrorSourceModel":{"type":"object","properties":{"cookie":{"type":"string","description":"Identifies the cookie name that caused the issue"},"header":{"type":"string","description":"Identifies the header name that caused the error"},"pointer":{"type":"string","description":"An RFC 6901 compliant JSON pointer to the entity in the request body that caused the error"},"parameter":{"type":"string","description":"The name of the path or query parameter that caused the error"}}},"ZoomInfo.Core.Foundations.ErrorModel":{"type":"object","required":["id","code","status"],"properties":{"id":{"type":"string","description":"The unique id used to identify this specific error instance"},"code":{"type":"string","description":"The error code describing the error category. A full list of error codes can be found in the documentation for each service"},"detail":{"type":"string","description":"Message containing the specific details about this occurrence of the error"},"source":{"allOf":[{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorSourceModel"}],"description":"An optional object identifying which part of the request caused the error"},"status":{"type":"string","description":"The HTTP status code for the error"},"title":{"type":"string","description":"The error name that describes this type of error"}},"description":"The object describing a specific error from the API"},"ZoomInfo.Core.Foundations.ErrorResponseModel":{"type":"object","required":["errors"],"properties":{"detail":{"type":"string","description":"A high-level detail of the error(s) that occurred during the request"},"title":{"type":"string","description":"A high-level summary of the error(s) detected"},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ZoomInfo.Core.Foundations.ErrorModel"},"description":"The list of errors raised during the request"}},"description":"The standard error response body model for the ZoomInfo API."},"PhoneEnrichment":{"type":"string","enum":["LINE_TYPE"],"description":"Enrichment signals available for the phone domain.","x-enumDescriptions":{"LINE_TYPE":"Classify the line type (for example, landline, mobile, VoIP). Populates `value.lineType`."}},"PhoneRuleType":{"type":"string","enum":["INT_FORMAT","LEADING_1","AREA_CODE_PARENTHESES","AREA_CODE_PADDING","SEPARATOR"],"description":"Phone normalization rule names.","x-enumDescriptions":{"INT_FORMAT":"International formatting style applied to the number.","LEADING_1":"Handling of a leading country/trunk `1`.","AREA_CODE_PARENTHESES":"Parentheses around the area code.","AREA_CODE_PADDING":"Padding around the area code.","SEPARATOR":"Separator character between number groups."}},"PhoneRuleValue":{"type":"string","enum":["NONE","REMOVE","ADD","INTERNATIONAL","NATIONAL","E164","RFC3966","CONVERT_TO_PLUS_ONE","DASH","DOT","SPACE"],"description":"Legal values for phone normalization rules. Valid combinations: `INT_FORMAT` -> `INTERNATIONAL|NATIONAL|E164|RFC3966`; `LEADING_1` -> `ADD|REMOVE|CONVERT_TO_PLUS_ONE`; `SEPARATOR` -> `REMOVE|DASH|DOT|SPACE`; `AREA_CODE_PARENTHESES|AREA_CODE_PADDING` -> `ADD|REMOVE`; any rule type may use `NONE`.","x-enumDescriptions":{"NONE":"Leave unchanged.","REMOVE":"Remove the element.","ADD":"Add the element.","INTERNATIONAL":"International format (`INT_FORMAT`).","NATIONAL":"National format (`INT_FORMAT`).","E164":"E.164 format (`INT_FORMAT`).","RFC3966":"RFC 3966 format (`INT_FORMAT`).","CONVERT_TO_PLUS_ONE":"Convert a leading `1` to `+1` (`LEADING_1`).","DASH":"Use a dash separator (`SEPARATOR`).","DOT":"Use a dot separator (`SEPARATOR`).","SPACE":"Use a space separator (`SEPARATOR`)."}},"PhoneRule":{"type":"object","required":["type","value"],"properties":{"type":{"allOf":[{"$ref":"#/components/schemas/PhoneRuleType"}],"description":"The phone normalization rule to apply."},"value":{"allOf":[{"$ref":"#/components/schemas/PhoneRuleValue"}],"description":"The value parameter for the rule."}},"description":"A single phone normalization rule. `type` selects the rule; `value` is its argument. Use only the documented `type`/`value` combinations."},"PhoneNormalizationRules":{"type":"object","properties":{"phone":{"type":"array","items":{"$ref":"#/components/schemas/PhoneRule"},"description":"Rules applied to the phone number."}},"description":"Inline phone custom-normalization rules, grouped by rule group."},"PhonePrepareAttributes":{"type":"object","required":["items"],"properties":{"enrichments":{"type":"array","items":{"$ref":"#/components/schemas/PhoneEnrichment"},"maxItems":1,"description":"Optional signals to compute on top of the phone defaults, applied to every item in the batch."},"config":{"type":"object","properties":{"normalizationRules":{"type":"object","properties":{"rules":{"allOf":[{"$ref":"#/components/schemas/PhoneNormalizationRules"}],"description":"Inline custom-normalization rules, grouped by rule group. Mutually exclusive with `configId`."},"configId":{"type":"string","description":"Identifier of a saved custom-normalization config to apply, resolved per-tenant from the authenticated request. Mutually exclusive with inline `rules`."}},"description":"Custom-normalization configuration (inline `rules` or saved `configId`)."}},"description":"Optional custom-normalization configuration applied to every item in the batch. Presence of `config.normalizationRules` triggers the custom-normalization leg of the pipeline."},"items":{"type":"array","items":{"$ref":"#/components/schemas/PhoneInputItem"},"minItems":1,"maxItems":30,"description":"The phone values to prepare."}},"description":"Phone Data Quality request. Default steps: parse, validate, normalize. Line type enrichment is available via `enrichments`, custom normalization via `config`."},"PhoneRequestResource":{"type":"object","required":["type","attributes"],"properties":{"type":{"type":"string","description":"The type of the resource","default":"PhonePrepareRequest","pattern":"PhonePrepareRequest"},"attributes":{"allOf":[{"$ref":"#/components/schemas/PhonePrepareAttributes"}],"description":"The attributes defining the resource"}},"description":"Phone request resource. `data` is a single resource of this type; the batch is in `attributes.items`."},"EmailPrepareAttributes":{"type":"object","required":["items"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/EmailInputItem"},"minItems":1,"maxItems":30,"description":"The email values to prepare."}},"description":"Email Data Quality request. Default steps: parse, validate, normalize."},"EmailRequestResource":{"type":"object","required":["type","attributes"],"properties":{"type":{"type":"string","description":"The type of the resource","default":"EmailPrepareRequest","pattern":"EmailPrepareRequest"},"attributes":{"allOf":[{"$ref":"#/components/schemas/EmailPrepareAttributes"}],"description":"The attributes defining the resource"}},"description":"Email request resource. `data` is a single resource of this type; the batch is in `attributes.items`."},"AddressRequestEnrichment":{"type":"string","enum":["VERIFY"],"description":"The enrichment signals selectable on an address request."},"StreetLineRuleType":{"type":"string","enum":["CASE","MULTIPLE","STREET_TYPE","COMPASS_DIR","UNIT_DESIGNATORS","PERIODS"],"description":"Street-line normalization rule names.","x-enumDescriptions":{"CASE":"Letter casing of the street line.","MULTIPLE":"Handling of multiple street lines.","STREET_TYPE":"Street-type token handling (for example, `Street`/`St`).","COMPASS_DIR":"Compass-direction token handling (for example, `North`/`N`).","UNIT_DESIGNATORS":"Unit-designator token handling (for example, `Suite`/`Ste`).","PERIODS":"Period handling."}},"StreetLineRuleValue":{"type":"string","enum":["NONE","PROPER_CASE","UPPERCASE","LOWERCASE","COMBINE_ON_SINGLE_LINE","DISCARD_SECOND_LINE","ABBREVIATE","EXPAND","ADD","REMOVE"],"description":"Legal values for street-line normalization rules. Valid combinations: `CASE` -> `PROPER_CASE|UPPERCASE|LOWERCASE`; `MULTIPLE` -> `COMBINE_ON_SINGLE_LINE|DISCARD_SECOND_LINE`; `STREET_TYPE|COMPASS_DIR|UNIT_DESIGNATORS` -> `ABBREVIATE|EXPAND`; `PERIODS` -> `ADD|REMOVE`; any rule type may use `NONE`.","x-enumDescriptions":{"NONE":"Leave unchanged.","PROPER_CASE":"Proper (title) case (`CASE`).","UPPERCASE":"Uppercase (`CASE`).","LOWERCASE":"Lowercase (`CASE`).","COMBINE_ON_SINGLE_LINE":"Combine multiple lines onto one (`MULTIPLE`).","DISCARD_SECOND_LINE":"Discard the second line (`MULTIPLE`).","ABBREVIATE":"Abbreviate the token (`STREET_TYPE`, `COMPASS_DIR`, `UNIT_DESIGNATORS`).","EXPAND":"Expand the token (`STREET_TYPE`, `COMPASS_DIR`, `UNIT_DESIGNATORS`).","ADD":"Add periods (`PERIODS`).","REMOVE":"Remove periods (`PERIODS`)."}},"StreetLineRule":{"type":"object","required":["type","value"],"properties":{"type":{"allOf":[{"$ref":"#/components/schemas/StreetLineRuleType"}],"description":"The street-line normalization rule to apply."},"value":{"allOf":[{"$ref":"#/components/schemas/StreetLineRuleValue"}],"description":"The value parameter for the rule."}},"description":"A single street-line normalization rule. Use only the documented `type`/`value` combinations."},"CityRuleType":{"type":"string","enum":["CASE","PREFIXES","PERIODS"],"description":"City normalization rule names.","x-enumDescriptions":{"CASE":"Letter casing of the city name.","PREFIXES":"Prefix-token handling.","PERIODS":"Period handling."}},"CityRuleValue":{"type":"string","enum":["NONE","PROPER_CASE","UPPERCASE","LOWERCASE","ABBREVIATE","EXPAND","ADD","REMOVE"],"description":"Legal values for city normalization rules. Valid combinations: `CASE` -> `PROPER_CASE|UPPERCASE|LOWERCASE`; `PREFIXES` -> `ABBREVIATE|EXPAND`; `PERIODS` -> `ADD|REMOVE`; any rule type may use `NONE`.","x-enumDescriptions":{"NONE":"Leave unchanged.","PROPER_CASE":"Proper (title) case (`CASE`).","UPPERCASE":"Uppercase (`CASE`).","LOWERCASE":"Lowercase (`CASE`).","ABBREVIATE":"Abbreviate the prefix (`PREFIXES`).","EXPAND":"Expand the prefix (`PREFIXES`).","ADD":"Add periods (`PERIODS`).","REMOVE":"Remove periods (`PERIODS`)."}},"CityRule":{"type":"object","required":["type","value"],"properties":{"type":{"allOf":[{"$ref":"#/components/schemas/CityRuleType"}],"description":"The city normalization rule to apply."},"value":{"allOf":[{"$ref":"#/components/schemas/CityRuleValue"}],"description":"The value parameter for the rule."}},"description":"A single city normalization rule. Use only the documented `type`/`value` combinations."},"StateProvinceRuleType":{"type":"string","enum":["CASE","FORMAT"],"description":"State/province normalization rule names.","x-enumDescriptions":{"CASE":"Letter casing of the state/province.","FORMAT":"Abbreviated vs. expanded form."}},"StateProvinceRuleValue":{"type":"string","enum":["NONE","UPPERCASE","LOWERCASE","PROPER_CASE","ABBREVIATE","EXPAND"],"description":"Legal values for state/province normalization rules. Valid combinations: `CASE` -> `UPPERCASE|LOWERCASE|PROPER_CASE`; `FORMAT` -> `ABBREVIATE|EXPAND`; any rule type may use `NONE`.","x-enumDescriptions":{"NONE":"Leave unchanged.","UPPERCASE":"Uppercase (`CASE`).","LOWERCASE":"Lowercase (`CASE`).","PROPER_CASE":"Proper (title) case (`CASE`).","ABBREVIATE":"Abbreviated form, for example `NC` (`FORMAT`).","EXPAND":"Expanded form, for example `North Carolina` (`FORMAT`)."}},"StateProvinceRule":{"type":"object","required":["type","value"],"properties":{"type":{"allOf":[{"$ref":"#/components/schemas/StateProvinceRuleType"}],"description":"The state/province normalization rule to apply."},"value":{"allOf":[{"$ref":"#/components/schemas/StateProvinceRuleValue"}],"description":"The value parameter for the rule."}},"description":"A single state/province normalization rule. Use only the documented `type`/`value` combinations."},"CountryRuleType":{"type":"string","enum":["COUNTRY_NAME","COUNTRY_CODE"],"description":"Country normalization rule names.","x-enumDescriptions":{"COUNTRY_NAME":"Country-name representation.","COUNTRY_CODE":"Country-code representation."}},"CountryRuleValue":{"type":"string","enum":["NONE","COMMON_NAME","SHORT_NAME","LONG_NAME","ES_NAME","FR_NAME","CH_NAME","AR_NAME","RU_NAME","ALPHA2","ALPHA3","NUMERIC_CODE"],"description":"Legal values for country normalization rules. Valid combinations: `COUNTRY_NAME` -> `COMMON_NAME|SHORT_NAME|LONG_NAME|ES_NAME|FR_NAME|CH_NAME|AR_NAME|RU_NAME|ALPHA2|ALPHA3|NUMERIC_CODE`; `COUNTRY_CODE` -> `ALPHA2|ALPHA3|NUMERIC_CODE`; any rule type may use `NONE`.","x-enumDescriptions":{"NONE":"Leave unchanged.","COMMON_NAME":"Common name (`COUNTRY_NAME`).","SHORT_NAME":"Short name (`COUNTRY_NAME`).","LONG_NAME":"Long name (`COUNTRY_NAME`).","ES_NAME":"Spanish name (`COUNTRY_NAME`).","FR_NAME":"French name (`COUNTRY_NAME`).","CH_NAME":"Chinese name (`COUNTRY_NAME`).","AR_NAME":"Arabic name (`COUNTRY_NAME`).","RU_NAME":"Russian name (`COUNTRY_NAME`).","ALPHA2":"ISO 3166-1 alpha-2 code (`COUNTRY_NAME`, `COUNTRY_CODE`).","ALPHA3":"ISO 3166-1 alpha-3 code (`COUNTRY_NAME`, `COUNTRY_CODE`).","NUMERIC_CODE":"ISO 3166-1 numeric code (`COUNTRY_NAME`, `COUNTRY_CODE`)."}},"CountryRule":{"type":"object","required":["type","value"],"properties":{"type":{"allOf":[{"$ref":"#/components/schemas/CountryRuleType"}],"description":"The country normalization rule to apply."},"value":{"allOf":[{"$ref":"#/components/schemas/CountryRuleValue"}],"description":"The value parameter for the rule."}},"description":"A single country normalization rule. Use only the documented `type`/`value` combinations."},"AddressNormalizationRules":{"type":"object","properties":{"streetLine":{"type":"array","items":{"$ref":"#/components/schemas/StreetLineRule"},"description":"Rules applied to the street line(s)."},"city":{"type":"array","items":{"$ref":"#/components/schemas/CityRule"},"description":"Rules applied to the city."},"stateProvince":{"type":"array","items":{"$ref":"#/components/schemas/StateProvinceRule"},"description":"Rules applied to the state/province."},"country":{"type":"array","items":{"$ref":"#/components/schemas/CountryRule"},"description":"Rules applied to the country."}},"description":"Inline address custom-normalization rules, grouped by rule group."},"AddressPrepareAttributes":{"type":"object","required":["items"],"properties":{"enrichments":{"type":"array","items":{"$ref":"#/components/schemas/AddressRequestEnrichment"},"maxItems":1,"description":"The enrichment signals to compute, applied to every item in the batch. Mutually exclusive with `config`."},"config":{"type":"object","properties":{"normalizationRules":{"type":"object","properties":{"rules":{"allOf":[{"$ref":"#/components/schemas/AddressNormalizationRules"}],"description":"Inline custom-normalization rules, grouped by rule group. Mutually exclusive with `configId`."},"configId":{"type":"string","description":"Identifier of a saved custom-normalization config to apply, resolved per-tenant from the authenticated request. Mutually exclusive with inline `rules`."}},"description":"Custom-normalization configuration (inline `rules` or saved `configId`)."}},"description":"Custom-normalization configuration applied to every item in the batch. Mutually exclusive with `enrichments`."},"items":{"type":"array","items":{"$ref":"#/components/schemas/AddressInputItem"},"minItems":1,"maxItems":30,"description":"The address values to prepare."}},"description":"Address Data Quality request. Default step: parse. Supply exactly one of `enrichments` or `config`:\n\n- `enrichments` — the enrichment signals to compute.\n- `config.normalizationRules` — custom normalization.\n\nSupplying both, or neither, is rejected."},"AddressRequestResource":{"type":"object","required":["type","attributes"],"properties":{"type":{"type":"string","description":"The type of the resource","default":"AddressPrepareRequest","pattern":"AddressPrepareRequest"},"attributes":{"allOf":[{"$ref":"#/components/schemas/AddressPrepareAttributes"}],"description":"The attributes defining the resource"}},"description":"Address request resource. `data` is a single resource of this type; the batch is in `attributes.items`."},"JobTitleRuleType":{"type":"string","enum":["CASE","PERIODS","COMMAS","DEPARTMENT_LITERAL","DEPARTMENT_NAMES","ORDER","CXO","VP","DIRECTOR","MANAGER","MODIFIER_PREFIXES","MODIFIER_SUFFIXES","OF_USAGE","AND_USAGE","HYPHENS"],"description":"Job-title normalization rule names.","x-enumDescriptions":{"CASE":"Letter casing of the title.","PERIODS":"Period handling.","COMMAS":"Comma handling.","DEPARTMENT_LITERAL":"Department-literal token handling.","DEPARTMENT_NAMES":"Department-name token handling.","ORDER":"Ordering of the department relative to the title.","CXO":"CxO token handling (for example, `Chief Executive Officer`/`CEO`).","VP":"Vice-president token handling.","DIRECTOR":"Director token handling.","MANAGER":"Manager token handling.","MODIFIER_PREFIXES":"Modifier-prefix token handling.","MODIFIER_SUFFIXES":"Modifier-suffix token handling.","OF_USAGE":"Handling of the word `of`.","AND_USAGE":"Handling of the word `and` / ampersand.","HYPHENS":"Hyphen handling."}},"JobTitleRuleValue":{"type":"string","enum":["NONE","PROPER_CASE","UPPERCASE","LOWERCASE","ADD","REMOVE","ABBREVIATE","EXPAND","DEPARTMENT_LAST","DEPARTMENT_FIRST","CONVERT_TO_COMMA","CONVERT_TO_HYPHEN","CONVERT_TO_AND","CONVERT_TO_AMPERSAND","REMOVE_SPACE","PAD_WITH_SPACE"],"description":"Legal values for job-title normalization rules. Valid combinations: `CASE` -> `PROPER_CASE|UPPERCASE|LOWERCASE`; `PERIODS` -> `ADD|REMOVE`; `COMMAS|MODIFIER_SUFFIXES` -> `REMOVE`; `DEPARTMENT_LITERAL|DEPARTMENT_NAMES|CXO|VP|DIRECTOR|MANAGER|MODIFIER_PREFIXES` -> `ABBREVIATE|EXPAND`; `ORDER` -> `DEPARTMENT_LAST|DEPARTMENT_FIRST`; `OF_USAGE` -> `REMOVE|CONVERT_TO_COMMA|CONVERT_TO_HYPHEN`; `AND_USAGE` -> `CONVERT_TO_AND|CONVERT_TO_AMPERSAND`; `HYPHENS` -> `REMOVE|REMOVE_SPACE|PAD_WITH_SPACE`; any rule type may use `NONE`.","x-enumDescriptions":{"NONE":"Leave unchanged.","PROPER_CASE":"Proper (title) case (`CASE`).","UPPERCASE":"Uppercase (`CASE`).","LOWERCASE":"Lowercase (`CASE`).","ADD":"Add (`PERIODS`).","REMOVE":"Remove (`PERIODS`, `COMMAS`, `MODIFIER_SUFFIXES`, `OF_USAGE`, `HYPHENS`).","ABBREVIATE":"Abbreviate the token (`DEPARTMENT_LITERAL`, `DEPARTMENT_NAMES`, `CXO`, `VP`, `DIRECTOR`, `MANAGER`, `MODIFIER_PREFIXES`).","EXPAND":"Expand the token (`DEPARTMENT_LITERAL`, `DEPARTMENT_NAMES`, `CXO`, `VP`, `DIRECTOR`, `MANAGER`, `MODIFIER_PREFIXES`).","DEPARTMENT_LAST":"Place the department last (`ORDER`).","DEPARTMENT_FIRST":"Place the department first (`ORDER`).","CONVERT_TO_COMMA":"Convert to a comma (`OF_USAGE`).","CONVERT_TO_HYPHEN":"Convert to a hyphen (`OF_USAGE`).","CONVERT_TO_AND":"Convert to the word `and` (`AND_USAGE`).","CONVERT_TO_AMPERSAND":"Convert to an ampersand (`AND_USAGE`).","REMOVE_SPACE":"Remove surrounding space (`HYPHENS`).","PAD_WITH_SPACE":"Pad with surrounding space (`HYPHENS`)."}},"JobTitleRule":{"type":"object","required":["type","value"],"properties":{"type":{"allOf":[{"$ref":"#/components/schemas/JobTitleRuleType"}],"description":"The job-title normalization rule to apply."},"value":{"allOf":[{"$ref":"#/components/schemas/JobTitleRuleValue"}],"description":"The value parameter for the rule."}},"description":"A single job-title normalization rule. Use only the documented `type`/`value` combinations."},"JobTitleNormalizationRules":{"type":"object","properties":{"jobTitle":{"type":"array","items":{"$ref":"#/components/schemas/JobTitleRule"},"description":"Rules applied to the job title."}},"description":"Inline job-title custom-normalization rules, grouped by rule group."},"JobTitlePrepareAttributes":{"type":"object","required":["items"],"properties":{"config":{"type":"object","properties":{"normalizationRules":{"type":"object","properties":{"rules":{"allOf":[{"$ref":"#/components/schemas/JobTitleNormalizationRules"}],"description":"Inline custom-normalization rules, grouped by rule group. Mutually exclusive with `configId`."},"configId":{"type":"string","description":"Identifier of a saved custom-normalization config to apply, resolved per-tenant from the authenticated request. Mutually exclusive with inline `rules`."}},"description":"Custom-normalization configuration (inline `rules` or saved `configId`)."}},"description":"Optional custom-normalization configuration applied to every item in the batch. Presence of `config.normalizationRules` triggers the custom-normalization leg of the pipeline."},"items":{"type":"array","items":{"$ref":"#/components/schemas/JobTitleInputItem"},"minItems":1,"maxItems":30,"description":"The job title values to prepare."}},"description":"Job Title Data Quality request. Default step: normalize. Custom normalization is available via `config`."},"JobTitleRequestResource":{"type":"object","required":["type","attributes"],"properties":{"type":{"type":"string","description":"The type of the resource","default":"JobTitlePrepareRequest","pattern":"JobTitlePrepareRequest"},"attributes":{"allOf":[{"$ref":"#/components/schemas/JobTitlePrepareAttributes"}],"description":"The attributes defining the resource"}},"description":"Job title request resource. `data` is a single resource of this type; the batch is in `attributes.items`."},"PersonNameRuleType":{"type":"string","enum":["CASE","FIRST_NAME","MIDDLE_NAME","PREFIXES","SUFFIXES","PERIODS_INITIALS","PERIODS_PREFIXES","HYPHENS"],"description":"Person-name normalization rule names.","x-enumDescriptions":{"CASE":"Letter casing of the name.","FIRST_NAME":"First-name handling.","MIDDLE_NAME":"Middle-name handling.","PREFIXES":"Prefix-token handling (for example, `Dr`, `Ms`).","SUFFIXES":"Suffix-token handling (for example, `Jr`, `III`).","PERIODS_INITIALS":"Period handling for initials.","PERIODS_PREFIXES":"Period handling for prefixes.","HYPHENS":"Hyphen handling."}},"PersonNameRuleValue":{"type":"string","enum":["NONE","PROPER_CASE","UPPERCASE","LOWERCASE","CONVERT_TO_INITIAL","ADD","REMOVE"],"description":"Legal values for person-name normalization rules. Valid combinations: `CASE` -> `PROPER_CASE|UPPERCASE|LOWERCASE`; `FIRST_NAME` -> `CONVERT_TO_INITIAL`; `MIDDLE_NAME` -> `CONVERT_TO_INITIAL|REMOVE`; `PREFIXES|SUFFIXES|HYPHENS` -> `REMOVE`; `PERIODS_INITIALS|PERIODS_PREFIXES` -> `ADD|REMOVE`; any rule type may use `NONE`.","x-enumDescriptions":{"NONE":"Leave unchanged.","PROPER_CASE":"Proper (title) case (`CASE`).","UPPERCASE":"Uppercase (`CASE`).","LOWERCASE":"Lowercase (`CASE`).","CONVERT_TO_INITIAL":"Convert to a single initial (`FIRST_NAME`, `MIDDLE_NAME`).","ADD":"Add the element (`PERIODS_INITIALS`, `PERIODS_PREFIXES`).","REMOVE":"Remove the element (`MIDDLE_NAME`, `PREFIXES`, `SUFFIXES`, `PERIODS_INITIALS`, `PERIODS_PREFIXES`, `HYPHENS`)."}},"PersonNameRule":{"type":"object","required":["type","value"],"properties":{"type":{"allOf":[{"$ref":"#/components/schemas/PersonNameRuleType"}],"description":"The person-name normalization rule to apply."},"value":{"allOf":[{"$ref":"#/components/schemas/PersonNameRuleValue"}],"description":"The value parameter for the rule."}},"description":"A single person-name normalization rule. Use only the documented `type`/`value` combinations."},"PersonNameNormalizationRules":{"type":"object","properties":{"personName":{"type":"array","items":{"$ref":"#/components/schemas/PersonNameRule"},"description":"Rules applied to the name."}},"description":"Inline person-name custom-normalization rules, grouped by rule group."},"PersonNamePrepareAttributes":{"type":"object","required":["items"],"properties":{"config":{"type":"object","properties":{"normalizationRules":{"type":"object","properties":{"rules":{"allOf":[{"$ref":"#/components/schemas/PersonNameNormalizationRules"}],"description":"Inline custom-normalization rules, grouped by rule group. Mutually exclusive with `configId`."},"configId":{"type":"string","description":"Identifier of a saved custom-normalization config to apply, resolved per-tenant from the authenticated request. Mutually exclusive with inline `rules`."}},"description":"Custom-normalization configuration (inline `rules` or saved `configId`)."}},"description":"Optional custom-normalization configuration applied to every item in the batch. Presence of `config.normalizationRules` triggers the custom-normalization leg of the pipeline."},"items":{"type":"array","items":{"$ref":"#/components/schemas/PersonNameInputItem"},"minItems":1,"maxItems":30,"description":"The person-name values to prepare."}},"description":"Person Name Data Quality request. Default steps: parse, validate, normalize. Custom normalization is available via `config`."},"PersonNameRequestResource":{"type":"object","required":["type","attributes"],"properties":{"type":{"type":"string","description":"The type of the resource","default":"PersonNamePrepareRequest","pattern":"PersonNamePrepareRequest"},"attributes":{"allOf":[{"$ref":"#/components/schemas/PersonNamePrepareAttributes"}],"description":"The attributes defining the resource"}},"description":"Person name request resource. `data` is a single resource of this type; the batch is in `attributes.items`."},"DataQualityRequestResource":{"type":"object","oneOf":[{"$ref":"#/components/schemas/PhoneRequestResource"},{"$ref":"#/components/schemas/EmailRequestResource"},{"$ref":"#/components/schemas/AddressRequestResource"},{"$ref":"#/components/schemas/JobTitleRequestResource"},{"$ref":"#/components/schemas/PersonNameRequestResource"}],"discriminator":{"propertyName":"type","mapping":{"PhonePrepareRequest":"#/components/schemas/PhoneRequestResource","EmailPrepareRequest":"#/components/schemas/EmailRequestResource","AddressPrepareRequest":"#/components/schemas/AddressRequestResource","JobTitlePrepareRequest":"#/components/schemas/JobTitleRequestResource","PersonNamePrepareRequest":"#/components/schemas/PersonNameRequestResource"}},"description":"Polymorphic Data Quality request resource, discriminated by `type`. The request's `data` is exactly one of these (the document-level discriminator); the batch of values is the `items[]` array inside its attributes."},"DataQualityRequest":{"type":"object","required":["data"],"properties":{"data":{"allOf":[{"$ref":"#/components/schemas/DataQualityRequestResource"}],"description":"The primary data of the document"}},"description":"Data Quality request body. `data` is a SINGLE resource whose `type` selects the domain (document-level discriminator); the batch of values is the `items[]` array inside its attributes. The whole request targets one domain, so homogeneity is structural — `items` is typed to the selected domain and cannot mix domains — and routing is unambiguous. Batch-level levers (`config`, `enrichments`) likewise live in the resource's attributes and apply to every item."},"NormalizeConfigStatus":{"type":"string","enum":["ACTIVE","ARCHIVED"],"description":"Lifecycle status of a normalization configuration.","x-enumDescriptions":{"ACTIVE":"The config is active and available to `prepare` requests.","ARCHIVED":"The config has been archived (soft-deleted) and is no longer applied."}},"NormalizeConfigRules":{"type":"object","properties":{"phone":{"type":"array","items":{"$ref":"#/components/schemas/PhoneRule"},"description":"Rules applied to the phone number."},"streetLine":{"type":"array","items":{"$ref":"#/components/schemas/StreetLineRule"},"description":"Rules applied to the street line(s)."},"city":{"type":"array","items":{"$ref":"#/components/schemas/CityRule"},"description":"Rules applied to the city."},"stateProvince":{"type":"array","items":{"$ref":"#/components/schemas/StateProvinceRule"},"description":"Rules applied to the state/province."},"country":{"type":"array","items":{"$ref":"#/components/schemas/CountryRule"},"description":"Rules applied to the country."},"jobTitle":{"type":"array","items":{"$ref":"#/components/schemas/JobTitleRule"},"description":"Rules applied to the job title."},"personName":{"type":"array","items":{"$ref":"#/components/schemas/PersonNameRule"},"description":"Rules applied to the person name."}},"description":"Custom-normalization rules for a stored config, grouped by rule group. A single config may carry\nrules for any combination of domains. Each group is an ordered list of `type`/`value` rules; use\nonly the documented `type`/`value` combinations (see each rule model). Email has no rule\nvocabulary and therefore no group here."},"NormalizeConfigAttributes":{"type":"object","required":["name","status","rules"],"properties":{"name":{"type":"string","description":"Display name for the config."},"description":{"type":"string","description":"Optional human-readable description of what the config does."},"status":{"allOf":[{"$ref":"#/components/schemas/NormalizeConfigStatus"}],"description":"Lifecycle status of the config. Include this in a PATCH body to archive or reactivate the config."},"rules":{"allOf":[{"$ref":"#/components/schemas/NormalizeConfigRules"}],"description":"Custom-normalization rules for this config, grouped by rule group."}},"description":"Attributes of a normalization configuration."},"NormalizeConfigMeta":{"type":"object","required":["createdAt","updatedAt"],"properties":{"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp at which this config was created.","readOnly":true},"updatedAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp at which this config was last updated.","readOnly":true}},"description":"Non-standard metadata for a normalization config."},"NormalizeConfig":{"type":"object","required":["id","type","attributes"],"properties":{"id":{"type":"string","description":"The unique identifier for the resource"},"type":{"type":"string","description":"The type of the resource","default":"NormalizeConfig","pattern":"NormalizeConfig"},"attributes":{"allOf":[{"$ref":"#/components/schemas/NormalizeConfigAttributes"}],"description":"The attributes defining the resource"},"meta":{"allOf":[{"$ref":"#/components/schemas/NormalizeConfigMeta"}],"description":"Non-standard meta information about the resource","readOnly":true}},"description":"A normalization configuration resource."},"NormalizeConfigPageMeta":{"type":"object","required":["number","size","totalPages","totalItems"],"properties":{"number":{"type":"integer","format":"uint32","description":"Current page number (1-based).","readOnly":true},"size":{"type":"integer","format":"uint32","description":"Number of items in the current page.","readOnly":true},"totalPages":{"type":"integer","format":"uint32","description":"Total number of pages available.","readOnly":true},"totalItems":{"type":"integer","format":"uint32","description":"Total number of items across all pages.","readOnly":true}},"description":"Per-page metadata for paginated normalization config list responses."},"NormalizeConfigListMeta":{"type":"object","required":["page"],"properties":{"page":{"allOf":[{"$ref":"#/components/schemas/NormalizeConfigPageMeta"}],"description":"Current page details and totals.","readOnly":true}},"description":"Page meta-data for paginated normalization config list responses."},"NormalizeConfigListLinks":{"type":"object","properties":{"self":{"type":"string","format":"uri","description":"The link that generated the current response document"},"first":{"type":"string","format":"uri","description":"A link to the first page of data"},"last":{"type":"string","format":"uri","description":"A link to the last page of data"},"prev":{"type":"string","format":"uri","description":"A link to the previous page of data"},"next":{"type":"string","format":"uri","description":"A link to the next page of data"}},"description":"Paging links for normalization config list responses."},"NormalizeConfigListJsonApiModel":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/NormalizeConfig"},"description":"The primary data of the document"},"meta":{"allOf":[{"$ref":"#/components/schemas/NormalizeConfigListMeta"}],"description":"Non-standard meta information about the document"},"links":{"allOf":[{"$ref":"#/components/schemas/NormalizeConfigListLinks"}],"description":"Links related to the primary data"}},"description":"JSON API model for a paginated list of normalization configs."},"NormalizeConfigJsonApiModel":{"type":"object","required":["data"],"properties":{"data":{"allOf":[{"$ref":"#/components/schemas/NormalizeConfig"}],"description":"The primary data of the document"}},"description":"JSON API model for a single normalization config."},"NormalizeConfigAttributesCreate":{"type":"object","required":["name","rules"],"properties":{"name":{"type":"string","description":"Display name for the config."},"description":{"type":"string","description":"Optional human-readable description of what the config does."},"rules":{"allOf":[{"$ref":"#/components/schemas/NormalizeConfigRules"}],"description":"Custom-normalization rules for this config, grouped by rule group."}},"description":"Attributes of a normalization configuration."},"NormalizeConfigCreate":{"type":"object","required":["type","attributes"],"properties":{"type":{"type":"string","description":"The type of the resource","default":"NormalizeConfig","pattern":"NormalizeConfig"},"attributes":{"allOf":[{"$ref":"#/components/schemas/NormalizeConfigAttributesCreate"}],"description":"The attributes defining the resource"}},"description":"A normalization configuration resource."},"NormalizeConfigJsonApiModelCreate":{"type":"object","required":["data"],"properties":{"data":{"allOf":[{"$ref":"#/components/schemas/NormalizeConfigCreate"}],"description":"The primary data of the document"}},"description":"JSON API model for a single normalization config."},"NormalizeConfigAttributesUpdate":{"type":"object","properties":{"name":{"type":"string","description":"Display name for the config."},"description":{"type":"string","description":"Optional human-readable description of what the config does."},"status":{"allOf":[{"$ref":"#/components/schemas/NormalizeConfigStatus"}],"description":"Lifecycle status of the config. Include this in a PATCH body to archive or reactivate the config."},"rules":{"allOf":[{"$ref":"#/components/schemas/NormalizeConfigRules"}],"description":"Custom-normalization rules for this config, grouped by rule group."}},"description":"Attributes of a normalization configuration."},"NormalizeConfigUpdate":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for the resource"},"type":{"type":"string","description":"The type of the resource","default":"NormalizeConfig","pattern":"NormalizeConfig"},"attributes":{"allOf":[{"$ref":"#/components/schemas/NormalizeConfigAttributesUpdate"}],"description":"The attributes defining the resource"}},"description":"A normalization configuration resource."},"NormalizeConfigJsonApiModelUpdate":{"type":"object","properties":{"data":{"allOf":[{"$ref":"#/components/schemas/NormalizeConfigUpdate"}],"description":"The primary data of the document"}},"description":"JSON API model for a single normalization config."},"ScoreConfigStatus":{"type":"string","enum":["ACTIVE","ARCHIVED"],"description":"Lifecycle status of a score configuration.","x-enumDescriptions":{"ACTIVE":"The score config is active and available for scoring.","ARCHIVED":"The score config has been archived (soft-deleted) and is no longer used for scoring."}},"ScoreModelType":{"type":"string","enum":["ATTRIBUTE"],"description":"Type of scoring model.","x-enumDescriptions":{"ATTRIBUTE":"Weighted attribute-scoring model: a weighted sum of per-field rule matches."}},"ScoreCriterionOperator":{"type":"string","enum":["TEXT_EQUALS","TEXT_NOT_EQUALS","TEXT_CONTAINS","TEXT_NOT_CONTAINS","TEXT_STARTS","TEXT_NOT_STARTS","TEXT_ENDS","TEXT_NOT_ENDS","NUM_EQUALS","NUM_MORE","NUM_LESS","NUM_BETWEEN","BOOL_TRUE","BOOL_FALSE","IS_NULL","IS_NOT_NULL","DATE_EXACT","DATE_AFTER","DATE_BEFORE","PICKLIST_EQUALS","PICKLIST_NOT_EQUALS","MULTIPICKLIST_EQUALS","MULTIPICKLIST_NOT_EQUALS","MULTIPICKLIST_HAS","MULTIPICKLIST_HAS_NONE","MULTIPICKLIST_HAS_ALL","DIVIDER"],"description":"Comparison operator for a score rule criterion.","x-enumDescriptions":{"TEXT_EQUALS":"Field value equals the comparison value.","TEXT_NOT_EQUALS":"Field value does not equal the comparison value.","TEXT_CONTAINS":"Field value contains the comparison value as a substring.","TEXT_NOT_CONTAINS":"Field value does not contain the comparison value as a substring.","TEXT_STARTS":"Field value starts with the comparison value.","TEXT_NOT_STARTS":"Field value does not start with the comparison value.","TEXT_ENDS":"Field value ends with the comparison value.","TEXT_NOT_ENDS":"Field value does not end with the comparison value.","NUM_EQUALS":"Numeric field equals the comparison value.","NUM_MORE":"Numeric field is greater than the comparison value.","NUM_LESS":"Numeric field is less than the comparison value.","NUM_BETWEEN":"Numeric field falls between the two comparison values.","BOOL_TRUE":"Boolean field is true.","BOOL_FALSE":"Boolean field is false.","IS_NULL":"Field has no value.","IS_NOT_NULL":"Field has a value.","DATE_EXACT":"Date field equals the comparison date.","DATE_AFTER":"Date field is after the comparison date.","DATE_BEFORE":"Date field is before the comparison date.","PICKLIST_EQUALS":"Single-select picklist value is the comparison value.","PICKLIST_NOT_EQUALS":"Single-select picklist value is not the comparison value.","MULTIPICKLIST_EQUALS":"Multi-select picklist exactly equals the comparison values.","MULTIPICKLIST_NOT_EQUALS":"Multi-select picklist does not equal the comparison values.","MULTIPICKLIST_HAS":"Multi-select picklist contains at least one comparison value.","MULTIPICKLIST_HAS_NONE":"Multi-select picklist contains none of the comparison values.","MULTIPICKLIST_HAS_ALL":"Multi-select picklist contains all of the comparison values.","DIVIDER":"Starts an OR alternative in a rule; [A, B, DIVIDER, C] means (A AND B) OR C."}},"ScoreCriterion":{"type":"object","required":["operator"],"properties":{"operator":{"allOf":[{"$ref":"#/components/schemas/ScoreCriterionOperator"}],"description":"Comparison operator. `DIVIDER` marks an OR boundary in a rule and carries no values."},"values":{"type":"array","items":{"type":"string"},"maxItems":100,"description":"Operand values for the operator. Omitted for nullary operators (boolean and\nnull checks) and for `DIVIDER`; a single entry for most text, number, and\ndate operators; exactly two for `NUM_BETWEEN`."}},"description":"A single comparison criterion within a score rule."},"ScoreRule":{"type":"object","required":["name","score","criteria"],"properties":{"name":{"type":"string","description":"Display name for the rule."},"score":{"type":"number","format":"double","description":"Score contributed by this rule when its criteria match."},"criteria":{"type":"array","items":{"$ref":"#/components/schemas/ScoreCriterion"},"description":"Ordered criteria evaluated for this rule. At least one is required."}},"description":"A scoring rule: criteria that, when matched, contribute `score` to the owning element."},"ScoreElement":{"type":"object","required":["field","weight","rules"],"properties":{"field":{"type":"string","description":"Name of the input field this element scores."},"weight":{"type":"number","format":"double","minimum":0,"maximum":100,"description":"Relative weight of this element in the weighted sum. Between `0` and `100`."},"rules":{"type":"array","items":{"$ref":"#/components/schemas/ScoreRule"},"description":"Ordered rules evaluated for this element."}},"description":"A weighted scoring element bound to a single input field."},"ScoreConfigAttributes":{"type":"object","required":["name","status","modelType","elements","fieldsUsedInRules"],"properties":{"name":{"type":"string","description":"Display name for the score config."},"status":{"allOf":[{"$ref":"#/components/schemas/ScoreConfigStatus"}],"description":"Lifecycle status of the score config.","readOnly":true},"modelType":{"allOf":[{"$ref":"#/components/schemas/ScoreModelType"}],"description":"Type of scoring model. Only `ATTRIBUTE` is currently supported.","readOnly":true},"elements":{"type":"array","items":{"$ref":"#/components/schemas/ScoreElement"},"description":"Ordered scoring elements that define how records are scored."},"fieldsUsedInRules":{"type":"array","items":{"type":"string"},"description":"Distinct input field names referenced by this config's elements, sorted\nalphabetically. Read-only; derived from `elements[].field`.","readOnly":true}},"description":"Attributes of a score configuration."},"ScoreConfigMeta":{"type":"object","required":["createdAt","updatedAt"],"properties":{"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp at which this score config was created.","readOnly":true},"updatedAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp at which this score config was last updated.","readOnly":true}},"description":"Non-standard metadata for a score config."},"ScoreConfig":{"type":"object","required":["id","type","attributes"],"properties":{"id":{"type":"string","description":"The unique identifier for the resource"},"type":{"type":"string","description":"The type of the resource","default":"ScoreConfig","pattern":"ScoreConfig"},"attributes":{"allOf":[{"$ref":"#/components/schemas/ScoreConfigAttributes"}],"description":"The attributes defining the resource"},"meta":{"allOf":[{"$ref":"#/components/schemas/ScoreConfigMeta"}],"description":"Non-standard meta information about the resource","readOnly":true}},"description":"A score configuration resource (identity, model type, and scoring elements)."},"ScoreConfigPageMeta":{"type":"object","required":["number","size","totalPages","totalItems"],"properties":{"number":{"type":"integer","format":"uint32","description":"Current page number (1-based).","readOnly":true},"size":{"type":"integer","format":"uint32","description":"Number of items in the current page.","readOnly":true},"totalPages":{"type":"integer","format":"uint32","description":"Total number of pages available.","readOnly":true},"totalItems":{"type":"integer","format":"uint32","description":"Total number of items across all pages.","readOnly":true}},"description":"Per-page metadata for paginated score config list responses."},"ScoreConfigListMeta":{"type":"object","required":["page"],"properties":{"page":{"allOf":[{"$ref":"#/components/schemas/ScoreConfigPageMeta"}],"description":"Current page details and totals.","readOnly":true}},"description":"Page meta-data for paginated score config list responses."},"ScoreConfigListLinks":{"type":"object","properties":{"self":{"type":"string","format":"uri","description":"The link that generated the current response document"},"first":{"type":"string","format":"uri","description":"A link to the first page of data"},"last":{"type":"string","format":"uri","description":"A link to the last page of data"},"prev":{"type":"string","format":"uri","description":"A link to the previous page of data"},"next":{"type":"string","format":"uri","description":"A link to the next page of data"}},"description":"Paging links for score config list responses."},"ScoreConfigListJsonApiModel":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ScoreConfig"},"description":"The primary data of the document"},"meta":{"allOf":[{"$ref":"#/components/schemas/ScoreConfigListMeta"}],"description":"Non-standard meta information about the document"},"links":{"allOf":[{"$ref":"#/components/schemas/ScoreConfigListLinks"}],"description":"Links related to the primary data"}},"description":"JSON API model for a paginated list of score configs."},"ScoreConfigJsonApiModel":{"type":"object","required":["data"],"properties":{"data":{"allOf":[{"$ref":"#/components/schemas/ScoreConfig"}],"description":"The primary data of the document"}},"description":"JSON API model for a single score config."},"ScoreConfigCreate":{"type":"object","required":["type","attributes"],"properties":{"type":{"type":"string","description":"The type of the resource","default":"ScoreConfig","pattern":"ScoreConfig"},"attributes":{"allOf":[{"$ref":"#/components/schemas/ScoreConfigAttributes"}],"description":"The attributes defining the resource"}},"description":"A score configuration resource (identity, model type, and scoring elements)."},"ScoreConfigJsonApiModelCreate":{"type":"object","required":["data"],"properties":{"data":{"allOf":[{"$ref":"#/components/schemas/ScoreConfigCreate"}],"description":"The primary data of the document"}},"description":"JSON API model for a single score config."},"ScoreConfigAttributesUpdate":{"type":"object","properties":{"name":{"type":"string","description":"Display name for the score config."},"elements":{"type":"array","items":{"$ref":"#/components/schemas/ScoreElement"},"description":"Ordered scoring elements that define how records are scored."}},"description":"Attributes of a score configuration."},"ScoreConfigUpdate":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for the resource"},"type":{"type":"string","description":"The type of the resource","default":"ScoreConfig","pattern":"ScoreConfig"},"attributes":{"allOf":[{"$ref":"#/components/schemas/ScoreConfigAttributesUpdate"}],"description":"The attributes defining the resource"}},"description":"A score configuration resource (identity, model type, and scoring elements)."},"ScoreConfigJsonApiModelUpdate":{"type":"object","properties":{"data":{"allOf":[{"$ref":"#/components/schemas/ScoreConfigUpdate"}],"description":"The primary data of the document"}},"description":"JSON API model for a single score config."},"ScoreRunSummary":{"type":"object","required":["totalRecords","successCount","scoredCount","errorCount"],"properties":{"totalRecords":{"type":"integer","format":"uint32","description":"Total number of records submitted in the run.","readOnly":true},"successCount":{"type":"integer","format":"uint32","description":"Number of records that were processed without error.","readOnly":true},"scoredCount":{"type":"integer","format":"uint32","description":"Number of records that received a computed score from at least one config.","readOnly":true},"errorCount":{"type":"integer","format":"uint32","description":"Number of records that errored during scoring.","readOnly":true}},"description":"Aggregate counts describing the outcome of a score run."},"DataQualityRecord":{"type":"object","additionalProperties":{},"description":"A single input record, expressed as an open map of `field → value` pairs\n(for example `{ \"industry\": \"Software\", \"country\": \"US\" }`).\n\nThe record shape is intentionally open: a config's rules reference the input\nfields they need *by name*. Fields a config does not reference are ignored,\nand a referenced field that is absent simply does not contribute — it is not\nan error."},"RecordScoreStatus":{"type":"string","enum":["SCORED","UNSCORED","ERROR"],"description":"Outcome of applying one score config to one record.","x-enumDescriptions":{"SCORED":"This config produced a score for the record.","UNSCORED":"This config produced no score for the record (no rules matched).","ERROR":"Scoring failed for this record under this config (e.g. unreadable field, malformed value)."}},"RecordScoreOutput":{"type":"object","required":["configId","status"],"properties":{"configId":{"type":"string","description":"Identifier of the score config that produced this output.","readOnly":true},"status":{"allOf":[{"$ref":"#/components/schemas/RecordScoreStatus"}],"description":"Outcome of applying this config to the record.","readOnly":true},"value":{"type":"number","format":"double","description":"The computed score for this record under this config: a weighted sum of the\nmatching rule scores across the config's elements. Scores typically fall in\nthe `0`–`100` range but a config may exceed `100`; a higher score indicates\na stronger match. Omitted when this config produced no score — no rules\nmatched, the record could not be evaluated, or an error occurred (see\n`status`).","readOnly":true}},"description":"Score output of applying one score config to one record."},"RecordScoreResult":{"type":"object","required":["input","outputs"],"properties":{"input":{"allOf":[{"$ref":"#/components/schemas/DataQualityRecord"}],"description":"Original input record, echoed back for correlation.","readOnly":true},"outputs":{"type":"array","items":{"$ref":"#/components/schemas/RecordScoreOutput"},"description":"Score outputs for each applied config, in `configIds` order.","readOnly":true}},"description":"Outcome of scoring a single record under one or more configs."},"ScoreResultsAttributes":{"type":"object","required":["configIds","summary","records"],"properties":{"configIds":{"type":"array","items":{"type":"string"},"description":"Identifiers of the score configs applied by this run.","readOnly":true},"summary":{"allOf":[{"$ref":"#/components/schemas/ScoreRunSummary"}],"description":"Aggregate counts for the run.","readOnly":true},"records":{"type":"array","items":{"$ref":"#/components/schemas/RecordScoreResult"},"description":"Per-record scoring outcomes, in the same order as the request's `records[]`.","readOnly":true}},"description":"Score results response attributes returned by the sync run endpoint."},"ScoreResults":{"type":"object","required":["id","type","attributes"],"properties":{"id":{"type":"string","description":"The unique identifier for the resource"},"type":{"type":"string","description":"The type of the resource","default":"ScoreResults","pattern":"ScoreResults"},"attributes":{"allOf":[{"$ref":"#/components/schemas/ScoreResultsAttributes"}],"description":"The attributes defining the resource"}},"description":"Sync score results resource."},"ScoreResultsJsonApiModel":{"type":"object","required":["data"],"properties":{"data":{"allOf":[{"$ref":"#/components/schemas/ScoreResults"}],"description":"The primary data of the document"}},"description":"JSON API model for inline sync score results."},"ScoreRunRequestAttributes":{"type":"object","required":["configIds","records"],"properties":{"configIds":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":10,"description":"Identifiers of the score configs to apply, in order. At least one required, up to 10."},"records":{"type":"array","items":{"$ref":"#/components/schemas/DataQualityRecord"},"minItems":1,"maxItems":25,"description":"Input records to score, in order. At least one required, up to 25 per request."}},"description":"Sync score run request attributes."},"ScoreRunRequest":{"type":"object","required":["type","attributes"],"properties":{"type":{"type":"string","description":"The type of the resource","default":"ScoreRunRequest","pattern":"ScoreRunRequest"},"attributes":{"allOf":[{"$ref":"#/components/schemas/ScoreRunRequestAttributes"}],"description":"The attributes defining the resource"}},"description":"Score run request resource."},"ScoreRunRequestJsonApiModel":{"type":"object","required":["data"],"properties":{"data":{"allOf":[{"$ref":"#/components/schemas/ScoreRunRequest"}],"description":"The primary data of the document"}},"description":"JSON API model for a score run request."},"SegmentAction":{"type":"string","enum":["FIND_FIRST","FIND_LAST","FIND_ALL","ADD_ALL"],"description":"How multiple segments match the same record.","x-enumDescriptions":{"FIND_FIRST":"Return only the first matching segment's output value.","FIND_LAST":"Return only the last matching segment's output value.","FIND_ALL":"Return all matching segments' output values.","ADD_ALL":"Sum all numeric output values from matching segments."}},"SegmentRuleOperator":{"type":"string","enum":["TEXT_EQUALS","TEXT_NOT_EQUALS","TEXT_CONTAINS","TEXT_CONTAINS_WORD","TEXT_NOT_CONTAINS","TEXT_NOT_CONTAINS_WORD","TEXT_STARTS","TEXT_NOT_STARTS","TEXT_ENDS","TEXT_NOT_ENDS","NUM_EQUALS","NUM_MORE","NUM_LESS","NUM_BETWEEN","NUM_GREATER_OR_EQUALS","NUM_LESS_OR_EQUALS","BOOL_TRUE","BOOL_FALSE","IS_NULL","IS_NOT_NULL","DIVIDER"],"description":"Comparison operator for a segment rule.","x-enumDescriptions":{"TEXT_EQUALS":"Field value equals the comparison value.","TEXT_NOT_EQUALS":"Field value does not equal the comparison value.","TEXT_CONTAINS":"Field value contains the comparison value as a substring.","TEXT_CONTAINS_WORD":"Field value contains the comparison value as a whole word.","TEXT_NOT_CONTAINS":"Field value does not contain the comparison value as a substring.","TEXT_NOT_CONTAINS_WORD":"Field value does not contain the comparison value as a whole word.","TEXT_STARTS":"Field value starts with the comparison value.","TEXT_NOT_STARTS":"Field value does not start with the comparison value.","TEXT_ENDS":"Field value ends with the comparison value.","TEXT_NOT_ENDS":"Field value does not end with the comparison value.","NUM_EQUALS":"Numeric field equals the comparison value.","NUM_MORE":"Numeric field is greater than the comparison value.","NUM_LESS":"Numeric field is less than the comparison value.","NUM_BETWEEN":"Numeric field falls between the two comparison values.","NUM_GREATER_OR_EQUALS":"Numeric field is greater than or equal to the comparison value.","NUM_LESS_OR_EQUALS":"Numeric field is less than or equal to the comparison value.","BOOL_TRUE":"Boolean field is true.","BOOL_FALSE":"Boolean field is false.","IS_NULL":"Field has no value.","IS_NOT_NULL":"Field has a value.","DIVIDER":"Layout-only OR boundary between rule groups; carries no field or value."}},"SegmentRule":{"type":"object","required":["operator"],"properties":{"operator":{"allOf":[{"$ref":"#/components/schemas/SegmentRuleOperator"}],"description":"Comparison operator for this rule. `DIVIDER` is a layout-only boundary that carries no field or value."},"field":{"type":"string","description":"Field name to evaluate. Absent for divider operators that separate rule groups."},"value":{"type":"array","items":{"type":"string"},"maxItems":100,"description":"Values to compare the field against. Treated as an OR-list for most operators."}},"description":"A single rule within a segment, representing one field-condition test."},"Segment":{"type":"object","required":["label","outputValue","order","rules"],"properties":{"label":{"type":"string","description":"Display label for this segment."},"outputValue":{"type":"string","description":"Value written to the output field on the record when this segment matches."},"order":{"type":"integer","format":"int32","description":"Server-assigned priority order of this segment within the config (0-based, lower = higher priority).","readOnly":true},"rules":{"type":"array","items":{"$ref":"#/components/schemas/SegmentRule"},"description":"Ordered list of rules that must be satisfied for this segment to match."}},"description":"A segment within a config: a prioritized set of rules that maps matching records to an output value."},"SegmentConfigAttributes":{"type":"object","required":["name","action","segments","fieldsUsedInRules"],"properties":{"name":{"type":"string","description":"Display name for the segment config."},"action":{"allOf":[{"$ref":"#/components/schemas/SegmentAction"}],"description":"How the config handles records that match multiple segments."},"mergeOperator":{"type":"string","maxLength":8,"description":"Delimiter used to join matched output values when `action` is `FIND_ALL`.\nCommon values: `,` (default), `, `, `;`, `|`, `-`, newline, or tab. Any\nshort string is accepted, so this is a free-form delimiter rather than a\nfixed enum."},"segments":{"type":"array","items":{"$ref":"#/components/schemas/Segment"},"description":"Ordered list of segments defined in this config."},"fieldsUsedInRules":{"type":"array","items":{"type":"string"},"description":"Distinct field names referenced by this config's segment rules, sorted\nalphabetically. Divider rules contribute no field. Read-only; derived from\n`segments[].rules[].field`.","readOnly":true}},"description":"Full attributes of a segment configuration."},"SegmentConfigMeta":{"type":"object","required":["createdAt","updatedAt"],"properties":{"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp at which this segment config was created.","readOnly":true},"updatedAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp at which this segment config was last updated.","readOnly":true}},"description":"Non-standard metadata for a segment config."},"SegmentConfig":{"type":"object","required":["id","type","attributes"],"properties":{"id":{"type":"string","description":"The unique identifier for the resource"},"type":{"type":"string","description":"The type of the resource","default":"SegmentConfig","pattern":"SegmentConfig"},"attributes":{"allOf":[{"$ref":"#/components/schemas/SegmentConfigAttributes"}],"description":"The attributes defining the resource"},"meta":{"allOf":[{"$ref":"#/components/schemas/SegmentConfigMeta"}],"description":"Non-standard meta information about the resource","readOnly":true}},"description":"A segment configuration resource (identity, action, and full segment/rule definitions)."},"SegmentConfigPageMeta":{"type":"object","required":["number","size","totalPages","totalItems"],"properties":{"number":{"type":"integer","format":"uint32","description":"Current page number (1-based).","readOnly":true},"size":{"type":"integer","format":"uint32","description":"Number of items in the current page.","readOnly":true},"totalPages":{"type":"integer","format":"uint32","description":"Total number of pages available.","readOnly":true},"totalItems":{"type":"integer","format":"uint32","description":"Total number of items across all pages.","readOnly":true}},"description":"Per-page metadata for paginated segment config list responses."},"SegmentConfigListMeta":{"type":"object","required":["page"],"properties":{"page":{"allOf":[{"$ref":"#/components/schemas/SegmentConfigPageMeta"}],"description":"Current page details and totals.","readOnly":true}},"description":"Page metadata wrapper for paginated segment config list responses."},"SegmentConfigListLinks":{"type":"object","properties":{"self":{"type":"string","format":"uri","description":"The link that generated the current response document"},"first":{"type":"string","format":"uri","description":"A link to the first page of data"},"last":{"type":"string","format":"uri","description":"A link to the last page of data"},"prev":{"type":"string","format":"uri","description":"A link to the previous page of data"},"next":{"type":"string","format":"uri","description":"A link to the next page of data"}},"description":"Paging links for segment config list responses."},"SegmentConfigListJsonApiModel":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/SegmentConfig"},"description":"The primary data of the document"},"meta":{"allOf":[{"$ref":"#/components/schemas/SegmentConfigListMeta"}],"description":"Non-standard meta information about the document"},"links":{"allOf":[{"$ref":"#/components/schemas/SegmentConfigListLinks"}],"description":"Links related to the primary data"}},"description":"JSON API model for a paginated list of segment configs."},"SegmentConfigJsonApiModel":{"type":"object","required":["data"],"properties":{"data":{"allOf":[{"$ref":"#/components/schemas/SegmentConfig"}],"description":"The primary data of the document"}},"description":"JSON API model for a single segment config."},"SegmentConfigCreate":{"type":"object","required":["type","attributes"],"properties":{"type":{"type":"string","description":"The type of the resource","default":"SegmentConfig","pattern":"SegmentConfig"},"attributes":{"allOf":[{"$ref":"#/components/schemas/SegmentConfigAttributes"}],"description":"The attributes defining the resource"}},"description":"A segment configuration resource (identity, action, and full segment/rule definitions)."},"SegmentConfigJsonApiModelCreate":{"type":"object","required":["data"],"properties":{"data":{"allOf":[{"$ref":"#/components/schemas/SegmentConfigCreate"}],"description":"The primary data of the document"}},"description":"JSON API model for a single segment config."},"SegmentConfigAttributesUpdate":{"type":"object","properties":{"name":{"type":"string","description":"Display name for the segment config."},"action":{"allOf":[{"$ref":"#/components/schemas/SegmentAction"}],"description":"How the config handles records that match multiple segments."},"mergeOperator":{"type":"string","maxLength":8,"description":"Delimiter used to join matched output values when `action` is `FIND_ALL`.\nCommon values: `,` (default), `, `, `;`, `|`, `-`, newline, or tab. Any\nshort string is accepted, so this is a free-form delimiter rather than a\nfixed enum."},"segments":{"type":"array","items":{"$ref":"#/components/schemas/Segment"},"description":"Ordered list of segments defined in this config."}},"description":"Full attributes of a segment configuration."},"SegmentConfigUpdate":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for the resource"},"type":{"type":"string","description":"The type of the resource","default":"SegmentConfig","pattern":"SegmentConfig"},"attributes":{"allOf":[{"$ref":"#/components/schemas/SegmentConfigAttributesUpdate"}],"description":"The attributes defining the resource"}},"description":"A segment configuration resource (identity, action, and full segment/rule definitions)."},"SegmentConfigJsonApiModelUpdate":{"type":"object","properties":{"data":{"allOf":[{"$ref":"#/components/schemas/SegmentConfigUpdate"}],"description":"The primary data of the document"}},"description":"JSON API model for a single segment config."},"SegmentRunSummary":{"type":"object","required":["totalRecords","successCount","matchedCount","errorCount"],"properties":{"totalRecords":{"type":"integer","format":"uint32","description":"Total number of records submitted in the run.","readOnly":true},"successCount":{"type":"integer","format":"uint32","description":"Number of records processed without error.","readOnly":true},"matchedCount":{"type":"integer","format":"uint32","description":"Number of records where at least one segment matched.","readOnly":true},"errorCount":{"type":"integer","format":"uint32","description":"Number of records that errored during segmentation.","readOnly":true}},"description":"Aggregate counts describing the outcome of a segment run."},"RecordSegmentStatus":{"type":"string","enum":["MATCHED","UNMATCHED","ERROR"],"description":"Outcome of applying one segment config to one record.","x-enumDescriptions":{"MATCHED":"This config matched a segment for the record.","UNMATCHED":"This config matched no segment for the record (no rules matched).","ERROR":"Segmentation failed for this record under this config (e.g. unreadable field, malformed value)."}},"SegmentRecordOutput":{"type":"object","required":["configId","status"],"properties":{"configId":{"type":"string","description":"Identifier of the segment config that produced this output.","readOnly":true},"status":{"allOf":[{"$ref":"#/components/schemas/RecordSegmentStatus"}],"description":"Outcome of applying this config to the record.","readOnly":true},"value":{"type":"string","description":"The computed output value for this record under this config: the merged\noutput values of the segments that matched, joined using the config's\n`mergeOperator`. Omitted when this config produced no output — no segment\nmatched, the record could not be evaluated, or an error occurred (see\n`status`).","readOnly":true}},"description":"Segment output of applying one segment config to one record."},"SegmentRecordResult":{"type":"object","required":["input","outputs"],"properties":{"input":{"allOf":[{"$ref":"#/components/schemas/DataQualityRecord"}],"description":"Original input record, echoed back for correlation.","readOnly":true},"outputs":{"type":"array","items":{"$ref":"#/components/schemas/SegmentRecordOutput"},"description":"Segment outputs for each applied config, in `configIds` order.","readOnly":true}},"description":"Outcome of segmenting a single record under one or more configs."},"SegmentResultsAttributes":{"type":"object","required":["configIds","summary","records"],"properties":{"configIds":{"type":"array","items":{"type":"string"},"description":"Identifiers of the segment configs applied by this run.","readOnly":true},"summary":{"allOf":[{"$ref":"#/components/schemas/SegmentRunSummary"}],"description":"Aggregate counts for the run.","readOnly":true},"records":{"type":"array","items":{"$ref":"#/components/schemas/SegmentRecordResult"},"description":"Per-record segmentation outcomes, in the same order as the request's `records[]`.","readOnly":true}},"description":"Segment results response attributes returned by the sync run endpoint."},"SegmentResults":{"type":"object","required":["id","type","attributes"],"properties":{"id":{"type":"string","description":"The unique identifier for the resource"},"type":{"type":"string","description":"The type of the resource","default":"SegmentResults","pattern":"SegmentResults"},"attributes":{"allOf":[{"$ref":"#/components/schemas/SegmentResultsAttributes"}],"description":"The attributes defining the resource"}},"description":"Sync segment results resource."},"SegmentResultsJsonApiModel":{"type":"object","required":["data"],"properties":{"data":{"allOf":[{"$ref":"#/components/schemas/SegmentResults"}],"description":"The primary data of the document"}},"description":"JSON API model for inline sync segment results."},"SegmentRunRequestAttributes":{"type":"object","required":["configIds","records"],"properties":{"configIds":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":10,"description":"Identifiers of the segment configs to apply, in order. At least one required, up to 10."},"records":{"type":"array","items":{"$ref":"#/components/schemas/DataQualityRecord"},"minItems":1,"maxItems":25,"description":"Input records to segment, in order. At least one required, up to 25 per request."}},"description":"Sync segment run request attributes."},"SegmentRunRequest":{"type":"object","required":["type","attributes"],"properties":{"type":{"type":"string","description":"The type of the resource","default":"SegmentRunRequest","pattern":"SegmentRunRequest"},"attributes":{"allOf":[{"$ref":"#/components/schemas/SegmentRunRequestAttributes"}],"description":"The attributes defining the resource"}},"description":"Segment run request resource."},"SegmentRunRequestJsonApiModel":{"type":"object","required":["data"],"properties":{"data":{"allOf":[{"$ref":"#/components/schemas/SegmentRunRequest"}],"description":"The primary data of the document"}},"description":"JSON API model for a segment run request."},"CompanyNameInputItem":{"type":"object","required":["companyName"],"properties":{"companyName":{"type":"string","description":"The company name to normalize."}},"description":"A single company-name value to prepare."},"WebsiteInputItem":{"type":"object","required":["website"],"properties":{"website":{"type":"string","description":"The website URL to normalize."}},"description":"A single website value to prepare."},"CompanyNameValue":{"type":"object","properties":{"companyName":{"type":"string","description":"The company-name string. Serves as both the canonical value and its formatted form."}},"description":"Company-name value: the normalized/standardized company-name string."},"WebsiteValue":{"type":"object","properties":{"website":{"type":"string","description":"The website URL string. Serves as both the canonical value and its formatted form."}},"description":"Website value: the normalized/standardized website URL string."},"CompanyNameResultAttributes":{"type":"object","required":["input"],"properties":{"input":{"allOf":[{"$ref":"#/components/schemas/CompanyNameInputItem"}],"description":"The request item this result corresponds to, echoed back for correlation. Results are in the same order as request `items`; `input` confirms the pairing (notably under duplicate input values)."},"parsed":{"allOf":[{"$ref":"#/components/schemas/CompanyNameValue"}],"description":"Parsed view of the value (the parse-stage data product)."},"normalized":{"allOf":[{"$ref":"#/components/schemas/CompanyNameValue"}],"description":"Normalized view of the value (the normalization-stage data product)."},"value":{"allOf":[{"$ref":"#/components/schemas/CompanyNameValue"}],"description":"The final prepared value — the canonical result the caller buys, after normalization."},"isValid":{"type":"boolean","description":"Whether the input passed validation. A result-level verdict about the item as a whole, not a property of any single stage view."}},"description":"A single company-name result: the echoed input, the parsed and normalized data products, and the final prepared value."},"WebsiteResultAttributes":{"type":"object","required":["input"],"properties":{"input":{"allOf":[{"$ref":"#/components/schemas/WebsiteInputItem"}],"description":"The request item this result corresponds to, echoed back for correlation. Results are in the same order as request `items`; `input` confirms the pairing (notably under duplicate input values)."},"parsed":{"allOf":[{"$ref":"#/components/schemas/WebsiteValue"}],"description":"Parsed view of the value (the parse-stage data product)."},"normalized":{"allOf":[{"$ref":"#/components/schemas/WebsiteValue"}],"description":"Normalized view of the value (the normalization-stage data product)."},"value":{"allOf":[{"$ref":"#/components/schemas/WebsiteValue"}],"description":"The final prepared value — the canonical result the caller buys, after normalization."},"isValid":{"type":"boolean","description":"Whether the input passed validation. A result-level verdict about the item as a whole, not a property of any single stage view."}},"description":"A single website result: the echoed input, the parsed and normalized data products, and the final prepared value."},"Versions":{"type":"string","enum":["1.0"]}},"securitySchemes":{"OAuth2Auth":{"type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://login.zoominfo.com","tokenUrl":"https://okta-login.zoominfo.com/oauth2/default/v1/token","scopes":{"api:data-quality:execute":"Execute Data Quality operations, including the prepare pipeline (parse/validate/normalize plus opt-in enrichments and custom normalization) and synchronous scoring and segmentation","api:data-quality:read":"Read Data Quality configurations, including score and segmentation configs","api:data-quality:manage":"Create, update, and delete Data Quality configurations, including score and segmentation configs"}}}}}},"servers":[{"url":"https://api.zoominfo.com/gtm","description":"Base URL for the Data Quality API"}],"x-beta":true}