openapi: 3.2.0 info: title: LDM v3 Tracking / Domain API description: 'Multi-tenant B2B outreach automation platform. Auth: JWT Bearer (15-min) or tenant API key (ldm_*) managed in CRM Settings → API Keys. All tenant-scoped endpoints require the X-Tenant-Id header.' version: 1.0.0 contact: {} servers: - url: https://api.live-direct-marketing.online description: Production - url: https://api.dev.live-direct-marketing.online description: Development - url: http://127.0.0.1:3000 description: Local tags: - name: Tracking / Domain paths: /api/tracking-domains: get: operationId: TrackingDomainController_findAll parameters: - name: status required: true in: query schema: type: string - name: search required: true in: query schema: type: string - name: page required: true in: query schema: type: string - name: limit required: true in: query schema: type: string - name: X-Tenant-Id in: header required: false schema: type: string format: uuid description: Tenant UUID — required for all tenant-scoped endpoints responses: '200': description: '' security: - jwt: [] summary: List tracking domains tags: - Tracking / Domain post: operationId: TrackingDomainController_create parameters: - name: X-Tenant-Id in: header required: false schema: type: string format: uuid description: Tenant UUID — required for all tenant-scoped endpoints responses: '201': description: '' security: - jwt: [] summary: Create a tracking domain (starts as PENDING). tags: - Tracking / Domain /api/tracking-domains/stats: get: operationId: TrackingDomainController_getStats parameters: - name: X-Tenant-Id in: header required: false schema: type: string format: uuid description: Tenant UUID — required for all tenant-scoped endpoints responses: '200': description: '' security: - jwt: [] summary: Get tracking domain statistics tags: - Tracking / Domain x-required-scope: - mailing:read /api/tracking-domains/{id}: get: operationId: TrackingDomainController_findOne parameters: - name: id required: true in: path schema: type: string - name: X-Tenant-Id in: header required: false schema: type: string format: uuid description: Tenant UUID — required for all tenant-scoped endpoints responses: '200': description: '' security: - jwt: [] summary: Get a tracking domain by id tags: - Tracking / Domain put: operationId: TrackingDomainController_update parameters: - name: id required: true in: path schema: type: string - name: X-Tenant-Id in: header required: false schema: type: string format: uuid description: Tenant UUID — required for all tenant-scoped endpoints responses: '200': description: '' security: - jwt: [] summary: Update a tracking domain tags: - Tracking / Domain delete: operationId: TrackingDomainController_remove parameters: - name: id required: true in: path schema: type: string - name: X-Tenant-Id in: header required: false schema: type: string format: uuid description: Tenant UUID — required for all tenant-scoped endpoints responses: '200': description: '' security: - jwt: [] summary: Delete a tracking domain tags: - Tracking / Domain /api/tracking-domains/{id}/health-check: post: operationId: TrackingDomainController_healthCheck parameters: - name: id required: true in: path schema: type: string - name: X-Tenant-Id in: header required: false schema: type: string format: uuid description: Tenant UUID — required for all tenant-scoped endpoints responses: '201': description: '' security: - jwt: [] summary: Run a health check for a tracking domain (verifies the DNS CNAME → cnameTarget… tags: - Tracking / Domain /api/tracking-domains/{id}/set-default: post: operationId: TrackingDomainController_setDefault parameters: - name: id required: true in: path schema: type: string - name: X-Tenant-Id in: header required: false schema: type: string format: uuid description: Tenant UUID — required for all tenant-scoped endpoints responses: '201': description: '' security: - jwt: [] summary: Set a tracking domain as the default (used for the open pixel; without a… tags: - Tracking / Domain /api/tracking-domains/monitoring: get: operationId: TrackingDomainController_getMonitoring parameters: - name: X-Tenant-Id in: header required: false schema: type: string format: uuid description: Tenant UUID — required for all tenant-scoped endpoints responses: '200': description: '' security: - jwt: [] summary: Get tracking domain monitoring overview with click/send stats tags: - Tracking / Domain x-required-scope: - mailing:read /api/tracking-domains/{id}/report-spam: post: operationId: TrackingDomainController_reportSpam parameters: - name: id required: true in: path schema: type: string - name: X-Tenant-Id in: header required: false schema: type: string format: uuid description: Tenant UUID — required for all tenant-scoped endpoints responses: '201': description: '' security: - jwt: [] summary: Report spam for a tracking domain (auto-pause at threshold) tags: - Tracking / Domain components: securitySchemes: jwt: scheme: bearer bearerFormat: JWT type: http description: JWT access token from /auth/login (Bearer ) tenant-api-key: scheme: bearer bearerFormat: JWT type: http description: Tenant API key (Bearer ldm_*) for MCP/A2A clients. Issued via CRM Settings → API Keys. rpa-service: scheme: bearer bearerFormat: JWT type: http description: Dedicated RPA service key. No tenant API-key or query-key authentication.