Create workspace
Sets the org's code workspace up for the caller and answers it: the namespace, made when the org has none, and the caller's forge account and seat there.
POST /v1/git/workspace
| Address | https://api.hanzo.ai/v1/git/workspace |
| Method | POST |
| Operation | post_git_workspace |
| Auth | Authorization: Bearer $HANZO_API_KEY |
Sets the org's code workspace up for the caller and answers it: the namespace, made when the org has none, and the caller's forge account and seat there. Idempotent. The estate's namespace is answered from the closed table and nobody is enrolled in it. A seat is a person's: an API key or an application is refused, and a SuperAdmin acting in another org reads the workspace as it is and makes nothing.
Request
The document declares no body for POST /v1/git/workspace. The handler is typed in cloud but its shape is not yet emitted, so the fields are not listed here — ask MCP's describe for post_git_workspace, which answers from the running route.
Response
| Status | Body | Meaning |
|---|---|---|
200 | git.workspaceView | ok |
default | problem-details | refused |
200 body — 3 fields.
| Field | In | Type | Always | Description |
|---|---|---|---|---|
login | body | string | — | Login is the caller's forge account in a made workspace. |
made | body | boolean | — | Made says the platform made it for the org; false is the estate's. |
owner | body | string | — | Owner is the forge namespace. |
Failure carries the platform error shape — see Errors.
Examples
hanzo has no subcommand for this operation — the CLI serves only what cloud's live route table confirms. Use HTTP or an SDK.
import { Configuration, GitApi } from 'hanzoai';
const api = new GitApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.postGitWorkspace();from hanzoai.cloud import ApiClient, Configuration
from hanzoai.cloud.api import GitApi
client = ApiClient(Configuration(access_token=os.environ["HANZO_API_KEY"]))
result = GitApi(client).post_git_workspace()cfg := hanzoai.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := hanzoai.NewAPIClient(cfg)
resp, _, err := client.GitAPI.PostGitWorkspace(context.Background()).Execute()
if err != nil {
return err
}use hanzo_client::apis::{configuration::Configuration, git_api};
let mut cfg = Configuration::new();
cfg.bearer_access_token = std::env::var("HANZO_API_KEY").ok();
let result = git_api::post_git_workspace(&cfg, Default::default()).await?;import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.GitApi;
ApiClient client = new ApiClient();
client.setBearerToken(System.getenv("HANZO_API_KEY"));
var result = new GitApi(client).postGitWorkspace();curl -X POST https://api.hanzo.ai/v1/git/workspace \
-H "Authorization: Bearer $HANZO_API_KEY"MCP reaches git through the git tool, which names its 38 operations with its own verbs — this one among them, under a name only MCP declares. describe explains any of them:
curl -X POST https://api.hanzo.ai/v1/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "describe",
"arguments": {
"op": "list_git_keys"
}
}
}'