first commit
This commit is contained in:
@@ -0,0 +1,137 @@
|
||||
# Zoho API Integration
|
||||
|
||||
Modular PHP integration with Zoho APIs (Projects, Desk, and more).
|
||||
|
||||
## Features
|
||||
|
||||
- **Modular Architecture**: Easy to add new Zoho services
|
||||
- **OAuth2 Authentication**: Secure token management with auto-refresh
|
||||
- **Multiple Export Formats**: JSON and CSV support
|
||||
- **Logging**: File-based logging for monitoring
|
||||
- **Cron-Ready**: Built for hourly automated exports
|
||||
|
||||
## Directory Structure
|
||||
|
||||
```
|
||||
zoho-qwen/
|
||||
├── config/
|
||||
│ └── config.php # Configuration settings
|
||||
├── src/
|
||||
│ ├── Core/
|
||||
│ │ └── ZohoClient.php # OAuth2 & HTTP client
|
||||
│ ├── Interfaces/
|
||||
│ │ └── ZohoServiceInterface.php
|
||||
│ ├── Services/
|
||||
│ │ ├── ProjectsService.php
|
||||
│ │ └── DeskService.php
|
||||
│ ├── Export/
|
||||
│ │ └── ExportManager.php
|
||||
│ └── Utils/
|
||||
│ └── Logger.php
|
||||
├── scripts/
|
||||
│ ├── authenticate.php # OAuth2 setup
|
||||
│ └── export_projects.php # Export script
|
||||
├── cron/
|
||||
│ └── hourly_export.sh # Cron wrapper
|
||||
└── storage/ # Tokens, exports, logs (auto-created)
|
||||
```
|
||||
|
||||
## Setup
|
||||
|
||||
### 1. Install Requirements
|
||||
|
||||
- PHP 8.0+
|
||||
- cURL extension
|
||||
|
||||
### 2. Configure Environment
|
||||
|
||||
```bash
|
||||
cp .env.example .env
|
||||
# Edit .env with your Zoho credentials
|
||||
```
|
||||
|
||||
### 3. Register Zoho Application
|
||||
|
||||
1. Visit [Zoho API Console](https://api-console.zoho.com/)
|
||||
2. Create a new client
|
||||
3. Select "Server-based Application"
|
||||
4. Add your redirect URI
|
||||
5. Copy Client ID and Client Secret to `.env`
|
||||
|
||||
### 4. Authenticate
|
||||
|
||||
```bash
|
||||
# Generate authorization URL
|
||||
php scripts/authenticate.php --service=projects
|
||||
|
||||
# Visit the URL, authorize, then exchange the code:
|
||||
php scripts/authenticate.php --service=projects --code=YOUR_CODE
|
||||
```
|
||||
|
||||
### 5. Run Export
|
||||
|
||||
```bash
|
||||
# Manual export
|
||||
php scripts/export_projects.php
|
||||
|
||||
# Include task details
|
||||
php scripts/export_projects.php --include-tasks
|
||||
|
||||
# Export as CSV
|
||||
php scripts/export_projects.php --format=csv
|
||||
```
|
||||
|
||||
### 6. Setup Cron (Optional)
|
||||
|
||||
```bash
|
||||
# Edit the cron script path
|
||||
nano cron/hourly_export.sh
|
||||
|
||||
# Add to crontab (runs every hour)
|
||||
crontab -e
|
||||
# Add: 0 * * * * /path/to/cron/hourly_export.sh
|
||||
```
|
||||
|
||||
## Adding New Zoho Services
|
||||
|
||||
1. Add service config in `config/config.php`:
|
||||
|
||||
```php
|
||||
'desk' => [
|
||||
'enabled' => true,
|
||||
'api_base' => 'https://desk.zoho.com/api/v1',
|
||||
'scopes' => 'ZohoDesk.tickets.READ',
|
||||
],
|
||||
```
|
||||
|
||||
2. Create service class implementing `ZohoServiceInterface`:
|
||||
|
||||
```php
|
||||
class DeskService implements ZohoServiceInterface
|
||||
{
|
||||
// Implement required methods
|
||||
}
|
||||
```
|
||||
|
||||
3. Create export script for the service
|
||||
|
||||
## Configuration
|
||||
|
||||
Edit `config/config.php` to customize:
|
||||
|
||||
- API domains (for EU/US data centers)
|
||||
- OAuth scopes
|
||||
- Export formats and locations
|
||||
- Log levels
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
**Token expired errors**: Re-run authentication script
|
||||
|
||||
**401 Unauthorized**: Check OAuth scopes in config
|
||||
|
||||
**Export directory not writable**: `chmod 755 storage/exports`
|
||||
|
||||
## License
|
||||
|
||||
MIT
|
||||
Reference in New Issue
Block a user