go-notion
go-notion is a client for the Notion
API, written in
Go.
Features
The client supports all (non-deprecated) endpoints available in the Notion API,
as of September 4, 2022:
Databases
- [x] [Query a
database](https://pkg.go.dev/github.com/dstotijn/go-notion#Client.QueryDatabase)
- [x] [Create a
database](https://pkg.go.dev/github.com/dstotijn/go-notion#Client.CreateDatabase)
- [x] [Update
database](https://pkg.go.dev/github.com/dstotijn/go-notion#Client.UpdateDatabase)
- [x] [Retrieve a
database](https://pkg.go.dev/github.com/dstotijn/go-notion#Client.FindDatabaseByID)
Pages
- [x] [Retrieve a
page](https://pkg.go.dev/github.com/dstotijn/go-notion#Client.FindPageByID)
- [x] [Create a
page](https://pkg.go.dev/github.com/dstotijn/go-notion#Client.CreatePage)
- [x] [Update
page](https://pkg.go.dev/github.com/dstotijn/go-notion#Client.UpdatePage)
- [x] [Retrieve a page
property](https://pkg.go.dev/github.com/dstotijn/go-notion#Client.FindPagePropertyByID)
Blocks
- [x] [Retrieve a
block](https://pkg.go.dev/github.com/dstotijn/go-notion#Client.FindBlockByID)
- [x] [Update
block](https://pkg.go.dev/github.com/dstotijn/go-notion#Client.UpdateBlock)
- [x] [Retrieve block
children](https://pkg.go.dev/github.com/dstotijn/go-notion#Client.FindBlockChildrenByID)
- [x] [Append block
children](https://pkg.go.dev/github.com/dstotijn/go-notion#Client.AppendBlockChildren)
- [x] [Delete
block](https://pkg.go.dev/github.com/dstotijn/go-notion#Client.DeleteBlock)
Users
- [x] [Retrieve a
user](https://pkg.go.dev/github.com/dstotijn/go-notion#Client.FindUserByID)
- [x] [List all
users](https://pkg.go.dev/github.com/dstotijn/go-notion#Client.ListUsers)
- [x] [Retrieve your token's bot
user](https://pkg.go.dev/github.com/dstotijn/go-notion#Client.FindCurrentUser)
Search
- [x] [Search](https://pkg.go.dev/github.com/dstotijn/go-notion#Client.Search)
Comments
- [x] [Retrieve
comments](https://pkg.go.dev/github.com/dstotijn/go-notion#Client.FindCommentsByBlockID)
- [x] [Create a
comment](https://pkg.go.dev/github.com/dstotijn/go-notion#Client.CreateComment)
Installation
$ go get github.com/dstotijn/go-notion
Usage
To obtain an API key, follow Notion’s getting started
guide.
import "github.com/dstotijn/go-notion"
(...)
client := notion.NewClient("secret-api-key")
page, err := client.FindPageByID(context.Background(), "18d35eb5-91f1-4dcb-85b0-c340fd965015")
if err != nil {
// Handle error...
}
👉 Check out the docs on
pkg.go.dev for a complete
reference and the examples directory for more example code.
Status
The Notion API itself is out of beta. This library is updated periodically
following documented changes from the Notion
changelog.
Note: This library will make breaking changes in its code until
v1.0
of the module is released. There are no immediate plans for a v1.0
release. I want the design choices to be solidified and battle-tested more
before committing to a stable release (and the possible burden of a "v2+" Go
module should I want to introduce breaking changes).
License
MIT License
© 2022 David Stotijn