Feature Request: API endpoint to add mirrors programmatically #133

Closed
opened 2026-10-05 01:43:37 +02:00 by adam · 2 comments
Owner

Problem

There is currently no way to add a mirror to gitea-mirror without manually editing the configuration. This blocks automation use cases such as:

  • GitHub Actions / CI pipelines that auto-register new repos
  • Workflow tools (n8n, Make, etc.) reacting to external events
  • Infrastructure-as-code / GitOps setups

Proposed solution

Add a simple REST API (with API key auth) exposing at minimum:

POST /api/mirrors   – create a new mirror
GET  /api/mirrors   – list existing mirrors

Example payload:

{
  "source": "https://github.com/owner/repo",
  "destination": "https://gitea.example.com/owner/repo",
  "interval": "1h"
}

The API key could be set via an env variable and disabled by default.

Why this matters

This would make gitea-mirror viable in fully automated environments without any manual intervention, and would open the door to community integrations (n8n nodes, Actions, etc.).

Open to contributing or testing if there's interest. 🙏

### Problem There is currently no way to add a mirror to `gitea-mirror` without manually editing the configuration. This blocks automation use cases such as: - GitHub Actions / CI pipelines that auto-register new repos - Workflow tools (n8n, Make, etc.) reacting to external events - Infrastructure-as-code / GitOps setups ### Proposed solution Add a simple REST API (with API key auth) exposing at minimum: ``` POST /api/mirrors – create a new mirror GET /api/mirrors – list existing mirrors ``` Example payload: ```json { "source": "https://github.com/owner/repo", "destination": "https://gitea.example.com/owner/repo", "interval": "1h" } ``` The API key could be set via an env variable and disabled by default. ### Why this matters This would make `gitea-mirror` viable in fully automated environments without any manual intervention, and would open the door to community integrations (n8n nodes, Actions, etc.). Open to contributing or testing if there's interest. 🙏 <!-- github-sync-id:4607133537 -->
adam closed this issue 2026-10-05 01:43:37 +02:00
Author
Owner

@ThomasMillochau No dedicated mirrors API yet, but you can already automate it with the existing endpoints: sign in via POST /api/auth/sign-in/email to get a session cookie, then POST /api/sync/repository to add a repo and POST /api/job/mirror-repo to start the mirror. It's session-based rather than an API key, so the caveats are that it needs the account password and the schedule interval is global. A proper API-key setup with a /api/v1/mirrors namespace is the right long-term fix. Happy to take a PR if you want to tackle it.

@ThomasMillochau No dedicated mirrors API yet, but you can already automate it with the existing endpoints: sign in via `POST /api/auth/sign-in/email` to get a session cookie, then `POST /api/sync/repository` to add a repo and `POST /api/job/mirror-repo` to start the mirror. It's session-based rather than an API key, so the caveats are that it needs the account password and the schedule interval is global. A proper API-key setup with a `/api/v1/mirrors` namespace is the right long-term fix. Happy to take a PR if you want to tackle it. <!-- github-comment-id:4700710424 -->
Author
Owner

@ThomasMillochau Have a look at the new API

@ThomasMillochau Have a look at the new API <!-- github-comment-id:5515212966 -->
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: adam/gitea-mirror#133