ZoomInfo · Schema

DataQualityResponse

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).

CompanyB2BDataSales

Properties

Name Type Description
data array The primary data of the document
View JSON Schema on GitHub

JSON Schema

gtm-data-quality-response-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/gtm/main/json-schema/gtm-data-quality-response-schema.json",
  "title": "DataQualityResponse",
  "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).",
  "x-generated": "2026-10-20",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/gtm-data-quality-api-v1-api-openapi.yml#/components/schemas/DataQualityResponse",
  "type": "object",
  "required": [
    "data"
  ],
  "properties": {
    "data": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/DataQualityResultResource"
      },
      "description": "The primary data of the document"
    }
  },
  "$defs": {
    "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)."
    },
    "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."
      }
    },
    "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": "#/$defs/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."
    },
    "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."
      }
    },
    "AddressResultAttributes": {
      "type": "object",
      "required": [
        "input"
      ],
      "properties": {
        "input": {
          "allOf": [
            {
              "$ref": "#/$defs/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": "#/$defs/AddressValue"
            }
          ],
          "description": "Parsed view of the value (the parse-stage data product)."
        },
        "normalized": {
          "allOf": [
            {
              "$ref": "#/$defs/AddressValue"
            }
          ],
          "description": "Normalized view of the value (the normalization-stage data product)."
        },
        "value": {
          "allOf": [
            {
              "$ref": "#/$defs/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."
    },
    "AddressResultMeta": {
      "type": "object",
      "properties": {
        "unfulfilled": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/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": "#/$defs/AddressResultAttributes"
            }
          ],
          "description": "The attributes defining the resource"
        },
        "meta": {
          "allOf": [
            {
              "$ref": "#/$defs/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."
    },
    "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."
      }
    },
    "AddressUnfulfilledEnrichment": {
      "type": "object",
      "required": [
        "enrichment"
      ],
      "properties": {
        "enrichment": {
          "allOf": [
            {
              "$ref": "#/$defs/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."
    },
    "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": "#/$defs/AddressVerify"
            }
          ],
          "description": "Deliverability confirmation result."
        },
        "addressType": {
          "allOf": [
            {
              "$ref": "#/$defs/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": "#/$defs/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."
    },
    "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."
      }
    },
    "DataQualityResultResource": {
      "type": "object",
      "oneOf": [
        {
          "$ref": "#/$defs/PhoneResultResource"
        },
        {
          "$ref": "#/$defs/EmailResultResource"
        },
        {
          "$ref": "#/$defs/AddressResultResource"
        },
        {
          "$ref": "#/$defs/JobTitleResultResource"
        },
        {
          "$ref": "#/$defs/PersonNameResultResource"
        },
        {
          "$ref": "#/$defs/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."
    },
    "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": "#/$defs/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."
    },
    "EmailResultAttributes": {
      "type": "object",
      "required": [
        "input"
      ],
      "properties": {
        "input": {
          "allOf": [
            {
              "$ref": "#/$defs/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": "#/$defs/EmailValue"
            }
          ],
          "description": "Parsed view of the value (the parse-stage data product)."
        },
        "normalized": {
          "allOf": [
            {
              "$ref": "#/$defs/EmailValue"
            }
          ],
          "description": "Normalized view of the value (the normalization-stage data product)."
        },
        "value": {
          "allOf": [
            {
              "$ref": "#/$defs/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": "#/$defs/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`."
    },
    "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."
    },
    "JobTitleInputItem": {
      "type": "object",
      "required": [
        "jobTitle"
      ],
      "properties": {
        "jobTitle": {
          "type": "string",
          "description": "The job title to normalize."
        }
      },
      "description": "A single job title value to prepare."
    },
    "JobTitleResultAttributes": {
      "type": "object",
      "required": [
        "input"
      ],
      "properties": {
        "input": {
          "allOf": [
            {
              "$ref": "#/$defs/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": "#/$defs/JobTitleValue"
            }
          ],
          "description": "Parsed view of the value (the parse-stage data product)."
        },
        "normalized": {
          "allOf": [
            {
              "$ref": "#/$defs/JobTitleValue"
            }
          ],
          "description": "Normalized view of the value (the normalization-stage data product)."
        },
        "value": {
          "allOf": [
            {
              "$ref": "#/$defs/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": "#/$defs/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`."
    },
    "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."
    },
    "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": "#/$defs/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."
    },
    "PersonNameResultAttributes": {
      "type": "object",
      "required": [
        "input"
      ],
      "properties": {
        "input": {
          "allOf": [
            {
              "$ref": "#/$defs/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": "#/$defs/PersonNameValue"
            }
          ],
          "description": "Parsed view of the value (the parse-stage data product)."
        },
        "normalized": {
          "allOf": [
            {
              "$ref": "#/$defs/PersonNameValue"
            }
          ],
          "description": "Normalized view of the value (the normalization-stage data product)."
        },
        "value": {
          "allOf": [
            {
              "$ref": "#/$defs/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": "#/$defs/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`."
    },
    "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."
    },
    "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": "#/$defs/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."
      }
    },
    "PhoneResultAttributes": {
      "type": "object",
      "required": [
        "input"
      ],
      "properties": {
        "input": {
          "allOf": [
            {
              "$ref": "#/$defs/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": "#/$defs/PhoneValue"
            }
          ],
          "description": "Parsed view of the value (the parse-stage data product)."
        },
        "normalized": {
          "allOf": [
            {
              "$ref": "#/$defs/PhoneValue"
            }
          ],
          "description": "Normalized view of the value (the normalization-stage data product)."
        },
        "value": {
          "allOf": [
            {
              "$ref": "#/$defs/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": "#/$defs/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`."
    },
    "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": {
 

# --- truncated at 32 KB (34 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/gtm/refs/heads/main/json-schema/gtm-data-quality-response-schema.json

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/gtm-data-quality-response"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.