GitHub कनेक्टर

developer engagement tracking, release notification workflows, और community activity monitoring के लिए अपने GitHub repositories को Tajo के माध्यम से Brevo से कनेक्ट करें।

अवलोकन

PropertyValue
PlatformGitHub
CategoryCustom
Setup ComplexityModerate
Official IntegrationNo
Data SyncedEvents, Users, Repositories
API TypeREST API, GraphQL API
AuthenticationGitHub App / Personal Access Token / OAuth 2.0
Base URLhttps://api.github.com
API Version2022-11-28 (header-based versioning)

विशेषताएं

  • Issue और PR tracking - issue और pull request events को Brevo contact timelines में sync करें
  • Release notifications - नए repository releases पर Brevo campaigns trigger करें
  • Contributor sync - community engagement के लिए GitHub contributors को Brevo contacts से map करें
  • Star और fork tracking - repository popularity metrics monitor करें
  • Webhook event forwarding - GitHub events को Brevo automations में forward करें
  • Repository catalog - repository metadata को Brevo catalog items के रूप में sync करें

पूर्वावश्यकताएं

शुरू करने से पहले, सुनिश्चित करें कि आपके पास हैं:

  1. target repositories तक access वाला एक GitHub account
  2. एक GitHub App या Personal Access Token (fine-grained अनुशंसित)
  3. webhook configuration के लिए repositories का admin access
  4. API access वाला एक Brevo account
  5. सक्रिय subscription वाला एक Tajo account

प्रमाणीकरण

GitHub कई authentication methods को support करता है। Tajo organization-level access के लिए GitHub Apps का उपयोग करने की अनुशंसा करता है।

विकल्प 1: GitHub App (अनुशंसित)

  1. Settings > Developer settings > GitHub Apps पर जाएं
  2. New GitHub App पर क्लिक करें
  3. इन permissions के साथ app कॉन्फ़िगर करें:
Repository permissions:
Issues: Read
Pull requests: Read
Contents: Read
Metadata: Read
Organization permissions:
Members: Read
Subscribe to events:
Issues
Pull request
Push
Release
Star
Fork

विकल्प 2: Fine-Grained Personal Access Token

  1. Settings > Developer settings > Personal access tokens > Fine-grained tokens पर जाएं
  2. Generate new token पर क्लिक करें
  3. target repositories चुनें
  4. ये permissions दें:
Repository access: Selected repositories
Permissions:
Issues: Read-only
Pull requests: Read-only
Contents: Read-only
Metadata: Read-only

Token Security

Fine-grained tokens की expiration dates होती हैं। expiry से पहले token rotation सेट करें। GitHub App installation tokens auto-refresh होते हैं और production use के लिए बेहतर हैं।

Tajo से कनेक्ट करना

Terminal window
# GitHub App का उपयोग
tajo connectors install github \
--app-id $GITHUB_APP_ID \
--private-key-path ./github-app-key.pem \
--installation-id $GITHUB_INSTALLATION_ID
# Personal Access Token का उपयोग
tajo connectors install github \
--token $GITHUB_TOKEN

कॉन्फ़िगरेशन

बेसिक सेटअप

connectors:
github:
enabled: true
auth_type: "github_app" # or "token"
repositories:
- owner/repo-1
- owner/repo-2
sync:
issues: true
pull_requests: true
releases: true
contributors: true
stars: true
lists:
contributors: 20
stargazers: 21

Field Mapping

GitHub user data को Brevo contact attributes से map करें:

field_mapping:
# Standard fields
login: GITHUB_USERNAME
email: email
name: FIRSTNAME
# Developer metrics
contributions: GITHUB_CONTRIBUTIONS
repositories_count: GITHUB_REPOS
followers: GITHUB_FOLLOWERS
created_at: GITHUB_JOINED
# Custom attributes
company: COMPANY
location: LOCATION
bio: GITHUB_BIO

API Endpoints

Tajo निम्नलिखित GitHub REST API endpoints के साथ integrate करता है:

EndpointMethodउद्देश्य
/repos/{owner}/{repo}/issuesGETrepository issues list करें
/repos/{owner}/{repo}/pullsGETpull requests list करें
/repos/{owner}/{repo}/releasesGETreleases list करें
/repos/{owner}/{repo}/contributorsGETcontributors list करें
/repos/{owner}/{repo}/stargazersGETstargazers list करें
/repos/{owner}/{repo}/forksGETforks list करें
/repos/{owner}/{repo}/eventsGETrepository events list करें
/users/{username}GETuser profile प्राप्त करें
/orgs/{org}/membersGETorganization members list करें
/repos/{owner}/{repo}/hooksPOSTwebhook बनाएं

कोड उदाहरण

कनेक्टर शुरू करें

import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({
apiKey: process.env.TAJO_API_KEY,
brevoApiKey: process.env.BREVO_API_KEY
});
await tajo.connectors.connect('github', {
appId: process.env.GITHUB_APP_ID,
privateKey: process.env.GITHUB_PRIVATE_KEY,
installationId: process.env.GITHUB_INSTALLATION_ID
});

Contributors को Brevo से Sync करें

await tajo.connectors.sync('github', {
type: 'full',
resources: ['contributors'],
repositories: ['owner/repo-1', 'owner/repo-2']
});
const status = await tajo.connectors.status('github');
console.log(status);
// {
// connected: true,
// lastSync: '2024-03-15T11:00:00Z',
// contributorsCount: 245,
// issuesTracked: 1890,
// releasesTracked: 34
// }

Webhook Events हैंडल करें

app.post('/webhooks/github', async (req, res) => {
const signature = req.get('X-Hub-Signature-256');
const event = req.get('X-GitHub-Event');
// webhook signature सत्यापित करें
if (!verifyGitHubSignature(req.body, signature)) {
return res.status(401).send('Unauthorized');
}
await tajo.connectors.handleWebhook('github', {
event,
payload: req.body
});
res.status(200).send('OK');
});

Release Campaign Trigger करें

// नए releases सुनें और Brevo campaign trigger करें
tajo.connectors.on('github', 'release.published', async (event) => {
await tajo.campaigns.trigger('release-announcement', {
listId: 21,
params: {
version: event.release.tag_name,
release_notes: event.release.body,
download_url: event.release.html_url
}
});
});

Rate Limits

GitHub authentication method के आधार पर rate limits लागू करता है:

AuthenticationPrimary Rate LimitSearch API
Unauthenticated60 requests/hour10 requests/minute
Personal Access Token5,000 requests/hour30 requests/minute
GitHub App (installation)5,000 requests/hour30 requests/minute
GitHub App (user-to-server)5,000 requests/hour30 requests/minute

Conditional Requests

Tajo API consumption कम करने के लिए conditional requests (If-None-Match / If-Modified-Since headers) का उपयोग करता है। 304 Not Modified वाले responses rate limits में नहीं गिने जाते।

अतिरिक्त limits:

  • Secondary rate limits: 100 से अधिक concurrent requests नहीं। REST API endpoints के लिए प्रति minute 900 points से अधिक नहीं।
  • GraphQL: 5,000 points प्रति घंटा (query cost complexity के अनुसार भिन्न होती है)।

समस्या निवारण

सामान्य समस्याएं

समस्याकारणसमाधान
401 UnauthorizedExpired token या गलत credentialstoken पुनः generate करें या GitHub App पुनः install करें
403 Forbiddenअपर्याप्त permissionstoken scopes या App permissions की जांच करें
404 Not Foundaccess के बिना private repotoken या App को repository access दें
Rate limit exceededबहुत अधिक API callsconditional requests enable करें और sync frequency कम करें
Webhooks प्राप्त नहीं हुएगलत URL या firewallसत्यापित करें कि webhook URL सार्वजनिक रूप से accessible है

Debug Mode

connectors:
github:
debug: true
log_level: verbose
log_webhooks: true

Connection Test करें

Terminal window
tajo connectors test github
# ✓ API authentication successful
# ✓ Repository access verified
# ✓ Issue data readable
# ✓ Webhook delivery active
# ✓ Rate limit healthy (4,850/5,000 remaining)

सर्वोत्तम प्रथाएं

  1. PATs के बजाय GitHub Apps का उपयोग करें - GitHub Apps granular permissions और auto-refreshing tokens प्रदान करते हैं
  2. Webhook secrets enable करें - हमेशा HMAC-SHA256 के साथ webhook signatures सत्यापित करें
  3. Conditional requests का उपयोग करें - rate limit quota बर्बाद करने से बचने के लिए ETags का लाभ उठाएं
  4. बड़े responses को paginate करें - GitHub प्रति page अधिकतम 100 items लौटाता है; Link headers के साथ iterate करें
  5. कम गतिविधि के दौरान sync करें - peak development hours के बाहर full syncs schedule करें
  6. Rate limit headers monitor करें - सक्रिय रूप से throttle करने के लिए X-RateLimit-Remaining की जांच करें

सुरक्षा

  • GitHub App Authentication - short-lived installation tokens के साथ RSA key-आधारित JWT
  • Webhook Signatures - सभी webhook payloads पर HMAC-SHA256 signature verification
  • Fine-Grained Tokens - विशिष्ट repositories और permissions तक scoped
  • HTTPS Only - सभी API communication TLS 1.2+ के माध्यम से encrypted
  • Encrypted Storage - Private keys और tokens Tajo में at rest encrypted
  • Token Expiration - Fine-grained tokens auto-expire होते हैं; rotation alerts सेट करें

संबंधित संसाधन

Subscribe to updates

developer-docs

Drop your email or phone number — we'll send you what matters next.

auto-detect
AI सहायक

नमस्ते! डॉक्यूमेंटेशन के बारे में कुछ भी पूछें।