AFFAANh and Claude Opus 5
09aee8b621
feat(campaigns): discover and adopt campaigns created in Meta
...
Campaigns can be authored on either side. Anything MaskanX did not create is
origin="imported": MaskanX reports on it and can pause or stop it, but it was
built elsewhere.
Adoption is keyed on meta_campaign_id, which carries a unique index, so
adopting the same campaign twice returns the existing record instead of
violating the constraint. Discover excludes anything already adopted.
The literal /discover and /adopt routes are declared before /{campaign_id} so
they cannot be captured as campaign ids; a test pins that ordering.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-08-03 16:34:32 +05:30
..
2026-08-01 10:28:22 +05:30
2026-08-01 10:28:22 +05:30
2026-08-01 10:28:22 +05:30
2026-08-01 10:28:22 +05:30
2026-08-01 10:28:22 +05:30
2026-08-01 10:28:22 +05:30
2026-08-01 10:28:22 +05:30
2026-08-01 10:28:22 +05:30
2026-08-01 10:28:22 +05:30
2026-08-01 10:28:22 +05:30
2026-08-01 10:28:22 +05:30
2026-08-01 10:28:22 +05:30
2026-08-01 10:28:22 +05:30
2026-08-03 16:34:32 +05:30
2026-08-03 11:37:35 +05:30
2026-08-03 11:37:35 +05:30
2026-08-01 12:23:23 +05:30
2026-08-03 00:17:49 +05:30
2026-08-03 00:51:49 +05:30
2026-08-03 00:10:40 +05:30
2026-08-01 13:36:36 +05:30
2026-08-01 12:56:09 +05:30
2026-08-03 10:45:17 +05:30
2026-08-03 01:17:18 +05:30
2026-08-01 10:28:22 +05:30
2026-08-01 10:28:22 +05:30
2026-08-01 10:28:22 +05:30
2026-08-01 10:28:22 +05:30
2026-08-01 10:28:22 +05:30
2026-08-01 10:28:22 +05:30
2026-08-01 10:28:22 +05:30
2026-08-01 10:28:22 +05:30
2026-08-01 10:28:22 +05:30
2026-08-01 10:28:22 +05:30
2026-08-01 10:28:22 +05:30
2026-08-01 10:28:22 +05:30
2026-08-01 10:28:22 +05:30
2026-08-01 10:28:22 +05:30
2026-08-01 10:28:22 +05:30
2026-08-01 10:28:22 +05:30
2026-08-01 10:28:22 +05:30
2026-08-01 10:28:22 +05:30
2026-08-01 10:28:22 +05:30
2026-08-01 13:21:57 +05:30
2026-08-03 01:17:18 +05:30
2026-08-01 10:28:22 +05:30
2026-08-01 10:28:22 +05:30
2026-08-01 10:28:22 +05:30
2026-08-01 10:28:22 +05:30
2026-08-01 10:28:22 +05:30
2026-08-01 10:28:22 +05:30
2026-08-01 10:28:22 +05:30
2026-08-01 10:28:22 +05:30
2026-08-01 10:28:22 +05:30
2026-08-01 10:28:22 +05:30
2026-08-01 10:28:22 +05:30
2026-08-01 10:28:22 +05:30
2026-08-01 10:28:22 +05:30
2026-08-01 10:28:22 +05:30
2026-08-01 10:28:22 +05:30
2026-08-01 10:28:22 +05:30
2026-08-01 10:28:22 +05:30
2026-08-01 10:28:22 +05:30
2026-08-01 10:28:22 +05:30
2026-08-01 10:28:22 +05:30
2026-08-01 10:28:22 +05:30
2026-08-01 10:28:22 +05:30
2026-08-01 10:28:22 +05:30
2026-08-01 10:28:22 +05:30
2026-08-01 10:28:22 +05:30
2026-08-01 10:28:22 +05:30
2026-08-01 10:28:22 +05:30
2026-08-01 10:28:22 +05:30
2026-08-01 10:28:22 +05:30
2026-08-01 10:28:22 +05:30
2026-08-01 10:28:22 +05:30
2026-08-01 10:28:22 +05:30