---
title: "What a consumer's sync did to one object"
method: GET
path: "/consumers/{consumer_id}/syncs/{syncid}/objects/{kind}/{object_id}"
tags: ["Syncs"]
---

# What a consumer's sync did to one object

`GET /consumers/{consumer_id}/syncs/{syncid}/objects/{kind}/{object_id}`

## Request

- Base URL: `https://api.chift.eu`
- URL: `https://api.chift.eu/consumers/{consumer_id}/syncs/{syncid}/objects/{kind}/{object_id}`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/chift/apis/chift-api/docs/consumers/:consumer_id/syncs/:syncid/objects/:kind/:object_id/get.ts> (a function with typed inputs; its response is checked against the schema)

Its state, what happened to it (each step with its execution), the objects it needed and those that needed it, and the open issues holding it up. `kind` is the object's type, e.g. `supplier_invoice`.

## Path parameters

- `consumer_id` string, uuid, required
- `syncid` string, uuid, required
- `kind` string, required
- `object_id` string, uuid, required

## Query parameters

- `language` string, nullable: ISO 639-1 code of the language of the texts (en, fr, nl, de, es; any case), falling back to English. Without it, translation keys.

## Response `200`

Successful Response

- ObjectDetail
  - `id` string, uuid, required: The object's id: read it with `GET …/objects/{kind}/{id}`.
  - `kind` string, required: The object's type, e.g. 'supplier_invoice'.
  - `capability` string, required: Key of the capability that handles it.
  - `source_id` string, required: Its id in the source.
  - `scope` object, required: What identifies it beside its source id, for a sync keying its objects on something the consumer runs several of: `{"location_id": "paris"}`. Empty otherwise.
  - `status` string, required: Where it stands, e.g. 'pending', 'success', 'failed', 'skipped', 'never_retry'.
  - `target_id` string, nullable, required: What it was booked as in the target. Null until then.
  - `booked_as` string, nullable, required: Key of the mode that booked it.
  - `attempts` integer, required: How many times it failed.
  - `last_error_code` string, nullable, required: The code of its last failure.
  - `created_at` string, date-time, required: When the sync first saw it.
  - `updated_at` string, date-time, required: When it last changed.
  - `succeeded_at` string, date-time, nullable, required: When it was booked.
  - `target` object, nullable, required: What it was booked as, as the target answered.
  - `history` ObjectEventItem[], required: What happened to it, the oldest first.
    - `action` string, required: What happened: 'seen', a status it moved to, or a step the sync recorded.
    - `details` object, required: What the step recorded.
    - `chainexecution_id` string, uuid, nullable, required: The execution it last happened in.
    - `created_at` string, date-time, required: When it first happened.
    - `last_at` string, date-time, required: When it last happened: `created_at` when it happened once.
    - `occurrences` integer, required: How many times in a row it happened: a retry failing the same way every day is one event.
  - `links` ObjectLink[], required: The objects it needed, and those that needed it.
    - `relation` 'needs' | 'needed_by', required: 'needs': this object needed the other (an invoice its supplier); 'needed_by': the other needed this one.
    - `kind` string, required: The object's type, e.g. 'supplier_invoice'.
    - `id` string, uuid, required: The other object's id.
    - `source_id` string, required: The other object's id in the source.
    - `scope` object, required: What identifies it beside its source id, for a sync keying its objects on something the consumer runs several of: `{"location_id": "paris"}`. Empty otherwise.
    - `status` string, required: Where the other object stands.
  - `issues` SyncIssue[], required: The open issues holding it up.
    - `id` string, uuid, required: The issue's id.
    - `status` 'open' | 'resolved' | 'ignored', required: Open until the objects it holds up are booked or never retried.
    - `kind` string, required: What kind of problem it is, and so who acts on it.
    - `owner` 'consumer' | 'self_healing' | 'engineering', required: Who acts on it.
    - `code` string, required: The error code.
    - `title` string, required: What the problem is, for the consumer: in `language` when we word this error in it, the error code's English title otherwise.
    - `description` string, nullable, required: What to do about it, worded as `title` is.
    - `message` string, nullable, required: What its last occurrence said: the technical detail, in English.
    - `cause` object, required: What the objects it holds up have in common.
    - `scope` object, required: What it is limited to: the folder, location or bank account of the objects it holds up (`{"location_id": "paris"}`), empty if none. An issue holding up no object names the capability whose step failed: `{"capability": key}` (its fetch), `{"setup": key}` (its setup) or `{"mode": key}` (its chosen mode cannot run).
    - `occurrences` integer, required: How many times executions raised it.
    - `first_seen_at` string, date-time, required: When it was first raised.
    - `last_seen_at` string, date-time, required: When it was last raised.
    - `resolved_at` string, date-time, nullable, required: When it was resolved. Null while it is not.
    - `objects_count` integer, required: How many objects it holds up.
    - `actions` string[], required: What fixes it, e.g. 'fix_mapping', 'retry', 'never_retry'.

## Other responses

- `404`: Not Found
- `422`: Validation Error

## Changes

- **2026-11-03** `020884969534`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/chift/apis/chift-api/changes/consumers/:consumer_id/syncs/:syncid/objects/:kind/:object_id/get.md)

---

[API](https://skmtc.dev/chift/apis/chift-api.md) - [All operations](https://skmtc.dev/chift/apis/chift-api/llms.txt) - [OpenAPI document](https://skmtc.dev/chift/apis/chift-api/revisions/020884969534?raw)
