# 使用 Product SDK

Product SDK 用于在 Go 或 Python 应用中操作工作区范围内的产品资源。当前尚未提供可确认的对外分发入口；已通过正式渠道获得 SDK 的读者，可以按本页完成只读连接验证。不要用其他 SDK 的安装命令或内部模块路径代替正式安装入口。

## 1. 准备接入信息

```bash
export PRODUCT_API_BASE_URL='<Product API Base URL ending in /newmoi>'
export PRODUCT_API_KEY='<your-personal-access-token>'
```

SDK 不会自动添加 `/newmoi`。个人访问令牌按原始值传入，客户端会通过 `X-API-Key` 发送。

## 2. 列出可见工作区

:::::{tab-set}

::::{tab-item} Python

```python
import os

import moi_product_sdk as sdk

client = sdk.new_with_personal_access_token(
    os.environ["PRODUCT_API_BASE_URL"],
    os.environ["PRODUCT_API_KEY"],
)
result = client.workspaces().list()
for workspace in result.workspaces:
    print(workspace.id, workspace.name)
```

::::

::::{tab-item} Go

```go
package main

import (
	"context"
	"fmt"
	"os"

	sdk "github.com/matrixorigin/matrixflow/sdk/go-sdk"
)

func main() {
	ctx := context.Background()
	client, err := sdk.NewWithPersonalAccessToken(
		os.Getenv("PRODUCT_API_BASE_URL"),
		os.Getenv("PRODUCT_API_KEY"),
	)
	if err != nil {
		panic(err)
	}
	result, err := client.Workspaces().List(ctx)
	if err != nil {
		panic(err)
	}
	for _, workspace := range result.GetWorkspaces() {
		fmt.Printf("%s\t%s\n", workspace.GetId(), workspace.GetName())
	}
}
```

::::

:::::

列表成功返回表示 Endpoint 和个人访问令牌可以用于工作区发现。选择一个返回的工作区 ID，再使用 Python 的 `client.workspace(workspace_id)` 或 Go 的 `client.Workspace(workspaceID)` 进入工作区作用域。不要用可能创建工作区的 `ensure_workspace` 或 `EnsureWorkspace` 验证连接。

## 下一步

- [确认安装限制](../sdk/product-sdk/getting-started/installation.md)
- [配置客户端和工作区](../sdk/product-sdk/getting-started/authentication-client.md)
- [选择 Product SDK 任务指南](../sdk/product-sdk/guides/index.md)
