Help us shape the future of Go! Take the 2026 Go Developer Survey

apigw

package module
v0.3.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 3, 2026 License: Apache-2.0 Imports: 8 Imported by: 0

README

[!WARNING]

このレポジトリの内容は下記に集約・移転しました。 github.com/sacloud/sacloud-sdk-go

今後は上記のレポジトリで開発を行います。 このライブラリを使用している方は、importを変更していただきますようお願いいたします。

// 変更前
import "github.com/sacloud/apigw-api-go"

// 変更後
import "github.com/sacloud/sacloud-sdk-go/api/apigw"

sacloud/apigw-api-go

Go言語向けのさくらのクラウド APIゲートウェイ APIライブラリ

APIゲートウェイ ドキュメント: https://manual.sakura.ad.jp/cloud/appliance/api-gateway/index.html

概要

sacloud/apigw-api-goはさくらのクラウド APIゲートウェイ APIをGo言語から利用するためのAPIライブラリです。

import (
	"context"

	apigw "github.com/sacloud/apigw-api-go"
	v1 "github.com/sacloud/apigw-api-go/apis/v1"
)

func main() {
	client, err := apigw.NewClient()
	ctx := context.Background()

	serviceOp := apigw.NewServiceOp(client)
	service, err := serviceOp.Create(ctx, &v1.ServiceDetail{
		Name:     "test-service",
		Host:     "example.sakura.ad.jp",
		Port:     v1.NewOptInt(80),
		Protocol: "http",
	})
	if err != nil {
		// エラー処理
	}
	defer func() { _ = serviceOp.Delete(ctx, service.ID.Value) }()

	routeOp := apigw.NewRouteOp(client, service.ID.Value)
	route, err := routeOp.Create(ctx, &v1.RouteDetail{
		Name:      v1.NewOptName("test-route"),
		Methods:   []v1.HTTPMethod{v1.HTTPMethodGET, v1.HTTPMethodPOST},
		Hosts:     []string{service.RouteHost.Value},
		Protocols: v1.NewOptRouteDetailProtocols(v1.RouteDetailProtocolsHTTPHTTPS),
		Tags:      []string{"Test"},
	})
	if err != nil {
		// エラー処理
	}
	defer func() { _ = routeOp.Delete(ctx, route.ID.Value) }()

	// サブスクリプションに関する操作
	subscriptionOp := apigw.NewSubscriptionOp(client)
	// ユーザに関する操作
	userOp := apigw.NewUserOp(client)
	// ユーザに関する追加設定。所属グループや認証の設定
	userExtraOp := apigw.NewUserExtraOp(client, user.ID.Value)
	// グループに関する操作
	groupOp := apigw.NewGroupOp(client)
	// Routeに関する追加設定。認可やリクエスト・レスポンス変換
	routeExtraOp := apigw.NewRouteExtraOp(client, service.ID.Value, route.ID.Value)
	// ドメインに関する操作
	domainOp := apigw.NewDomainOp(client)
	// 証明書に関する操作
	certOp := apigw.NewCertificateOp(client)
}

各 xxx_test.go も参照。

⚠ v1.0に達するまでは互換性のない形で変更される可能性がありますのでご注意ください。

ogenによるコード生成

以下のコマンドを実行

$ go get -tool github.com/ogen-go/ogen/cmd/ogen@latest
$ go tool ogen -package v1 -target apis/v1 -clean -config ogen-config.yaml ./openapi/openapi.json

TODO

  • OIDC機能の実装

License

apigw-api-go Copyright (C) 2025- The sacloud/apigw-api-go authors. This project is published under Apache 2.0 License.

Documentation

Overview

Deprecated: This module has moved to github.com/sacloud/sacloud-sdk-go. Please migrate to that module. This repository will be archived.

Index

Constants

View Source
const (
	// DefaultAPIRootURL デフォルトのAPIルートURL
	DefaultAPIRootURL = "https://secure.sakura.ad.jp/cloud/api/apigw/1.0/"

	// ServiceKey SDKの種別を示すキー、プロファイルでのエンドポイント取得に利用する
	ServiceKey = "apigw"
)
View Source
const Version = "0.3.1"

Variables

View Source
var UserAgent = fmt.Sprintf(
	"apigw-api-go/%s (%s/%s; +https://github.com/sacloud/apigw-api-go)",
	Version,
	runtime.GOOS,
	runtime.GOARCH,
)

UserAgent APIリクエスト時のユーザーエージェント

Functions

func NewClient

func NewClient(client saclient.ClientAPI) (*v1.Client, error)

func NewClientWithAPIRootURL added in v0.3.0

func NewClientWithAPIRootURL(client saclient.ClientAPI, apiRootURL string) (*v1.Client, error)

Types

type CertificateAPI

type CertificateAPI interface {
	List(ctx context.Context) ([]v1.Certificate, error)
	Create(ctx context.Context, request *v1.Certificate) (*v1.Certificate, error)
	Update(ctx context.Context, request *v1.Certificate, id uuid.UUID) error
	Delete(ctx context.Context, id uuid.UUID) error
}

func NewCertificateOp

func NewCertificateOp(client *v1.Client) CertificateAPI

type DomainAPI

type DomainAPI interface {
	List(ctx context.Context) ([]v1.Domain, error)
	Create(ctx context.Context, request *v1.Domain) (*v1.Domain, error)
	Delete(ctx context.Context, id uuid.UUID) error
	Update(ctx context.Context, request *v1.DomainPUT, id uuid.UUID) error
}

func NewDomainOp

func NewDomainOp(client *v1.Client) DomainAPI

type Error

type Error struct {
	// contains filtered or unexported fields
}

func NewAPIError

func NewAPIError(method string, code int, err error) *Error

func NewError

func NewError(msg string, err error) *Error

func (*Error) Error

func (e *Error) Error() string

func (*Error) Unwrap

func (e *Error) Unwrap() error

type GroupAPI

type GroupAPI interface {
	List(ctx context.Context) ([]v1.Group, error)
	Create(ctx context.Context, request *v1.Group) (*v1.Group, error)
	Read(ctx context.Context, id uuid.UUID) (*v1.Group, error)
	Update(ctx context.Context, request *v1.Group, id uuid.UUID) error
	Delete(ctx context.Context, id uuid.UUID) error
}

func NewGroupOp

func NewGroupOp(client *v1.Client) GroupAPI

type RouteAPI

type RouteAPI interface {
	List(ctx context.Context) ([]v1.Route, error)
	Create(ctx context.Context, request *v1.RouteDetail) (*v1.RouteDetail, error)
	Read(ctx context.Context, id uuid.UUID) (*v1.RouteDetail, error)
	Update(ctx context.Context, request *v1.RouteDetail, id uuid.UUID) error
	Delete(ctx context.Context, id uuid.UUID) error
}

func NewRouteOp

func NewRouteOp(client *v1.Client, serviceId uuid.UUID) RouteAPI

type RouteExtraAPI

type RouteExtraAPI interface {
	ReadAuthorization(ctx context.Context) (*v1.RouteAuthorizationDetailResponse, error)
	DisableAuthorization(ctx context.Context) error
	EnableAuthorization(ctx context.Context, groups []v1.RouteAuthorization) error
	ReadRequestTransformation(ctx context.Context) (*v1.RequestTransformation, error)
	UpdateRequestTransformation(ctx context.Context, request *v1.RequestTransformation) error
	ReadResponseTransformation(ctx context.Context) (*v1.ResponseTransformation, error)
	UpdateResponseTransformation(ctx context.Context, request *v1.ResponseTransformation) error
}

func NewRouteExtraOp

func NewRouteExtraOp(client *v1.Client, serviceId uuid.UUID, routeId uuid.UUID) RouteExtraAPI

type ServiceAPI

type ServiceAPI interface {
	List(ctx context.Context) ([]v1.ServiceDetailResponse, error)
	Create(ctx context.Context, request *v1.ServiceDetailRequest) (*v1.ServiceDetailRequest, error)
	Read(ctx context.Context, id uuid.UUID) (*v1.ServiceDetailResponse, error)
	Update(ctx context.Context, request *v1.ServiceDetail, id uuid.UUID) error
	Delete(ctx context.Context, id uuid.UUID) error
}

func NewServiceOp

func NewServiceOp(client *v1.Client) ServiceAPI

type SubscriptionAPI

type SubscriptionAPI interface {
	ListPlans(ctx context.Context) ([]v1.Plan, error)
	List(ctx context.Context) ([]v1.Subscription, error)
	Create(ctx context.Context, id uuid.UUID, name string) error
	Read(ctx context.Context, id uuid.UUID) (*v1.SubscriptionDetailResponse, error)
	Update(ctx context.Context, id uuid.UUID, name string) error
	Delete(ctx context.Context, id uuid.UUID) error
}

func NewSubscriptionOp

func NewSubscriptionOp(client *v1.Client) SubscriptionAPI

type UserAPI

type UserAPI interface {
	List(ctx context.Context) ([]v1.User, error)
	Create(ctx context.Context, request *v1.UserDetail) (*v1.UserDetail, error)
	Read(ctx context.Context, id uuid.UUID) (*v1.UserDetail, error)
	Update(ctx context.Context, request *v1.UserDetail, id uuid.UUID) error
	Delete(ctx context.Context, id uuid.UUID) error
}

func NewUserOp

func NewUserOp(client *v1.Client) UserAPI

type UserExtraAPI

type UserExtraAPI interface {
	ListGroup(ctx context.Context) ([]v1.UserGroupDetail, error)
	UpdateGroup(ctx context.Context, groupIdOrName string, isAssigned bool) error
	ReadAuth(ctx context.Context) (*v1.UserAuthentication, error)
	UpdateAuth(ctx context.Context, request v1.UserAuthentication) error
}

func NewUserExtraOp

func NewUserExtraOp(client *v1.Client, userId uuid.UUID) UserExtraAPI

Directories

Path Synopsis
apis
v1
Code generated by ogen, DO NOT EDIT.
Code generated by ogen, DO NOT EDIT.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL