GET api/book/epub/{ean}

V1 - Gets an encrypted ePub file for the specified EAN
This method will try to retrieve an epub for the specified EAN. If the EAN is not available for the vendor, a statuscode 403 will be returned.
If an ePub file is available, it will be encrypted using AES-CBC, with a vendor-specific secret, and a random 256 bit salt.

Request Information

URI Parameters

NameDescriptionTypeAdditional information
ean

EAN

string

Required

Body Parameters

None.

Response Information

Resource Description

YindoOfflineBook
NameDescriptionTypeAdditional information
bookID

The ID for this book

integer

None.

ean

A 13 digit EAN. This starts with 978- for 'real' books and with 888- for Yindo Custom Books

string

None.

altean

A 13 digit EAN. This starts with 978- for 'real' books and with 888- for Yindo Custom Books

string

None.

title

The title for this book.

string

None.

encryptedOn

The encryptiondate for this books data.

date

Data type: DateTime

validUntil

The expirationdate for this books data.

date

Data type: DateTime

dataFormat

The format of the encrypted content.

DataFormats

None.

fileCount

The number of files in the encrypted zipfile

integer

None.

fileSize

The total size in bytes of all unencrypted, uncompressed files in the encrypted zipfile

integer

None.

bookData

Encrypted data (AES-CBC), base64 encoded
The data contains the following blocks needed for decryption.

  • 32 bytes salt
  • 16 bytes nonce
  • n bytes payload
  • 32 bytes HMac-Tag
NOTE: this data needs to be base64 decoded first!

string

None.

statusCode

A statuscode indicating succes or failure

StatusCode

None.

Response Formats

application/json, text/json

Sample:
{
  "bookID": 1,
  "ean": "sample string 2",
  "altean": "sample string 3",
  "title": "sample string 4",
  "encryptedOn": "2026-02-20T15:52:20.2941076+01:00",
  "validUntil": "2026-02-20T15:52:20.2941076+01:00",
  "dataFormat": 1,
  "fileCount": 7,
  "fileSize": 8,
  "bookData": "sample string 9",
  "statusCode": 0
}

text/javascript

Sample:
{"bookID":1,"ean":"sample string 2","altean":"sample string 3","title":"sample string 4","encryptedOn":"2026-02-20T15:52:20.2941076+01:00","validUntil":"2026-02-20T15:52:20.2941076+01:00","dataFormat":1,"fileCount":7,"fileSize":8,"bookData":"sample string 9","statusCode":0}

application/xml, text/xml

Sample:
<YindoOfflineBook xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/Yindo">
  <altean>sample string 3</altean>
  <bookData>sample string 9</bookData>
  <bookID>1</bookID>
  <dataFormat>ePub</dataFormat>
  <ean>sample string 2</ean>
  <encryptedOn>2026-02-20T15:52:20.2941076+01:00</encryptedOn>
  <fileCount>7</fileCount>
  <fileSize>8</fileSize>
  <statusCode>Success</statusCode>
  <title>sample string 4</title>
  <validUntil>2026-02-20T15:52:20.2941076+01:00</validUntil>
</YindoOfflineBook>