go-notion icon indicating copy to clipboard operation
go-notion copied to clipboard

User object not being marshalled properly when trying to update a user in the People type DatabasePageProperty

Open mikimichaeli opened this issue 10 months ago • 1 comments

Hi, great client!

When trying to update a People column in a database page (row), it seems that the User object is not being marshalled to the proper JSON object per the api.

Example usage of updating a page:

user := notion.User{BaseUser:  notion.BaseUser{ID: "<user-id>"}}
newPageProperties := notion.DatabasePageProperties{}
newPageProperties["Contributors"] = notion.DatabasePageProperty{People: []notion.User{user}}
res, err := n.Client.UpdatePage(ctx, "<page-id>", notion.UpdatePageParams{
		DatabasePageProperties: *newPageProperties,
})
if err != nil {
    fmt.Println(err)
}

The output error shows:

notion: failed to update page properties: body failed validation. Fix one:
body.properties.Contributors.people[0].type should be not present, instead was `""`.
body.properties.Contributors.people[0].name should be not present, instead was `""`.
body.properties.Contributors.people[0].avatar_url should be not present, instead was `""`.
body.properties.Contributors.people[0].person should be not present or an object, instead was `null`.
body.properties.Contributors.people[0].bot should be not present or an object, instead was `null`. (code: validation_error, status: 400)

from looking at the source code, I suspect the problem might be that the struct don't have an omitempty tag on their respective JSON representation. I'm happy to contribute an MR if needed

mikimichaeli avatar Mar 26 '24 04:03 mikimichaeli

@dstotijn would appreciate your review 🙏🏼

mikimichaeli avatar Mar 26 '24 12:03 mikimichaeli