ovidens
API-Referenz

Validate and apply the staged CSV (asynchronous; poll the import for the outcome)

POST/v1/apps/{app}/datasets/{node}/imports/{id}/commit

Validates the staged file against the dataset's declared columns and, if every row parses, applies it. Requires the data:write scope. Validation is ALL OR NOTHING: a single unparsable row applies nothing and the dataset is left exactly as it was. A file with no data rows - a header alone, or no bytes at all - fails with no_data_rows in either mode and also leaves the dataset as it was: an import never empties a dataset. The work runs asynchronously, so the first commit answers 202 and the outcome arrives on getImport. Committing the same import identifier twice is safe: the repeat writes nothing and answers 200 with the import's CURRENT record - still validating if the first commit has not finished, its terminal outcome once it has. That is what makes a retry after a network timeout correct rather than a second write.

Authorization

bearerAuth
AuthorizationBearer <token>

Obtain a token from https://id.ovidens.com/oauth/token using the client_credentials grant.

In: header

Path Parameters

app*string

The app's stable technicalId, as reported by listApps. It is a snake_case identifier, never a numeric id, and it survives a rename of the app.

Length1 <= length <= 64
node*string

The dataset node's stable technicalId, as reported by listDatasets.

Length1 <= length <= 64
id*string

The import identifier createImport returned in importId.

Length1 <= length <= 32
curl -X POST "https://example.com/v1/apps/string/datasets/string/imports/string/commit"
{  "importId": "imp_8c2f4a1d9e63",  "status": "applied",  "mode": "replace",  "csv": {    "delimiter": ";",    "quote": "\"",    "escape": "\"",    "encoding": "utf-8",    "hasHeader": true,    "decimalSeparator": ",",    "thousandsSeparator": "",    "dateFormat": "%d.%m.%Y",    "timestampFormat": "%Y-%m-%dT%H:%M:%SZ",    "columns": {}  },  "filename": "customers-2026-08-01.csv",  "createdAt": "2026-08-01T02:00:04.000Z",  "finishedAt": "2026-08-01T02:00:41.000Z",  "rowsParsed": 18420,  "rowsApplied": 18420,  "rowsRejected": 0,  "errorCode": null,  "errorGroups": [],  "likelyCause": null,  "structure": null,  "errorReportTruncated": false,  "auditId": 90233,  "expiresAt": "2026-08-08T02:00:03.000Z",  "uploadUrl": null,  "uploadUrlExpiresAt": null}

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

War diese Seite hilfreich?