メインコンテンツへスキップ
workspace は、rest.Rest に埋め込まれた Workspaces インターフェースによって公開されます。Standard、Pro、Enterprise プランで利用できます。
client := rest.NewClient(os.Getenv("SQUARECLOUD_API_KEY"))
defer client.Close()

api := rest.New(client)

workspace の作成

workspace, err := api.CreateWorkspace("Acme")
if err != nil {
	panic(err)
}

fmt.Println(workspace.ID)
名前は 1–32 文字で、workspace の作成にはアクティブな有料プランが必要です。

workspace の一覧取得

api.GetWorkspaces() は、認証済みユーザーがオーナーまたはメンバーであるすべての workspace を返します。
workspaces, err := api.GetWorkspaces()
if err != nil {
	panic(err)
}

for _, ws := range workspaces {
	fmt.Println(ws.Name, ws.ID)
}

単一の workspace の取得

workspace ID は、ハイフンなしの UUID v4 値(32 文字の 16 進数)です。
workspace, err := api.GetWorkspace("1234567890abcdef1234567890abcdef")
if err != nil {
	panic(err)
}

fmt.Println(workspace.Name)
fmt.Println(workspace.Owner)
fmt.Println(workspace.Members)
fmt.Println(workspace.Applications)

メンバーの招待

メンバーの招待は 2 段階のハンドシェイクです — 招待される側が 自分の クライアントから短命なコードを生成して同意を示し、オーナーがそれを消費します。
// 1. 招待される側の SDK クライアントから
otherClient := rest.NewClient(os.Getenv("OTHER_USER_API_KEY"))
defer otherClient.Close()
otherAPI := rest.New(otherClient)

code, err := otherAPI.GetWorkspaceInviteCode()
if err != nil {
	panic(err)
}

// 2. workspace オーナーのクライアントから
err = api.AddWorkspaceMember("1234567890abcdef1234567890abcdef", code, "maintain")
if err != nil {
	panic(err)
}
招待コードは、workspace に 参加する ユーザーが生成するものであり、オーナーが生成するものではありません。コードは使い捨てで、5 分 で失効します — 生成したらオーナー/管理者に渡し、速やかに消費してください。

ロール

RoleDescription
owner / adminworkspace の完全な管理
maintain共有アプリケーションへの運用アクセス
manager監視に加えてアプリケーションのライフサイクル(起動、停止、再起動)
view読み取り専用アクセス

メンバーのロールの変更

err := api.UpdateWorkspaceMember("1234567890abcdef1234567890abcdef", "abcdef0123456789abcdef01", "admin")
if err != nil {
	panic(err)
}

メンバーの削除

err := api.RemoveWorkspaceMember("1234567890abcdef1234567890abcdef", "abcdef0123456789abcdef01")
if err != nil {
	panic(err)
}

アプリケーションの共有

err := api.AddWorkspaceApplication("1234567890abcdef1234567890abcdef", "abc123def456abc123def456")
if err != nil {
	panic(err)
}

err = api.RemoveWorkspaceApplication("1234567890abcdef1234567890abcdef", "abc123def456abc123def456")

workspace からの退出または削除

workspace の削除は取り消せず、オーナーのみが実行できます。
// メンバーとして
err := api.LeaveWorkspace("1234567890abcdef1234567890abcdef")

// オーナーとして(取り消し不可)
err = api.DeleteWorkspace("1234567890abcdef1234567890abcdef")