openapi: 3.2.0 info: title: LDM v3 Support 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: Support paths: /api/support/thread: get: operationId: SupportController_getThread 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 own support thread with message history tags: - Support x-required-scope: - support:read /api/support/unread-count: get: operationId: SupportController_unreadCount 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: Unread support messages badge count tags: - Support x-required-scope: - support:read /api/support/messages: post: operationId: SupportController_sendMessage parameters: - name: X-Tenant-Id in: header required: false schema: type: string format: uuid description: Tenant UUID — required for all tenant-scoped endpoints requestBody: required: true content: multipart/form-data: schema: type: object properties: body: type: string files: type: array items: type: string format: binary responses: '201': description: '' security: - jwt: [] summary: Send a message to support (optional JPG/PNG attachments) tags: - Support x-required-scope: - support:write /api/support/attachments/{id}: get: operationId: SupportController_serveAttachment 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: Serve a support attachment (thread owner or SUPER only) tags: - Support /api/support/read: post: operationId: SupportController_markRead 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: Mark support replies as read tags: - Support x-required-scope: - support:write /api/support/status: post: operationId: SupportController_setStatus 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: Close or reopen own support ticket tags: - Support x-required-scope: - support:write 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.