Skip to content

    Pre-launch API. The concepts described here are settled, but the API shape is not: request and response fields, parameters and defaults can still change. Build against it, and talk to your Luigi's Box contact before you put an integration into production.

    Get an object's change timeline

    View source
    GET
    /ledger/v1/catalogs/{catalog_id}/objects/{object_id}/timeline
    curl --request GET \
    --url https://api.eu1.luigisbox.ai/ledger/v1/catalogs/example/objects/example/timeline \
    --header 'Authorization: Bearer <token>'

    Fetch the change-history timeline of a single object by its @id.

    Entries are ordered newest first.

    object_id is the object’s @id — typed <type>/<value> — and is passed as-is, slash included. The window runs from date_from (inclusive) to now; omitting it returns the full retained timeline.

    Requires a read grant on the catalog named in the path; a token granted on another catalog cannot read this one.

    catalog_id
    required
    Catalog Id
    string
    object_id
    required
    Object Id
    string
    date_from
    Any of:
    string format: date-time

    Successful Response

    Media type application/json
    TimelineResponse

    Response body for the object timeline read.

    object
    catalog_id
    required
    Catalog Id

    Catalog the object belongs to.

    string
    entries
    required
    Entries

    The object’s changes, newest first.

    Array<object>
    TimelineEntry

    A single change on the object’s timeline, annotated with its processing status.

    object
    event_id
    required
    Event Id

    Identifier of this change. Quote it in support requests.

    string
    operation
    required
    TimelineOperation

    The kind of change — a full upsert, a partial update, or a delete.

    string
    Allowed values: update partial_update delete
    payload
    required
    Payload

    The change as received, filtered to the attributes the caller may see.

    object
    key
    additional properties
    any
    source_system
    required
    Source System

    Where the change came from: feeds for a feed run, indexer for a Content API call, platforms for a platform integration. Treat unknown values as another origin.

    string
    status
    required
    TimelineStatus

    acked once the change has been applied and is searchable, pending while it is still in flight.

    string
    Allowed values: acked pending
    timestamp
    required
    Timestamp

    When the change was received.

    string format: date-time
    object_id
    required
    Object Id

    The object’s @id, as given in the path — <type>/<value>.

    string
    window
    required
    Window

    The time window the entries cover.

    object
    date_from
    required
    Date From

    Start of the window, inclusive.

    string format: date-time
    to
    To

    End of the window; the timeline always runs up to now.

    string
    default: now
    Allowed value: now
    Example
    {
    "entries": [
    {
    "operation": "update",
    "status": "acked"
    }
    ],
    "window": {
    "to": "now"
    }
    }

    Missing or invalid credentials

    Media type application/json
    ErrorResponse

    Canonical error body — every non-2xx response uses this shape.

    object
    exception_details
    ExceptionDetails

    Machine-readable error context; empty object when there is nothing to add.

    object
    error_code
    Error Code

    Stable machine code naming why a well-formed request was refused: snake_case, prefixed by its domain — e.g. filter_unknown_field or cursor_mismatch. Safe to branch on; reason is not. Absent when the status code says all there is to say.

    string
    validation_errors
    Validation Errors

    Every field-level problem found in the request, when validation is what failed. Absent when the rejection is not about a specific value.

    Array<object>
    ValidationProblem

    One field-level reason a request was rejected.

    object
    loc
    required
    Loc

    Path to the offending value from the request root, e.g. ["body", "filters", 0, "operator"].

    Array
    msg
    required
    Msg

    What is wrong with the value at loc.

    string
    type
    required
    Type

    Stable machine code for the problem, e.g. missing or string_too_short.

    string
    key
    additional properties
    any
    reason
    required
    Reason

    Human-readable, actionable error message.

    string
    request_id
    Any of:
    string
    Example generated
    {
    "exception_details": {
    "error_code": "example",
    "validation_errors": [
    {
    "loc": [
    "example"
    ],
    "msg": "example",
    "type": "example"
    }
    ]
    },
    "reason": "example",
    "request_id": "example"
    }

    Authenticated but not permitted

    Media type application/json
    ErrorResponse

    Canonical error body — every non-2xx response uses this shape.

    object
    exception_details
    ExceptionDetails

    Machine-readable error context; empty object when there is nothing to add.

    object
    error_code
    Error Code

    Stable machine code naming why a well-formed request was refused: snake_case, prefixed by its domain — e.g. filter_unknown_field or cursor_mismatch. Safe to branch on; reason is not. Absent when the status code says all there is to say.

    string
    validation_errors
    Validation Errors

    Every field-level problem found in the request, when validation is what failed. Absent when the rejection is not about a specific value.

    Array<object>
    ValidationProblem

    One field-level reason a request was rejected.

    object
    loc
    required
    Loc

    Path to the offending value from the request root, e.g. ["body", "filters", 0, "operator"].

    Array
    msg
    required
    Msg

    What is wrong with the value at loc.

    string
    type
    required
    Type

    Stable machine code for the problem, e.g. missing or string_too_short.

    string
    key
    additional properties
    any
    reason
    required
    Reason

    Human-readable, actionable error message.

    string
    request_id
    Any of:
    string
    Example generated
    {
    "exception_details": {
    "error_code": "example",
    "validation_errors": [
    {
    "loc": [
    "example"
    ],
    "msg": "example",
    "type": "example"
    }
    ]
    },
    "reason": "example",
    "request_id": "example"
    }

    Request validation failed

    Media type application/json
    ErrorResponse

    Canonical error body — every non-2xx response uses this shape.

    object
    exception_details
    ExceptionDetails

    Machine-readable error context; empty object when there is nothing to add.

    object
    error_code
    Error Code

    Stable machine code naming why a well-formed request was refused: snake_case, prefixed by its domain — e.g. filter_unknown_field or cursor_mismatch. Safe to branch on; reason is not. Absent when the status code says all there is to say.

    string
    validation_errors
    Validation Errors

    Every field-level problem found in the request, when validation is what failed. Absent when the rejection is not about a specific value.

    Array<object>
    ValidationProblem

    One field-level reason a request was rejected.

    object
    loc
    required
    Loc

    Path to the offending value from the request root, e.g. ["body", "filters", 0, "operator"].

    Array
    msg
    required
    Msg

    What is wrong with the value at loc.

    string
    type
    required
    Type

    Stable machine code for the problem, e.g. missing or string_too_short.

    string
    key
    additional properties
    any
    reason
    required
    Reason

    Human-readable, actionable error message.

    string
    request_id
    Any of:
    string
    Example generated
    {
    "exception_details": {
    "error_code": "example",
    "validation_errors": [
    {
    "loc": [
    "example"
    ],
    "msg": "example",
    "type": "example"
    }
    ]
    },
    "reason": "example",
    "request_id": "example"
    }