Categorygithub.com/russ-davey/miro-gopher
repository
1.0.7
Repository: https://github.com/russ-davey/miro-gopher.git
Documentation: pkg.go.dev

# Packages

No description provided by the author

# 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

GoDoc Tests

Tag GoDoc License

gopher.png

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")