Create targets

Registers a downstream remote the repo's advanced refs are pushed to whenever a push lands here.

POST /v1/git/repos/{name}/targets

Addresshttps://api.hanzo.ai/v1/git/repos/{name}/targets
MethodPOST
Operationpost_git_repos_by_name_targets
AuthAuthorization: Bearer $HANZO_API_KEY

Registers a downstream remote the repo's advanced refs are pushed to whenever a push lands here. Answers 201. The URL must be https to a host on the mirror allowlist (github.com / gitlab.com): the same set the mirror credential may be sent to, so a target can never capture the shared token or point the push at an internal service. Any embedded userinfo is stripped — credentials ride env-only at push time and never enter the stored URL. One mirror per host per repo; a second is a 409.

Request

4 fields, body application/json (required).

FieldInTypeRequiredDescription
namepathstringyesName is the repo whose advanced refs are pushed downstream, from the :name path segment.
hostbodystring—Host is an optional assertion of the target's hostname.
namebodystring—Name is the repo whose advanced refs are pushed downstream, from the :name path segment.
urlbodystring—URL is the downstream https git remote.

Response

StatusBodyMeaning
201git.mirrorTargetViewcreated
defaultproblem-detailsrefused

201 body — 5 fields.

FieldInTypeAlwaysDescription
createdAtbodystring—CreatedAt is RFC 3339 UTC.
hostbodystring—Host is the target's lowercased hostname, taken from URL and never the body.
idbodystring—ID is the target's identifier ("mir_…"), the handle to remove it by.
repobodystring—Repo is the repo whose advanced refs are pushed downstream.
urlbodystring—URL is the canonical https remote, with any embedded credentials stripped.

Failure carries the platform error shape — see Errors.

Examples

hanzo git repos targets create <name>
import { Configuration, GitApi } from 'hanzoai';

const api = new GitApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.postGitReposByNameTargets({ name: 'name', host: "<host>", name: "<name>" });
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_targets(name='name', host="<host>", name="<name>")
cfg := hanzoai.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := hanzoai.NewAPIClient(cfg)

resp, _, err := client.GitAPI.PostGitReposByNameTargets(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_repos_by_name_targets(&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).postGitReposByNameTargets();
curl -X POST https://api.hanzo.ai/v1/git/repos/<name>/targets \
  -H "Authorization: Bearer $HANZO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
       "host": "<host>",
       "name": "<name>"
     }'

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"
         }
       }
     }'

Git API · All Hanzo APIs · Interactive reference

Was this page useful?