You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(harmonic): correct the destructive-clear copy and stop double-billing enrichment
Follow-up to #6902, from a final validation pass against Harmonic's OpenAPI and
API reference. No endpoint, method, or response mapping changed.
- The `personUrns` field told users and the LLM that Clear Net-New Results
"clears everything when omitted". That is the raw provider behavior the
clearScope guard was added to block; omitting it now throws. The field is
shared across three operations, so the wrong sentence was being served as
guidance on all of them.
- Bulk email enrichment deduplicated LinkedIn URLs before canonicalising them,
so `.../in/foo?utm_source=x` and `.../in/foo` were submitted as two people.
Harmonic bills per submitted entry, so this spent quota twice and
double-counted against the 5,000 cap. Deduplicate after canonicalising.
- The two documented bulk-enrichment failures carry a code in `error` and no
message anywhere, so quota exhaustion surfaced as "Request failed with status
429". Render the code with its counters instead. Gated on those counters being
present: `extractErrorMessage` without an explicit id walks every extractor in
order, and claiming a bare `error` key swallowed OAuth's `error_description`.
- An enrichment 404 whose detail carries only the URN no longer discards it.
- Report the identifier conflict before complaining about an individual URL.
- Validate `companyContextUrns` as company URNs, like every other URN param.
Forward-compat: `user_saved_search_type` is passed through rather than checked
against a fixed set. It is display metadata nothing branches on, and Harmonic
owns the enum — an allow-list turned any value they add into a hard failure of
the whole list while the selector reading the same rows kept working.
Also drops `USER_CONNECTION`, which Harmonic documents as unsupported via the
API, removes three superseded types and one dead helper, and extends the
"credential never reaches a URL or body" assertion from 4 tools to all 13.
'Batch Get requires at least one Person URN or Person ID. Clear Net-New Results clears everything when omitted',
361
+
'Batch Get requires at least one Person URN or Person ID. Clear Net-New Results requires at least one URN unless Clear Scope is set to every net-new result',
'Turn LinkedIn URLs or email addresses a workflow already holds into Harmonic contacts.',
840
840
content:
841
-
'# Enrich Known Identifiers\n\nUse Enrich Person when the workflow already has an identifier rather than a description of who to find.\n\n## Steps\n1. Prefer the LinkedIn profile URL; supply the email only as a fallback identifier.\n2. Run Enrich Person once per identifier and keep personUrn from every match.\n3. When Harmonic reports the person is not on file, capture the enrichment it scheduled and poll Get Enrichment Status until it is COMPLETE or FAILED.\n4. Read the resulting person with Get Person or Batch Get People once enrichment completes.\n\n## Output\nReturn the hydrated contacts, the identifiers still pending enrichment, and the identifiers Harmonic could not resolve. Do not invent contact fields for unresolved rows.',
841
+
'# Enrich Known Identifiers\n\nUse Enrich Person when the workflow already has an identifier rather than a description of who to find.\n\n## Steps\n1. Prefer the LinkedIn profile URL; supply the email only as a fallback identifier.\n2. Run Enrich Person once per identifier and keep personUrn from every match.\n3. A person Harmonic does not have yet fails the block rather than returning a row: the error names the enrichment that was scheduled and carries its URN. Handle that error instead of treating it as a match, and poll Get Enrichment Status with the URN until it is COMPLETE or FAILED.\n4. Read the resulting person with Get Person or Batch Get People once enrichment completes.\n\n## Output\nReturn the hydrated contacts, the identifiers still pending enrichment, and the identifiers Harmonic could not resolve. Do not invent contact fields for unresolved rows.',
'Harmonic API message errors, string and object FastAPI detail aborts including the enrichment URN, and validation detail arrays without echoed request input',
216
+
'Harmonic API message errors, string and object FastAPI detail aborts including the enrichment URN, bulk email-enrichment error codes with their quota counters, and validation detail arrays without echoed request input',
0 commit comments