The DAM OAuth endpoint requires both certificate authentication AND
client credentials (client_id + client_secret). Updated:
- Added DAM_CLIENT_ID and DAM_CLIENT_SECRET to .env.example
- Added client_id and client_secret to config.example.php
- Updated DamClient.php to include credentials in OAuth request
- Added validation for client credentials
This is mTLS V2 Hybrid mode: certificate + client credentials.
Implemented complete A2-A3 advancement functionality with DAM integration:
Backend:
- Added DamClient.php with mTLS V2 (Hybrid) authentication
- Implemented PFX to PEM certificate conversion
- Added OAuth token management with automatic refresh
- Created 3 new API endpoints:
* list-a2-campaigns: Query DAM for A2 status campaigns
* advance-to-a3: Update campaign status to A3
* get-campaign-files: Query database for uploaded files
Frontend:
- Added new 'A2-A3 Advancement' tab to navigation
- Implemented campaign cards with grid layout
- Added search/filter functionality with debouncing
- Created 'View Uploaded Files' button (queries DB on demand)
- Implemented 'Advance to A3' with confirmation dialog
- Added smooth animations for card removal
Configuration:
- Created env_loader.php for .env file support
- Added .env.example template with all required variables
- Updated config.example.php to use environment variables
- Created SETUP.md with configuration guide
Security:
- Added .htaccess to protect config.php and sensitive files
- Updated .gitignore to exclude REFRENCE MATERIAL folder
- Implemented proper file permissions guidance
All DAM credentials now managed via .env file with support for
referencing existing certificates without duplication.
Implements complete tracking ID system for linking derivative assets to master files with automatic metadata inheritance.
Major features:
- v2 web interface (public-v2/) with tracking ID support
- PostgreSQL database (Docker) for master asset metadata storage
- 6-character alphanumeric tracking IDs with collision-free generation
- OpenText DAM integration with metadata import script
- Upload simulator showing filename transformations (strips job number and tracking ID)
- Visual transformation flow display
- Complete asset lifecycle event logging with triggers
- Database schema with optimized indexes and views
- Helper scripts for database management (db-start.sh, db-stop.sh)
Technical implementation:
- PostgreSQL 15 in Docker on port 5433 (md5 auth for MAMP compatibility)
- PHP PDO with singleton database class
- Automatic event logging via PostgreSQL triggers
- JSON storage for naming convention data (shared with v1)
- Case-sensitive tracking ID input fields
Both v1 (simple) and v2 (tracking) versions coexist for different workflows.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>