Gestion des fichiers
L’API Files du CRM Brevo vous permet d’importer et de gérer les pièces jointes associées aux contacts, aux entreprises et aux transactions au sein de la plateforme Tajo.
Vue d’ensemble
La gestion des fichiers est essentielle pour :
- Documentation des transactions conserver les propositions, les contrats et les accords
- Dossiers clients joindre les factures, les reçus et la correspondance
- Supports du programme de fidélité partager les détails du programme et les récapitulatifs d’avantages
- Conformité conserver les pistes d’audit documentaires des comptes d’entreprise
- Collaboration d’équipe partager les ressources entre les membres de l’équipe commerciale
Démarrage rapide
Importer un fichier
POST https://api.brevo.com/v3/crm/filesContent-Type: multipart/form-dataapi-key: YOUR_API_KEY
--boundaryContent-Disposition: form-data; name="file"; filename="enterprise-proposal.pdf"Content-Type: application/pdf
[file content]--boundaryContent-Disposition: form-data; name="dealIds"
deal_abc123def456--boundaryContent-Disposition: form-data; name="companyIds"
comp_123456789--boundaryContent-Disposition: form-data; name="contactIds"
12345--boundary--Réponse
{ "id": "file_001", "name": "enterprise-proposal.pdf", "size": 245760, "contentType": "application/pdf", "dealIds": ["deal_abc123def456"], "companyIds": ["comp_123456789"], "contactIds": [12345], "created_at": "2026-01-25T14:30:00Z"}Récupérer les fichiers
Lister tous les fichiers
GET https://api.brevo.com/v3/crm/files?limit=50&offset=0&sort=descContent-Type: application/jsonapi-key: YOUR_API_KEYRéponse
{ "items": [ { "id": "file_001", "name": "enterprise-proposal.pdf", "size": 245760, "contentType": "application/pdf", "dealIds": ["deal_abc123def456"], "companyIds": ["comp_123456789"], "created_at": "2026-01-25T14:30:00Z" } ], "total": 1}Filtrer les fichiers
GET https://api.brevo.com/v3/crm/files?filters[dealIds]=deal_abc123def456&sort=created_at:descRécupérer un fichier
GET https://api.brevo.com/v3/crm/files/{file_id}Content-Type: application/jsonapi-key: YOUR_API_KEYTélécharger un fichier
GET https://api.brevo.com/v3/crm/files/{file_id}/dataapi-key: YOUR_API_KEYAutomatisation de la gestion des fichiers
Workflow documentaire des transactions
Gérez automatiquement les documents tout au long du cycle de vie d’une transaction :
class DealDocumentManager { constructor() { this.filesApi = new FilesApi(); }
async attachProposal(dealId, proposalBuffer, companyName) { const fileName = `proposal-${companyName.toLowerCase().replace(/\s+/g, '-')}-${Date.now()}.pdf`;
const file = await this.filesApi.uploadFile({ file: proposalBuffer, fileName: fileName, dealIds: [dealId] });
// Create a note referencing the uploaded proposal await this.notesApi.createNote({ text: `Proposal uploaded: ${fileName}`, dealIds: [dealId] });
return file; }
async attachContract(dealId, contractBuffer, companyId) { const fileName = `contract-${dealId}-${new Date().toISOString().slice(0, 10)}.pdf`;
const file = await this.filesApi.uploadFile({ file: contractBuffer, fileName: fileName, dealIds: [dealId], companyIds: [companyId] });
return file; }
async getDealDocuments(dealId) { const files = await this.filesApi.getFiles({ filters: { dealIds: dealId }, sort: 'created_at:desc' });
return { proposals: files.items.filter(f => f.name.startsWith('proposal-')), contracts: files.items.filter(f => f.name.startsWith('contract-')), other: files.items.filter(f => !f.name.startsWith('proposal-') && !f.name.startsWith('contract-') ), totalSize: files.items.reduce((sum, f) => sum + f.size, 0) }; }}Documents du programme de fidélité
class LoyaltyDocumentManager { async generateAndAttachBenefitsSummary(companyId, tier) { const company = await this.companiesApi.getCompany(companyId);
const summary = await this.generateBenefitsPDF({ companyName: company.name, tier: tier, benefits: this.getTierBenefits(tier), annualSpend: company.attributes.annual_spend, pointsBalance: company.attributes.loyalty_points });
return await this.filesApi.uploadFile({ file: summary, fileName: `loyalty-benefits-${tier.toLowerCase().replace(/\s+/g, '-')}.pdf`, companyIds: [companyId] }); }
async attachTierUpgradeDocuments(companyId, oldTier, newTier) { const documents = [ { name: 'tier-upgrade-confirmation', content: this.generateUpgradeConfirmation(oldTier, newTier) }, { name: 'new-benefits-guide', content: this.generateBenefitsGuide(newTier) } ];
const uploaded = []; for (const doc of documents) { const file = await this.filesApi.uploadFile({ file: doc.content, fileName: `${doc.name}-${Date.now()}.pdf`, companyIds: [companyId] }); uploaded.push(file); }
return uploaded; }}Types de fichiers pris en charge
| Catégorie | Extensions | Taille maximale |
|---|---|---|
| Documents | .pdf, .doc, .docx, .txt | 10 Mo |
| Feuilles de calcul | .xls, .xlsx, .csv | 10 Mo |
| Images | .png, .jpg, .jpeg, .gif | 5 Mo |
| Présentations | .ppt, .pptx | 10 Mo |
Référence des méthodes de l’API
// Upload a fileconst file = await filesApi.uploadFile({ file: fileBuffer, fileName: 'proposal.pdf', dealIds: ['deal_abc123'], companyIds: ['comp_123']});
// Get file metadataconst file = await filesApi.getFile('file_001');
// Download file dataconst fileData = await filesApi.downloadFile('file_001');
// Delete fileawait filesApi.deleteFile('file_001');
// List files with filteringconst files = await filesApi.getFiles({ filters: { dealIds: 'deal_abc123' }, sort: 'created_at:desc', limit: 50});Bonnes pratiques
- Conventions de nommage : utilisez des noms de fichiers descriptifs avec des dates pour les identifier facilement
- Reliez les enregistrements : associez les fichiers à toutes les transactions, entreprises et contacts concernés
- Gestion des versions : intégrez un numéro de version ou une date dans le nom du fichier
- Gestion de la taille : compressez les fichiers volumineux avant de les importer
- Contrôle des accès : vérifiez régulièrement les associations de fichiers pour garantir des accès appropriés
- Faites le ménage : supprimez les documents obsolètes pour garder des enregistrements CRM exploitables
Gestion des erreurs
try { const file = await filesApi.uploadFile(fileData); console.log('File uploaded:', file.id);} catch (error) { if (error.status === 400) { console.error('Invalid file data:', error.message); } else if (error.status === 413) { console.error('File size exceeds maximum limit'); } else if (error.status === 415) { console.error('Unsupported file type'); } else { console.error('Unexpected error:', error); }}Prochaines étapes
- Gestion des entreprises - Gérez les comptes d’entreprise
- Gestion des transactions - Suivez le pipeline commercial
- Gestion des tâches - Gérez les activités commerciales
- Notes - Documentez les interactions clients