Upsert issued standards
POST/api/v2/bulk/standards/holders/upsert
This request is queued, not processed while you wait. The response carries a correlation id — poll the bulk task until it reports a terminal state. See How asynchronous processing works.
Queued, not immediate. The response carries a correlation id; poll GET /api/v2/bulk/tasks/{correlationId} until the task reports a terminal state; the task carries the status and, on failure, every failed row with its reason. The row-level record of the import, successful rows included, is available in the BeCause app on the API usage tab under Company manager → Import & export → API. Each entry names ONE company — by its BeCause company id, or by the stored value of one of your own String-type custom properties — and lists the certifications to create or update for it, one row per (company, certification) pair. identifiedBy takes exactly one of companyId or customProperty; a property that is not String-typed, or that your profile does not own, fails the row instead of being searched, and a value matching zero or more than one company fails it too — this endpoint never creates a company, unlike companies upsert. Submit it only once any companies upsert task you depend on for company ids has reached a terminal state; a company id or identifier value a still-processing companies upsert hasn't produced yet fails the row the same way an unknown one does. A certification's required fields split by where they live: start date, end date and validation state travel in the payload and are rejected with 400 up front when a certification that requires them omits them. Fields BeCause already holds on the company — website, VAT number, address fields, or a primary/general contact's name, email, phone or position — are checked once the company is resolved instead, and a company missing one fails that row with the field and certification named, leaving the company's other rows unaffected.
Request
Responses
- 200
- 400
- 403
Queued. The correlation id means the upsert has started, not that any certification has been created or updated yet.
Returned when a company entry is malformed — identifiedBy carries both or neither of companyId/customProperty, no certifications are listed, a certificationId is missing or duplicated within a company, two entries target the same company the same way, or the pair count exceeds the cap — or when a certification omits a payload-borne field it requires (start date, end date or validation state). A company targeted once by companyId and once by a matching identifier value is not caught here; that collision fails both rows once resolved.
Certification-ownership denials are not returned here: the upsert is queued before ownership is checked, and a request naming a certification your profile doesn't have write access to completes with that denial in the finished task's row errors.