MENU navbar-image
bash javascript

Introduction

The API documentation for Bookshelves to use endpoints with another app.

This documentation aims to provide all the information you need to work with our API.

Base URL

https://bookshelves.ink/api

Authenticating requests

This API is not authenticated.

Author

Endpoint to get Authors data.

GET Author collection

WITH PAGINATION

You can get all Authors with alphabetic order on lastname with pagination.

Example request:
curl --request GET \
    --get "https://bookshelves.ink/api/api/authors" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bookshelves.ink/api/api/authors"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "name": "Howard Phillips Lovecraft",
            "meta": {
                "slug": "lovecraft-howard-phillips",
                "show": "http://127.0.0.1:8000/api/authors/lovecraft-howard-phillips"
            },
            "lastname": "Lovecraft",
            "firstname": "Howard Phillips",
            "picture": {
                "base": "http://localhost:8000/storage/media/authors/1248/conversions/lovecraft-howard-phillips-thumbnail.webp",
                "openGraph": "http://localhost:8000/storage/media/authors/1248/conversions/lovecraft-howard-phillips-open_graph.jpg",
                "simple": "http://localhost:8000/storage/media/authors/1248/conversions/lovecraft-howard-phillips-simple.jpg",
                "color": "#8a817b"
            },
            "count": 22
        },
        {
            // ...
        }
    ],
    "links": {
        "first": "http://127.0.0.1:8000/api/authors?page=1",
        "last": "http://127.0.0.1:8000/api/authors?page=2",
        "prev": null,
        "next": "http://127.0.0.1:8000/api/authors?page=2"
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 2,
        "links": [
            { "url": null, "label": "« Previous", "active": false },
            {
                "url": "http://127.0.0.1:8000/api/authors?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": "http://127.0.0.1:8000/api/authors?page=2",
                "label": "2",
                "active": false
            },
            {
                "url": "http://127.0.0.1:8000/api/authors?page=2",
                "label": "Next »",
                "active": false
            }
        ],
        "path": "http://127.0.0.1:8000/api/authors",
        "per_page": 32,
        "to": 32,
        "total": 58
    }
}

 

Request      

GET api/authors

Query Parameters

per-page  integer optional  

Entities per page, '32' by default.

page  integer optional  

The page number, '1' by default.

GET Author resource

Details for one Author, find by slug.

Example request:
curl --request GET \
    --get "https://bookshelves.ink/api/api/authors/lovecraft-howard-phillips" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bookshelves.ink/api/api/authors/lovecraft-howard-phillips"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": {
        "name": "Howard Phillips Lovecraft",
        "meta": {
            "slug": "lovecraft-howard-phillips",
            "show": "http:\/\/127.0.0.1:8000\/api\/authors\/lovecraft-howard-phillips",
            "books": "http:\/\/127.0.0.1:8000\/api\/authors\/books\/lovecraft-howard-phillips",
            "series": "http:\/\/127.0.0.1:8000\/api\/authors\/series\/lovecraft-howard-phillips"
        },
        "lastname": "Lovecraft",
        "firstname": "Howard Phillips",
        "picture": {
            "base": "http:\/\/localhost:8000\/storage\/media\/authors\/1248\/conversions\/lovecraft-howard-phillips-thumbnail.webp",
            "openGraph": "http:\/\/localhost:8000\/storage\/media\/authors\/1248\/conversions\/lovecraft-howard-phillips-open_graph.jpg",
            "simple": "http:\/\/localhost:8000\/storage\/media\/authors\/1248\/conversions\/lovecraft-howard-phillips-simple.jpg",
            "color": "#8a817b"
        },
        "count": 22,
        "description": "Howard Phillips Lovecraft was an American writer of weird and horror fiction, who is known for his creation of what became known as the Cthulhu Mythos.Born in Providence, Rhode Island, Lovecraft spent most of his life in New England. He was born into affluence, but his family's wealth dissipated soon after the death of his grandfather. In 1913, he wrote a critical letter to a pu...",
        "link": "https:\/\/en.wikipedia.org\/wiki\/H._P._Lovecraft",
        "size": "20.58 Mo",
        "download": "http:\/\/127.0.0.1:8000\/api\/download\/author\/lovecraft-howard-phillips",
        "isFavorite": false,
        "comments": [
            {
                "meta": {
                    "type": "comment",
                    "for": "author",
                    "author": null,
                    "slug": "lovecraft-howard-phillips"
                },
                "id": 1,
                "text": "Sapiente corporis iure minima veritatis in omnis eos ut. Aut veritatis dolor error. Adipisci pariatur eos unde voluptatem aperiam consequatur sed. Dolor tempora amet ab dolores accusamus recusandae non.",
                "rating": null,
                "user": {
                    "id": 1,
                    "name": "Username",
                    "picture": "http:\/\/localhost:8000\/storage\/media\/users\/picture.webp"
                },
                "createdAt": "2021-06-20T13:32:19.000000Z",
                "updatedAt": "2021-06-20T13:32:19.000000Z",
                "title": "Howard Phillips Lovecraft",
                "picture": "http:\/\/localhost:8000\/storage\/media\/authors\/picture.webp"
            }
        ]
    }
}
 

Request      

GET api/authors/{slug}

URL Parameters

slug  string  

The slug of author like 'lovecraft-howard-phillips'.

GET Book collection of Author

Books list from one author, find by slug.

Example request:
curl --request GET \
    --get "https://bookshelves.ink/api/api/authors/books/lovecraft-howard-phillips" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bookshelves.ink/api/api/authors/books/lovecraft-howard-phillips"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "title": "Cthulhu : Le Mythe",
            "meta": {
                "slug": "cthulhu-le-mythe-fr",
                "author": "lovecraft-howard-phillips",
                "show": "http://127.0.0.1:8000/api/books/lovecraft-howard-phillips/cthulhu-le-mythe-fr"
            },
            "authors": [
                {
                    "name": "Howard Phillips Lovecraft",
                    "meta": {
                        "slug": "lovecraft-howard-phillips",
                        "show": "http://127.0.0.1:8000/api/authors/lovecraft-howard-phillips"
                    }
                }
            ],
            "summary": "Howard Phillips Lovecraft est sans nul doute l'auteur fantastique le plus influent du XXe siecle. Son imaginaire unique et terrifiant...",
            "language": "fr",
            "publishDate": "2015-10-31 23:00:00",
            "picture": {
                "base": "http://localhost:8000/storage/media/books/972/conversions/cthulhu-le-mythe-fr-thumbnail.webp",
                "simple": "http://localhost:8000/storage/media/books/972/conversions/cthulhu-le-mythe-fr-simple.jpg",
                "color": "#806c47"
            },
            "volume": 1,
            "serie": {
                "title": "Cthulhu : Le Mythe",
                "meta": {
                    "slug": "cthulhu-le-mythe-fr",
                    "author": "lovecraft-howard-phillips",
                    "show": "http://127.0.0.1:8000/api/series/lovecraft-howard-phillips/cthulhu-le-mythe-fr"
                }
            }
        },
        {
            // ...
        }
    ],
    "links": {
        "first": "http://127.0.0.1:8000/api/authors/books/lovecraft-howard-phillips?page=1",
        "last": "http://127.0.0.1:8000/api/authors/books/lovecraft-howard-phillips?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            { "url": null, "label": "« Previous", "active": false },
            {
                "url": "http://127.0.0.1:8000/api/authors/books/lovecraft-howard-phillips?page=1",
                "label": "1",
                "active": true
            },
            { "url": null, "label": "Next »", "active": false }
        ],
        "path": "http://127.0.0.1:8000/api/authors/books/lovecraft-howard-phillips",
        "per_page": 32,
        "to": 22,
        "total": 22
    }
}

 

Request      

GET api/authors/books/{author_slug}

URL Parameters

author_slug  string  

The slug of author like 'lovecraft-howard-phillips'.

Query Parameters

per-page  integer optional  

Entities per page, '32' by default.

page  integer optional  

The page number, '1' by default.

GET Serie collection of Author

Series list from one author, find by slug.

Example request:
curl --request GET \
    --get "https://bookshelves.ink/api/api/authors/series/lovecraft-howard-phillips" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bookshelves.ink/api/api/authors/series/lovecraft-howard-phillips"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "title": "Cthulhu : Le Mythe",
            "meta": {
                "slug": "cthulhu-le-mythe-fr",
                "author": "lovecraft-howard-phillips",
                "show": "http://127.0.0.1:8000/api/series/lovecraft-howard-phillips/cthulhu-le-mythe-fr",
                "books": "http://127.0.0.1:8000/api/series/books/lovecraft-howard-phillips/cthulhu-le-mythe-fr"
            },
            "picture": {
                "base": "http://localhost:8000/storage/media/series/1144/conversions/cthulhu-le-mythe-fr-thumbnail.webp",
                "simple": "http://localhost:8000/storage/media/series/1144/conversions/cthulhu-le-mythe-fr-simple.jpg",
                "color": "#806c47"
            },
            "language": "fr",
            "authors": [
                {
                    "name": "Howard Phillips Lovecraft",
                    "meta": {
                        "slug": "lovecraft-howard-phillips",
                        "show": "http://127.0.0.1:8000/api/authors/lovecraft-howard-phillips"
                    }
                }
            ],
            "count": 3
        },
        {
            // ...
        }
    ],
    "links": {
        "first": "http://127.0.0.1:8000/api/authors/series/lovecraft-howard-phillips?page=1",
        "last": "http://127.0.0.1:8000/api/authors/series/lovecraft-howard-phillips?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            { "url": null, "label": "« Previous", "active": false },
            {
                "url": "http://127.0.0.1:8000/api/authors/series/lovecraft-howard-phillips?page=1",
                "label": "1",
                "active": true
            },
            { "url": null, "label": "Next »", "active": false }
        ],
        "path": "http://127.0.0.1:8000/api/authors/series/lovecraft-howard-phillips",
        "per_page": 32,
        "to": 2,
        "total": 2
    }
}

 

Request      

GET api/authors/series/{author_slug}

URL Parameters

author_slug  string  

The slug of author like 'lovecraft-howard-phillips'.

Query Parameters

per-page  integer optional  

Entities per page, '32' by default.

page  integer optional  

The page number, '1' by default.

Book

Endpoint to get Books data.

GET Book collection

WITH PAGINATION

Get all Books ordered by 'title' & Series' 'title'.

Example request:
curl --request GET \
    --get "https://bookshelves.ink/api/api/books" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bookshelves.ink/api/api/books"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "title": "Les montagnes hallucinées",
            "meta": {
                "slug": "les-montagnes-hallucinees-fr",
                "author": "lovecraft-howard-phillips",
                "show": "http://127.0.0.1:8000/api/books/lovecraft-howard-phillips/les-montagnes-hallucinees-fr"
            },
            "authors": [
                {
                    "name": "Howard Phillips Lovecraft",
                    "meta": {
                        "slug": "lovecraft-howard-phillips",
                        "show": "http://127.0.0.1:8000/api/authors/lovecraft-howard-phillips"
                    }
                }
            ],
            "summary": "Outre-monts, outre-tombes ! De memoire d'homme, jamais on ne vit paysages plus hallucinants ! Labyrinthes grouillants de murs, de tours,...",
            "language": "fr",
            "publishDate": "1936-06-14 23:00:00",
            "picture": {
                "base": "http://localhost:8000/storage/media/books/993/conversions/les-montagnes-hallucinees-fr-thumbnail.webp",
                "simple": "http://localhost:8000/storage/media/books/993/conversions/les-montagnes-hallucinees-fr-simple.jpg",
                "color": "#6e7c80"
            },
            "volume": 1,
            "serie": {
                "title": "Les montagnes hallucinées",
                "meta": {
                    "slug": "les-montagnes-hallucinees-fr",
                    "author": "lovecraft-howard-phillips",
                    "show": "http://127.0.0.1:8000/api/series/lovecraft-howard-phillips/les-montagnes-hallucinees-fr"
                }
            }
        },
        {
            // ...
        }
    ],
    "links": {
        "first": "http://127.0.0.1:8000/api/authors/books/lovecraft-howard-phillips?page=1",
        "last": "http://127.0.0.1:8000/api/authors/books/lovecraft-howard-phillips?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            { "url": null, "label": "« Previous", "active": false },
            {
                "url": "http://127.0.0.1:8000/api/authors/books/lovecraft-howard-phillips?page=1",
                "label": "1",
                "active": true
            },
            { "url": null, "label": "Next »", "active": false }
        ],
        "path": "http://127.0.0.1:8000/api/authors/books/lovecraft-howard-phillips",
        "per_page": 32,
        "to": 22,
        "total": 22
    }
}

 

Request      

GET api/books

Query Parameters

per-page  integer optional  

Entities per page, '32' by default.

page  integer optional  

The page number, '1' by default.

all  boolean optional  

To disable pagination, false by default.

lang  string optional  

filters[fr,en] To select specific lang, null by default.

Response

Response Fields

title  string  

Book's title.

GET Book collection latest entries

WITH PAGINATION

Get all Books ordered by date 'created_at'.

Example request:
curl --request GET \
    --get "https://bookshelves.ink/api/api/books/latest" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bookshelves.ink/api/api/books/latest"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "meta": {
                "entity": "book",
                "author": "lovecraft-howard-phillips",
                "slug": "les-montagnes-hallucinees-fr",
                "show": "http://127.0.0.1:8000/api/books/lovecraft-howard-phillips/les-montagnes-hallucinees-fr"
            },
            "title": "Les montagnes hallucinées",
            "authors": [
                {
                    "name": "Howard Phillips Lovecraft",
                    "meta": {
                        "slug": "lovecraft-howard-phillips",
                        "show": "http://127.0.0.1:8000/api/authors/lovecraft-howard-phillips"
                    }
                }
            ],
            "serie": "Les montagnes hallucinées",
            "language": "fr",
            "volume": 1,
            "picture": {
                "base": "http://localhost:8000/storage/media/books/993/conversions/les-montagnes-hallucinees-fr-thumbnail.webp",
                "simple": "http://localhost:8000/storage/media/books/993/conversions/les-montagnes-hallucinees-fr-simple.jpg",
                "original": "http://localhost:8000/storage/media/books/993/les-montagnes-hallucinees-fr.webp",
                "color": "#6e7c80"
            }
        },
        {
            // ...
        }
    ],
    "links": {
        "first": "http://127.0.0.1:8000/api/books/latest?page=1",
        "last": "http://127.0.0.1:8000/api/books/latest?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "« Previous",
                "active": false
            },
            {
                "url": "http://127.0.0.1:8000/api/books/latest?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next »",
                "active": false
            }
        ],
        "path": "http://127.0.0.1:8000/api/books/latest",
        "per_page": 32,
        "to": 10,
        "total": 10
    }
}

 

Request      

GET api/books/latest

Query Parameters

limit  integer optional  

To limit of entities, '10' by default.

per-page  integer optional  

Entities per page, '32' by default.

page  integer optional  

The page number, '1' by default.

GET Book collection of selection

Get all Books selected by team, limited to '10' results (no pagination).

Example request:
curl --request GET \
    --get "https://bookshelves.ink/api/api/books/selection" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bookshelves.ink/api/api/books/selection"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "meta": {
                "entity": "book",
                "author": "arnaud-georges-jean",
                "slug": "les-chasseurs-des-glaces-fr",
                "show": "http://127.0.0.1:8000/api/books/arnaud-georges-jean/les-chasseurs-des-glaces-fr"
            },
            "title": "Les Chasseurs des glaces",
            "authors": [
                {
                    "name": "Georges-Jean Arnaud",
                    "meta": {
                        "slug": "arnaud-georges-jean",
                        "show": "http://127.0.0.1:8000/api/authors/arnaud-georges-jean"
                    }
                }
            ],
            "serie": "La Compagnie des glaces",
            "language": "fr",
            "volume": 4,
            "picture": {
                "base": "http://localhost:8000/storage/media/books/609/conversions/les-chasseurs-des-glaces-fr-thumbnail.webp",
                "original": "http://localhost:8000/storage/media/books/609/les-chasseurs-des-glaces-fr.webp",
                "simple": "http://localhost:8000/storage/media/books/609/conversions/les-chasseurs-des-glaces-fr-simple.jpg",
                "color": "#a19689"
            }
        },
        {
            // ...
        }
    ]
}

 

Request      

GET api/books/selection

GET Book resource

Get details of Book model, find by slug of book and slug of author.

Example request:
curl --request GET \
    --get "https://bookshelves.ink/api/api/books/lovecraft-howard-phillips/les-montagnes-hallucinees-fr" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bookshelves.ink/api/api/books/lovecraft-howard-phillips/les-montagnes-hallucinees-fr"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": {
        "title": "Les montagnes hallucinées",
        "meta": {
            "slug": "les-montagnes-hallucinees-fr",
            "author": "lovecraft-howard-phillips",
            "show": "http:\/\/127.0.0.1:8000\/api\/books\/lovecraft-howard-phillips\/les-montagnes-hallucinees-fr"
        },
        "authors": [
            {
                "name": "Howard Phillips Lovecraft",
                "meta": {
                    "slug": "lovecraft-howard-phillips",
                    "show": "http:\/\/127.0.0.1:8000\/api\/authors\/lovecraft-howard-phillips"
                }
            }
        ],
        "summary": "Outre-monts, outre-tombes ! De memoire d'homme, jamais on ne vit paysages plus hallucinants ! Labyrinthes grouillants de murs, de tours,...",
        "language": "fr",
        "publishDate": "1936-06-14 23:00:00",
        "picture": {
            "base": "http:\/\/localhost:8000\/storage\/media\/books\/993\/conversions\/les-montagnes-hallucinees-fr-thumbnail.webp",
            "openGraph": "http:\/\/localhost:8000\/storage\/media\/books\/993\/conversions\/les-montagnes-hallucinees-fr-open_graph.jpg",
            "simple": "http:\/\/localhost:8000\/storage\/media\/books\/993\/conversions\/les-montagnes-hallucinees-fr-simple.jpg",
            "original": "http:\/\/localhost:8000\/storage\/media\/books\/993\/les-montagnes-hallucinees-fr.webp",
            "color": "#6e7c80"
        },
        "volume": 1,
        "serie": {
            "title": "Les montagnes hallucinées",
            "meta": {
                "slug": "les-montagnes-hallucinees-fr",
                "author": "lovecraft-howard-phillips",
                "show": "http:\/\/127.0.0.1:8000\/api\/series\/lovecraft-howard-phillips\/les-montagnes-hallucinees-fr",
                "books": "http:\/\/127.0.0.1:8000\/api\/series\/books\/lovecraft-howard-phillips\/les-montagnes-hallucinees-fr"
            },
            "picture": {
                "base": "http:\/\/localhost:8000\/storage\/media\/series\/1178\/conversions\/les-montagnes-hallucinees-fr-thumbnail.webp",
                "simple": "http:\/\/localhost:8000\/storage\/media\/series\/1178\/conversions\/les-montagnes-hallucinees-fr-simple.jpg",
                "color": "#6e7c80"
            },
            "language": "fr",
            "authors": [
                {
                    "name": "Howard Phillips Lovecraft",
                    "meta": {
                        "slug": "lovecraft-howard-phillips",
                        "show": "http:\/\/127.0.0.1:8000\/api\/authors\/lovecraft-howard-phillips"
                    }
                }
            ],
            "count": null
        },
        "description": "<p>Outre-monts, outre-tombes ! De mémoire d'homme, jamais on ne vit paysages plus hallucinants ! Labyrinthes grouillants de murs, de tours, de minarets fabuleux qui surgissent de vapeurs glacées. Une expédition au pied du volcan Erebus dans l'Antarctique met au jour ce site maléfique. Mais Lake, qui l'a organisé disparaît avec toute son équipe... Images d'un autre monde ! Elles obsèdent aussi Nathaniel Peaslee jusque dans ses rêves. Lui, situe les ruines près du tropique du Capricorne. Une monstrueuse cité de pierre noire dont les fondements descendent au centre de la Terre... Les deux hommes ne se connaissent pas, ils vivent à des époques différentes. Tous deux pourtant sont hantés par ces êtres qui ont vécu à l'époque des dinosaures et se déchaînent de temps à autre. Maître des vents furieux et des musiques démoniaques. Prédateurs ? Esprits migrants ? Créatures effroyables ? Des Anciens qu'il ne fait pas bon rencontrer...<\/p>\n",
        "identifier": {
            "isbn": null,
            "isbn13": "9782290043264",
            "doi": null,
            "amazon": null,
            "google": null
        },
        "pageCount": null,
        "maturityRating": null,
        "publisher": {
            "name": "Bragelonne",
            "count": 52,
            "meta": {
                "slug": "bragelonne",
                "books": "http:\/\/127.0.0.1:8000\/api\/publishers\/books\/bragelonne",
                "show": "http:\/\/127.0.0.1:8000\/api\/publishers\/bragelonne"
            }
        },
        "tags": [],
        "genres": [
            {
                "name": "Science fiction",
                "type": "genre",
                "count": null,
                "meta": {
                    "slug": "science-fiction",
                    "books": "http:\/\/127.0.0.1:8000\/api\/tags\/books\/science-fiction",
                    "show": "http:\/\/127.0.0.1:8000\/api\/tags\/science-fiction"
                }
            }
        ],
        "epub": {
            "name": "lovecraft-howard-phillips_les-montagnes-hallucinees-fr-01_les-montagnes-hallucinees-fr.epub",
            "size": "260.25 Ko",
            "download": "http:\/\/127.0.0.1:8000\/api\/download\/book\/lovecraft-howard-phillips\/les-montagnes-hallucinees-fr"
        },
        "googleBook": null,
        "isFavorite": false,
        "comments": [
            {
                "meta": {
                    "type": "comment",
                    "for": "book",
                    "author": "lovecraft-howard-phillips",
                    "slug": "les-montagnes-hallucinees-fr"
                },
                "id": 3,
                "text": "Quia eligendi cum assumenda illum et facilis sed. Sunt sint quo molestiae aliquid repellat dolorum assumenda. Accusamus error provident esse explicabo culpa qui ex. Velit quaerat est autem nihil est quia.",
                "rating": null,
                "user": {
                    "id": 2,
                    "name": "Edward",
                    "picture": "https:\/\/eu.ui-avatars.com\/api\/?name=Edward&color=7F9CF5&background=EBF4FF"
                },
                "createdAt": "2021-06-20T13:32:19.000000Z",
                "updatedAt": "2021-06-20T13:32:19.000000Z",
                "title": "Les montagnes hallucinées",
                "picture": "http:\/\/localhost:8000\/storage\/media\/books\/993\/conversions\/les-montagnes-hallucinees-fr-thumbnail.webp"
            }
        ]
    }
}
 

Request      

GET api/books/{author_slug}/{book_slug}

URL Parameters

author_slug  string  

The slug of author like 'lovecraft-howard-phillips'.

book_slug  string  

The slug of book like 'les-montagnes-hallucinees-fr'.

WITH PAGINATION

Get all Series/Books related to selected Book from Tag/Genre.

Example request:
curl --request GET \
    --get "https://bookshelves.ink/api/api/books/related/lovecraft-howard-phillips/les-montagnes-hallucinees-fr" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bookshelves.ink/api/api/books/related/lovecraft-howard-phillips/les-montagnes-hallucinees-fr"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "meta": {
                "entity": "serie",
                "author": "jubert-herve",
                "slug": "beauregard-fr"
            },
            "title": "Beauregard",
            "authors": [
                {
                    "name": "Hervé Jubert",
                    "meta": {
                        "slug": "jubert-herve",
                        "show": "http://127.0.0.1:8000/api/authors/jubert-herve"
                    }
                }
            ],
            "volume": null,
            "picture": {
                "base": "http://localhost:8000/storage/media/series/1133/conversions/beauregard-fr-thumbnail.webp",
                "original": "http://localhost:8000/storage/media/series/1133/beauregard-fr.webp",
                "openGraph": "http://localhost:8000/storage/media/series/1133/conversions/beauregard-fr-open_graph.jpg",
                "color": "#564923"
            }
        },
        {
            // ...
        }
    ],
    "links": {
        "first": "http://127.0.0.1:8000/api/books/related/lovecraft-howard-phillips/les-montagnes-hallucinees-fr?page=1",
        "last": "http://127.0.0.1:8000/api/books/related/lovecraft-howard-phillips/les-montagnes-hallucinees-fr?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "http://127.0.0.1:8000/api/books/related/lovecraft-howard-phillips/les-montagnes-hallucinees-fr?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "http://127.0.0.1:8000/api/books/related/lovecraft-howard-phillips/les-montagnes-hallucinees-fr",
        "per_page": 32,
        "to": 23,
        "total": 23
    }
}

 

Count

Endpoint to get count of entities.

GET Count

Get count of entities for a selected collection. Available for Book, Serie and Author.

Example request:
curl --request GET \
    --get "https://bookshelves.ink/api/api/count?entity=book" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bookshelves.ink/api/api/count"
);

const params = {
    "entity": "book",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
content-type: text/html; charset=UTF-8
cache-control: no-cache, private
x-ratelimit-limit: 5000
x-ratelimit-remaining: 4999
vary: Origin
 

146
 

Request      

GET api/count

Query Parameters

entity  string  

filters[book,serie,author] To get count for an entity.

Download

Endpoint to download EPUB/ZIP.

GET Book EPUB

Content-Type application/epub+zip

Download Book EPUB, find by slug of book and slug of author.

Example request:
curl --request GET \
    --get "https://bookshelves.ink/api/api/download/book/lovecraft-howard-phillips/les-montagnes-hallucinees-fr" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bookshelves.ink/api/api/download/book/lovecraft-howard-phillips/les-montagnes-hallucinees-fr"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{}
 

Request      

GET api/download/book/{author_slug}/{book_slug}

URL Parameters

author_slug  string  

The slug of author like 'lovecraft-howard-phillips'.

book_slug  string  

The slug of book like 'les-montagnes-hallucinees-fr'.

GET Serie ZIP

Content-Type application/octet-stream

Download Serie ZIP, find by slug of serie and slug of author.

Example request:
curl --request GET \
    --get "https://bookshelves.ink/api/api/download/serie/lovecraft-howard-phillips/les-montagnes-hallucinees-fr" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bookshelves.ink/api/api/download/serie/lovecraft-howard-phillips/les-montagnes-hallucinees-fr"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{}
 

Request      

GET api/download/serie/{author_slug}/{serie_slug}

URL Parameters

author_slug  string  

The slug of author like 'lovecraft-howard-phillips'.

serie_slug  string  

The slug of book like 'les-montagnes-hallucinees-fr'.

GET Author ZIP

Content-Type application/octet-stream

Download Author ZIP, find by slug of author.

Example request:
curl --request GET \
    --get "https://bookshelves.ink/api/api/download/author/lovecraft-howard-phillips" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bookshelves.ink/api/api/download/author/lovecraft-howard-phillips"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{}
 

Request      

GET api/download/author/{author_slug}

URL Parameters

author_slug  string  

The slug of author like 'lovecraft-howard-phillips'.

Language

Endpoint to get Languages data.

GET Language collection

Get all languages available.

Example request:
curl --request GET \
    --get "https://bookshelves.ink/api/api/languages" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bookshelves.ink/api/api/languages"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 5000
x-ratelimit-remaining: 4998
vary: Origin
 

{
    "data": [
        {
            "name": "French",
            "meta": {
                "slug": "fr"
            }
        },
        {
            "name": "English",
            "meta": {
                "slug": "en"
            }
        }
    ]
}
 

Request      

GET api/languages

Publisher

Endpoint to get Publishers data.

GET Publisher collection

WITH PAGINATION

Get all Publishers ordered by 'name'.

Example request:
curl --request GET \
    --get "https://bookshelves.ink/api/api/publishers" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bookshelves.ink/api/api/publishers"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "name": "Bragelonne",
            "count": 3,
            "meta": {
                "slug": "bragelonne",
                "books": "http://localhost:8000/api/publishers/books/bragelonne",
                "show": "http://localhost:8000/api/publishers/bragelonne"
            }
        },
        {
            // ...
        }
    ],
    "links": {
        "first": "http://localhost:8000/api/publishers?page=1",
        "last": "http://localhost:8000/api/publishers?page=3",
        "prev": null,
        "next": "http://localhost:8000/api/publishers?page=2"
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 3,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "http://localhost:8000/api/publishers?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": "http://localhost:8000/api/publishers?page=2",
                "label": "2",
                "active": false
            },
            {
                "url": "http://localhost:8000/api/publishers?page=3",
                "label": "3",
                "active": false
            },
            {
                "url": "http://localhost:8000/api/publishers?page=2",
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "http://localhost:8000/api/publishers",
        "per_page": 32,
        "to": 32,
        "total": 73
    }
}

 

Request      

GET api/publishers

Query Parameters

per-page  integer optional  

Entities per page, '32' by default.

page  integer optional  

The page number, '1' by default.

GET Publisher resource

Details for one Publisher, find by slug.

Example request:
curl --request GET \
    --get "https://bookshelves.ink/api/api/publishers/bragelonne" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bookshelves.ink/api/api/publishers/bragelonne"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": {
        "name": "Bragelonne",
        "count": 52,
        "meta": {
            "slug": "bragelonne",
            "books": "http:\/\/localhost:8000\/api\/publishers\/books\/bragelonne",
            "show": "http:\/\/localhost:8000\/api\/publishers\/bragelonne"
        }
    }
}
 

Request      

GET api/publishers/{slug}

URL Parameters

slug  string  

The slug of author like 'bragelonne'.

GET Books collection of Publisher

WITH PAGINATION

Get all Books of selected Publisher ordered by Books' 'title'.

Example request:
curl --request GET \
    --get "https://bookshelves.ink/api/api/publishers/books/bragelonne" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bookshelves.ink/api/api/publishers/books/bragelonne"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "title": "L'étoile du matin",
            "meta": {
                "slug": "letoile-du-matin-fr",
                "author": "gemmell-david",
                "show": "http://localhost:8000/api/books/gemmell-david/letoile-du-matin-fr"
            },
            "authors": [
                {
                    "name": "David Gemmell",
                    "meta": {
                        "slug": "gemmell-david",
                        "show": "http://localhost:8000/api/authors/gemmell-david"
                    }
                }
            ],
            "summary": "Je me nomme Owen Odell et je vais mourir. Mais avant ca, je voudrais vous raconter l'histoire telle qu'elle s'est reellement pass...",
            "language": "fr",
            "publishDate": "2014-11-07 16:58:34",
            "picture": {
                "base": "http://localhost:8000/storage/media/books/831/conversions/letoile-du-matin-fr-thumbnail.webp",
                "simple": "http://localhost:8000/storage/media/books/831/conversions/letoile-du-matin-fr-simple.jpg",
                "color": "#61605b"
            },
            "volume": 0,
            "serie": null
        },
        {
            // ...
        }
    ],
    "links": {
        "first": "http://localhost:8000/api/publishers/books/bragelonne?page=1",
        "last": "http://localhost:8000/api/publishers/books/bragelonne?page=2",
        "prev": null,
        "next": "http://localhost:8000/api/publishers/books/bragelonne?page=2"
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 2,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "http://localhost:8000/api/publishers/books/bragelonne?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": "http://localhost:8000/api/publishers/books/bragelonne?page=2",
                "label": "2",
                "active": false
            },
            {
                "url": "http://localhost:8000/api/publishers/books/bragelonne?page=2",
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "http://localhost:8000/api/publishers/books/bragelonne",
        "per_page": 32,
        "to": 32,
        "total": 52
    }
}

 

Request      

GET api/publishers/books/{publisher_slug}

URL Parameters

publisher_slug  string  

The slug of author like 'bragelonne'.

Query Parameters

per-page  integer optional  

Entities per page, '32' by default.

page  integer optional  

The page number, '1' by default.

Search

Get Authors/Series/Books entities ordered by entity and lastname / title. Query can be series' title, book's title, author's firstname or lastname.

Example request:
curl --request GET \
    --get "https://bookshelves.ink/api/api/search?q=lovecraft" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bookshelves.ink/api/api/search"
);

const params = {
    "q": "lovecraft",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "meta": {
                "entity": "author",
                "author": null,
                "slug": "lovecraft-howard-phillips",
                "show": "http://127.0.0.1:8000/api/authors/lovecraft-howard-phillips"
            },
            "title": "Howard Phillips Lovecraft",
            "authors": null,
            "serie": null,
            "language": null,
            "volume": null,
            "picture": {
                "base": "http://localhost:8000/storage/media/authors/1248/conversions/lovecraft-howard-phillips-thumbnail.webp",
                "original": null,
                "simple": "http://localhost:8000/storage/media/authors/1248/conversions/lovecraft-howard-phillips-simple.jpg",
                "color": "#8a817b"
            }
        },
        {
            "meta": {
                "entity": "serie",
                "author": "lovecraft-howard-phillips",
                "slug": "cthulhu-le-mythe-fr",
                "show": "http://127.0.0.1:8000/api/series/lovecraft-howard-phillips/cthulhu-le-mythe-fr"
            },
            "title": "Cthulhu : Le Mythe",
            "authors": [
                {
                    "name": "Howard Phillips Lovecraft",
                    "meta": {
                        "slug": "lovecraft-howard-phillips",
                        "show": "http://127.0.0.1:8000/api/authors/lovecraft-howard-phillips"
                    }
                }
            ],
            "serie": null,
            "language": "fr",
            "volume": null,
            "picture": {
                "base": "http://localhost:8000/storage/media/series/1144/conversions/cthulhu-le-mythe-fr-thumbnail.webp",
                "original": "http://localhost:8000/storage/media/series/1144/cthulhu-le-mythe-fr.webp",
                "simple": "http://localhost:8000/storage/media/series/1144/conversions/cthulhu-le-mythe-fr-simple.jpg",
                "color": "#806c47"
            }
        },
        {
            "meta": {
                "entity": "book",
                "author": "lovecraft-howard-phillips",
                "slug": "laffaire-charles-dexter-ward-fr",
                "show": "http://127.0.0.1:8000/api/books/lovecraft-howard-phillips/laffaire-charles-dexter-ward-fr"
            },
            "title": "L'Affaire Charles Dexter Ward",
            "authors": [
                {
                    "name": "Howard Phillips Lovecraft",
                    "meta": {
                        "slug": "lovecraft-howard-phillips",
                        "show": "http://127.0.0.1:8000/api/authors/lovecraft-howard-phillips"
                    }
                }
            ],
            "serie": null,
            "language": "fr",
            "volume": 0,
            "picture": {
                "base": "http://localhost:8000/storage/media/books/975/conversions/laffaire-charles-dexter-ward-fr-thumbnail.webp",
                "original": "http://localhost:8000/storage/media/books/975/laffaire-charles-dexter-ward-fr.webp",
                "simple": "http://localhost:8000/storage/media/books/975/conversions/laffaire-charles-dexter-ward-fr-simple.jpg",
                "color": "#f0d9b6"
            }
        },
        {
            // ...
        }
    ]
}

 

GET Entities collection (advanced)

Get Authors/Series/Books entities ordered by entity and lastname / title.

Example request:
curl --request GET \
    --get "https://bookshelves.ink/api/api/search/advanced?q=lovecraft" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bookshelves.ink/api/api/search/advanced"
);

const params = {
    "q": "lovecraft",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "meta": {
                "entity": "author",
                "author": null,
                "slug": "lovecraft-howard-phillips",
                "show": "http://127.0.0.1:8000/api/authors/lovecraft-howard-phillips"
            },
            "title": "Howard Phillips Lovecraft",
            "authors": null,
            "serie": null,
            "language": null,
            "volume": null,
            "picture": {
                "base": "http://localhost:8000/storage/media/authors/1248/conversions/lovecraft-howard-phillips-thumbnail.webp",
                "original": null,
                "simple": "http://localhost:8000/storage/media/authors/1248/conversions/lovecraft-howard-phillips-simple.jpg",
                "color": "#8a817b"
            }
        },
        {
            "meta": {
                "entity": "serie",
                "author": "lovecraft-howard-phillips",
                "slug": "cthulhu-le-mythe-fr",
                "show": "http://127.0.0.1:8000/api/series/lovecraft-howard-phillips/cthulhu-le-mythe-fr"
            },
            "title": "Cthulhu : Le Mythe",
            "authors": [
                {
                    "name": "Howard Phillips Lovecraft",
                    "meta": {
                        "slug": "lovecraft-howard-phillips",
                        "show": "http://127.0.0.1:8000/api/authors/lovecraft-howard-phillips"
                    }
                }
            ],
            "serie": null,
            "language": "fr",
            "volume": null,
            "picture": {
                "base": "http://localhost:8000/storage/media/series/1144/conversions/cthulhu-le-mythe-fr-thumbnail.webp",
                "original": "http://localhost:8000/storage/media/series/1144/cthulhu-le-mythe-fr.webp",
                "simple": "http://localhost:8000/storage/media/series/1144/conversions/cthulhu-le-mythe-fr-simple.jpg",
                "color": "#806c47"
            }
        },
        {
            "meta": {
                "entity": "book",
                "author": "lovecraft-howard-phillips",
                "slug": "laffaire-charles-dexter-ward-fr",
                "show": "http://127.0.0.1:8000/api/books/lovecraft-howard-phillips/laffaire-charles-dexter-ward-fr"
            },
            "title": "L'Affaire Charles Dexter Ward",
            "authors": [
                {
                    "name": "Howard Phillips Lovecraft",
                    "meta": {
                        "slug": "lovecraft-howard-phillips",
                        "show": "http://127.0.0.1:8000/api/authors/lovecraft-howard-phillips"
                    }
                }
            ],
            "serie": null,
            "language": "fr",
            "volume": 0,
            "picture": {
                "base": "http://localhost:8000/storage/media/books/975/conversions/laffaire-charles-dexter-ward-fr-thumbnail.webp",
                "original": "http://localhost:8000/storage/media/books/975/laffaire-charles-dexter-ward-fr.webp",
                "simple": "http://localhost:8000/storage/media/books/975/conversions/laffaire-charles-dexter-ward-fr-simple.jpg",
                "color": "#f0d9b6"
            }
        },
        {
            // ...
        }
    ]
}

 

Request      

GET api/search/advanced

Query Parameters

q  string  

Query search, null by default.

Serie

Endpoint to get Series data.

GET Serie collection

WITH PAGINATION

Get all Series ordered by 'title'.

Example request:
curl --request GET \
    --get "https://bookshelves.ink/api/api/series" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bookshelves.ink/api/api/series"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "title": "A comme Association",
            "meta": {
                "slug": "a-comme-association-fr",
                "author": "bottero-pierre",
                "show": "http://localhost:8000/api/series/bottero-pierre/a-comme-association-fr",
                "books": "http://localhost:8000/api/series/books/bottero-pierre/a-comme-association-fr"
            },
            "picture": {
                "base": "http://localhost:8000/storage/media/series/1127/conversions/a-comme-association-fr-thumbnail.webp",
                "simple": "http://localhost:8000/storage/media/series/1127/conversions/a-comme-association-fr-simple.jpg",
                "color": "#26366b"
            },
            "language": "fr",
            "authors": [
                {
                    "name": "Pierre Bottero",
                    "meta": {
                        "slug": "bottero-pierre",
                        "show": "http://localhost:8000/api/authors/bottero-pierre"
                    }
                },
                {
                    "name": "Erik L'Homme",
                    "meta": {
                        "slug": "lhomme-erik",
                        "show": "http://localhost:8000/api/authors/lhomme-erik"
                    }
                }
            ],
            "count": 8
        },
        {
            // ...
        }
    ],
    "links": {
        "first": "http://localhost:8000/api/series?page=1",
        "last": "http://localhost:8000/api/series?page=3",
        "prev": null,
        "next": "http://localhost:8000/api/series?page=2"
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 3,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "http://localhost:8000/api/series?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": "http://localhost:8000/api/series?page=2",
                "label": "2",
                "active": false
            },
            {
                "url": "http://localhost:8000/api/series?page=3",
                "label": "3",
                "active": false
            },
            {
                "url": "http://localhost:8000/api/series?page=2",
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "http://localhost:8000/api/series",
        "per_page": 32,
        "to": 32,
        "total": 80
    }
}

 

Request      

GET api/series

Query Parameters

per-page  integer optional  

Entities per page, '32' by default.

page  integer optional  

The page number, '1' by default.

all  boolean optional  

To disable pagination, false by default.

GET Serie resource

Get details of Serie model, find by slug of serie and slug of author.

Example request:
curl --request GET \
    --get "https://bookshelves.ink/api/api/series/lovecraft-howard-phillips/les-montagnes-hallucinees-fr" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bookshelves.ink/api/api/series/lovecraft-howard-phillips/les-montagnes-hallucinees-fr"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": {
        "title": "Les montagnes hallucinées",
        "meta": {
            "slug": "les-montagnes-hallucinees-fr",
            "author": "lovecraft-howard-phillips",
            "show": "http:\/\/localhost:8000\/api\/series\/lovecraft-howard-phillips\/les-montagnes-hallucinees-fr",
            "books": "http:\/\/localhost:8000\/api\/series\/books\/lovecraft-howard-phillips\/les-montagnes-hallucinees-fr"
        },
        "picture": {
            "base": "http:\/\/localhost:8000\/storage\/media\/series\/1178\/conversions\/les-montagnes-hallucinees-fr-thumbnail.webp",
            "openGraph": "http:\/\/localhost:8000\/storage\/media\/series\/1178\/conversions\/les-montagnes-hallucinees-fr-open_graph.jpg",
            "simple": "http:\/\/localhost:8000\/storage\/media\/series\/1178\/conversions\/les-montagnes-hallucinees-fr-simple.jpg",
            "color": "#6e7c80"
        },
        "language": "fr",
        "authors": [
            {
                "name": "Howard Phillips Lovecraft",
                "meta": {
                    "slug": "lovecraft-howard-phillips",
                    "show": "http:\/\/localhost:8000\/api\/authors\/lovecraft-howard-phillips"
                }
            }
        ],
        "count": 1,
        "description": "Les Montagnes hallucinees, ou Montagnes de la folie , est un roman court de science-fiction de l'ecrivain americain Howard Phillips Lovecraft, initialement publie dans les numeros de fevrier, mars et avril 1936 du magazine Astounding Stories. Redige par Lovecraft en fevrier et mars 1931, ce roman a connu de nombreu...",
        "link": "https:\/\/fr.wikipedia.org\/wiki\/Les_Montagnes_hallucin%C3%A9es",
        "tags": [],
        "genres": [
            {
                "name": "Science fiction",
                "type": "genre",
                "count": null,
                "meta": {
                    "slug": "science-fiction",
                    "books": "http:\/\/localhost:8000\/api\/tags\/books\/science-fiction",
                    "show": "http:\/\/localhost:8000\/api\/tags\/science-fiction"
                }
            }
        ],
        "download": "http:\/\/localhost:8000\/api\/download\/serie\/lovecraft-howard-phillips\/les-montagnes-hallucinees-fr",
        "size": "260.25 Ko",
        "isFavorite": false,
        "comments": []
    }
}
 

Request      

GET api/series/{author_slug}/{serie_slug}

URL Parameters

author_slug  string  

The slug of author like 'lovecraft-howard-phillips'.

serie_slug  string  

The slug of serie like 'les-montagnes-hallucinees-fr'.

GET Book collection of Serie

Books list from one Serie, find by slug.

Example request:
curl --request GET \
    --get "https://bookshelves.ink/api/api/series/books/lovecraft-howard-phillips/les-montagnes-hallucinees-fr" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bookshelves.ink/api/api/series/books/lovecraft-howard-phillips/les-montagnes-hallucinees-fr"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "title": "Les montagnes hallucinées",
            "meta": {
                "slug": "les-montagnes-hallucinees-fr",
                "author": "lovecraft-howard-phillips",
                "show": "http:\/\/localhost:8000\/api\/books\/lovecraft-howard-phillips\/les-montagnes-hallucinees-fr"
            },
            "authors": [
                {
                    "name": "Howard Phillips Lovecraft",
                    "meta": {
                        "slug": "lovecraft-howard-phillips",
                        "show": "http:\/\/localhost:8000\/api\/authors\/lovecraft-howard-phillips"
                    }
                }
            ],
            "summary": "Outre-monts, outre-tombes ! De memoire d'homme, jamais on ne vit paysages plus hallucinants ! Labyrinthes grouillants de murs, de tours,...",
            "language": "fr",
            "publishDate": "1936-06-14 23:00:00",
            "picture": {
                "base": "http:\/\/localhost:8000\/storage\/media\/books\/993\/conversions\/les-montagnes-hallucinees-fr-thumbnail.webp",
                "simple": "http:\/\/localhost:8000\/storage\/media\/books\/993\/conversions\/les-montagnes-hallucinees-fr-simple.jpg",
                "color": "#6e7c80"
            },
            "volume": 1,
            "serie": {
                "title": "Les montagnes hallucinées",
                "meta": {
                    "slug": "les-montagnes-hallucinees-fr",
                    "author": "lovecraft-howard-phillips",
                    "show": "http:\/\/localhost:8000\/api\/series\/lovecraft-howard-phillips\/les-montagnes-hallucinees-fr"
                }
            }
        }
    ],
    "links": {
        "first": "http:\/\/localhost:8000\/api\/series\/books\/lovecraft-howard-phillips\/les-montagnes-hallucinees-fr?page=1",
        "last": "http:\/\/localhost:8000\/api\/series\/books\/lovecraft-howard-phillips\/les-montagnes-hallucinees-fr?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "http:\/\/localhost:8000\/api\/series\/books\/lovecraft-howard-phillips\/les-montagnes-hallucinees-fr?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "http:\/\/localhost:8000\/api\/series\/books\/lovecraft-howard-phillips\/les-montagnes-hallucinees-fr",
        "per_page": 32,
        "to": 1,
        "total": 1
    }
}
 

Request      

GET api/series/books/{author_slug}/{serie_slug}

URL Parameters

author_slug  string  

The slug of author like 'lovecraft-howard-phillips'.

serie_slug  string  

The slug of serie like 'les-montagnes-hallucinees-fr'.

Query Parameters

per-page  integer optional  

Entities per page, '32' by default.

page  integer optional  

The page number, '1' by default.

GET Book collection of Serie (from volume)

Books list from one Serie, find by slug from volume and limited to 10 results.

Example request:
curl --request GET \
    --get "https://bookshelves.ink/api/api/series/books/1/lovecraft-howard-phillips/les-montagnes-hallucinees-fr" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bookshelves.ink/api/api/series/books/1/lovecraft-howard-phillips/les-montagnes-hallucinees-fr"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "meta": {
                "entity": "book",
                "author": "lovecraft-howard-phillips",
                "slug": "les-montagnes-hallucinees-fr"
            },
            "title": "Les montagnes hallucinées",
            "authors": [
                {
                    "name": "Howard Phillips Lovecraft",
                    "meta": {
                        "slug": "lovecraft-howard-phillips",
                        "show": "http:\/\/localhost:8000\/api\/authors\/lovecraft-howard-phillips"
                    }
                }
            ],
            "volume": 1,
            "picture": {
                "base": "http:\/\/localhost:8000\/storage\/media\/books\/993\/conversions\/les-montagnes-hallucinees-fr-thumbnail.webp",
                "original": "http:\/\/localhost:8000\/storage\/media\/books\/993\/les-montagnes-hallucinees-fr.webp",
                "openGraph": "http:\/\/localhost:8000\/storage\/media\/books\/993\/conversions\/les-montagnes-hallucinees-fr-open_graph.jpg",
                "color": "#6e7c80"
            }
        }
    ]
}
 

Request      

GET api/series/books/{volume}/{author_slug}/{serie_slug}

URL Parameters

author_slug  string  

The slug of author like 'lovecraft-howard-phillips'.

serie_slug  string  

The slug of serie like 'les-montagnes-hallucinees-fr'.

Tag

GET Tag collection

Get all Tags ordered by 'name'.

Example request:
curl --request GET \
    --get "https://bookshelves.ink/api/api/tags" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bookshelves.ink/api/api/tags"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "name": "A_lire",
            "type": "tag",
            "count": 1,
            "meta": {
                "slug": "a-lire",
                "books": "http://localhost:8000/api/tags/books/a-lire",
                "show": "http://localhost:8000/api/tags/a-lire"
            }
        },
        {
            // ...
        }
    ]
}

 

Request      

GET api/tags

Query Parameters

type  string optional  

filters[tag,genre] Type of Tag, 'tag' by default.

Response

Response Fields

name  string  

Tag's name.

GET Tag resrouce

Get Tag details.

Example request:
curl --request GET \
    --get "https://bookshelves.ink/api/api/tags/{id}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bookshelves.ink/api/api/tags/{id}"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "meta": {
                "entity": "book",
                "author": "genefort-laurent",
                "slug": "les-peaux-epaisses-fr",
                "show": "http:\/\/localhost:8000\/api\/books\/genefort-laurent\/les-peaux-epaisses-fr"
            },
            "title": "Les peaux-épaisses",
            "authors": [
                {
                    "name": "Laurent Genefort",
                    "meta": {
                        "slug": "genefort-laurent",
                        "show": "http:\/\/localhost:8000\/api\/authors\/genefort-laurent"
                    }
                }
            ],
            "serie": null,
            "language": "fr",
            "volume": 0,
            "picture": {
                "base": "http:\/\/localhost:8000\/storage\/media\/books\/866\/conversions\/les-peaux-epaisses-fr-thumbnail.webp",
                "original": "http:\/\/localhost:8000\/storage\/media\/books\/866\/les-peaux-epaisses-fr.webp",
                "simple": "http:\/\/localhost:8000\/storage\/media\/books\/866\/conversions\/les-peaux-epaisses-fr-simple.jpg",
                "color": "#333152"
            }
        }
    ],
    "links": {
        "first": "http:\/\/localhost:8000\/api\/tags\/books\/anticipation?page=1",
        "last": "http:\/\/localhost:8000\/api\/tags\/books\/anticipation?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "http:\/\/localhost:8000\/api\/tags\/books\/anticipation?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "http:\/\/localhost:8000\/api\/tags\/books\/anticipation",
        "per_page": 32,
        "to": 1,
        "total": 1
    }
}
 

Request      

GET api/tags/{id}

Query Parameters

type  string optional  

filters[tag,genre] Type of Tag, 'tag' by default.

Response

Response Fields

name  string  

Tag's name.

GET Book collection of Tag

Get all Books of selected Tag.

Example request:
curl --request GET \
    --get "https://bookshelves.ink/api/api/tags/books/&#039;anticipation&#039;" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bookshelves.ink/api/api/tags/books/&#039;anticipation&#039;"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):



 

Request      

GET api/tags/books/{tag}

URL Parameters

tag  string optional  

Slug of Tag.