README
¶
miro-gopher
API client for accessing the MIRO API
Currently, only supports the oauth
, oauth_token
, /boards
& /boards/members
endpoints, but more to follow soon.
For now the GET
, POST
, PUT
, PATCH
& DELETE
methods are open to use for any other API calls to MIRO.
Minimum required Go version : 1.18
Installation
go get github.com/russ-davey/miro-gopher/miro
Basic Usage
All interaction starts with a miro.Client
. Create one with your MIRO token:
import "github.com/russ-davey/miro-gopher/miro"
client := miro.NewClient(token)
Using the Native Functions
If there is part of MIRO API that you would like to access, but it isn't currently supported by this package,
then you can use the Get
, Post
, Put
, Patch
, & Delete
functions to natively access them instead:
client := NewClient(os.Getenv("MIRO_TOKEN"))
response := make(map[string]interface{})
err := client.Get("https://api.miro.com/v2/boards/3141592/items/16180339887", &response)
if err != nil {
fmt.Printf("error: %v", err)
} else {
jsonData, _ := json.Marshal(response)
fmt.Printf("MIRO API Response: %s\n", jsonData)
}
Using a Customised HTTP client
By default, this package will use a fine-tuned HTTP client, but you may want to use your own.
client := NewClient(os.Getenv("MIRO_TOKEN"))
client.HTTPClient = &http.Client{Timeout: 500 * time.Millisecond}
/boards API Methods
Get
client.Boards.Get("3141592")
GetALL
client.Boards.GetAll()
or with query parameters:
client.Boards.GetAll(miro.BoardSearchParams{
TeamID: "gophers",
Sort: miro.SortAlphabetically,
})
or when there are more than 20 boards, then use the iterator:
iter, err := client.Boards.GetAll(BoardSearchParams{TeamID: "gophers", Limit: "50"})
if err != nil {
log.Fatalf("error: %v", err)
}
for {
boards, err := iter.GetNext()
if err == IteratorDone {
break
}
for _, board := range boards.Data {
fmt.Println(board.Name)
}
}
Create
client.Boards.Create(miro.CreateBoard{
Description: "My Board",
Name: "MIRO Gopher",
Policy: miro.Policy{
SharingPolicy: miro.SharingPolicy{
Access: miro.AccessPrivate,
InviteToAccountAndBoardLinkAccess: miro.InviteAccessEditor,
TeamAccess: miro.AccessEdit,
},
PermissionsPolicy: miro.PermissionsPolicy{
SharingAccess: miro.AccessBoardOwnersAndCoOwners,
CopyAccess: miro.CopyAccessTeamEditors,
CollaborationToolsStartAccess: miro.AccessBoardOwnersAndCoOwners,
},
},
TeamID: "gophers",
})
Copy
client.Boards.Copy(miro.CreateBoard{
Description: "My Board",
Name: "MIRO Gopher",
Policy: miro.Policy{
SharingPolicy: miro.SharingPolicy{
Access: miro.AccessPrivate,
InviteToAccountAndBoardLinkAccess: miro.InviteAccessEditor,
TeamAccess: miro.AccessEdit,
},
PermissionsPolicy: miro.PermissionsPolicy{
SharingAccess: miro.AccessBoardOwnersAndCoOwners,
CopyAccess: miro.CopyAccessTeamEditors,
CollaborationToolsStartAccess: miro.AccessBoardOwnersAndCoOwners,
},
},
TeamID: "gophers",
},
"3141592")
Update
client.Boards.Update(miro.CreateBoard{
Description: "My New Board",
Name: "New MIRO Gopher",
Policy: miro.Policy{
SharingPolicy: miro.SharingPolicy{
Access: miro.AccessPrivate,
InviteToAccountAndBoardLinkAccess: miro.InviteAccessEditor,
TeamAccess: miro.AccessEdit,
},
PermissionsPolicy: miro.PermissionsPolicy{
SharingAccess: miro.AccessBoardOwnersAndCoOwners,
CopyAccess: miro.CopyAccessTeamEditors,
CollaborationToolsStartAccess: miro.AccessBoardOwnersAndCoOwners,
},
},
TeamID: "gophers",
},
"3141592")
Delete
client.Boards.Delete("3141592")
Click to show internal directories.
Click to hide internal directories.