Files
adsPRO/.paul/codebase/integrations.md
2026-05-06 23:19:35 +02:00

81 lines
4.8 KiB
Markdown

# External Integrations
All API credentials are stored in the `settings` DB table and read via `\services\GoogleAdsApi::get_setting($key)` (used globally despite the name).
## Google Ads REST API
- **File:** [autoload/services/class.GoogleAdsApi.php](autoload/services/class.GoogleAdsApi.php) (~3,200 lines)
- **API version:** `v23` (constant `$API_VERSION = 'v23'`)
- **Base URLs:**
- Ads: `https://googleads.googleapis.com`
- Merchant Center: `https://shoppingcontent.googleapis.com/content/v2.1`
- OAuth: `https://oauth2.googleapis.com/token`
- **Auth:** OAuth 2.0 refresh-token flow. Settings keys: `google_ads_developer_token`, `google_ads_client_id`, `google_ads_client_secret`, `google_ads_refresh_token`, `google_ads_manager_account_id`. Merchant variant: `google_merchant_refresh_token` (falls back to ads token).
- **Endpoints used:**
- `POST /v23/customers/{customerId}/googleAds:search` — campaigns, search terms, ad groups
- `GET /content/v2.1/{merchantAccountId}/products` — product listing/details
- Product ID format: `online:{lang}:{feedLabel}:{offerId}`
- **Errors:** stored in settings keys `google_ads_last_error` / `google_ads_last_error_at`.
- **Cron:** `/cron/cron_universal`, `/cron/cron_products_urls`, `/cron/cron_campaigns_product_alerts_merchant`.
## Facebook Ads Graph API
- **File:** [autoload/services/class.FacebookAdsApi.php](autoload/services/class.FacebookAdsApi.php) (~300 lines)
- **API version:** `v25.0` (default, configurable per client)
- **Base URL:** `https://graph.facebook.com/{version}/{accountId}/insights`
- **Auth:** access token in `facebook_ads_access_token` setting.
- **Methods:** `get_insights()`, `get_campaigns()`, `parse_date_range()`. 30-day rolling window.
- **Errors:** `facebook_ads_last_error` / `_at`.
- **Cron:** `/cron/cron_facebook_ads`.
## Google Merchant Center
Integrated through `GoogleAdsApi`. Supplemental TSV feeds generated via [autoload/services/class.SupplementalFeed.php](autoload/services/class.SupplementalFeed.php) into `feeds/supplemental_{client_id}.tsv`. XML feed parsing via [autoload/services/class.XmlFeedImporter.php](autoload/services/class.XmlFeedImporter.php) using `\Chunk` streaming reader.
## OpenAI
- **File:** [autoload/services/class.OpenAiApi.php](autoload/services/class.OpenAiApi.php) (~400 lines)
- **Endpoint:** `https://api.openai.com/v1/chat/completions`
- **Auth:** Bearer token in `openai_api_key` setting; model in `openai_model`.
- **Use cases:** product title (≤150 chars) and description (≤5000 chars) generation, page-content fetch + HTML strip + LLM rewrite. System prompt: Polish-language Merchant Center best practices.
## Claude (Anthropic)
- **File:** [autoload/services/class.ClaudeApi.php](autoload/services/class.ClaudeApi.php) (~300 lines)
- **Endpoint:** `https://api.anthropic.com/v1/messages`
- **Default model:** `claude-sonnet-4-5-20250929` (override via `claude_model`)
- **Auth:** `x-api-key` header from `claude_api_key`. `anthropic-version: 2023-06-01`.
- **Use cases:** same as OpenAI (product text optimization).
## Google Gemini
- **File:** [autoload/services/class.GeminiApi.php](autoload/services/class.GeminiApi.php) (~400 lines)
- **Base:** `https://generativelanguage.googleapis.com/v1beta/models/`
- **Default model:** `gemini-2.5-flash` (override via `gemini_model`)
- **Auth:** API key in `?key=` query param (`gemini_api_key`).
- **Special handling:** detects `gemini-2.5*` as thinking models — multiplies max_tokens by 6 for internal reasoning. Uses `systemInstruction` field.
## SMTP (PHPMailer)
- **Library:** [libraries/phpmailer/](libraries/phpmailer/) (3 files)
- **Wrapper:** `\S::send_email($email, $subject, $text, $file)` in [autoload/class.S.php](autoload/class.S.php)
- **Config (from [config.php](config.php)):** host `mail.project-pro.pl`, port 25, login `www@project-pro.pl`, password in plaintext (see [concerns.md](concerns.md)). SSL/TLS verification disabled (self-signed cert support). UTF-8, HTML body. Default From `www@projectpro.pl`, Reply-To `biuro@project-pro.pl`.
## Other / minor
- **Allegro.pl** — [autoload/controls/class.Allegro.php](autoload/controls/class.Allegro.php) (legacy marketplace integration)
- **Open Page Rank API** — referenced in [api.php](api.php) for domain authority lookups
- **Domain tester** — third-party domain validation in [api.php](api.php)
## Summary
| Integration | API ver | Auth | Cron |
|---|---|---|---|
| Google Ads | v23 | OAuth 2.0 refresh | `/cron/cron_universal` |
| Google Merchant | v2.1 | OAuth 2.0 | `/cron/cron_campaigns_product_alerts_merchant` |
| Facebook Ads | v25.0 | Bearer token | `/cron/cron_facebook_ads` |
| OpenAI | latest | API key (header) | on-demand |
| Claude | v1 / 2023-06-01 | `x-api-key` | on-demand |
| Gemini | v1beta | API key (query) | on-demand |
| SMTP | — | Basic auth | reminders via `cron.php` |