Git
Git is git inside a Tefily project: repositories, browse, branches, tags, commits, and merge-request review.
HTTPS (Smart HTTP, not under /api):
https://api.tefily.com/git/{projectId}/{repoSlug}SSH (when enabled on the platform):
git@git.tefily.com:{projectId}/{repoSlug}.gitAdd account SSH keys in console Settings (POST /api/auth/ssh-keys with { "title", "publicKey" }). A user can store 20 SSH keys. Deploy keys can be attached per repository for CI, up to 20 per repository.
Merge requests
Section titled “Merge requests”Create an MR from a branch, review diffs, comment (including suggestions), submit reviews, merge / close / reopen. Conflict check is a dedicated endpoint. Review states are approved, changes_requested, and commented. Apply a suggestion with POST .../merge-requests/:mrId/comments/:commentId/apply-suggestion.
POST /api/projects/:projectId/git/repos/:repoId/merge-requests/:mrId/reviews{ "state": "approved", "body": "LGTM" }Link a repo to Hosting so auto / auto_branch deploys on push or merged MR.
Commit .kataflax/ci.yaml and register a machine on the repository Runners tab to test, build, and publish from that repo. See CI runner.
Protected branches
Section titled “Protected branches”Open the repository Settings.
PUT /api/projects/:projectId/git/repos/:repoId/protections{ "branch": "main", "requiredApprovals": 1 }GET lists them. DELETE uses the same path with query parameter branch. Deleting a protected branch returns 403 unless the caller bypasses protection. Merge is refused until approving reviews reach requiredApprovals.
Editor
Section titled “Editor”Open workspace opens the editor. Saves go to PUT .../git/repos/:repoId/workspaces/file. The branch ref is lastare/<name>/<userId>/<id>.
Limits
Section titled “Limits”| Limit | Free | Pro | Scale |
|---|---|---|---|
| Repositories per organization | plan limit | plan limit | plan limit |
| Largest single push | 100 MB | 1 GB | 2 GB |
| Repository storage | included allowance, then billed |
- A push over the size limit, or from a project whose repository storage is far over its allowance, is rejected before any ref moves (HTTPS and SSH). The client prints
Push rejected: …with the limit. Delete branches or run a gc, then push again. - Storage is measured on the server (sizes are cached and refreshed after pushes, editor writes, and hourly). Git LFS is not supported.
- A suspended billing account gets
402 payment_requiredon pushes, repository creation, and editor writes. - Editor workspaces: up to 20 per user per repository (delete one to create another) and 5 MiB per saved file. Over-limit saves return
413 payload_too_large; the buffer stays unsaved. - Clone and fetch traffic is recorded as
git_egress_mbfor usage reporting; it is not limited.
Plan fees and included quotas: Pricing.
list_git_repos, create_git_repo, get_git_tree, get_git_blob, list_merge_requests, … Prompt: navigate_git_repository.
REST lives under /api/projects/:projectId/git/... with a platform JWT or PAT. See API reference.