Skip to content

pinealctx/openproject

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

openproject

Go client for the OpenProject API v3, auto-generated from the official OpenAPI spec using oapi-codegen.

Install

go get github.com/pinealctx/openproject@latest

Usage

package main

import (
	"context"
	"fmt"
	"log"
	"net/http"

	op "github.com/pinealctx/openproject"
)

func main() {
	client, err := op.NewClientWithResponses(
		"https://your-instance.openproject.org/api/v3",
		op.WithRequestEditorFn(func(ctx context.Context, req *http.Request) error {
			req.SetBasicAuth("apikey", "YOUR_API_KEY")
			return nil
		}),
	)
	if err != nil {
		log.Fatal(err)
	}

	resp, err := client.ListProjectsWithResponse(context.Background(), &op.ListProjectsParams{})
	if err != nil {
		log.Fatal(err)
	}
	if resp.JSON200 != nil {
		fmt.Printf("Total projects: %d\n", *resp.JSON200.Total)
	}
}

What's inside

File Content
types.gen.go 325 Go types generated from 173 OpenAPI component schemas
client.gen.go Client (raw *http.Response) and ClientWithResponses (auto-parsed) with 322 methods covering all 193 API endpoints
spec.json Official OpenProject API v3 OpenAPI 3.1 spec
downgrade_spec.py Script to downgrade spec from 3.1 to 3.0.3 for oapi-codegen compatibility

Regenerate

Prerequisites: oapi-codegen v2, Python 3.

# Update spec.json from OpenProject, then:
make generate

The downgrade_spec.py script handles OpenAPI 3.1 → 3.0.3 conversion (type arrays → nullable, exclusiveMinimum number → boolean, allOf metadata flattening). All transformations are semantically equivalent.

License

MIT

About

An idiomatic Go client wrapper for OpenProject, built on top of OpenAPI generated code for a streamlined developer experience.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors