openapi: 3.2.0 info: title: Live Direct Marketing Online Reports API version: 1.0.0 contact: {} description: 'Operations tagged reports across 2 of this provider''s published API definitions: live-direct-marketing-online-inbox-check-openapi.json, live-direct-marketing-online-ldm-v3-openapi.json. Each path carries the servers of the definition it was published in.' 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: Reports paths: /api/reports/{token}: get: operationId: ReportsController_getReport parameters: - name: token required: true in: path schema: type: string responses: '200': description: '' content: application/json: schema: type: object tags: - Reports summary: Reports controller get report x-summary-source: derived /api/reports/{token}/pdf: get: operationId: ReportsController_getReportPdf parameters: - name: token required: true in: path schema: type: string - name: lang required: false in: query schema: type: string responses: '200': description: '' tags: - Reports summary: Reports controller get report pdf x-summary-source: derived /api/reports: get: operationId: ReportsController_list parameters: - name: page required: true in: query schema: type: string - name: pageSize required: true in: query schema: type: string - name: source required: true in: query schema: type: string - name: q 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 tenant reports (paginated) + storage quota tags: - Reports post: description: 'JSON path for agents: pass fileName + contentBase64. description is REQUIRED — explain what is inside the file and where the data came from. Decoded size limit = REPORTS_MAX_FILE_BASE64_MB (default 30 MB).' operationId: ReportsController_create 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: application/json: schema: $ref: '#/components/schemas/CreateReportDto' responses: '201': description: '' security: - jwt: [] summary: Create a report from base64 content (agent/MCP path) tags: - Reports 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 /api/reports/limits: get: operationId: ReportsController_limits 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: Reports storage limits and current usage tags: - Reports x-required-scope: - reports:read 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 /api/reports/upload: post: operationId: ReportsController_upload 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 required: - file - title - description properties: file: type: string format: binary title: type: string description: type: string responses: '201': description: '' security: - jwt: [] summary: Upload a report file (multipart, UI path) tags: - Reports x-required-scope: - reports:write 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 /api/reports/from-export/{exportJobId}: post: description: Moves the export file into reports storage and keeps /exports/:id/download working (file_path is updated). operationId: ReportsController_fromExport parameters: - name: exportJobId 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 requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/FromExportDto' responses: '201': description: '' security: - jwt: [] summary: Register a completed export job as a report (idempotent) tags: - Reports 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 /api/reports/{id}: get: operationId: ReportsController_getOne 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 one report tags: - Reports patch: operationId: ReportsController_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 requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateReportDto' responses: '200': description: '' security: - jwt: [] summary: Update report title/description tags: - Reports delete: operationId: ReportsController_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 report (file + record) tags: - Reports 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 /api/reports/{id}/publish: post: description: 'DANGER: the link is downloadable by ANYONE on the internet. For source=EXPORT this is personal data — double-check before publishing. Returns publicUrl. Re-publish returns the SAME url (rotate-token to invalidate).' operationId: ReportsController_publish 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: 'Publish: open a direct public download link (no auth!)' tags: - Reports 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 /api/reports/{id}/unpublish: post: operationId: ReportsController_unpublish 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: 'Unpublish: close the public link (token kept — re-publish restores the same url)' tags: - Reports 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 /api/reports/{id}/rotate-token: post: operationId: ReportsController_rotateToken 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: Rotate the public token — old link dies immediately tags: - Reports 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 /api/reports/{id}/download: get: operationId: ReportsController_download 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: Download the report file (authorized) tags: - Reports 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 components: schemas: UpdateReportDto: type: object properties: title: type: string maxLength: 300 description: type: string description: Min. 10 characters FromExportDto: type: object properties: title: type: string description: Title (default — export file name) description: type: string description: Explanation (default — export auto-description) CreateReportDto: type: object properties: title: type: string description: Report title maxLength: 300 description: type: string description: 'Required explanation: what is in the file, where the data comes from, how to use it (min. 10 characters)' fileName: type: string description: File name with an extension from the whitelist (csv, xlsx, json, pdf, txt, md, zip, png, jpg) contentBase64: type: string description: File content in base64 (decoded size <= REPORTS_MAX_FILE_BASE64_MB, default 30 MB) required: - title - description - fileName - contentBase64 securitySchemes: apiKey: scheme: bearer bearerFormat: icp_live_* type: http adminKey: type: apiKey in: header name: X-Admin-Key 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. x-refined-from: - live-direct-marketing-online-inbox-check-openapi.json - live-direct-marketing-online-ldm-v3-openapi.json