Qué es Book Factory API
Book Factory API es una sección de la API de BitBook Lite con la que podrás crear, publicar y editar libros en la plataforma.
Book Factory API trabaja sobre el último estándar de libros en BitBook Lite: BitBook Text Editor.
¿Cómo funciona?
Aquí tenemos un escenario de ejemplo para publicar un libro en BitBook Lite:
- Creas un libro con sus respectivos metadatos e información (título, descripción, portada, categoría, etc.).
- Actualizas el contenido del manuscrito del libro.
- Publicas el libro.
Puntos clave
- Para acceder a la API necesitas tus credenciales de acceso (usuario y contraseña) que encontrarás aquí.
- Solo puedes administrar los libros de tu cuenta.
- "Libro" se refiere al producto completo que se publica, mientras que "Manuscrito" se refiere al contenido legible del libro.
Métodos y ejemplos
Los ejemplos están escritos en sentencias CURL. Puedes convertir las sentencias CURL a PHP usando esta página web. Para otros lenguajes de programación deberás utilizar una librería CURL correspondiente.
data_text_editor_book
Crea o edita un libro.
Ejemplo de creación de un libro
curl -X POST https://bitbooklite.com/api/?type=data_text_editor_book&apiUser=00000-AAAAA-00000-AAAAA-00000&apiPassword=000000-AAAAAA-000000-AAAAAA-000000
-d 'title=Título del libro'
-d 'subtitle=Subtítulo del libro'
-d 'description=Descripción del libro'
-d 'keywords=palabras clave, separadas por coma'
-d 'category_id=1'
-d 'lang=ESP'
Ejemplo de edición de un libro
curl -X POST https://bitbooklite.com/api/?type=data_text_editor_book&apiUser=00000-AAAAA-00000-AAAAA-00000&apiPassword=000000-AAAAAA-000000-AAAAAA-000000
-d 'book_id=1'
-d 'privacy=1'
-d 'title=Nuevo título'
Endpoint
https://bitbooklite.com/api/
GET parameters
- type (obligatorio - string): Método de la API, en este caso, "data_text_editor_book".
- apiUser (obligatorio - string): Usuario de tu credencial de acceso API.
- apiPassword (obligatorio - string): Contraseña de tu credencial de acceso API.
POST parameters
- book_id (opcional - integer): ID del libro a editar, si se quiere editar un libro.
- title (opcional - string): título del libro.
- subtitle (opcional - string): subtítulo del libro.
- description (opcional - string): descripción del libro.
- keywords (opcional - string): palabras clave del libro.
- category_id (opcional - integer): ID de la categoría principal del libro. Puedes obtener la lista de categorías disponibles con el método get_categories de BitBook Lite Data API.
- lang (opcional - string): idioma del libro. Valores permitidos: "ESP" (Español), "ENG" (Inglés).
- subcategories_ids (opcional - array): lista de IDs de las subcategorías del libro. Puedes obtener la lista de subcategorías disponibles con el método get_categories de BitBook Lite Data API.
- allow_article_mode (opcional - boolean): habilitar o no el Modo Artículo Público para el libro.
- allow_shorts_mode (opcional - boolean): incluír o no al libro en el Programa de Shorts.
- price_amount (opcional - float): monto del precio del libro.
- price_currency (opcional - string): moneda del precio del libro. Valores admitidos:
- allowed_payment_processors (opcional - array): lista de procesadores de pago habilitados para el libro. Valores admitidos:
- paypal_unique: PayPal.
- mercadopago_ars: Mercado Pago.
- coinbase: Coinbase.
- payssion: Payssion.
- litbit: Litbit.
- gratis: Gratis.
- restricted_content_categories (opcional - array): lista de Categorías de contenido restringido en las que se incluye el libro. Valores admitidos:
- privacy (opcional - integer): privacidad del libro. Valores permitidos: 0 (privado), 1 (público).
- cover (opcional - base64_string): imagen codificada en Base64 data URI scheme que será utilizada como portada del libro. Formato del string: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA". Formatos de imagen admitidos: image/jpeg, image/png.
- isbn (opcional - string): ISBN del libro.
- ai_generated (opcional - boolean): indicar si el libro fue o no generado con Inteligencia artificial.
- allow_preview (opcional - boolean): habilitar o no la función de Vista previa. Default = False. Más información.
Valores devueltos
JSON
{
"error" : false,
"errores" : [],
"answer" : {
"book_id" : 1,
"time" : 1674340074,
"action" : "edit"
},
}
- error (obligatorio - boolean): "true" en caso de error.
- errores (obligatorio - array): Conjunto de strings con los errores producidos, si existen.
- answer (obligatorio - array):
- book_id (obligatorio - integer): ID del libro creado o editado.
- time (obligatorio - integer): marca de tiempo UNIX UTC.
- action (obligatorio - string): acción realizada. Valores admitidos: "create" (se creó un libro), "edit" (se realizó una edición a un libro).
Posibles errores
- book_its_not_text_editor_version: el libro no puede editarse debido a que no es compatible con la API.
- access_denied: no tienes acceso al libro.
- book_doesnt_exists: el libro no existe.
- content_edit_method_denied: el contenido del libro fue editado usando BitBook Text Editor, y por eso ya no es posible modificarlo mediante API. Los libros cuyo contenido es modificado por API no son compatibles con el control de versiones.
- invalid_book_id: el ID del libro es inválido, debe ser un número entero positivo.
- book_hasnt_enough_content_for_public_privacy: el libro no puede cambiarse a privacidad "público" porque su manuscrito está vacío.
- invalid_privacy: privacy debe ser 0 o 1.
- max_price_amount: has excedido el límite máximo del monto del precio.
- min_price_amount: has excedido el límite mínimo del monto del precio.
- invalid_price_currency: la moneda del precio del libro es inválida, debe ser un string de 3 dígitos.
- invalid_allowed_payment_processors: alguno de los procesadores de pago no es válido.
- invalid_restricted_content_categories: alguna de las Categorías de contenido restringido es inválida.
- empty_allowed_payment_processors: si price_amount es mayor a 0 debe enviarse allowed_payment_processors con los procesadores de pago habilitados.
- category_doesnt_exists: la categoría no existe, puede que se haya enviado un ID de categoría incorrecto.
- invalid_subcategories_ids: alguna subcategoría no existe o no pertenece a la categoría principal.
- min_title_length: has excedido el límite mínimo de caracteres del título.
- min_description_length: has excedido el límite mínimo de caracteres de la descripción.
- min_keywords_length: has excedido el límite mínimo de caracteres de las palabras clave.
- max_title_length: has excedido el límite máximo de caracteres del título.
- max_description_length: has excedido el límite máximo de caracteres de la descripción.
- cover_not_allowed_file_type: el tipo de archivo de la portada no está permitido.
- cover_max_size: la imagen enviada como portada excedió el límite de peso.
- cover_invalid_base64_string: se produjo un error al decodificar cover, puede que el archivo no haya sido correctamente codificado en Base64.
- cover_invalid_base64: cover no está correctamente codificado en Base64 data URI scheme, puede que tengas que añadir "data:image/png;base64," antes del resto del texto Base64 (recuerda cambiar "image/png" por el formato de tu imagen).
- internal_error_manuscript_file_creation: ha ocurrido un error interno en el guardado del manuscrito.
- internal_error_uploading_cover: ha ocurrido un error interno en el guardado de la portada.
- db_error: ha ocurrido un error interno con la base de datos.
- empty_error: title, description, keywords y category_id son obligatorios para crear un nuevo libro.
- login_failed: error al iniciar sesión, puede que tus credenciales de acceso API sean inválidas.
Notas
- Para cambiar la privacidad del libro a público, su manuscrito debe tener contenido; de lo contrario, se devolverá un error "book_hasnt_enough_content_for_public_privacy".
update_text_editor_book_content
Editar el contenido del manuscrito de un libro.
Ejemplo
curl -X POST https://bitbooklite.com/api/?type=update_text_editor_book_content&apiUser=00000-AAAAA-00000-AAAAA-00000&apiPassword=000000-AAAAAA-000000-AAAAAA-000000
-d 'book_id=1'
-d 'content=HTML_CONTENT'
-d 'action=1'
Endpoint
https://bitbooklite.com/api/
GET parameters
- type (obligatorio - string): Método de la API, en este caso, "update_text_editor_book_content".
- apiUser (obligatorio - string): Usuario de tu credencial de acceso API.
- apiPassword (obligatorio - string): Contraseña de tu credencial de acceso API.
POST parameters
- book_id (obligatorio - integer): ID del libro.
- content (obligatorio - HTML_string): nuevo contenido del manuscrito, en formato HTML.
- action (obligatorio - integer): tipo de guardado. Valores admitidos: 0 (guardar borrador), 1 (publicar manuscrito).
Valores devueltos
JSON
{
"error" : false,
"errores" : [],
"answer" : {
"saved_draft" : true,
"published" : true,
"can_shorts_mode" : 0,
},
}
- error (obligatorio - boolean): "true" en caso de error.
- errores (obligatorio - array): Conjunto de strings con los errores producidos, si existen.
- answer (obligatorio - array):
- saved_draft (obligatorio - boolean): si se guardó el borrador del manuscrito.
- published (opcional - boolean): si se publicó el manuscrito.
- can_shorts_mode (opcional - integer): si el manuscrito es apto para el Programa de Shorts.
Notas
- El parámetro action refiere a la acción sobre el manuscrito, no sobre el libro. Si action es 1 se publicará el manuscrito, pero no afectará la privacidad del libro, la cual deberá ser cambiada con el método data_text_editor_book después de publicar el manuscrito para que el libro sea visible en la plataforma.
- El contenido del manuscrito enviado en el parámetro content será transformado de HTML a BBLM para ser almacenado en nuestros servidores. Puedes consultar la información de nuestro lenguaje de marcado (BBLM) aquí.
🙌 Flujo sugerido para publicar un libro
- Crea un nuevo libro con el método data_text_editor_book, estableciendo su título, descripción, palabras clave, categorías, portada, etc.
- Actualiza el manuscrito del nuevo libro creado con el cotenido de tu libro en formato HTML, con el método update_text_editor_book_content. Recuerda establecer el parámetro action en 1.
- Publica el libro cambiando la privacidad del mismo, con el método data_text_editor_book, estableciendo el parámetro privacy en 1.
¿Necesitas ayuda con la integración?
Volver atrás