--- title: "Box API Integration" aliases: [box-api, box] tags: [box, api, integration, ford, loreal, ferrero] sources: [01 Projects/ford_qc, 01 Projects/ford-gechub-sftp, 01 Projects/loreal-global-kickoff, 01 Projects/ferrero-ac-creator] created: 2026-04-15 updated: 2026-04-15 --- # Box API Integration Box is used as the file storage and workflow layer for several client integrations. Oliver Agency uses Box for asset handoff with Ford, L'Oréal, and Ferrero. ## Key Takeaways - Ford uses Box JWT auth (`ford_box_config.json`) — service account model - L'Oréal and Ferrero use Box API for folder-based asset submission workflows - Ford QC monitors specific Box folder IDs (hardcoded in profile JSON, not config) - Box folder IDs are stable identifiers — use them, don't rely on folder names ## When to Use Any client project where files are exchanged via Box. Box is the primary asset handoff platform for Ford, L'Oréal, Ferrero. ## Key Details ### Auth Methods | Project | Auth Method | Config | |---------|------------|--------| | Ford QC | JWT (service account) | `ford_box_config.json` | | Ford SFTP | Box API | env vars | | L'Oréal | Box API | env vars | | Ferrero | Box API | env vars | ### Ford Box Folder IDs | Purpose | Folder ID | |---------|-----------| | Input hotfolder | 332861865120 | | Reports output | 332864939558 | | Archive (processed) | 332861653811 | ### Common Operations ```python # Download file from Box client = Client(auth=JWTAuth.from_settings_file('ford_box_config.json')) file_content = client.file(file_id).content() # Upload to Box folder = client.folder(folder_id) folder.upload_stream(file_stream, 'filename.zip') # List folder contents items = client.folder(folder_id).get_items() ``` ### Make.com Webhook Integration L'Oréal Global Kickoff sends Box submission metadata to Make.com via webhook on form submit. ## Projects Using This Pattern - [[01 Projects/ford_qc/Ford QC System|Ford QC System]] — JWT auth, monitors 3 folder IDs, uploads HTML reports, archives processed files - [[01 Projects/ford-gechub-sftp/Ford SFTP Transfer|Ford SFTP Transfer]] — Download from Box (3 envs), upload to GECHUB SFTP - [[01 Projects/loreal-global-kickoff/Loreal Global Kickoff|L'Oréal Global Kickoff]] — Asset submission form + Make.com webhook - [[01 Projects/ferrero-ac-creator/Ferrero AC Booking Tool|Ferrero AC Booking]] — "Send to OMG" saves CSV to Box folder ## Gotchas & Lessons - JWT config file (`ford_box_config.json`) must not be committed — it's a service account credential - Box folder IDs are numeric strings — store in config, not hardcoded in logic - Ford has 3 environments (PROD/EDU/QA) each with separate Box folders and SFTP targets - Hotfolder daemon should archive processed files to prevent reprocessing (Ford QC pattern) - Box webhooks have retry logic — design idempotent handlers ## Related - [[wiki/architecture/hotfolder-daemon|hotfolder-daemon]] — Ford QC Box monitoring pattern - [[wiki/client-knowledge/ford|ford]] — Ford-specific context - [[wiki/client-knowledge/loreal|loreal]] — L'Oréal-specific context