A static API to discover inspiring books for ambitious full-stack developers
The base URL of the API is https://fullStackbulletin.github.io/fullstack-books
.
API Documentation is available as OpenAPI specification:
Version 1.0.0
A collection of books curated for full-stack developers and aspiring ones. Brought to you by FullStackBulletin
Method | Path | Description |
---|---|---|
GET | /authors/ids.json | Retrieve all the ids of the available book authors |
GET | /authors/all.json | Retrieve all the available book authors |
GET | /authors/stats.json | Retrieve stats about the available book authors |
GET | /authors/{authorId}.json | Retrieve the details of a given author |
GET | /books/ids.json | Retrieve all the ids of the available books |
GET | /books/all.json | Retrieve all the available books |
GET | /books/stats.json | Retrieve stats about the available books |
GET | /books/{bookId}.json | Retrieve the details of a given book |
Name | Path | Description |
---|---|---|
AuthorIDs | #/components/schemas/AuthorIDs | |
Stats | #/components/schemas/Stats | |
Author | #/components/schemas/Author | |
AuthorWithBooks | #/components/schemas/AuthorWithBooks | |
BookIDs | #/components/schemas/BookIDs | |
Book | #/components/schemas/Book |
-
Summary
Retrieve all the ids of the available book authors -
Description
Retrieve all the ids of the available book authors
- 200 OK
application/json
[]
-
Summary
Retrieve all the available book authors -
Description
Retrieve all the available book authors
- 200 OK
application/json
{
name?: string
slug?: string
url?: string
}[]
-
Summary
Retrieve stats about the available book authors -
Description
Retrieve stats about the available book authors
- 200 OK
application/json
{
total?: number
all?: string
ids?: string
urlPrefix?: string
}
-
Summary
Retrieve the details of a given author -
Description
Retrieve the details of a given author
- 200 OK
application/json
{
name?: string
slug?: string
url?: string
books: {
slug?: string
title?: string
subtitle?: string
edition?: number
authors: {
name?: string
slug?: string
url?: string
}
cover?: string
links: {
amazon_us?: string
amazon_uk?: string
free?: string
}
description?: string
url?: string
descriptionHtml?: string
}[]
}
-
Summary
Retrieve all the ids of the available books -
Description
Retrieve all the ids of the available books
- 200 OK
application/json
[]
-
Summary
Retrieve all the available books -
Description
Retrieve all the available books
- 200 OK
application/json
{
slug?: string
title?: string
subtitle?: string
edition?: number
authors: {
name?: string
slug?: string
url?: string
}
cover?: string
links: {
amazon_us?: string
amazon_uk?: string
free?: string
}
description?: string
url?: string
descriptionHtml?: string
}[]
-
Summary
Retrieve stats about the available books -
Description
Retrieve stats about the available books
- 200 OK
application/json
{
total?: number
all?: string
ids?: string
urlPrefix?: string
}
-
Summary
Retrieve the details of a given book -
Description
Retrieve the details of a given book
- 200 OK
application/json
{
slug?: string
title?: string
subtitle?: string
edition?: number
authors: {
name?: string
slug?: string
url?: string
}
cover?: string
links: {
amazon_us?: string
amazon_uk?: string
free?: string
}
description?: string
url?: string
descriptionHtml?: string
}
[]
{
total?: number
all?: string
ids?: string
urlPrefix?: string
}
{
name?: string
slug?: string
url?: string
}
{
name?: string
slug?: string
url?: string
books: {
slug?: string
title?: string
subtitle?: string
edition?: number
authors: {
name?: string
slug?: string
url?: string
}
cover?: string
links: {
amazon_us?: string
amazon_uk?: string
free?: string
}
description?: string
url?: string
descriptionHtml?: string
}[]
}
[]
{
slug?: string
title?: string
subtitle?: string
edition?: number
authors: {
name?: string
slug?: string
url?: string
}
cover?: string
links: {
amazon_us?: string
amazon_uk?: string
free?: string
}
description?: string
url?: string
descriptionHtml?: string
}
If you want to suggest a new book here's how you can do that.
- Fork this repository
- Edit the file
src/books.yml
and append the new book at the bottom (make sure to follow the spec by looking at the other books). - Make sure to place the cover picture in the
src/covers
folder and reference it in thecover
field of the book. Please follow the naming convention and keep the file size small. - Run
npm run test && npm run build
- If all looks good, commit your changes
- Open a PR against the original repository
If the book is available on Amazon, you can use the following command to import the book details:
pnpm run import -- <bookASIN1> <bookASIN2> <bookASIN3> ...
Where <bookASIN1>
, <bookASIN2>
, <bookASIN3>
, etc. are the ASINs of the books you want to import.
For example, if the book URL is https://www.amazon.com/Node-js-Design-Patterns-production-grade-applications/dp/1839214112/
, the ASIN is 1839214112
, so you can run:
pnpm run import -- 1839214112
This will automatically fetch the book details from Amazon and append them to the src/books.yml
file. It will also download the book cover and place it under src/covers/
.
Sometimes Amazon might trigger a captcha check if you are not an authenticated user. If you are running the import command and you are getting a captcha check, you can try to run the following command to bypass it:
pnpm run import -- --cookies <cookies> <bookASIN1> <bookASIN2> <bookASIN3> ...
Where <cookies>
is a cookie string taken from an authenticated session on Amazon. You can get it by inspecting the cookies in your browser and copying the Cookie
header from the request.
Everyone is very welcome to contribute to this project. You can contribute just by submitting bugs or suggesting improvements by opening an issue on GitHub.
Licensed under MIT License. © Luciano Mammino.