Skip to main content

ImportReadingProgressResponse

The response for both a real import and a dry run: the shape is identical either way, so a client cannot tell from the response alone whether anything was written. Only dryRun (and the DB) says that.

dryRunbooleanrequired
noticesstring[]

Informational notes about the request, e.g. reattachSessions having no effect because the file carries no sessions.

series object[]required
  • Array [
  • attemptedbooleanrequired

    Whether book/rating processing was attempted at all (only when disposition == matched).

    books object[]required
  • Array [
  • appliedbooleanrequired

    Whether any writes were attempted for this book. False for every disposition except matched, and except stem_match when acceptStemMatches is off.

    completions objectrequired

    Insert/reattach/skip counts for an append-only table (completions or sessions) within one book.

    insertedinteger<int32>required

    Possible values: >= 0

    reattachedinteger<int32>required

    Adopted an orphaned row (book_id IS NULL) rather than inserting a new one.

    Possible values: >= 0

    skippedinteger<int32>required

    Already present with the same book attached; re-importing is a no-op. Includes stranded, so inserted + reattached + skipped still totals every row in the file.

    Possible values: >= 0

    strandedinteger<int32>required

    Skipped because the row sits on a book that is still live in another library, which is not the same thing as a harmless re-import: the reading history stays behind while the progress moves. Reattaching it would strip a library the reader may still be using, so the import reports it instead of guessing.

    Possible values: >= 0

    dispositionBookDispositionrequired

    Why a book in the import file could not be resolved to exactly one book in its matched series.

    Possible values: [matched, stem_match, ambiguous, unmatched, hash_mismatch]

    fileNamestringrequired
    matchedBookId(string | null)<uuid>nullable
    pathstringrequired
    progressFieldOutcome

    What happened to one scalar field write (progress or rating) under the active conflict policy.

    Possible values: [inserted, updated, skipped]

    sessions objectrequired

    Insert/reattach/skip counts for an append-only table (completions or sessions) within one book.

    insertedinteger<int32>required

    Possible values: >= 0

    reattachedinteger<int32>required

    Adopted an orphaned row (book_id IS NULL) rather than inserting a new one.

    Possible values: >= 0

    skippedinteger<int32>required

    Already present with the same book attached; re-importing is a no-op. Includes stranded, so inserted + reattached + skipped still totals every row in the file.

    Possible values: >= 0

    strandedinteger<int32>required

    Skipped because the row sits on a book that is still live in another library, which is not the same thing as a harmless re-import: the reading history stays behind while the progress moves. Reattaching it would strip a library the reader may still be using, so the import reports it instead of guessing.

    Possible values: >= 0

  • ]
  • committedbooleanrequired

    Whether this series' transaction was committed. Always false in a dry run, and false if attempted but a write failed.

    dispositionSeriesDispositionrequired

    Why a series in the import file could not be resolved to exactly one series in the current library.

    Possible values: [matched, ambiguous, unmatched]

    errorstring | nullnullable
    libraryRelativePathstringrequired
    matchedSeriesId(string | null)<uuid>nullable
    namestringrequired
    ratingFieldOutcome

    What happened to one scalar field write (progress or rating) under the active conflict policy.

    Possible values: [inserted, updated, skipped]

  • ]
  • sessionsInFilebooleanrequired
    summary objectrequired

    Totals across every series in the file, for a one-line summary.

    booksAmbiguousinteger<int32>required

    Possible values: >= 0

    booksHashMismatchinteger<int32>required

    Possible values: >= 0

    booksMatchedinteger<int32>required

    Possible values: >= 0

    booksStemMatchedinteger<int32>required

    Possible values: >= 0

    booksTotalinteger<int32>required

    Possible values: >= 0

    booksUnmatchedinteger<int32>required

    Possible values: >= 0

    completionsInsertedinteger<int32>required

    Possible values: >= 0

    completionsReattachedinteger<int32>required

    Possible values: >= 0

    progressWritteninteger<int32>required

    Possible values: >= 0

    ratingsWritteninteger<int32>required

    Possible values: >= 0

    rowsStrandedinteger<int32>required

    Rows left behind on a live book in another library. Non-zero means the import moved less than it appears to have.

    Possible values: >= 0

    seriesAmbiguousinteger<int32>required

    Possible values: >= 0

    seriesCommittedinteger<int32>required

    Possible values: >= 0

    seriesMatchedinteger<int32>required

    Possible values: >= 0

    seriesTotalinteger<int32>required

    Possible values: >= 0

    seriesUnmatchedinteger<int32>required

    Possible values: >= 0

    sessionsInsertedinteger<int32>required

    Possible values: >= 0

    sessionsReattachedinteger<int32>required

    Possible values: >= 0

    ImportReadingProgressResponse
    {
    "dryRun": true,
    "notices": [
    "string"
    ],
    "series": [
    {
    "attempted": true,
    "books": [
    {
    "applied": true,
    "completions": {
    "inserted": 0,
    "reattached": 0,
    "skipped": 0,
    "stranded": 0
    },
    "disposition": "matched",
    "fileName": "string",
    "matchedBookId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "path": "string",
    "progress": "inserted",
    "sessions": {
    "inserted": 0,
    "reattached": 0,
    "skipped": 0,
    "stranded": 0
    }
    }
    ],
    "committed": true,
    "disposition": "matched",
    "error": "string",
    "libraryRelativePath": "string",
    "matchedSeriesId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "name": "string",
    "rating": "inserted"
    }
    ],
    "sessionsInFile": true,
    "summary": {
    "booksAmbiguous": 0,
    "booksHashMismatch": 0,
    "booksMatched": 0,
    "booksStemMatched": 0,
    "booksTotal": 0,
    "booksUnmatched": 0,
    "completionsInserted": 0,
    "completionsReattached": 0,
    "progressWritten": 0,
    "ratingsWritten": 0,
    "rowsStranded": 0,
    "seriesAmbiguous": 0,
    "seriesCommitted": 0,
    "seriesMatched": 0,
    "seriesTotal": 0,
    "seriesUnmatched": 0,
    "sessionsInserted": 0,
    "sessionsReattached": 0
    }
    }