Import custom field values
Accepts up to 50,000 rows — each one project's custom-field values — and applies them in the background. Poll GET /imports/custom-fields/{importId} for progress and read per-row outcomes from GET /imports/custom-fields/{importId}/rows.
A row is exactly one PATCH /projects/{projectId}/custom-fields, executed later. Its custom_fields are the same merge: only the fields a row names are written, "value": null clears one, and a row whose values fail validation leaves that project untouched. Anything you can import you can also PATCH; the import adds one request per refresh, server-side pacing, and a durable per-row ledger — nothing else.
The body is validated whole before anything is stored: a malformed row, a project named by more than one row, or more rows than the cap is a 422 and no import is created. Whether each project exists, is accessible, and accepts each value is decided per row, later, and reported on the row rather than here — the import itself always completes.
A row whose values already match what is stored is recorded unchanged without a write, so re-sending your whole system of record every cycle costs only its differences.
Your organization's imports run one at a time, in submission order, so consecutive refreshes never interleave. The fields you send belong to your integration: each run overwrites any value entered in Rabbet since the last one, for exactly those fields.
Requires the permission to edit project settings — the one every row needs — and is refused up front without it.
Idempotency
Send an Idempotency-Key. A retried submission with the same key replays the original 202, import id included, instead of creating a second import. Re-applying a custom-field import is a no-op by construction, so a duplicate wastes work rather than corrupting anything, but the key keeps your ledger to one import per refresh. Key semantics are those of POST /projects.
Retention
Imports and their rows are kept for 7 days, then deleted.
Request
- Base URL: https://api.rabbet.com/v1
- URL: https://api.rabbet.com/v1/imports/custom-fields
- Auth: OAuth 2 (client credentials, token URL https://api.rabbet.com/oauth/token, scopes: write)
Headers
Client-supplied key making this request idempotent. Reuse the same value (for the same body) to safely retry without creating a second import.
Request body
Example request
{
"rows": [
{
"project_id": "d290f1ee-6c54-4b01-90e6-d701748f0851",
"custom_fields": [
{
"id": "b308e77f-6d1d-47c4-bd1f-0069cc548315",
"value": "PN123"
}
]
}
]
}Response
Import accepted and queued (or original response replayed for a reused Idempotency-Key).
Example response
{
"data": {
"id": "0199300a-6f6e-7c7e-9d3e-2f4a8b1c5d6e",
"row_count": 10000
}
}Changes
No recorded changes to this operation across all 1 revision of this API.