Skip to content

manuelbcd/go-openproject

Repository files navigation

OpenProject Go Client Library

codecov Go Report Card Go Reference License: MIT

Go client library for OpenProject

Openproject client library written in Go

API doc

https://docs.openproject.org/api

Usage examples

Single work-package request

Basic work-package retrieval (Single work-package with ID 36353 from community.openproject.org) Please check examples folder for different use-cases.

import (
	"fmt"
	openproj "github.com/manuelbcd/go-openproject"
)

func main() {
	client, _ := openproj.NewClient(nil, "https://community.openproject.org/")
	wpResponse, _, err := client.WorkPackage.Get("36353", nil)
	if err != nil {
		panic(err)
	}

	// Output specific fields from response
	fmt.Printf("\n\nSubject: %s \nDescription: %s\n\n", wpResponse.Subject, wpResponse.Description.Raw)
}

Create a work package

Create a single work package

package main

import (
	"fmt"
	"strings"

	openproj "github.com/manuelbcd/go-openproject"
)

func main() {
	client, err := openproj.NewClient(nil, "https://youropenproject.url")
	if err != nil {
		fmt.Printf("\nerror: %v\n", err)
		return
	}

	i := openproj.WorkPackage{
		Subject: "This is my test work package",
		Description: &openproj.WPDescription{
			Format: "textile",
			Raw:    "This is just a demo workpackage description",
		},
	}

	wpResponse, _, err := client.WorkPackage.Create(&i, "demo-project")
	if err != nil {
		panic(err)
	}

	// Output specific fields from response
	fmt.Printf("\n\nSubject: %s \nDescription: %s\n\n", wpResponse.Subject, wpResponse.Description.Raw)
}

Supported objects

Endpoint GET single GET many POST PUT DELETE
Attachments (Info) ✔️ ✔️ implementing - pending
Attachments (Download) ✔️ - - - -
Categories ✔️ ✔️ - - -
Documents implementing - - - -
Projects ✔️ ✔️ ✔️ pending pending
Queries ✔️ ✔️ ✔️ - ✔️
Schemas pending
Statuses ✔️ ✔️ pending pending pending
Users ✔️ ✔️ ✔️ ✔️
Wiki Pages ✔️ pending pending pending pending
WorkPackages ✔️ ✔️ ✔️ ✔️
Activities ✔️ ✔️

Thanks

Thanks Wieland, Oliver and OpenProject team for your support.

Thank you very much Andy Grunwald for the idea and your base code.

Inspired in Go Jira library