OpenapiGit
Lands a set of files as one commit without a git client — the hanzo.app…
Lands a set of files as one commit without a git client — the hanzo.app builder's push.
POST /v1/git/repos/{name}/push
| Address | https://api.hanzo.ai/v1/git/repos/{name}/push |
| Method | POST |
| Operation | post_git_repos_by_name_push |
| Auth | Authorization: Bearer $HANZO_API_KEY |
Lands a set of files as one commit without a git client — the
hanzo.app builder's push. The repo is CREATED on first push, the files are
merged onto the branch tip (unlisted files survive), and the same
push-to-deploy hook a real receive-pack fires is fired, so downstream this is
indistinguishable from a git push.
Request
8 fields, body application/json (required).
| Field | In | Type | Required | Description |
|---|---|---|---|---|
name | path | string | yes | Name is the repo to push into, from the :name path segment. |
branch | body | string | — | Branch to advance; empty means "main". |
files | body | pushFile[] | — | Files are added to or overwritten on the branch tip — files already there and not listed SURVIVE. |
files[].content | body | string | — | Content is the file's bytes, carried per Encoding. |
files[].encoding | body | string | — | Encoding is "base64", or "utf-8" (the default, also "utf8" / "text"). |
files[].path | body | string | — | Path is repo-relative. |
message | body | string | — | Message is the commit message; empty gets a generated one. |
name | body | string | — | Name is the repo to push into, from the :name path segment. |
Response
| Status | Body | Meaning |
|---|---|---|
200 | pushResp | ok |
200 body — 4 fields.
| Field | In | Type | Always | Description |
|---|---|---|---|---|
branch | body | string | — | Branch is the branch that was advanced, resolved (never empty). |
cloneUrl | body | string | — | CloneURL is the repo's HTTPS remote. |
commit | body | string | — | Commit is the new commit's full hash. |
sshUrl | body | string | — | SSHURL is the repo's scp-style SSH remote. |
Failure carries the platform error shape — see Errors.
Examples
hanzo git repos push <name>import { Configuration, GitApi } from 'hanzoai';
const api = new GitApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.postGitReposByNamePush({ name: 'name', branch: "<branch>", files: [{"content":"<content>","encoding":"<encoding>","path":"<path>"}] });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_repos_by_name_push(name='name', branch="<branch>", files=[{"content":"<content>","encoding":"<encoding>","path":"<path>"}])cfg := cloud.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := cloud.NewAPIClient(cfg)
resp, _, err := client.GitAPI.PostGitReposByNamePush(context.Background()).Execute()
if err != nil {
return err
}use hanzo_cloud::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_repos_by_name_push(&cfg, Default::default()).await?;import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.GitApi;
ApiClient client = new ApiClient();
client.setRequestInterceptor(b -> b.header("Authorization", "Bearer " + System.getenv("HANZO_API_KEY")));
var result = new GitApi(client).postGitReposByNamePush();curl -X POST https://api.hanzo.ai/v1/git/repos/<name>/push \
-H "Authorization: Bearer $HANZO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"branch": "<branch>",
"files": [
{
"content": "<content>",
"encoding": "<encoding>",
"path": "<path>"
}
]
}'The door reaches git through the git tool, which names its 56 operations with its own verbs — this one among them, under a name only the door 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": "get_git"
}
}
}'How is this guide?