Repository Analysis

rmyndharis/OpenWA

Free, Open Source, Self-Hosted WhatsApp API Gateway

6.6 Low AI signal View on GitHub
6.6
Adjusted Score
6.6
Raw Score
100%
Time Factor
2026-05-25
Last Push
7,043
Stars
TypeScript
Language
66,414
Lines of Code
219
Files
112
Pattern Hits
2026-05-31
Scan Date

Score History

Severity Breakdown

CRITICAL 0HIGH 33MEDIUM 64LOW 15

Pattern Findings

112 matches across 5 categories. Click a row to expand file-level details.

Decorative Section Separators64 hits · 216 pts
SeverityFileLineSnippet
MEDIUMdocs/10-devops-infrastructure.md400# ===========================================
MEDIUMdocs/10-devops-infrastructure.md402# ===========================================
MEDIUMdocs/10-devops-infrastructure.md409# ===========================================
MEDIUMdocs/10-devops-infrastructure.md411# ===========================================
MEDIUMdocs/10-devops-infrastructure.md422# ===========================================
MEDIUMdocs/10-devops-infrastructure.md424# ===========================================
MEDIUMdocs/10-devops-infrastructure.md445# ===========================================
MEDIUMdocs/10-devops-infrastructure.md447# ===========================================
MEDIUMdocs/10-devops-infrastructure.md457# ===========================================
MEDIUMdocs/10-devops-infrastructure.md459# ===========================================
MEDIUMdocs/10-devops-infrastructure.md473# ===========================================
MEDIUMdocs/10-devops-infrastructure.md475# ===========================================
MEDIUMdocs/10-devops-infrastructure.md480# ===========================================
MEDIUMdocs/10-devops-infrastructure.md482# ===========================================
MEDIUMdocs/10-devops-infrastructure.md487# ===========================================
MEDIUMdocs/10-devops-infrastructure.md489# ===========================================
MEDIUMdashboard/src/hooks/queries.ts12// ── Query Keys ────────────────────────────────────────────────────────
MEDIUMdashboard/src/hooks/queries.ts28// ── Session Queries ───────────────────────────────────────────────────
MEDIUMdashboard/src/hooks/queries.ts97// ── Webhook Queries ───────────────────────────────────────────────────
MEDIUMdashboard/src/hooks/queries.ts140// ── API Key Queries ───────────────────────────────────────────────────
MEDIUMdashboard/src/hooks/queries.ts181// ── Logs Queries ──────────────────────────────────────────────────────
MEDIUMdashboard/src/hooks/queries.ts196// ── Infrastructure Queries ────────────────────────────────────────────
MEDIUMdashboard/src/hooks/queries.ts206// ── Plugin Queries ────────────────────────────────────────────────────
MEDIUMsdk/javascript/src/index.ts25// ── Client Configuration ──────────────────────────────────────────
MEDIUMsdk/javascript/src/index.ts38// ── Response Types ────────────────────────────────────────────────
MEDIUMsdk/javascript/src/index.ts53// ── Client Class ──────────────────────────────────────────────────
MEDIUMsdk/javascript/src/index.ts84 // ── Internal HTTP client ──────────────────────────────────────────
MEDIUM.github/workflows/release.yml15 # ──── Build & Test Gate ───────────────────────────────────────────
MEDIUM.github/workflows/release.yml37 # ──── Create GitHub Release ───────────────────────────────────────
MEDIUM.github/workflows/release.yml76 # ──── Docker Image with Version Tag ───────────────────────────────
MEDIUMsrc/modules/webhook/webhook.service.spec.ts82 // ── create ────────────────────────────────────────────────────────
MEDIUMsrc/modules/webhook/webhook.service.spec.ts126 // ── findBySession / findAll / findOne ──────────────────────────────
MEDIUMsrc/modules/webhook/webhook.service.spec.ts166 // ── update ────────────────────────────────────────────────────────
MEDIUMsrc/modules/webhook/webhook.service.spec.ts181 // ── delete ────────────────────────────────────────────────────────
MEDIUMsrc/modules/webhook/webhook.service.spec.ts195 // ── dispatch (direct mode — queue disabled) ───────────────────────
MEDIUMsrc/modules/webhook/webhook.service.spec.ts288 // ── generateSignature (via dispatch) ──────────────────────────────
MEDIUMsrc/modules/webhook/webhook.service.spec.ts344 // ── dispatch (queue mode) ─────────────────────────────────────────
MEDIUMsrc/modules/auth/auth.service.spec.ts58 // ── createApiKey ──────────────────────────────────────────────────
MEDIUMsrc/modules/auth/auth.service.spec.ts100 // ── findAll / findOne ─────────────────────────────────────────────
MEDIUMsrc/modules/auth/auth.service.spec.ts130 // ── update ────────────────────────────────────────────────────────
MEDIUMsrc/modules/auth/auth.service.spec.ts145 // ── delete / revoke ───────────────────────────────────────────────
MEDIUMsrc/modules/auth/auth.service.spec.ts177 // ── validateApiKey ────────────────────────────────────────────────
MEDIUMsrc/modules/auth/auth.service.spec.ts250 // ── hasPermission ─────────────────────────────────────────────────
MEDIUMsrc/modules/auth/auth.service.spec.ts279 // ── hashKey (via validateApiKey) ──────────────────────────────────
MEDIUMsrc/modules/auth/auth.service.spec.ts294 // ── isIpAllowed / ipInCidr (via validateApiKey) ───────────────────
MEDIUMsrc/modules/message/message.service.spec.ts70 // ── sendText ──────────────────────────────────────────────────────
MEDIUMsrc/modules/message/message.service.spec.ts139 // ── sendImage ─────────────────────────────────────────────────────
MEDIUMsrc/modules/message/message.service.spec.ts170 // ── sendVideo / sendAudio / sendDocument / sendSticker ────────────
MEDIUMsrc/modules/message/message.service.spec.ts216 // ── sendLocation ──────────────────────────────────────────────────
MEDIUMsrc/modules/message/message.service.spec.ts235 // ── sendContact ───────────────────────────────────────────────────
MEDIUMsrc/modules/message/message.service.spec.ts253 // ── reply / forward ───────────────────────────────────────────────
MEDIUMsrc/modules/message/message.service.spec.ts295 // ── saveIncomingMessage ───────────────────────────────────────────
MEDIUMsrc/modules/message/message.service.spec.ts315 // ── buildMediaInput (via sendImage) ───────────────────────────────
MEDIUMsrc/modules/message/message.service.spec.ts334 // ── reactToMessage / deleteMessage ────────────────────────────────
MEDIUMsrc/modules/session/session.service.spec.ts107 // ── create ────────────────────────────────────────────────────────
MEDIUMsrc/modules/session/session.service.spec.ts134 // ── findAll / findOne / findByName ────────────────────────────────
MEDIUMsrc/modules/session/session.service.spec.ts180 // ── delete ────────────────────────────────────────────────────────
MEDIUMsrc/modules/session/session.service.spec.ts214 // ── start ─────────────────────────────────────────────────────────
MEDIUMsrc/modules/session/session.service.spec.ts256 // ── stop ──────────────────────────────────────────────────────────
MEDIUMsrc/modules/session/session.service.spec.ts277 // ── getQRCode ─────────────────────────────────────────────────────
4 more matches not shown…
Magic Placeholder Names33 hits · 208 pts
SeverityFileLineSnippet
HIGHREADME.md178 -H "X-API-Key: YOUR_API_KEY" \
HIGHREADME.md187 -H "X-API-Key: YOUR_API_KEY"
HIGHREADME.md191 -H "X-API-Key: YOUR_API_KEY"
HIGHREADME.md199 -H "X-API-Key: YOUR_API_KEY" \
HIGHREADME.md211 -H "X-API-Key: YOUR_API_KEY" \
HIGHdocs/18-sdk-design.md62 apiKey: 'your-api-key',
HIGHdocs/18-sdk-design.md551 api_key="your-api-key"
HIGHdocs/18-sdk-design.md860 'apiKey' => 'your-api-key',
HIGHdocs/README.md115 -H "X-API-Key: your-api-key" \
HIGHdocs/README.md121 -H "X-API-Key: your-api-key"
HIGHdocs/README.md125 -H "X-API-Key: your-api-key"
HIGHdocs/README.md129 -H "X-API-Key: your-api-key" \
HIGHdocs/README.md140 extraHeaders: { 'X-API-Key': 'your-api-key' },
HIGHdocs/06-api-specification.md14X-API-Key: your-api-key-here
HIGHdocs/06-api-specification.md17GET /api/sessions?apiKey=your-api-key-here
HIGHdocs/06-api-specification.md24X-API-Key: your-api-key
HIGHdocs/06-api-specification.md1389wss://your-domain.com/ws?apiKey=your-api-key # browser fallback
HIGHdocs/06-api-specification.md1394X-API-Key: your-api-key
HIGHdocs/06-api-specification.md1399const ws = new WebSocket('wss://your-domain.com/ws?apiKey=your-api-key');
HIGHdocs/06-api-specification.md1523const ws = new WebSocket('ws://localhost:2785/ws?apiKey=your-api-key');
HIGHdocs/06-api-specification.md1596 -H "X-API-Key: your-api-key" \
HIGHdocs/06-api-specification.md1603 -H "X-API-Key: your-api-key" \
HIGHdocs/06-api-specification.md1613 -H "X-API-Key: your-api-key" \
HIGHdocs/06-api-specification.md1630 'X-API-Key': 'your-api-key',
HIGHdocs/06-api-specification.md1687client = OpenWA('http://localhost:2785/api', 'your-api-key')
HIGHdocs/06-api-specification.md1695const ws = new WebSocket('ws://localhost:2785/ws?apiKey=your-api-key');
HIGHdocs/07-api-collection.md19X-API-Key: your-api-key-here
HIGHdocs/07-api-collection.md1143 "value": "your-api-key",
HIGHdocs/07-api-collection.md1306API_KEY="your-api-key"
HIGHsdk/README.md20 apiKey: 'your-api-key',
HIGHsdk/README.md41 api_key="your-api-key",
HIGHsdk/python/openwa/__init__.py12 api_key="your-api-key",
HIGHsdk/javascript/src/index.ts12 * apiKey: 'your-api-key',
Fake / Example Data10 hits · 11 pts
SeverityFileLineSnippet
LOWdocs/06-api-specification.md670 "name": "John Doe",
LOWdocs/06-api-specification.md877 "name": "John Doe",
LOWdocs/06-api-specification.md1286 "name": "John Doe",
LOWdocs/07-api-collection.md156 "profileName": "John Doe",
LOWdocs/07-api-collection.md229 "profileName": "John Doe",
LOWdocs/07-api-collection.md432 "name": "John Doe",
LOWdocs/07-api-collection.md595 "name": "John Doe",
LOWsrc/modules/message/message.service.spec.ts241 contactName: 'John Doe',
LOWsrc/modules/message/message.service.spec.ts248 expect.objectContaining({ name: 'John Doe', number: '+628123456789' }),
LOWsrc/modules/session/dto/session-response.dto.ts17 @ApiPropertyOptional({ example: 'John Doe' })
Over-Commented Block3 hits · 3 pts
SeverityFileLineSnippet
LOWdocs/10-devops-infrastructure.md401# APPLICATION
LOWdocs/10-devops-infrastructure.md421
LOWdocs/10-devops-infrastructure.md441# STORAGE_S3_ACCESS_KEY_ID=minioadmin
Unused Imports2 hits · 2 pts
SeverityFileLineSnippet
LOWsdk/python/openwa/__init__.py22
LOWsdk/python/openwa/__init__.py24