Servers the Tolino Vision 3/4 HD talk to (Firmware 14.x).
Work in progress.
User-Agent
Normal API requests:
Dalvik/1.6.0 (Linux; U; Android 4.4.2; tolino Build/KOT49H)
The browser:
Mozilla/5.0 (Linux; Android 4.4.2; en-; tolino vision 3 HD/14.1.0) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Mobile Safari/537.36 READER OS_BUILD/KOT49H.41429.1044823
Domains that are used by the Tolino Vision 3 HD.
auth.buch.de
FIXME
clients3.google.com
Check if the internet is reachable
management.mytolino.com
List of resellers
eInk handshake (FIXME)
bosh.pageplace.de
"bosh" could be short name for "BOokSHelf"
ping
reseller configuration
current time
sync main data (books, reading status, notes)
ebook upload
ebook cover upload
cdp.pageplace.de
Book images?
Book downloads
family.pageplace.de
Family sharing
inventory.pageplace.de
FIXME
The user-facing stuff happens in the web browser.
Fetch URL of login page: GET https://thalia.de/auth/oauth2/authorize
Show login page with username + password form
Redirect to internal e-book reader login with code.
Example redirect: Location: epublishing://login?code=GK6jDC
Request OAuth access token: POST https://thalia.de/auth/oauth2/token
Check if the device has been registered already: GET https://bosh.pageplace.de/bosh/rest/userid/xxx
Register the device to the user: POST https://bosh.pageplace.de/bosh/rest/v2/registerhw
Run the Sync process
The user presses the synchronization button on the "My books" screen.
Check if the device is online: GET http://bosh.pageplace.de/bosh/rest/ping
Fetch the reseller configuration: GET https://bosh.pageplace.de/bosh/rest/v2/resellerconfig
Fetch the number of books/items in the cloud: GET https://bosh.pageplace.de/bosh/rest/inventory/count
Fetch cloud book information: GET https://inventory.pageplace.de/v2/inventory
Fetch the current date/time: GET https://bosh.pageplace.de/bosh/rest/time
Fetch changes since last sync: PATCH https://bosh.pageplace.de/bosh/rest/sync-data
Get list of resellers: GET https://bosh.pageplace.de/bosh/rest/handshake/resellers
Fetch advertisements for the main screen: GET https://bosh.pageplace.de/bosh/rest/recommendation/xyz
Fetch family membership information: GET https://family.pageplace.de/v1/myself
When the user is part of a family:
Fetch list of available dictionaries: GET https://bosh.pageplace.de/bosh/rest/dictionary/list
Fetch list of family members: GET https://family.pageplace.de/v1/family
Fetch list of shared books: GET https://family.pageplace.de/v1/shares
FIXME: What happens if the inventory count is 0? Is the inventory not fetched then?
GET https://bosh.pageplace.de/bosh/rest/handshake/resellers
Get a list of resellers (book shops) that can be selected when the Tolino reader is unlocked.
It is also used when linking the Tolino to another account on a different book seller. (FIXME: verify)
Part of the sync process.
t_auth_token
OAuth token obtained from POST https://thalia.de/auth/oauth2/token.
Example: eyJhbGciOiJSUzI1NiJ9.eyJhdWRpZW5jZSI6InRyZWFkZXJ2aXNpb24zIiw...
Accept
Example: application/json; charset=UTF-8
m_id
FIXME: Maybe reseller ID?
Example: 3
hardware_id
Seems to be the same as the xxx
value in the URL.
Example: 665fc389ef4e47258c5db9fa7821bd19
Content-Type
application/json; charset=UTF-8
This is a lie; there is no request body.
client_type
Example: TOLINO_VISION_3
client_version
Example: 14.1.0
HTTP status code 200 OK
.
Example:
{
"resellerListResponse": {
"resellers": [
{
"reseller_id": "81",
"reseller_name": "eBook.de",
"reseller_connected": false,
"reseller_logo": "https://download.pageplace.de/icons_rc/81/android/81_reseller_logo.png"
},
{
"reseller_id": "80",
"reseller_name": "myBookShop",
"reseller_connected": false,
"reseller_logo": "https://download.pageplace.de/icons_rc/80/android/80_reseller_logo.png"
},
{
"reseller_id": "30",
"reseller_name": "buecher.de",
"reseller_connected": false,
"reseller_logo": "https://download.pageplace.de/icons_rc/30/android/30_reseller_logo.png"
},
{
"reseller_id": "90",
"reseller_name": "IBS.it",
"reseller_connected": false,
"reseller_logo": "https://download.pageplace.de/icons_rc/90/android/90_reseller_logo.png"
},
{
"reseller_id": "23",
"reseller_name": "OSIANDER",
"reseller_connected": false,
"reseller_logo": "https://download.pageplace.de/icons_rc/23/Android/23_reseller_logo.png"
},
{
"reseller_id": "24",
"reseller_name": "MAYERSCHE",
"reseller_connected": false,
"reseller_logo": "https://download.pageplace.de/icons_rc/24/android/24_reseller_logo.png"
},
{
"reseller_id": "1",
"reseller_name": "PagePlace",
"reseller_connected": false,
"reseller_logo": "http://www.pageplace.de/media/eink-reader/logo_pageplace_hd.png"
},
{
"reseller_id": "4",
"reseller_name": "Thalia.at",
"reseller_connected": false,
"reseller_logo": "https://images.thalia.de/md4/ereader/Logo-eReading.png"
},
{
"reseller_id": "7",
"reseller_name": "Buch.ch",
"reseller_connected": false,
"reseller_logo": "https://download.pageplace.de/icons_rc/7/android/7_reseller_logo.png"
},
{
"reseller_id": "11",
"reseller_name": "Weltbild.at",
"reseller_connected": false,
"reseller_logo": "https://download.pageplace.de/icons_rc/11/android/11_reseller_logo.png"
},
{
"reseller_id": "12",
"reseller_name": "Weltbild.ch",
"reseller_connected": false,
"reseller_logo": "https://download.pageplace.de/icons_rc/12/android/12_reseller_logo.png"
},
{
"reseller_id": "13",
"reseller_name": "Hugendubel",
"reseller_connected": false,
"reseller_logo": "https://download.pageplace.de/icons_rc/13/android/13_reseller_logo.png"
},
{
"reseller_id": "3",
"reseller_name": "Thalia.de",
"reseller_connected": true,
"reseller_logo": "https://images.thalia.de/md2/ereader/Logo-eReading.png"
},
{
"reseller_id": "10",
"reseller_name": "Weltbild.de",
"reseller_connected": false,
"reseller_logo": "https://download.pageplace.de/icons_rc/10/android/10_reseller_logo.png"
},
{
"reseller_id": "8",
"reseller_name": "Orell Füssli",
"reseller_connected": false,
"reseller_logo": "https://images.thalia.de/md37/ereader/Logo-eReading.png"
},
{
"reseller_id": "91",
"reseller_name": "LIBRACCIO",
"reseller_connected": false,
"reseller_logo": "https://download.pageplace.de/icons_rc/91/android/91_reseller_logo.png"
},
{
"reseller_id": "82",
"reseller_name": "LIBRIS.NL",
"reseller_connected": false,
"reseller_logo": "https://download.pageplace.de/icons_rc/82/android/82_reseller_logo.png"
}
]
}
}
GET https://bosh.pageplace.de/bosh/rest/inventory/count
Fetch the number of books/items in the cloud storage.
Part of the sync process.
t_auth_token
OAuth token obtained from POST https://thalia.de/auth/oauth2/token.
Example: eyJhbGciOiJSUzI1NiJ9.eyJhdWRpZW5jZSI6InRyZWFkZXJ2aXNpb24zIiw...
Accept
Example: application/json; charset=UTF-8
m_id
FIXME: Maybe reseller ID?
Example: 3
hardware_id
Seems to be the same as the xxx
value in the URL.
Example: 665fc389ef4e47258c5db9fa7821bd19
Content-Type
application/json; charset=UTF-8
This is a lie; there is no request body.
client_type
Example: TOLINO_VISION_3
client_version
Example: 14.1.0
HTTP status code: 200 OK
Number of books.
Example:
{
"count": 3
}
GET http://bosh.pageplace.de/bosh/rest/ping
Used to check if the ebook reader is online (internet reachable).
responseStatus=204
Always there
204 No Content
GET https://bosh.pageplace.de/bosh/rest/recommendation/xyz
Get advertisements for the main reader screen.
FIXME: Why the xyz
in the URL?
Part of the sync process.
t_auth_token
OAuth token obtained from POST https://thalia.de/auth/oauth2/token.
Example: eyJhbGciOiJSUzI1NiJ9.eyJhdWRpZW5jZSI6InRyZWFkZXJ2aXNpb24zIiw...
Accept
Example: application/json; charset=UTF-8
m_id
FIXME: Maybe reseller ID?
Example: 3
hardware_id
Seems to be the same as the xxx
value in the URL.
Example: 665fc389ef4e47258c5db9fa7821bd19
Content-Type
application/json; charset=UTF-8
This is a lie; there is no request body.
client_type
Example: TOLINO_VISION_3
client_version
Example: 14.1.0
count
Number of recommendations to return
Example: 12
fullShopUrl
true
HTTP status code 200 OK
.
Example:
{
"recommendationResponse": {
"recommendations": [
{
"publicationId": "DT0400.9783751502405_A40541228",
"description": "Der erste Band der Bridgerton-Serie von Julia Quinn - die Inspiration zur Netflix-Serie! Nichts wünscht die warmherzige Daphne Bridgerton sich mehr, als zu heiraten und Kinder zu bekommen. Dafür schließt sie einen Pakt mit Simon Basset, dem heiratsunwilligen Duke of Hastings: Indem er ihr den Hof macht, erscheint der umschwärmte Aristokrat vergeben. Und Daphne rückt durch das Interesse des Herzogs gesellschaftlich in den Mittelpunkt. Ein prickelndes Spiel, bei dem es nur Sieger zu geben scheint - bis Daphne erkennt, dass nur einem Mann ihr Herz gehört: Simon!",
"title": "Bridgerton - Der Duke und ich",
"author": "Julia Quinn",
"shop_url": "https://ereader.thalia.de/de.thalia.ers.artikel/api/2004/artikel/details/?einsprung=reco&detailPage=true&bdeArticleId=149846249&turl=%2Fshop%2Farticle.jsp%3F149846249",
"cover_url": "https://assets.thalia.media/img/artikel/0ce02217be038330f409a07aa79be644e41d9b85-00_BF160-240.jpeg",
"publicationType": null
},
{
"publicationId": "DT0400.9783641267575_A39529579",
"description": "Zwei Frauen auf der Flucht. Eine Entscheidung, die alles verändert. Und kein Weg zurück. New York, Flughafen JFK: Claire soll nach Puerto Rico reisen, um ihren Mann, einen ehrgeizigen Politiker, beim Wahlkampf zu unterstützen. Doch in Wahrheit will sie nichts als fliehen - vor seinen gewalttätigen Übergriffen und der lückenlosen Kontrolle, die er über sie ausübt. Sie kommt mit Eva ins Gespräch, die bei ihrem schwerkranken Mann Sterbehilfe geleistet hat. Zu Hause in Kalifornien erwartet sie die Polizei. Innerhalb weniger Sekunden beschließen sie, die Bordkarten zu tauschen und sich gegenseitig ein neues Leben zu schenken. Erleichtert landet Claire in Kalifornien. In Evas Haus gibt es allerdings keine Hinweise auf einen Ehemann. Dann erfährt sie, dass das Flugzeug nach Puerto Rico abgestürzt ist. Und kurz darauf entdeckt sie die vermeintlich abgestürzte Eva in einer Fernsehreportage über das Unglück. Lebendig. Hat sie die Flucht in das Leben einer Anderen am Ende doch nur in eine Falle gelockt? ",
"title": "Der Tausch - Zwei Frauen. Zwei Tickets. Und nur ein Ausweg.",
"author": "Julie Clark",
"shop_url": "https://ereader.thalia.de/de.thalia.ers.artikel/api/2004/artikel/details/?einsprung=reco&detailPage=true&bdeArticleId=147900787&turl=%2Fshop%2Farticle.jsp%3F147900787",
"cover_url": "https://assets.thalia.media/img/artikel/5113d1ed25c611ab7619b4b9d64f735ab4920c7d-00_BF160-240.jpeg",
"publicationType": null
},
{
"publicationId": "DT0400.9783426439838_A39547289",
"description": "Wer das Datum seines Todes kennt, hat mit dem Sterben schon begonnen - der neue Bestseller von Sebastian Fitzek! Es ist Samstag, kurz nach 22.00 Uhr. Jules Tannberg sitzt am Begleittelefon. Ein ehrenamtlicher Telefonservice für Frauen, die zu später Stunde auf ihrem Heimweg Angst bekommen und sich einen telefonischen Begleiter wünschen, dessen beruhigende Stimme sie sicher durch die Nacht nach Hause führt - oder im Notfall Hilfe ruft. Noch nie gab es eine wirklich lebensgefährliche Situation. Bis heute, als Jules mit Klara spricht. Die junge Frau hat entsetzliche Angst. Sie glaubt, von einem Mann verfolgt zu werden, der sie schon einmal überfallen hat und der mit Blut ein Datum auf ihre Schlafzimmerwand malte: Klaras Todestag! Und dieser Tag bricht in nicht einmal zwei Stunden an ... Geheimnisvoll, beklemmend, nervenaufreibend. Sebastian Fitzeks bislang unheimlichster Psychothriller.",
"title": "Der Heimweg",
"author": "Sebastian Fitzek",
"shop_url": "https://ereader.thalia.de/de.thalia.ers.artikel/api/2004/artikel/details/?einsprung=reco&detailPage=true&bdeArticleId=147930114&turl=%2Fshop%2Farticle.jsp%3F147930114",
"cover_url": "https://assets.thalia.media/img/artikel/165a3878ec433697eb2e7519f4e96b6d29896e54-00_BF160-240.jpeg",
"publicationType": null
},
{
"publicationId": "DT0400.9783641201968_A40493558",
"description": "Sieben Sterne umfasst das Sternbild der Plejaden, und die Schwestern d'Aplièse tragen ihre Namen. Stets war ihre siebte Schwester aber ein Rätsel für sie, denn Merope ist verschwunden, seit sie denken können. Eines Tages überbringt der Anwalt der Familie die verblüffende Nachricht, dass er eine Spur entdeckt hat: Ein Weingut in Neuseeland und die Zeichnung eines sternförmigen Rings weisen den Weg. Es beginnt eine Jagd quer über den Globus, denn Mary McDougal - die Frau, die als Einzige bestätigen kann, ob ihre Tochter Mary-Kate die verschwundene Schwester ist - befindet sich auf einer Weltreise. Während die Schwestern ihre Suche nach Neuseeland, Kanada, England, Frankreich und Irland führt, schlüpft ihnen Mary immer wieder durch die Finger. Und es scheint, als wolle sie unbedingt verhindern, gefunden werden ... ",
"title": "Die verschwundene Schwester",
"author": "Lucinda Riley",
"shop_url": "https://ereader.thalia.de/de.thalia.ers.artikel/api/2004/artikel/details/?einsprung=reco&detailPage=true&bdeArticleId=149697970&turl=%2Fshop%2Farticle.jsp%3F149697970",
"cover_url": "https://assets.thalia.media/img/artikel/d72cbd3faa63e6797600e121206703fdb0674945-00_BF160-240.jpeg",
"publicationType": null
},
{
"publicationId": "DT0400.9783641263140_A40225527",
"description": "Wenn dich die Angst dein Leben lang verfolgt, weil du zu viel weißt ... Ein wolkenloser Sommertag, die Hitze drückt aufs Land. Im Zug von London nach York zielt ein Fremder mit einer Pistole auf eine Frau. Sie entkommt in letzter Sekunde. Zwei Tage später: Eine junge Frau stürzt mit ihrem Fahrrad, weil jemand einen dünnen Draht über den Weg gespannt hat. Sie ist sofort bewusstlos. Den folgenden Schuss hört sie schon nicht mehr. Die Frauen stehen in keiner Verbindung zueinander, aber die Tatwaffe ist dieselbe. Kate Linville, neu bei der North Yorkshire Police, wird sofort in die Ermittlungen hineingezogen. Sie kommt einem grausamen Geheimnis auf die Spur und gerät selbst in tödliche Gefahr. Denn der Täter, der eine vermeintliche Schuld rächen will, gibt nicht auf ... Weitere Fälle für Kate Linville und Caleb Hale: Die Betrogene Die Suche ",
"title": "Ohne Schuld",
"author": "Charlotte Link",
"shop_url": "https://ereader.thalia.de/de.thalia.ers.artikel/api/2004/artikel/details/?einsprung=reco&detailPage=true&bdeArticleId=149148070&turl=%2Fshop%2Farticle.jsp%3F149148070",
"cover_url": "https://assets.thalia.media/img/artikel/abc400a8f5e7c7ef80964cbd2b107db03d338ffb-00_BF160-240.jpeg",
"publicationType": null
},
{
"publicationId": "DT0400.9783968170367_A39435394",
"description": "Der erste Fall für Profiler und Frauenheld Nick Stein Ein fesselnder Krimi für Fans von Nele Neuhaus Eigentlich wollte Nick Stein, Profiler und bester Mann beim BKA, seine Heimatstadt Mödling so weit wie möglich hinter sich lassen. Doch wegen des Mordes an einer alten Schulkollegin, die er damals verspottete, kehrt er zurück. Genau genommen müsste er den Fall abgeben, denn die Ermittlungen führen mitten hinein in seine alte, feierfreudige Clique, die mittlerweile zur Mödlinger Elite gehört. Aber private Gefühle können einen Nick Stein nicht ablenken, er ist schließlich promovierter Psychologe. Allerdings kann der charismatische Nick den Frauen nach wie vor genauso wenig widerstehen wie sie ihm, selbst wenn ihn eine leise Stimme warnt, dass er den Lebensstil seiner alten Freunde seinerzeit nicht grundlos aufgegeben hat. Als sich auch noch der Bürgermeister einmischt und ein zweiter Mord geschieht, ist es mit der professionellen Distanz endgültig vorbei, denn hinter den bürgerlichen Fassaden lauert das nackte Grauen ... Erste Leserstimmen \"ich war überrascht, welche Wendungen die Geschichte immer wieder nimmt\" \"ein Showdown, wie ihn ein Krimi braucht, spannend bis zum Schluss\" \"der Plot ist gut konstruiert und ein Verwirrspiel der Extraklasse nimmt seinen Lauf\" \"der flüssige Schreibstil des Autors hat mich sehr gut duch die Geschichte geleitet\" \"gelungener Krimi mit viel Ermittlerarbeit, einer Prise Erotik und einem spannenden Plot\" Weitere Titel dieser Reihe Stille Schuld (ISBN: 9783968170404)",
"title": "Narbenfrau",
"author": "Gerlinde Friewald",
"shop_url": "https://ereader.thalia.de/de.thalia.ers.artikel/api/2004/artikel/details/?einsprung=reco&detailPage=true&bdeArticleId=147662274&turl=%2Fshop%2Farticle.jsp%3F147662274",
"cover_url": "https://assets.thalia.media/img/artikel/04273d0b2c505f2a895adbf008cfa2bfd17a47aa-00_BF160-240.jpeg",
"publicationType": null
},
{
"publicationId": "DT0400.9783641117009_A23157788",
"description": "Der erste Roman einer faszinierenden Reihe um die \"Sieben Schwestern\". Maia ist die älteste von sechs Schwestern, die alle von ihrem Vater adoptiert wurden, als sie sehr klein waren. Sie lebt als Einzige noch auf dem herrschaftlichen Anwesen ihres Vaters am Genfer See, denn anders als ihre Schwestern, die es drängte, draußen in der Welt ein ganz neues Leben als Erwachsene zu beginnen, fand die eher schüchterne Maia nicht den Mut, ihre vertraute Umgebung zu verlassen. Doch das ändert sich, als ihr Vater überraschend stirbt und ihr einen Umschlag hinterlässt - und sie plötzlich den Schlüssel zu ihrer bisher unbekannten Vorgeschichte in Händen hält: Sie wurde in Rio de Janeiro in einer alten Villa geboren, deren Adresse noch heute existiert. Maia fasst den Entschluss, nach Rio zu fliegen, und an der Seite von Floriano Quintelas, eines befreundeten Schriftstellers, beginnt sie, das Rätsel ihrer Herkunft zu ergründen. Dabei stößt sie auf eine tragische Liebesgeschichte in der Vergangenheit ihrer Familie, und sie taucht ein in das mondäne Paris der Jahrhundertwende, wo einst eine schöne junge Frau aus Rio einem französischen Bildhauer begegnete. Und erst jetzt fängt Maia an zu begreifen, wer sie wirklich ist und was dies für ihr weiteres Leben bedeutet ... ",
"title": "Die sieben Schwestern Bd.1",
"author": "Lucinda Riley",
"shop_url": "https://ereader.thalia.de/de.thalia.ers.artikel/api/2004/artikel/details/?einsprung=reco&detailPage=true&bdeArticleId=41227640&turl=%2Fshop%2Farticle.jsp%3F41227640",
"cover_url": "https://assets.thalia.media/img/artikel/a720d7e96c65406afe20df76d459365e246e7dc7-00_BF160-240.jpeg",
"publicationType": null
},
{
"publicationId": "DT0400.9783104912998_A39626270",
"description": "Die Platz-1-Bestseller-Serie aus Dänemark »Vor kurzem noch unbekannt, überholt Anne Mette Hancock jetzt Jo Nesbø und Jussi Adler-Olsen auf den Bestsellerlisten.« Berlingske Die Kopenhagener Investigativ-Journalistin Heloise Kaldan steckt in einer heiklen Jobkrise, als sie einen mysteriösen Brief erhält: von einer gesuchten Mörderin. Darin stehen Dinge über Heloise, die eigentlich niemand wissen kann. Beunruhigt beginnt Heloise, auf eigene Faust zu recherchieren. Die Absenderin ist seit einem brutalen Mord vor einigen Jahren spurlos verschwunden. Was will sie nun ausgerechnet von Heloise, und woher hat sie die Informationen über sie? Zur gleichen Zeit erhält auch Kommissar Erik Schäfer einen neuen Hinweis auf die Gesuchte. Alle Spuren scheinen zu Heloise Kaldan zu führen. Ist ihr Leben in Gefahr? Und können der Polizist und die Journalistin einander vertrauen? Der erste Fall der Erfolgs-Reihe um Heloise Kaldan und Erik Schäfer. Ausgezeichnet mit dem dänischen Krimi-Preis. Ein fesselnd persönlicher Thriller über Rache, Gerechtigkeit und Vergebung. »Bezwingendes Crime-Debüt auf höchstem skandinavischen Niveau.« Litteratursiden",
"title": "Leichenblume",
"author": "Anne Mette Hancock",
"shop_url": "https://ereader.thalia.de/de.thalia.ers.artikel/api/2004/artikel/details/?einsprung=reco&detailPage=true&bdeArticleId=148123770&turl=%2Fshop%2Farticle.jsp%3F148123770",
"cover_url": "https://assets.thalia.media/img/artikel/96e70f5e92341412d8462adf041226819bbc62bf-00_BF160-240.jpeg",
"publicationType": null
},
{
"publicationId": "DT0400.9780063045118_A39289545",
"description": "An enchanting collection containing the first three novels in New York Times bestselling author Julia Quinn's beloved Bridgerton series set in Regency England—The Duke and I, The Viscount Who Loved Me, and An Offer from a Gentleman—now a series created by Shonda Rhimes for Netflix. The Duke and I When Daphne Bridgerton and Simon Basset, Duke of Hastings, agree to a fake courtship, they think they've found the perfect solution to their problems. Romantically associated with one of London's most desirable catches, Daphne's prospects among the ton will soar. For avowed bachelor Simon, an attachment to Daphne will deter would-be brides and their ambitious mamas. Their plan works like a charm—at first. But amid the glittering, gossipy, cut-throat world of London's elite, there is only one certainty: love ignores every rule. . . The Viscount Who Loved Me London's most elusive bachelor, Anthony Bridgerton is determined to wed. But one obstacle stands in his way—his intended's older sister, Kate Sheffield, who is driving Anthony mad with her determination to stop the betrothal. Kate is quite sure that reformed rakes do not make the best husbands, and Anthony Bridgerton is the most wicked rogue of them all. She's determined to protect her sister—even as she fears she may not be able to resist the reprehensible and oh so desirable rake herself . . . An Offer from a Gentleman Sophie Beckett never dreamed she'd be able to sneak into Lady Bridgerton's famed masquerade ball—or that she would be spinning in the arms of her \"Prince Charming\"—the debonair and devastatingly handsome Benedict Bridgerton. But when the clock strikes midnight, Sophie's enchanting evening ends. Since that night Benedict has been able to think of nothing but the bewitching young woman, and he's sworn to find and wed his mystery miss. Yet will another unexpectedly steal his heart—and his chance for a fairy tale love? ",
"title": "Bridgerton Collection Volume 1",
"author": "Julia Quinn",
"shop_url": "https://ereader.thalia.de/de.thalia.ers.artikel/api/2004/artikel/details/?einsprung=reco&detailPage=true&bdeArticleId=147088413&turl=%2Fshop%2Farticle.jsp%3F147088413",
"cover_url": "https://assets.thalia.media/img/artikel/ba2c5db01eef33c301fdaa951bd98d7a52192152-00_BF160-240.jpeg",
"publicationType": null
},
{
"publicationId": "DT0400.9783736314221_A39672730",
"description": "Er glaubt nicht mehr an die Liebe. Bis er sie trifft ... Auf dem Weg zu einem Vorstellungsgespräch passiert es: Elodie erwischt mit ihrem alten Jeep den glänzenden Mercedes eines reichen Schnösels. Es ist Abneigung auf den ersten Blick, als ihr der arrogante - wenn auch leider attraktive - Geschäftsmann die alleinige Schuld an dem Unfall gibt. Nach einem hitzigen Wortgefecht muss die temperamentvolle New Yorkerin sich sputen, um noch pünktlich zu ihrem Termin zu erscheinen - und staunt nicht schlecht, als sich ihr Unfallgegner als ihr zukünftiger Chef entpuppt ... \"Welch. Ein. Spaß!!! Ich habe dieses Buch von Anfang bis Ende einfach nur geliebt!\" Maryse's Book Blog Der neue Bestseller des Erfolgsduos Vi Keeland und Penelope Ward",
"title": "Park Avenue Player",
"author": "Vi Keeland,Penelope Ward",
"shop_url": "https://ereader.thalia.de/de.thalia.ers.artikel/api/2004/artikel/details/?einsprung=reco&detailPage=true&bdeArticleId=148210090&turl=%2Fshop%2Farticle.jsp%3F148210090",
"cover_url": "https://assets.thalia.media/img/artikel/3a198b0f827f682a2f5d971528944a8aa5502aed-00_BF160-240.jpeg",
"publicationType": null
},
{
"publicationId": "DT0400.9783751505147_A40777800",
"description": "Auftakt der bezaubernden Smythe-Smith-Serie von Julia Quinn! \"Wie, bitteschön, soll ich heiraten, wenn kein Gentleman um mich anhält?\" Tatendurstig beschließt Honoria Smythe-Smith, dem Eheglück etwas nachzuhelfen. Doch in die Falle, die sie stellt, tappt ausgerechnet Marcus Holroyd, Earl of Chatteris. Dass ihr Freund aus Kindertagen mehr als einen verstauchten Knöchel davonträgt, erweist sich als schicksalhaft. Denn Honoria muss Marcus pflegen - und liegt plötzlich in seinen Armen. Ist er derjenige, mit dem sie lachen, den sie heiraten und aufrichtig lieben kann? Zu spät erfährt Honoria, was Marcus einst ihrem Bruder geschworen hat ...",
"title": "Mit List und Küssen",
"author": "Julia Quinn",
"shop_url": "https://ereader.thalia.de/de.thalia.ers.artikel/api/2004/artikel/details/?einsprung=reco&detailPage=true&bdeArticleId=150416693&turl=%2Fshop%2Farticle.jsp%3F150416693",
"cover_url": "https://assets.thalia.media/img/artikel/605e9f44edac70fb867944e9320b3d7c94acbd18-00_BF160-240.jpeg",
"publicationType": null
},
{
"publicationId": "DT0400.9783968172187_A40776890",
"description": "Ein brutaler Mord und ein Opfer mit vielen Feinden - Nick Stein ermittelt Der spannende Krimi für Fans von Andreas Gruber Nach seinem letzten Fall hat sich Nick Stein auf unbestimmte Zeit vom BKA beurlauben lassen und hält Vorträge an diversen Universitäten. Doch die Ruhe währt nicht lange. Während seines Vortrags an der psychologischen Fakultät der LMU bittet ihn der Münchner Kriminalbeamte Axel Mayr um Hilfe bei einem Mordfall. Sofort ist Nicks Neugier geweckt, denn der Fall hat es in sich. Mit Unterstützung so mancher alter Weggefährten stürzt sich Nick in die Ermittlungen und wird immer weiter in den komplexen Fall um Geldwäsche, Prostitution und Vergewaltigung hineingezogen. Schließlich ist er dem Täter dicht auf den Fersen - doch sein Bauchgefühl sagt ihm, dass irgendetwas nicht stimmt … Weitere Titel dieser Reihe Narbenfrau (ISBN: 9783968170367) Stille Schuld (ISBN: 9783968170404) Erste Leserstimmen „Ein sorgsam konstruierter Krimi, der nie an Spannung verliert.\" „Zum Glück ist Nick Stein kein Typ für den Ruhestand. Auch sein dritter Fall ist wieder rätselhaft, komplex und unglaublich fesselnd.\" „Als Krimi-Fan war ich begeistert und habe zu jedem Zeitpunkt mit dem Ermittlerteam mitgefiebert.\" „Ein mitreißender Kriminalfall voller interessanter Wendungen.\"",
"title": "Totenstein (nur bei Thalia!)",
"author": "Gerlinde Friewald",
"shop_url": "https://ereader.thalia.de/de.thalia.ers.artikel/api/2004/artikel/details/?einsprung=reco&detailPage=true&bdeArticleId=150412963&turl=%2Fshop%2Farticle.jsp%3F150412963",
"cover_url": "https://assets.thalia.media/img/artikel/aa36dbdd3dab5a9f1f8aea75119c429f0315b9c6-00_BF160-240.jpeg",
"publicationType": null
}
]
}
}
PATCH https://bosh.pageplace.de/bosh/rest/sync-data
Send changes to the server and get changes since last sync back. This is the main API method for synchronization.
Part of the Sync process.
t_auth_token
OAuth token obtained from POST https://thalia.de/auth/oauth2/token.
Example: eyJhbGciOiJSUzI1NiJ9.eyJhdWRpZW5jZSI6InRyZWFkZXJ2aXNpb24zIiw...
Content-Type
application/json; charset=UTF-8
Accept
application/json; charset=UTF-8
reseller_id
Example: 3
hardware_id
Example: 665fc389ef4e47258c5db9fa7821bd19
client_type
Example: TOLINO_VISION_3
paths
Example: publications
FIXME: What else?
revision
revision
of last sync response.
null
when it is the first sync ever for this device.
patches
Array of changes.
No data to sync: Empty array []
.
FIXME: document structure
When nothing needs to be synchronized to the server, and nothing ever has been synchronized:
{
"patches": [],
"revision": null
}
HTTP status code: 200 OK
FIXME: document different types and how progress is saved
Example:
{
"revision": "HMwySkb2QvTCBdlNAyjAEpf+UKHoFxsaWV3yQdMYlu9lJYnoUMNDwRowMvHSFOu3DsPw+mRfrkPaZiXBeqJ8MitfmhiSoQlNBT6FYjaD4rW6Bcrv7xGvauypLFYkaq9o",
"patches": [
{
"op": "add",
"path": "/publications/DT0400.9783641243609_A40398678/comments/606778818",
"value": {
"revision": "Lmu7TngaxhKWHdv2FFktQFdz4lyc7kDFlZaAS+HeJfHWU2bv9FiPCTCUkDXUo7SKAncqxyDwCxG95t2u0JBMdstap9i8kDytw9JveNZhINal0xDzllUVFMfKm7HBt9m7cLdbVaqPZBKTi8XqBRFK8Q==",
"modified": 1612116489908,
"text": "»Würdet ihr die Aufgabe ablehnen, wenn es so wäre?«, fragte ich zurück.",
"startPosition": "OEBPS/0159E511E7C147BFA524CA3DDE0E937C.xhtml#point(/1/4/2/78/1:0)",
"endPosition": "OEBPS/0159E511E7C147BFA524CA3DDE0E937C.xhtml#point(/1/4/2/78/1:76)"
}
},
{
"op": "add",
"path": "/publications/DT0400.9783641243609_A40398678/bookmark/606777963",
"value": {
"revision": "Lmu7TngaxhKWHdv2FFktQFdz4lyc7kDFlZaAS+HeJfHWU2bv9FiPCTCUkDXUo7SKUVTLMA8s57HlhB0Q8mKpZDUmAw+NJyupu0vRits89G6tnbMbc+VW/XxzNQfKsE9BQWfoivx5yoKm7w3r+jgQLw==",
"modified": 1612116494839,
"progress": 0.26923078,
"position": "OEBPS/0159E511E7C147BFA524CA3DDE0E937C.xhtml#point(/1/4/2/70/1:0)",
"currentPosition": "7",
"lastPosition": "26"
}
},
{
"op": "add",
"path": "/publications/DT0400.9783739673417_A27522964/bookmark/606779074",
"value": {
"revision": "HMwySkb2QvTCBdlNAyjAEpf+UKHoFxsaWV3yQdMYlu/jWquQkHI8AFujlvCDEN6Az/cX05Tmdnoti+PCVOZHjmK0futElUUgQ9l34qpnOLlQbyTlM7SrR6xheKDt04fTHhP1CTD45tmWERGvV3e+xA==",
"modified": 1612116931592,
"progress": 0.043393,
"position": "OEBPS/caterina-di-montebasso-das-relikt_0.html#point(/1/2/1/1/1:0)",
"lastPosition": "16"
}
},
{
"op": "add",
"path": "/publications/DT0400.9783739673417_A27522964/comments/606780680",
"value": {
"revision": "HMwySkb2QvTCBdlNAyjAEpf+UKHoFxsaWV3yQdMYlu/jWquQkHI8AFujlvCDEN6AxhqFD9WE9tS0SL4VnneAHAwlYWr6D5bEdS9Fyg0Mu/EYUTVuwD28pyiFSp++vhGtDKhUCfPCS0Ohi0C7PXJGtA==",
"modified": 1612116905561,
"text": "er einen Gleiter starten",
"startPosition": "OEBPS/caterina-di-montebasso-das-relikt_0.html#point(/1/2/1/4/1:768)",
"endPosition": "OEBPS/caterina-di-montebasso-das-relikt_0.html#point(/1/2/1/4/1:792)"
}
},
{
"op": "add",
"path": "/publications/DT0400.9783739673417_A27522964/comments/606780681",
"value": {
"revision": "HMwySkb2QvTCBdlNAyjAEpf+UKHoFxsaWV3yQdMYlu/jWquQkHI8AFujlvCDEN6APKHWbB8HNf1ruRvf+UK5IkjbMGqptZkx8vMscjqcvlVw68+UeS+OAUKuotNqOLayfG2hLLmPZRGz1CyqOZL2Pg==",
"modified": 1612116914525,
"text": "Der Sturm brach ohne Vorwarnung los.",
"startPosition": "OEBPS/caterina-di-montebasso-das-relikt_0.html#point(/1/2/1/2/1:0)",
"endPosition": "OEBPS/caterina-di-montebasso-das-relikt_0.html#point(/1/2/1/2/1:36)"
}
},
{
"op": "add",
"path": "/publications/DT0400.9783739673417_A27522964/comments/606780682",
"value": {
"revision": "HMwySkb2QvTCBdlNAyjAEpf+UKHoFxsaWV3yQdMYlu/jWquQkHI8AFujlvCDEN6A/r2JVv++Ix5Vk+IcC/9AXtWuTStnbObbxNIzKNHLGFS4L1ZLK8QsUFpdQfGAH5B9C/Sr3Ra+qLV2ayYULwCxkA==",
"modified": 1612116925942,
"note": "eine Notiz",
"text": "kürzester Zeit",
"startPosition": "OEBPS/caterina-di-montebasso-das-relikt_0.html#point(/1/2/1/2/1:263)",
"endPosition": "OEBPS/caterina-di-montebasso-das-relikt_0.html#point(/1/2/1/2/1:278)"
}
}
]
}
GET https://bosh.pageplace.de/bosh/rest/time
Part of the Sync process.
Response is empty.
FIXME: What is that used for? Fetching the current time?
No headers except Host: bosh.pageplace.de
and Connection: Keep-Alive
.
This is strange, because almost all requests have a couple of other
default headers (Accept
, Content-Type
) - so this must be deliberate.
HTTP status code: 200 OK
.
No content.
Maybe the time is fetched from the Date
header.
Example:
Server: nginx/1.6.2
Date: Sun, 31 Jan 2021 20:13:19 GMT
Content-Length: 0
Connection: keep-alive
Pragma: no-cache
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Cache-Control: no-cache
Cache-Control: no-store
Timestamp: 1612123999282
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST,GET,PUT,DELETE,PATCH
Access-Control-Allow-Headers: t_auth_token, hardware_id, Content-Type, If-Modified-Since, m_id, authorization, X-Audiobook-Enabled, client_type, reseller_id, hardware_type,
client_version, os_version, language_code
Access-Control-Max-Age: 1728000
Access-Control-Expose-Headers: response_timestamp,Date,Timestamp
Vary: User-Agent
GET https://bosh.pageplace.de/bosh/rest/userid/xxx
Step 5 in the Login process.
FIXME: Check if the device has been registered already to a user.
Example xxx
value: 665fc389ef4e47258c5db9fa7821bd19
.
There is some explanation about the hardware id in tolino-python: tolinocloud.py.
No body in the request, despite the Content-Type
header.
t_auth_token
OAuth token obtained from POST https://thalia.de/auth/oauth2/token.
Example: eyJhbGciOiJSUzI1NiJ9.eyJhdWRpZW5jZSI6InRyZWFkZXJ2aXNpb24zIiw...
Accept
application/json; charset=UTF-8
m_id
FIXME: Maybe reseller ID?
Example: 3
hardware_id
Seems to be the same as the xxx
value in the URL.
Example: 665fc389ef4e47258c5db9fa7821bd19
Content-Type
application/json; charset=UTF-8
client_type
Example: TOLINO_VISION_3
client_version
Example: 14.1.0
HTTP status code: 200 OK
Example:
{
"initAppResponse": {
"config": null,
"deviceKey": null,
"update": 0,
"updateVersion": null,
"userId": "2086910932"
}
}
POST https://bosh.pageplace.de/bosh/rest/v2/registerhw
Step 6 in the Login process.
Register the e-book reader's hardware ID with the user account.
t_auth_token
OAuth token obtained from POST https://thalia.de/auth/oauth2/token.
Example: eyJhbGciOiJSUzI1NiJ9.eyJhdWRpZW5jZSI6InRyZWFkZXJ2aXNpb24zIiw...
reseller_id
Example: 3
hardware_type
Example: tolino_vision_3
os_version
Example: 4.4.2
language_code
Example: en
hardware_id
Example: 665fc389ef4e47258c5db9fa7821bd19
client_type
Example: TOLINO_VISION_3
client_version
Example: 14.1.0
Content-Type
text/plain; charset=UTF-8
This is a lie, because the request body is JSON.
{
"initAppRequest": {
"hardware_id": "665fc389ef4e47258c5db9fa7821bd19",
"hardware_name": "",
"client_type": "TOLINOVISION3_14.1.0",
"hardware_type": "tolino_vision_3"
}
}
HTTP status code: 200 OK
Contains a device key, the changelog in several languages and the latest firmware version including its download URL.
Example:
{
"initAppResponse": {
"deviceKey": "5Iq76M_tEoze3w49c-IOug",
"update": 0,
"updateVersion": "14.1.0",
"userId": "2086910932",
"config": [
{
"key": "CHANGELOG_NL",
"value": "Verbeterde prestaties, verbeterde functies en betere integratie van onze nieuwe tolino-leeservaring. (BÈTA)\nWe hebben de software verbeterd, bugs verholpen en gezorgd voor meer stabiliteit."
},
{
"key": "CHANGELOG_EN",
"value": "Improved performance, feature enhancement and better integration of our new tolino reading experience. (BETA)\nWe have improved the software, fixed bugs and ensured more stability."
},
{
"key": "CHANGELOG_FR",
"value": "Amélioration des performances, amélioration des fonctionnalités et meilleure intégration de notre nouvelle expérience de lecture tolino. (BÊTA)\nNous avons amélioré le logiciel, corrigé des bugs et assuré plus de stabilité."
},
{
"key": "DOWNLOAD_FILE_MD5",
"value": "930d0eb9e4c861a43d8360fc8dbc0ced"
},
{
"key": "CHANGELOG_ES",
"value": "Rendimiento mejorado, mejora de funciones y mejor integración con nuestra nueva experiencia de lectura de tolino. (BETA)\nHemos mejorado el software, arreglado los errores y asegurado una mayor estabilidad.\n"
},
{
"key": "CHANGELOG_DE",
"value": "Verbesserte Leistung, Funktionserweiterungen und bessere Integration unseres neuen tolino-Leseerlebnisses (BETA).\nWir haben die Software verbessert, Fehler behoben und für mehr Stabilität gesorgt.\n"
},
{
"key": "DOWNLOAD_URL",
"value": "https://download.pageplace.de/ereader/14.1.0/alldevices/update.zip"
},
{
"key": "CHANGELOG_IT",
"value": "Prestazioni migliorate, funzionalità avanzate e migliore integrazione della nostra nuova esperienza di lettura tolino. (BETA)\nAbbiamo migliorato il software, corretto i bug e assicurato una maggiore stabilità.\n"
}
]
}
}
GET https://bosh.pageplace.de/bosh/rest/v2/resellerconfig
Fetch information about a given tolino reseller (shop):
Authentication URLs
Browser start page
Brand name ("Thalia.de")
if LCP encryption is available
etc.
ifmodifiedsince
Timestamp with microseconds of last reseller config file version
Example: 1603111725000
reseller_id
Example: 3
Required. "400 Bad Request" if missing.
hardware_type
Example: tolino_vision_3
os_version
Android version
Example: 4.4.2
language_code
Example: en
hardware_id
Example: 665fd389ea4e47228c5db8fa7821bd23
client_type
Example: TOLINO_VISION_3
Required. "400 Bad Request" if missing.
client_version
Tolino firmware version
Example: 14.1.0
HTTP/1.1 304 Not Modified
if the ifmodifiedsince
header is equal or
later than the modification date.
HTTP/1.1 200 OK
for the content
Example for headers reseller_id:3
and client_type:TOLINO_VISION_3
:
{
"reseller_id": 3,
"client_type": "TOLINO_VISION_3",
"version": "1.7.0",
"lastModified": 1603111725000,
"config": {
"URL_HANDSHAKE": "https://management.mytolino.com/index.html?reseller=3&platform=eink",
"STRING_BRAND_NAME": "Thalia.de",
"URL_SHOP_EBOOK_SEARCH": "https://ereader.thalia.de/de.thalia.ers.sun/api/2004/sun/suche?einsprung=firmware&search_complex=",
"FAMILY_SHARING_ACTIVE": "true",
"LCP_ACTIVATED": "true",
"URL_SHOP_EBOOK_START_PAGE": "https://ereader.thalia.de/de.thalia.ers.sun/api/2004/sun/startseite?einsprung=firmware",
"SHOP_BASE": "https://ereader.thalia.de/de.thalia.ers.artikel/api/2004/artikel/details/?einsprung=reco",
"URL_OAUTH_ACCESSTOKEN_FAMILY": "https://thalia.de/auth/oauth2/token?client_secret=gU5a7CA9",
"IS_EXTERNAL_LINK_ENABLED": "true",
"URL_RESELLER_LOGO": "http://www.tpereader.thalia.de/logos/Prod/thalia_de_sw_klein.png",
"IS_LCP_ACTIVATED": "false",
"URL_BOOKSHELF": "https://bosh.pageplace.de/bosh/rest",
"OAUTH_CLIENT_ID": "treadervision3",
"ENABLE_DATA_RECOVERY": "true",
"URL_DEVICE_MANAGEMENT": "https://management.mytolino.com/index.html?reseller=3&platform=eink",
"URL_BROWSER_START_PAGE": "https://www.google.de",
"ADVERTISING_REDIRECT_BASE": "redirect.mytolino.com",
"URL_OAUTH_AUTHORIZATION": "https://thalia.de/auth/oauth2/authorize?response_type=code&scope=SCOPE_BOSH SCOPE_BUCHDE SCOPE_MANDANT_ID.2004 SCOPE_LOGIN FAMILY&redirect_uri=epublishing://login&x_buchde.skin_id=17",
"RECOMMENDATIONS_IS_SHUFFLE_ENABLED": "false",
"URL_OAUTH_ACCESSTOKEN": "https://thalia.de/auth/oauth2/token?client_secret=gU5a7CA9",
"URL_FAMILY_SHARING_MANUAL": "https://mytolino.de/family-sharing-handbuch-ereader",
"URL_OAUTH_REVOKETOKEN": "https://thalia.de/auth/oauth2/revoke"
},
"configLanguageSpecific": [
{
"language": "FR",
"languageConfig": {
"STRING_ARRAY_SUPPORT_CONTACT": "E-mail: info@thalia.de##Hotline: +49 (0) 251 530 94 44##(Du lundi au vendredi de 9 h à 18 h)",
"STRING_ARRAY_ACTIVATION_ADVANTAGES": "Choisissez vos coups de cœur personnels parmi plus d'un million d'ebooks dans l'ebook-shop de Thalia.##Lisez parallèlement sur la tablette ou sur le smartphone avec l'appli eReading de Thalia.##Synchronisez vos ebooks en sécurité, confortablement et gratuitement à travers le tolino Cloud sur plusieurs appareils.##Avec votre tolino, utilisez gratuitement tous les hotspots de la Deutsche Telekom."
}
},
{
"language": "EN",
"languageConfig": {
"STRING_ARRAY_SUPPORT_CONTACT": "E-Mail: info@thalia.de##Hotline: +49 (0)251 530 94 44##(German speaking customer care:##Monday to Friday, 9 a.m. to 6 p.m.)",
"STRING_ARRAY_ACTIVATION_ADVANTAGES": "Browse through over 1,000,000 e-books in the Thalia shop.##Use the Thalia eBooks app to read in parallel on your tablet, computer or smartphone.##Synchronize your titles across various devices securely and free of charge via the tolino Cloud.##Use all Deutsche Telekom HotSpots free of charge with your tolino."
}
},
{
"language": "ES",
"languageConfig": {
"STRING_ARRAY_SUPPORT_CONTACT": "E-Mail: info@thalia.de##Línea directa: +49 (0) 251 530 94 44##(Lunes a viernes de 9:00 a 18:00 horas)",
"STRING_ARRAY_ACTIVATION_ADVANTAGES": "Seleccione de entre más de un millo de libros electrónicos en la tienda de eBooks de Thalia su destacados personalizados.##Lea de forma paralela con la aplicación de lectura digital de Thalia en su tableta o smartphone.##Sincronice sus libros electrónicos de forma segura, cómoda y gratuita a través de la tolino Cloud en distintos dispositivos.##Utilice con su dispositivo tolino de forma gratuita todos los HotSpots de la Deutsche Telekom."
}
},
{
"language": "NL",
"languageConfig": {
"STRING_ARRAY_SUPPORT_CONTACT": "E-Mail: info@thalia.de##Hotline: +49 (0) 251 530 94 44##(Maandag t/m vrijdag 9:00 uur - 18:00 uur)",
"STRING_ARRAY_ACTIVATION_ADVANTAGES": "Kies uit meer dan een miljoen ebooks in de Thalia eBook-Shop uw persoonlijke favorieten.##Lees met de Thalia eReading-app ook parallel op de tablet of smartphone.##Synchroniseer uw ebooks veilig, comfortabel en kosteloos via de tolino Cloud op verschillende apparaten.##Maak met uw tolino gratis gebruik van alle HotSpots van de Deutsche Telekom."
}
},
{
"language": "DE",
"languageConfig": {
"STRING_ARRAY_ACTIVATION_ADVANTAGES": "Wählen Sie aus über einer Million eBooks im Thalia eBook-Shop Ihre persönlichen Highlights.##Lesen Sie mit der Thalia eReading App auch parallel auf dem Tablet oder Smartphone.##Synchronisieren Sie Ihre eBooks sicher, komfortabel und kostenlos über die tolino Cloud auf verschiedenen Geräten.##Nutzen Sie mit Ihrem tolino alle HotSpots der Deutschen Telekom kostenlos.",
"STRING_ARRAY_SUPPORT_CONTACT": "E-Mail: info@thalia.de##Rufnummer: 0251 5309 444##(Montag bis Freitag 9 - 18 Uhr, Samstag 9:30 - 18 Uhr)"
}
},
{
"language": "IT",
"languageConfig": {
"STRING_ARRAY_SUPPORT_CONTACT": "E-mail: info@thalia.de##Hot line: +49 (0) 251 530 94 44##(da lunedì a venerdì, dalle ore 9 alle ore 18)",
"STRING_ARRAY_ACTIVATION_ADVANTAGES": "Scegli le tue letture preferite tra oltre un milione di eBook nell'eBook shop Thalia.##Con l'app Thalia eReading, leggi in parallelo anche sul tablet o lo smartphone.##Sincronizza i tuoi eBook in modo sicuro, comodo e gratuito su dispositivi diversi tramite tolino Cloud.##Con il tuo tolino, sfrutta gratis tutti gli hot spot di Deutsche Telekom."
}
}
]
}
GET https://inventory.pageplace.de/v2/inventory
Fetch information about books stored in the cloud.
Part of the sync process.
Full example request URL:
https://inventory.pageplace.de/v2/inventory?page=0&size=300&includeLoaned=true&contentTypeFilter=EBOOK&contentFormatFilter=ACSM&contentFormatFilter=EPUB&contentFormatFilter=PDF
Authorization
OAuth token obtained from POST https://thalia.de/auth/oauth2/token.
Example: Bearer eyJhbGciOiJSUzI1NiJ9.eyJhdWRpZW5jZSI6InRyZWFkZXJ2aXNpb24zIiw...
Accept
Example: application/json; charset=UTF-8
Accept-Encoding
gzip
m_id
FIXME: Maybe reseller ID?
Example: 3
Hardware-Id
Example: 665fc389ef4e47258c5db9fa7821bd19
Content-Type
application/json; charset=UTF-8
This is a lie; there is no request body.
client_type
Example: TOLINO_VISION_3
client_version
Example: 14.1.0
Reseller-Id
Example: 3
Cookie
Multiple times:
OAUTH-JSESSIONID=3EFAEC6B69D811252C75861880C338AB.15acdb90; Path=/; Secure; HttpOnly
JSESSIONID=C0D8A077F6D2E13251ECDCD60FE6D18A
Cookie2
Example: $Version=1
page
Example: 0
size
Example: 300
includeLoaned
Example: true
contentTypeFilter
Example: EBOOK
contentFormatFilter
:Multiple values allowed (repeat the parameter)
ACSM
EPUB
PDF
Content-Type
application/json;charset=UTF-8
Example:
{
"lastModifiedDate": 1612123999080,
"page": {
"content": [
{
"publicationId": "DT0400.9783641243609_A40398678",
"resellerId": "3",
"resellerName": "THALIA.DE",
"contentType": "EBOOK",
"shelfId": "39549013",
"authors": [
{
"name": null,
"firstName": "Patrick",
"lastName": "Ness"
}
],
"title": "Chaos Walking - Die Mission (E-Only)",
"subtitle": "Die Vorgeschichte zur »Chaos Walking«-Trilogie",
"isbnEan": "9783641243609",
"language": null,
"keywords": [
"Tribute von Panem; Divergent; Dystopie; Tom Holland; Daisy Ridley; Mads Mikkelsen; Young Adult; Nick Jonas; Hollywood-Verfilmung",
"9783641243609"
],
"publisher": "Random House ebook",
"issuedDate": 1607900400000,
"fileResources": [
{
"resource": "https://cdp.pageplace.de/cdp/public/publications/DT0400/9783641243609_A40398678/cover",
"format": "image/jpeg",
"type": "COVER_IMAGE",
"lastModifiedDate": null
}
],
"contentProtectionType": "UNPROTECTED",
"purchasedDate": 1612116184445,
"sequenceNo": null,
"transactionId": "339905364",
"contentSources": [
"PURCHASED"
],
"readableContentInfo": {
"isTextToSpeechEnabled": false,
"renderingEngine": "FGRE"
},
"audioContentInfo": null,
"subscriptionInfo": null,
"familySharing": true,
"defaultCover": null,
"contentFormat": "application/epub+zip",
"abstract": "Wer ist das Mädchen an der Seite von Todd Hewitt?\n\nAls Todd Hewitt auf das Mädchen Viola trifft, verändert dies sein Leben schlagartig. Er erkennt, dass es auf einer Lüge aufgebaut war. Er ist plötzlich in tödlicher Gefahr. Er hat zum ersten Mal in seinem Leben jemanden gefunden, dessen Gedanken er nicht lesen kann - und den er trotzdem perfekt versteht. Doch woher nur kommt die geheimnisvolle Viola, mit der er auf der Flucht ist? Die exklusive Vorgeschichte zur »Chaos Walking«-Bestseller-Trilogie beantwortet diese Frage zum ersten Mal."
},
{
"publicationId": "DT0400.9783739673417_A27522964",
"resellerId": "3",
"resellerName": "THALIA.DE",
"contentType": "EBOOK",
"shelfId": "39549013",
"authors": [
{
"name": null,
"firstName": "Caterina",
"lastName": "di Montebasso"
}
],
"title": "Das Relikt",
"subtitle": "Sci Fi Kurzgeschichte",
"isbnEan": "9783739673417",
"language": "de",
"keywords": [],
"publisher": "BookRix",
"issuedDate": 1473804000000,
"fileResources": [
{
"resource": "https://cdp.pageplace.de/cdp/public/publications/DT0400/9783739673417_A27522964/cover",
"format": "image/jpeg",
"type": "COVER_IMAGE",
"lastModifiedDate": null
}
],
"contentProtectionType": "WATERMARK",
"purchasedDate": 1612116343128,
"sequenceNo": null,
"transactionId": "339901326",
"contentSources": [
"PURCHASED"
],
"readableContentInfo": {
"isTextToSpeechEnabled": true,
"renderingEngine": "FGRE"
},
"audioContentInfo": null,
"subscriptionInfo": null,
"familySharing": true,
"defaultCover": null,
"contentFormat": "application/epub+zip",
"abstract": "<p>Eine Pyramide. Niemand kennt ihren wahren Ursprung. Mythen und falsche Interpretationen umwölken sie. Puhlie, ein Farmerjunge aus dem Volk der Amaranth, gibt sich mit den alten Erklährungen nicht zufrieden. Er widmet sein Leben der Lösung des Rätsels. Doch erst eine Generation später wird es entschlüsselt. Ungeheure Umwälzungen durchströmen daraufhin das gesamte Universum. Doch geschiet dies alles nicht zum ersten Mal.</p>"
},
{
"publicationId": "DT0400.9783842028357_A29383154",
"resellerId": "3",
"resellerName": "THALIA.DE",
"contentType": "EBOOK",
"shelfId": "39549013",
"authors": [
{
"name": null,
"firstName": "Ban",
"lastName": "Zarbo"
}
],
"title": "Gratis-Leseprobe: Kamo - Pakt mit der Geisterwelt",
"subtitle": null,
"isbnEan": "9783842028357",
"language": null,
"keywords": [
"Shounen; Shonen Jump; Abenteuer; Action; Mystery; Shonen; Geist; Geister; Dämon; Dämonen; Tod; Bleach; Death Note; Fantasy"
],
"publisher": "TOKYOPOP Verlag",
"issuedDate": 1489618800000,
"fileResources": [
{
"resource": "https://cdp.pageplace.de/cdp/public/publications/DT0400/9783842028357_A29383154/cover",
"format": "image/jpeg",
"type": "COVER_IMAGE",
"lastModifiedDate": null
}
],
"contentProtectionType": "WATERMARK",
"purchasedDate": 1612116728634,
"sequenceNo": null,
"transactionId": "339906865",
"contentSources": [
"PURCHASED"
],
"readableContentInfo": {
"isTextToSpeechEnabled": true,
"renderingEngine": "FGRE"
},
"audioContentInfo": null,
"subscriptionInfo": null,
"familySharing": true,
"defaultCover": null,
"contentFormat": "application/pdf",
"abstract": "All die Jahre hat der herzkranke Kamo gegen den Tod gekämpft, doch vergebens - sein junges Leben neigt sich dem Ende zu. Kurz vor seinem letzten Atemzug erhält er Besuch von Crimson, einem mächtigen Geist, der ihm ein unglaubliches Angebot macht: \"Hilf mir, zwölf Geister zu besiegen und ihre Seelen einzufangen, und ich schenke dir ein neues Herz.\" Aber welchen Preis zahlt man für einen Pakt mit einem Geist?"
}
],
"totalElements": 3,
"totalPages": 1,
"numberOfElements": 3,
"size": 300,
"number": 0
},
"deletedContent": []
}
POST https://thalia.de/auth/oauth2/token
Step 4 of the Login process.
Uses:
Log in to obtain an access token.
Generate access token from a refresh token.
client_secret
Provided in the reseller configuration.
Example: gU5a7CA9
Content-Type
application/x-www-form-urlencoded
User-Agent
DT_EINK_10_NETRONIX DT_EINK_UPD_PP_14.1.0
Cookie
:Example: gcor=SIDYBbxYkmvUvoO8hy@2Sfx4QAAA9o; ab_bucket=9; ab_container=3; OAUTH-JSESSIONID=9C95C20ECEE74164E76F60C205147822.15acdb90
Cookie2
$Version=1
grant_type
:authorization_code
redirect_uri
epublishing://login
The e-reader internal login process
code
Obtained from login form page redirect.
Example: GK6jDC
client_id
Example: treadervision3
HTTP status code 200 OK
{
"access_token": "eyJhbGciOiJSUzI1NiJ9.eyJhdWRpZW5jZSI6InRyZWFkZXJ2aXNpb24zIiwiZXhwaXJlcyI6IjE2MTIxMzgzOTczMzMiLCJ4X2J1Y2hkZS51c2VyX2lk...",
"expires_in": 14399,
"refresh_token": "ad351547-bcb3-43b2-9914-d88f0a3704c8",
"scope": "FAMILY SCOPE_BOSH SCOPE_BUCHDE SCOPE_LOGIN",
"token_type": "bearer",
"x_buchde.mandant_id": "2004",
"x_buchde.user_id": "39549013"
}
This documentation has been written by Christian Weiske, cweiske+tolino@cweiske.de.
Last update: 2021-02-20T21:32:12+01:00
It is licensed under the GNU Free Documentation License.
The documentation sources are available at http://git.cweiske.de/tolino-api-docs.git/ and mirrored at https://github.com/cweiske/tolino-api-docs
A rendered version of this documentation is available at http://cweiske.de/tolino-api-docs.htm
You need to install rst2html5
before (the version with bootstrap CSS):
$ pip3 install rst2html5-tools
Rendering the docs is done via the Makefile:
$ make