Skip to content

Bulk upsert vendors from CSV

Request

Imports vendors into the caller's vendor directory from a raw CSV payload and reports aggregate counts plus a per-row outcome, scoped server-side to the caller's organization. Partial-failure semantics: the call succeeds even when some rows are rejected or skipped. Set dry_run to preview outcomes without persisting changes. Requires an Idempotency-Key header (enforced at the gateway); a replay with the same key returns the originally recorded results.

Bodyapplication/jsonrequired

Body for BulkUpsertVendorsFromCsv: raw CSV text of vendors to upsert in the caller's directory. Organization scope is derived from the access token, not from this message.

csvstringrequired

Raw CSV text to import; column layout matches the vendor directory's curated writable fields (domain_name, company_name, and the other columns supported for the caller's organization). Required and non-empty.

dryRunboolean

When true, validates every row and returns the per-row outcomes it would produce without persisting any changes. Optional; defaults to false.

curl -i -X POST \
  https://docs.titanapi.securityscorecard.io/_mock/openapi.public/public/v1/vendors/bulk-import \
  -H 'Content-Type: application/json' \
  -d '{
    "csv": "string",
    "dryRun": true
  }'

Responses

A successful response.

Bodyapplication/json
rowResultsArray of objects(BulkVendorCsvRowResult)required

Per-row outcome, in the order rows appeared in the submitted CSV.

summaryobject(BulkUpsertVendorsFromCsvResponse.Summary)required

Aggregate counts of the batch: total, accepted, rejected, and skipped.

Response
{ "rowResults": [ { … } ], "summary": { "total": 0, "accepted": 0, "rejected": 0, "skipped": 0 } }