dstotijn / go-notion

Go client for the Notion API.
MIT License
379 stars 40 forks source link
client go golang notion notion-api

go-notion

GitHub tag (latest
SemVer) Test Go
Reference GitHub Go Report
Card

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