https://github.com/orijtech/asana
Asana API client in Go
https://github.com/orijtech/asana
asana asana-api golang
Last synced: 4 months ago
JSON representation
Asana API client in Go
- Host: GitHub
- URL: https://github.com/orijtech/asana
- Owner: orijtech
- License: apache-2.0
- Created: 2017-05-02T09:31:52.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2018-10-31T18:54:13.000Z (over 7 years ago)
- Last Synced: 2025-11-12T03:27:15.845Z (7 months ago)
- Topics: asana, asana-api, golang
- Language: Go
- Size: 94.7 KB
- Stars: 11
- Watchers: 2
- Forks: 11
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# asana
Asana API client implemented in Go
## Requirements:
* Personal Authentication Token set in your environment as
`ASANA_PERSONAL_ACCESS_TOKEN`
or you could pass in a key when initializing a client.
* Currently their API only has v1 so that's the client we'll use.
## Preamble:
```go
import (
"fmt"
"log"
"os"
"github.com/odeke-em/asana/v1"
)
```
## Example creating a task
```go
func main() {
client, err := asana.NewClient()
if err != nil {
log.Fatal(err)
}
setupServers, err := client.CreateTask(&asana.TaskRequest{
Assignee: "emm.odeke@gmail.com",
Notes: "Please ensure to setup the servers, then ping our group",
Name: "server setup",
Workspace: "331783765164429",
Followers: []asana.UserID{
"emmanuel@orijtech.com",
},
})
if err != nil {
log.Fatalf("the error: %#v", err)
}
log.Printf("Here is the task: %#v", setupServers)
}
```
## List all your workspaces
```go
func main() {
client, err := asana.NewClient()
if err != nil {
log.Fatal(err)
}
workspacesChan, err := client.ListMyWorkspaces()
if err != nil {
log.Fatal(err)
}
pageCount := 0
for page := range workspacesChan {
for i, workspace := range page.Workspaces {
log.Printf("Page: #%d i: %d workspace: %#v", pageCount, i, workspace)
}
pageCount += 1
}
}
```
## Find an attachment by id
```go
func main() {
client, err := asana.NewClient()
if err != nil {
log.Fatal(err)
}
foundAttachment, err := client.FindAttachmentByID("5678")
if err != nil {
log.Fatal(err)
}
fmt.Printf("Found attachment: %#v\n", foundAttachment)
}
```
## Upload an attachment to a task
```go
func main() {
imageR, err := os.Open("./testdata/messengerQR.png")
if err != nil {
log.Fatal(err)
}
defer imageR.Close()
client, err := asana.NewClient()
if err != nil {
log.Fatal(err)
}
respAttachment, err := client.UploadAttachment(&asana.AttachmentUpload{
TaskID: "331727965981099",
Name: "messenger QR code",
Body: imageR,
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("Response attachment: %#v\n", respAttachment)
}
```
## List all attachments for a task
```go
func main() {
client, err := asana.NewClient()
if err != nil {
log.Fatal(err)
}
attachmentsPage, err := client.ListAllAttachmentsForTask("331727965981099")
if err != nil {
log.Fatal(err)
}
for i, task := range attachmentsPage.Attachments {
fmt.Printf("Task #%d: %#v\n\n", i, task)
}
}
```