notionapi: github.com/kjk/notionapi Index | Files | Directories

package notionapi

import "github.com/kjk/notionapi"

Index

Package Files

block.go client.go constants.go date.go dbg.go debug.go dump_structure.go export_page.go get_record_values.go get_signed_file_urls.go inline_block.go json.go load_page_chunk.go page.go query_collection.go submit_transaction.go

Constants

const (
    // BlockPage is a notion Page
    BlockPage = "page"
    // BlockText is a text block
    BlockText = "text"
    // BlockBookmark is a bookmark block
    BlockBookmark = "bookmark"
    // BlockBulletedList is a bulleted list block
    BlockBulletedList = "bulleted_list"
    // BlockNumberedList is a numbered list block
    BlockNumberedList = "numbered_list"
    // BlockToggle is a toggle block
    BlockToggle = "toggle"
    // BlockTodo is a todo block
    BlockTodo = "to_do"
    // BlockDivider is a divider block
    BlockDivider = "divider"
    // BlockImage is an image block
    BlockImage = "image"
    // BlockHeader is a header block
    BlockHeader = "header"
    // BlockSubHeader is a header block
    BlockSubHeader = "sub_header"
    // BlockSubSubHeader
    BlockSubSubHeader = "sub_sub_header"
    // BlockQuote is a quote block
    BlockQuote = "quote"
    // BlockComment is a comment block
    BlockComment = "comment"
    // BlockCode is a code block
    BlockCode = "code"
    // BlockColumnList is for multi-column. Number of columns is
    // number of content blocks of type TypeColumn
    BlockColumnList = "column_list"
    // BlockColumn is a child of TypeColumnList
    BlockColumn = "column"
    // BlockTable is a table block
    BlockTable = "table"
    // BlockCollectionView is a collection view block
    BlockCollectionView = "collection_view"
    // BlockCollectionViewPage is a page that is a collection
    BlockCollectionViewPage = "collection_view_page"
    // BlockVideo is youtube video embed
    BlockVideo = "video"
    // BlockFile is an embedded file
    BlockFile = "file"
    // BlockPDF is an embedded pdf file
    BlockPDF = "pdf"
    // BlockGist is embedded gist block
    BlockGist = "gist"
    // BlockDrive is embedded Google Drive file
    BlockDrive = "drive"
    // BlockTweet is embedded gist block
    BlockTweet = "tweet"
    // BlockMaps is embedded Google Map block
    BlockMaps = "maps"
    // BlockCodepen is embedded codepen block
    BlockCodepen = "codepen"
    // BlockEmbed is a generic oembed link
    BlockEmbed = "embed"
    // BlockCallout is a callout
    BlockCallout = "callout"
    // BlockTableOfContents is table of contents
    BlockTableOfContents = "table_of_contents"
    // BlockBreadcrumb is breadcrumb block
    BlockBreadcrumb = "breadcrumb"
    // BlockEquation is TeX equation block
    BlockEquation = "equation"
    // BlockFactory represents a factory block
    BlockFactory = "factory"
    // BlockFigma represents figma embed
    BlockFigma = "figma"
)
const (
    // PermissionTypeUser describes permissions for a user
    PermissionTypeUser = "user_permission"
    // PermissionTypePublic describes permissions for public
    PermissionTypePublic = "public_permission"
)
const (
    // ColumnMultiSelect is multi-select column
    ColumnMultiSelect = "multi_select"
    ColumnTypeNumber  = "number"
    ColumnTypeTitle   = "title"
)

for CollectionColumnInfo.Type

const (
    // TableSpace represents a Notion workspace
    TableSpace = "space"
    // TableBlock represents a Notion block
    TableBlock = "block"
)
const (
    // RoleReader represents a reader
    RoleReader = "reader"
    // RoleEditor represents an editor
    RoleEditor = "editor"
)
const (
    // DateTypeDate represents a date in Date.Type
    DateTypeDate = "date"
    // DateTypeDateTime represents a datetime in Date.Type
    DateTypeDateTime = "datetime"
)
const (
    ExportTypeMarkdown = "markdown"
    ExportTypeHTML     = "html"
)
const (
    // AttrBold represents bold block
    AttrBold = "b"
    // AttrCode represents code block
    AttrCode = "c"
    // AttrItalic represents italic block
    AttrItalic = "i"
    // AttrStrikeThrought represents strikethrough block
    AttrStrikeThrought = "s"
    // AttrComment represents a comment block
    AttrComment = "m"
    // AttrLink represnts a link (url)
    AttrLink = "a"
    // AttrUser represents an id of a user
    AttrUser = "u"
    // AttrHighlight represents text high-light
    AttrHighlight = "h"
    // AttrDate represents a date
    AttrDate = "d"
    // AtttrPage represents a link to a Notion page
    AttrPage = "p"
)
const (
    // TextSpanSpecial is what Notion uses for text to represent @user and @date blocks
    TextSpanSpecial = "‣"
)

Variables

var (
    // PanicOnFailures will force panics on unexpected situations.
    // This is for debugging
    PanicOnFailures bool

    // LogFunc allows intercepting debug logs
    LogFunc func(format string, args ...interface{})
)

func AttrGetComment Uses

func AttrGetComment(attr TextAttr) string

func AttrGetHighlight Uses

func AttrGetHighlight(attr TextAttr) string
func AttrGetLink(attr TextAttr) string

func AttrGetPageID Uses

func AttrGetPageID(attr TextAttr) string

func AttrGetType Uses

func AttrGetType(attr TextAttr) string

func AttrGetUserID Uses

func AttrGetUserID(attr TextAttr) string

func Dump Uses

func Dump(w io.Writer, page *Page)

Dump writes a simple representation of Page to w. A debugging helper.

func DumpToString Uses

func DumpToString(page *Page) string

DumpToString returns a simple representation of Page as a string. A debugging helper.

func ExtractNoDashIDFromNotionURL Uses

func ExtractNoDashIDFromNotionURL(uri string) string

ExtractNoDashIDFromNotionURL tries to extract notion page id from notion URL, e.g. given: https://www.notion.so/Advanced-web-spidering-with-Puppeteer-ea07db1b9bff415ab180b0525f3898f6 returns ea07db1b9bff415ab180b0525f3898f6 returns "" if didn't detect valid notion id in the url

func ForEachBlock Uses

func ForEachBlock(blocks []*Block, cb func(*Block))

ForEachBlock traverses the tree of blocks and calls cb on every block in depth-first order. To traverse every blocks in a Page, do: ForEachBlock([]*notionapi.Block{page.Root}, cb)

func FormatDate Uses

func FormatDate(d *Date) string

FormatDate provides default formatting for Date TODO: add time zone, maybe

func IsValidDashID Uses

func IsValidDashID(id string) bool

IsValidDashID returns true if id looks like a valid Notion dash id

func IsValidNoDashID Uses

func IsValidNoDashID(id string) bool

IsValidNoDashID returns true if id looks like a valid Notion no dash id

func Log Uses

func Log(format string, args ...interface{})

Log is for debug logging, will log using LogFunc (if set)

func MaybePanic Uses

func MaybePanic(format string, args ...interface{})

MaybePanic will panic if PanicOnFailures is true

func ResolveUser Uses

func ResolveUser(page *Page, userID string) string

func SafeName Uses

func SafeName(s string) string

SafeName returns a file-system safe name

func TextSpansToString Uses

func TextSpansToString(blocks []*TextSpan) string

TextSpansToString returns flattened content of inline blocks, without formatting

func ToDashID Uses

func ToDashID(id string) string

ToDashID convert id in format bb760e2dd6794b64b2a903005b21870a to bb760e2d-d679-4b64-b2a9-03005b21870a If id is not in that format, we leave it untouched.

func ToNoDashID Uses

func ToNoDashID(id string) string

ToNoDashID converts 2131b10c-ebf6-4938-a127-7089ff02dbe4 to 2131b10cebf64938a1277089ff02dbe4. If not in expected format, we leave it untouched

type AggregateQuery Uses

type AggregateQuery struct {
    AggregationType string `json:"aggregation_type"`
    ID              string `json:"id"`
    Property        string `json:"property"`
    Type            string `json:"type"`
    ViewType        string `json:"view_type"`
}

AggregateQuery describes an aggregate query

type AggregationResult Uses

type AggregationResult struct {
    ID    string `json:"id"`
    Value int64  `json:"value"`
}

AggregationResult represents result of aggregation

type Block Uses

type Block struct {
    // values that come from JSON
    // a unique ID of the block
    ID  string `json:"id"`
    // if false, the page is deleted
    Alive bool `json:"alive"`
    // List of block ids for that make up content of this block
    // Use Content to get corresponding block (they are in the same order)
    ContentIDs   []string `json:"content,omitempty"`
    CopiedFrom   string   `json:"copied_from,omitempty"`
    CollectionID string   `json:"collection_id,omitempty"` // for BlockCollectionView
    // ID of the user who created this block
    CreatedBy   string `json:"created_by"`
    CreatedTime int64  `json:"created_time"`
    // List of block ids with discussion content
    DiscussionIDs []string `json:"discussion,omitempty"`
    // those ids seem to map to storage in s3
    // https://s3-us-west-2.amazonaws.com/secure.notion-static.com/${id}/${name}
    FileIDs []string `json:"file_ids,omitempty"`

    // TODO: don't know what this means
    IgnoreBlockCount bool `json:"ignore_block_count,omitempty"`

    // ID of the user who last edited this block
    LastEditedBy   string `json:"last_edited_by"`
    LastEditedTime int64  `json:"last_edited_time"`
    // ID of parent Block
    ParentID    string `json:"parent_id"`
    ParentTable string `json:"parent_table"`
    // not always available
    Permissions *[]Permission          `json:"permissions,omitempty"`
    Properties  map[string]interface{} `json:"properties,omitempty"`
    // type of the block e.g. TypeText, TypePage etc.
    Type string `json:"type"`
    // blocks are versioned
    Version int64    `json:"version"`
    ViewIDs []string `json:"view_ids,omitempty"`

    // Parent of this block
    Parent *Block `json:"-"`

    // maps ContentIDs array to Block type
    Content []*Block `json:"-"`
    // this is for some types like TypePage, TypeText, TypeHeader etc.
    InlineContent []*TextSpan `json:"-"`

    // for BlockPage
    Title string `json:"-"`

    // For BlockTodo, a checked state
    IsChecked bool `json:"-"`

    // for BlockBookmark
    Description string `json:"-"`
    Link        string `json:"-"`

    // for BlockBookmark it's the url of the page
    // for BlockGist it's the url for the gist
    // fot BlockImage it's url of the image, but use ImageURL instead
    // because Source is sometimes not accessible
    // for BlockFile it's url of the file
    // for BlockEmbed it's url of the embed
    Source string `json:"-"`

    // for BlockFile
    FileSize string `json:"-"`

    // for BlockImage it's an URL built from Source that is always accessible
    ImageURL string `json:"-"`

    // for BlockCode
    Code         string `json:"-"`
    CodeLanguage string `json:"-"`

    // for BlockCollectionView
    // It looks like the info about which view is selected is stored in browser
    CollectionViews []*CollectionViewInfo `json:"-"`

    Page *Page `json:"-"`

    // RawJSON represents Block as
    RawJSON map[string]interface{} `json:"-"`
    // contains filtered or unexported fields
}

Block describes a block

func (*Block) BlockByID Uses

func (b *Block) BlockByID(id string) *Block

func (*Block) CollectionByID Uses

func (b *Block) CollectionByID(id string) *Collection

func (*Block) CollectionViewByID Uses

func (b *Block) CollectionViewByID(id string) *CollectionView

func (*Block) CreatedOn Uses

func (b *Block) CreatedOn() time.Time

CreatedOn return the time the page was created

func (*Block) FormatBookmark Uses

func (b *Block) FormatBookmark() *FormatBookmark

func (*Block) FormatBulletedList Uses

func (b *Block) FormatBulletedList() *FormatBulletedList

func (*Block) FormatColumn Uses

func (b *Block) FormatColumn() *FormatColumn

func (*Block) FormatEmbed Uses

func (b *Block) FormatEmbed() *FormatEmbed

func (*Block) FormatHeader Uses

func (b *Block) FormatHeader() *FormatHeader

func (*Block) FormatImage Uses

func (b *Block) FormatImage() *FormatImage

func (*Block) FormatNumberedList Uses

func (b *Block) FormatNumberedList() *FormatNumberedList

func (*Block) FormatPage Uses

func (b *Block) FormatPage() *FormatPage

FormatPage returns decoded format property for BlockPage

func (*Block) FormatTable Uses

func (b *Block) FormatTable() *FormatTable

func (*Block) FormatText Uses

func (b *Block) FormatText() *FormatText

func (*Block) FormatToggle Uses

func (b *Block) FormatToggle() *FormatToggle

func (*Block) FormatVideo Uses

func (b *Block) FormatVideo() *FormatVideo

func (*Block) GetCaption Uses

func (b *Block) GetCaption() []*TextSpan

func (*Block) GetProperty Uses

func (b *Block) GetProperty(name string) []*TextSpan

func (*Block) GetTitle Uses

func (b *Block) GetTitle() []*TextSpan

func (*Block) IsCode Uses

func (b *Block) IsCode() bool

IsCode returns true if block represents a code block

func (*Block) IsImage Uses

func (b *Block) IsImage() bool

IsImage returns true if block represents an image

func (*Block) IsLinkToPage Uses

func (b *Block) IsLinkToPage() bool

IsLinkToPage returns true if block element is a link to a page (as opposed to embedded page)

func (*Block) IsPage Uses

func (b *Block) IsPage() bool

IsPage returns true if block represents a page (either a sub-page or a link to a page)

func (*Block) IsSubPage Uses

func (b *Block) IsSubPage() bool

IsSubPage returns true if this is a sub-page (as opposed to link to a page that is not a child of that page)

func (*Block) Prop Uses

func (b *Block) Prop(key string) (interface{}, bool)

func (*Block) PropAsString Uses

func (b *Block) PropAsString(key string) (string, bool)

func (*Block) UpdatedOn Uses

func (b *Block) UpdatedOn() time.Time

UpdatedOn returns the time the page was last updated

func (*Block) UserByID Uses

func (b *Block) UserByID(id string) *User

type BlockWithRole Uses

type BlockWithRole struct {
    Role  string `json:"role"`
    Value *Block `json:"value"`
}

BlockWithRole describes a block info

type Client Uses

type Client struct {
    // AuthToken allows accessing non-public pages.
    AuthToken string
    // HTTPClient allows over-riding http.Client to e.g. implement caching
    // on a per-request level
    HTTPClient *http.Client
    // Logger is used to log requests and responses for debugging.
    // By default is not set.
    Logger io.Writer
    // DebugLog enables debug logging
    DebugLog bool
}

Client is client for invoking Notion API

func (*Client) DownloadFile Uses

func (c *Client) DownloadFile(uri string) (*DownloadFileResponse, error)

DownloadFile downloads a file stored in Notion

func (*Client) DownloadPage Uses

func (c *Client) DownloadPage(pageID string) (*Page, error)

DownloadPage returns Notion page data given its id

func (*Client) ExportPages Uses

func (c *Client) ExportPages(id string, exportType string, recursive bool) ([]byte, error)

ExportPages exports a page as html or markdown, potentially recursively

func (*Client) GetRecordValues Uses

func (c *Client) GetRecordValues(ids []string) (*GetRecordValuesResponse, error)

GetRecordValues executes a raw API call /api/v3/getRecordValues

func (*Client) GetSignedFileUrls Uses

func (c *Client) GetSignedFileUrls(urls []string) (*GetSignedFileUrlsResponse, error)

GetSignedFileUrls executes a raw API call /api/v3/getSignedFileUrls For files (e.g. images) stored in Notion we need to get a temporary download url (which will be valid for only a short period of time)

func (*Client) LoadPageChunk Uses

func (c *Client) LoadPageChunk(pageID string, chunkNo int, cur *cursor) (*LoadPageChunkResponse, error)

LoadPageChunk executes a raw API call /api/v3/loadPageChunk

func (*Client) QueryCollection Uses

func (c *Client) QueryCollection(collectionID, collectionViewID string, aggregateQuery []*AggregateQuery, user *User) (*QueryCollectionResponse, error)

QueryCollection executes a raw API call /api/v3/queryCollection

func (*Client) SubmitTransaction Uses

func (c *Client) SubmitTransaction(ops []*Operation) error

type Collection Uses

type Collection struct {
    // form json
    Alive            bool                             `json:"alive"`
    CopiedFrom       string                           `json:"copied_from"`
    FileIDs          []string                         `json:"file_ids"`
    Format           *CollectionFormat                `json:"format"`
    Icon             string                           `json:"icon"`
    ID               string                           `json:"id"`
    ParentID         string                           `json:"parent_id"`
    ParentTable      string                           `json:"parent_table"`
    CollectionSchema map[string]*CollectionColumnInfo `json:"schema"`
    Version          int                              `json:"version"`

    RawJSON map[string]interface{} `json:"-"`
    // contains filtered or unexported fields
}

Collection describes a collection

func (*Collection) Name Uses

func (c *Collection) Name() string

type CollectionColumnInfo Uses

type CollectionColumnInfo struct {
    Name    string                    `json:"name"`
    Options []*CollectionColumnOption `json:"options"`
    Type    string                    `json:"type"`

    RawJSON map[string]interface{} `json:"-"`
}

CollectionColumnInfo describes a info of a collection column

type CollectionColumnOption Uses

type CollectionColumnOption struct {
    Color string `json:"color"`
    ID    string `json:"id"`
    Value string `json:"value"`
}

CollectionColumnOption describes options for a collection column

type CollectionFormat Uses

type CollectionFormat struct {
    CollectionPageProperties []*CollectionPageProperty `json:"collection_page_properties"`
}

CollectionFormat describes format of a collection

type CollectionPageProperty Uses

type CollectionPageProperty struct {
    Property string `json:"property"`
    Visible  bool   `json:"visible"`
}

CollectionPageProperty describes properties of a collection

type CollectionQuery Uses

type CollectionQuery struct {
    // copy from CollectionView.Query
    Aggregate  []*AggregateQuery `json:"aggregate"`
    GroupBy    interface{}       `json:"group_by"`
    CalendarBy interface{}       `json:"calendar_by"`
    // "and"
    FilterOperator string        `json:"filter_operator"`
    Filter         []interface{} `json:"filter"`
    Sort           []interface{} `json:"sort"`
}

CollectionQuery describes a collection query

type CollectionView Uses

type CollectionView struct {
    ID          string                `json:"id"`
    Alive       bool                  `json:"alive"`
    Format      *CollectionViewFormat `json:"format"`
    Name        string                `json:"name"`
    PageSort    []string              `json:"page_sort"`
    ParentID    string                `json:"parent_id"`
    ParentTable string                `json:"parent_table"`
    Query       *CollectionViewQuery  `json:"query"`
    Type        string                `json:"type"`
    Version     int                   `json:"version"`

    RawJSON map[string]interface{} `json:"-"`
}

CollectionView describes a collection

type CollectionViewFormat Uses

type CollectionViewFormat struct {
    TableProperties []*TableProperty `json:"table_properties"`
    TableWrap       bool             `json:"table_wrap"`
}

CollectionViewFormat describes a fomrat of a collection view

type CollectionViewInfo Uses

type CollectionViewInfo struct {
    OriginatingBlock *Block
    CollectionView   *CollectionView
    Collection       *Collection
    CollectionRows   []*Block
    // contains filtered or unexported fields
}

CollectionViewInfo describes a particular view of the collection TODO: same as table?

type CollectionViewQuery Uses

type CollectionViewQuery struct {
    Aggregate []*AggregateQuery `json:"aggregate"`
}

CollectionViewQuery describes a query

type CollectionViewWithRole Uses

type CollectionViewWithRole struct {
    Role  string          `json:"role"`
    Value *CollectionView `json:"value"`
}

CollectionViewWithRole describes a role and a collection view

type CollectionWithRole Uses

type CollectionWithRole struct {
    Role  string      `json:"role"`
    Value *Collection `json:"value"`
}

CollectionWithRole describes a collection

type Date Uses

type Date struct {
    // "MMM DD, YYYY", "MM/DD/YYYY", "DD/MM/YYYY", "YYYY/MM/DD", "relative"
    DateFormat string    `json:"date_format"`
    Reminder   *Reminder `json:"reminder,omitempty"`
    // "2018-07-12"
    StartDate string `json:"start_date"`
    // "09:00"
    StartTime string `json:"start_time,omitempty"`
    // "2018-07-12"
    EndDate string `json:"end_date,omitempty"`
    // "09:00"
    EndTime string `json:"end_time,omitempty"`
    // "America/Los_Angeles"
    TimeZone *string `json:"time_zone,omitempty"`
    // "H:mm" for 24hr, not given for 12hr
    TimeFormat string `json:"time_format,omitempty"`
    // "date", "datetime", "datetimerange", "daterange"
    Type string `json:"type"`
}

Date describes a date

func AttrGetDate Uses

func AttrGetDate(attr TextAttr) *Date

type DownloadFileResponse Uses

type DownloadFileResponse struct {
    URL           string
    CacheFileName string
    Data          []byte
    Header        http.Header
}

DownloadFileResponse is a result of DownloadFile()

type FormatBookmark Uses

type FormatBookmark struct {
    Icon  string `json:"bookmark_icon"`
    Cover string `json:"bookmark_cover"`
}

FormatBookmark describes format for BlockBookmark

type FormatBulletedList Uses

type FormatBulletedList struct {
    BlockColor string `json:"block_color"`
}

FormatBulletedList describes format for BlockBulletedList

type FormatColumn Uses

type FormatColumn struct {
    ColumnRatio float64 `json:"column_ratio"` // e.g. 0.5 for half-sized column
}

FormatColumn describes format for BlockColumn

type FormatEmbed Uses

type FormatEmbed struct {
    BlockFullWidth     bool    `json:"block_full_width"`
    BlockHeight        float64 `json:"block_height"`
    BlockPageWidth     bool    `json:"block_page_width"`
    BlockPreserveScale bool    `json:"block_preserve_scale"`
    DisplaySource      string  `json:"display_source"`
}

FormatEmbed describes format for BlockEmbed

type FormatHeader Uses

type FormatHeader struct {
    BlockColor string `json:"block_color,omitempty"`
}

FormatHeader describes format for BlockHeader, BlockSubHeader, BlockSubSubHeader TODO: possibly more?

type FormatImage Uses

type FormatImage struct {
    // comes from notion API
    BlockAspectRatio   float64 `json:"block_aspect_ratio"`
    BlockFullWidth     bool    `json:"block_full_width"`
    BlockPageWidth     bool    `json:"block_page_width"`
    BlockPreserveScale bool    `json:"block_preserve_scale"`
    BlockWidth         float64 `json:"block_width"`
    DisplaySource      string  `json:"display_source,omitempty"`

    // calculated by us
    ImageURL string `json:"image_url,omitempty"`
}

FormatImage describes format for BlockImage

type FormatNumberedList Uses

type FormatNumberedList struct {
    BlockColor string `json:"block_color"`
}

FormatNumberedList describes format for BlockNumberedList

type FormatPage Uses

type FormatPage struct {
    // /images/page-cover/gradients_11.jpg
    PageCover string `json:"page_cover"`
    // e.g. 0.6
    PageCoverPosition float64 `json:"page_cover_position"`
    PageFont          string  `json:"page_font"`
    PageFullWidth     bool    `json:"page_full_width"`
    // it's url like https://s3-us-west-2.amazonaws.com/secure.notion-static.com/8b3930e3-9dfe-4ba7-a845-a8ff69154f2a/favicon-256.png
    // or emoji like "✉️"
    PageIcon      string `json:"page_icon"`
    PageSmallText bool   `json:"page_small_text"`
    BlockColor    string `json:"block_color"`

    // calculated by us
    PageCoverURL string `json:"page_cover_url,omitempty"`
}

FormatPage describes format for BlockPage

type FormatTable Uses

type FormatTable struct {
    TableWrap       bool             `json:"table_wrap"`
    TableProperties []*TableProperty `json:"table_properties"`
}

FormatTable describes format for BlockTable

type FormatText Uses

type FormatText struct {
    BlockColor string `json:"block_color,omitempty"`
}

FormatText describes format for BlockText TODO: possibly more?

type FormatToggle Uses

type FormatToggle struct {
    BlockColor string `json:"block_color"`
}

FormatToggle describes format for BlockToggle

type FormatVideo Uses

type FormatVideo struct {
    BlockWidth         int64   `json:"block_width"`
    BlockHeight        int64   `json:"block_height"`
    DisplaySource      string  `json:"display_source"`
    BlockFullWidth     bool    `json:"block_full_width"`
    BlockPageWidth     bool    `json:"block_page_width"`
    BlockAspectRatio   float64 `json:"block_aspect_ratio"`
    BlockPreserveScale bool    `json:"block_preserve_scale"`
}

FormatVideo describes fromat form BlockVideo

type GetRecordValuesResponse Uses

type GetRecordValuesResponse struct {
    Results []*BlockWithRole       `json:"results"`
    RawJSON map[string]interface{} `json:"-"`
}

GetRecordValuesResponse represents response to /api/v3/getRecordValues api Note: it depends on Table type in request

type GetSignedFileUrlsResponse Uses

type GetSignedFileUrlsResponse struct {
    SignedUrls []string               `json:"signedUrls"`
    RawJSON    map[string]interface{} `json:"-"`
}

GetSignedFileUrlsResponse is a response of GetSignedFileUrls()

type LoadPageChunkResponse Uses

type LoadPageChunkResponse struct {
    RecordMap *RecordMap `json:"recordMap"`
    Cursor    cursor     `json:"cursor"`

    RawJSON map[string]interface{} `json:"-"`
}

LoadPageChunkResponse is a response to /api/v3/loadPageChunk api

type Loader Uses

type Loader struct {
    Type  string `json:"type"`
    Limit int    `json:"limit"`
    // from User.TimeZone
    UserTimeZone string `json:"userTimeZone"`
    // from User.Locale
    UserLocale string `json:"userLocale"`
}

Loader describes a loader

"loader": {
  "type": "table",
  "limit": 70,
  "userTimeZone": "America/Los_Angeles",
  "userLocale": "en"
}

type Operation Uses

type Operation struct {
    ID      string      `json:"id"`      // id of the block being modified
    Table   string      `json:"table"`   // "block" etc.
    Path    []string    `json:"path"`    // e.g. ["properties", "title"]
    Command string      `json:"command"` // "set", "update"
    Args    interface{} `json:"args"`
}

Operation describes a single operation sent

type Page Uses

type Page struct {
    ID  string
    // Users allows to find users that Page refers to by their ID
    Users  []*User
    Tables []*Table
    // contains filtered or unexported fields
}

Page describes a single Notion page

func (*Page) BlockByID Uses

func (p *Page) BlockByID(id string) *Block

BlockByID returns a block by its id

func (*Page) CollectionByID Uses

func (p *Page) CollectionByID(id string) *Collection

CollectionByID returns a collection by its id

func (*Page) CollectionViewByID Uses

func (p *Page) CollectionViewByID(id string) *CollectionView

CollectionViewByID returns a collection view by its id

func (*Page) ForEachBlock Uses

func (p *Page) ForEachBlock(cb func(*Block))

func (*Page) GetSubPages Uses

func (p *Page) GetSubPages() []string

GetSubPages return list of ids for direct sub-pages of this page

func (*Page) IsRoot Uses

func (p *Page) IsRoot(block *Block) bool

IsRoot returns true if this block is root block of the page i.e. of type BlockPage and very first block

func (*Page) IsSubPage Uses

func (p *Page) IsSubPage(block *Block) bool

IsSubPage returns true if a given block is BlockPage and a direct child of this page (as opposed to a link to arbitrary page)

func (*Page) NotionURL Uses

func (p *Page) NotionURL() string

NotionURL returns url of this page on notion.so

func (*Page) Root Uses

func (p *Page) Root() *Block

Root returns a root block representing a page

func (*Page) SetFormat Uses

func (p *Page) SetFormat(args map[string]interface{}) error

SetFormat changes format properties of a page. Valid values are: page_full_width (bool), page_small_text (bool)

func (*Page) SetTitle Uses

func (p *Page) SetTitle(s string) error

SetTitle changes page title

func (*Page) UserByID Uses

func (p *Page) UserByID(id string) *User

UserByID returns a user by its id

type Permission Uses

type Permission struct {
    Role   string  `json:"role"`
    Type   string  `json:"type"`
    UserID *string `json:"user_id,omitempty"`
}

Permission describes user permissions

type QueryCollectionResponse Uses

type QueryCollectionResponse struct {
    RecordMap *RecordMap             `json:"recordMap"`
    Result    *QueryCollectionResult `json:"result"`
    RawJSON   map[string]interface{} `json:"-"`
}

QueryCollectionResponse is json response for /api/v3/queryCollection

type QueryCollectionResult Uses

type QueryCollectionResult struct {
    Type               string               `json:"type"`
    BlockIDS           []string             `json:"blockIds"`
    AggregationResults []*AggregationResult `json:"aggregationResults"`
    Total              int                  `json:"total"`
}

QueryCollectionResult is part of response for /api/v3/queryCollection

type RecordMap Uses

type RecordMap struct {
    Blocks          map[string]*BlockWithRole          `json:"block"`
    Space           map[string]*SpaceWithRole          `json:"space"`
    Users           map[string]*UserWithRole           `json:"notion_user"`
    Collections     map[string]*CollectionWithRole     `json:"collection"`
    CollectionViews map[string]*CollectionViewWithRole `json:"collection_view"`
}

RecordMap contains a collections of blocks, a space, users, and collections.

type Reminder Uses

type Reminder struct {
    Time  string `json:"time"` // e.g. "09:00"
    Unit  string `json:"unit"` // e.g. "day"
    Value int64  `json:"value"`
}

Reminder describes date reminder

type Space Uses

type Space struct {
    ID          string        `json:"id"`
    Version     float64       `json:"version"`
    Name        string        `json:"name"`
    BetaEnabled bool          `json:"beta_enabled"`
    Permissions *[]Permission `json:"permissions,omitempty"`
    Pages       []string      `json:"pages,omitempty"`

    RawJSON map[string]interface{} `json:"-"`
}

Space is a notion.so workspace.

type SpaceWithRole Uses

type SpaceWithRole struct {
    Role  string `json:"role,omitempty"`
    Value *Space `json:"value,omitempty"`
}

SpaceWithRole holds a user's role associated with a space and a space.

type Table Uses

type Table struct {
    CollectionView *CollectionView `json:"collection_view"`
    Collection     *Collection     `json:"collection"`
    Data           []*Block
}

Table represents a table (i.e. CollectionView)

type TableProperty Uses

type TableProperty struct {
    Width    int    `json:"width"`
    Visible  bool   `json:"visible"`
    Property string `json:"property"`
}

TableProperty describes property of a table

type TextAttr Uses

type TextAttr = []string

TextAttr describes attributes of a span of text First element is name of the attribute (e.g. AttrLink) The rest are optional information about attribute (e.g. for AttrLink it's URL, for AttrUser it's user id etc.)

type TextSpan Uses

type TextSpan struct {
    Text  string     `json:"Text"`
    Attrs []TextAttr `json:"Attrs"`
}

TextSpan describes a text with attributes

func ParseTextSpans Uses

func ParseTextSpans(raw interface{}) ([]*TextSpan, error)

ParseTextSpans parses content from JSON into an easier to use form

func (*TextSpan) IsPlain Uses

func (t *TextSpan) IsPlain() bool

IsPlain returns true if this InlineBlock is plain text i.e. has no attributes

type User Uses

type User struct {
    Email                     string `json:"email"`
    FamilyName                string `json:"family_name"`
    GivenName                 string `json:"given_name"`
    ID                        string `json:"id"`
    Locale                    string `json:"locale"`
    MobileOnboardingCompleted bool   `json:"mobile_onboarding_completed"`
    OnboardingCompleted       bool   `json:"onboarding_completed"`
    ProfilePhoto              string `json:"profile_photo"`
    TimeZone                  string `json:"time_zone"`
    Version                   int    `json:"version"`

    RawJSON map[string]interface{} `json:"-"`
}

User describes a user

type UserWithRole Uses

type UserWithRole struct {
    Role  string `json:"role"`
    Value *User  `json:"value"`
}

UserWithRole describes a user and its role

Directories

PathSynopsis
caching_downloader
do
tohtml
tohtml2
tomarkdown
tomd

Package notionapi imports 11 packages (graph) and is imported by 6 packages. Updated 2019-08-19. Refresh now. Tools for package owners.