@koda-sl/baker-cli 0.31.0-dev.31ee8d9c → 0.34.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +99 -12
- package/package.json +1 -1
- package/dist/cli.d.ts +0 -3
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js +0 -37
- package/dist/cli.js.map +0 -1
- package/dist/client.d.ts +0 -12
- package/dist/client.d.ts.map +0 -1
- package/dist/client.js +0 -153
- package/dist/client.js.map +0 -1
- package/dist/commands/actions/claim.d.ts +0 -13
- package/dist/commands/actions/claim.d.ts.map +0 -1
- package/dist/commands/actions/claim.js +0 -45
- package/dist/commands/actions/claim.js.map +0 -1
- package/dist/commands/actions/complete.d.ts +0 -18
- package/dist/commands/actions/complete.d.ts.map +0 -1
- package/dist/commands/actions/complete.js +0 -42
- package/dist/commands/actions/complete.js.map +0 -1
- package/dist/commands/actions/create.d.ts +0 -24
- package/dist/commands/actions/create.d.ts.map +0 -1
- package/dist/commands/actions/create.js +0 -68
- package/dist/commands/actions/create.js.map +0 -1
- package/dist/commands/actions/discard.d.ts +0 -18
- package/dist/commands/actions/discard.d.ts.map +0 -1
- package/dist/commands/actions/discard.js +0 -44
- package/dist/commands/actions/discard.js.map +0 -1
- package/dist/commands/actions/get.d.ts +0 -13
- package/dist/commands/actions/get.d.ts.map +0 -1
- package/dist/commands/actions/get.js +0 -34
- package/dist/commands/actions/get.js.map +0 -1
- package/dist/commands/actions/index.d.ts +0 -2
- package/dist/commands/actions/index.d.ts.map +0 -1
- package/dist/commands/actions/index.js +0 -43
- package/dist/commands/actions/index.js.map +0 -1
- package/dist/commands/actions/link.d.ts +0 -13
- package/dist/commands/actions/link.d.ts.map +0 -1
- package/dist/commands/actions/link.js +0 -43
- package/dist/commands/actions/link.js.map +0 -1
- package/dist/commands/actions/list.d.ts +0 -19
- package/dist/commands/actions/list.d.ts.map +0 -1
- package/dist/commands/actions/list.js +0 -66
- package/dist/commands/actions/list.js.map +0 -1
- package/dist/commands/actions/release.d.ts +0 -13
- package/dist/commands/actions/release.d.ts.map +0 -1
- package/dist/commands/actions/release.js +0 -38
- package/dist/commands/actions/release.js.map +0 -1
- package/dist/commands/actions/shared.d.ts +0 -6
- package/dist/commands/actions/shared.d.ts.map +0 -1
- package/dist/commands/actions/shared.js +0 -28
- package/dist/commands/actions/shared.js.map +0 -1
- package/dist/commands/actions/tag/add.d.ts +0 -18
- package/dist/commands/actions/tag/add.d.ts.map +0 -1
- package/dist/commands/actions/tag/add.js +0 -47
- package/dist/commands/actions/tag/add.js.map +0 -1
- package/dist/commands/actions/tag/create.d.ts +0 -23
- package/dist/commands/actions/tag/create.d.ts.map +0 -1
- package/dist/commands/actions/tag/create.js +0 -50
- package/dist/commands/actions/tag/create.js.map +0 -1
- package/dist/commands/actions/tag/delete.d.ts +0 -13
- package/dist/commands/actions/tag/delete.d.ts.map +0 -1
- package/dist/commands/actions/tag/delete.js +0 -36
- package/dist/commands/actions/tag/delete.js.map +0 -1
- package/dist/commands/actions/tag/index.d.ts +0 -2
- package/dist/commands/actions/tag/index.d.ts.map +0 -1
- package/dist/commands/actions/tag/index.js +0 -32
- package/dist/commands/actions/tag/index.js.map +0 -1
- package/dist/commands/actions/tag/list.d.ts +0 -2
- package/dist/commands/actions/tag/list.d.ts.map +0 -1
- package/dist/commands/actions/tag/list.js +0 -24
- package/dist/commands/actions/tag/list.js.map +0 -1
- package/dist/commands/actions/tag/remove.d.ts +0 -18
- package/dist/commands/actions/tag/remove.d.ts.map +0 -1
- package/dist/commands/actions/tag/remove.js +0 -48
- package/dist/commands/actions/tag/remove.js.map +0 -1
- package/dist/commands/actions/tag/update.d.ts +0 -28
- package/dist/commands/actions/tag/update.d.ts.map +0 -1
- package/dist/commands/actions/tag/update.js +0 -50
- package/dist/commands/actions/tag/update.js.map +0 -1
- package/dist/commands/actions/unlink.d.ts +0 -13
- package/dist/commands/actions/unlink.d.ts.map +0 -1
- package/dist/commands/actions/unlink.js +0 -45
- package/dist/commands/actions/unlink.js.map +0 -1
- package/dist/commands/actions/update.d.ts +0 -23
- package/dist/commands/actions/update.d.ts.map +0 -1
- package/dist/commands/actions/update.js +0 -50
- package/dist/commands/actions/update.js.map +0 -1
- package/dist/commands/ads/cache.d.ts +0 -7
- package/dist/commands/ads/cache.d.ts.map +0 -1
- package/dist/commands/ads/cache.js +0 -73
- package/dist/commands/ads/cache.js.map +0 -1
- package/dist/commands/ads/cache.test.d.ts +0 -2
- package/dist/commands/ads/cache.test.d.ts.map +0 -1
- package/dist/commands/ads/cache.test.js +0 -44
- package/dist/commands/ads/cache.test.js.map +0 -1
- package/dist/commands/ads/field-descriptions.d.ts +0 -2
- package/dist/commands/ads/field-descriptions.d.ts.map +0 -1
- package/dist/commands/ads/field-descriptions.js +0 -91
- package/dist/commands/ads/field-descriptions.js.map +0 -1
- package/dist/commands/ads/google/accounts.d.ts +0 -14
- package/dist/commands/ads/google/accounts.d.ts.map +0 -1
- package/dist/commands/ads/google/accounts.js +0 -76
- package/dist/commands/ads/google/accounts.js.map +0 -1
- package/dist/commands/ads/google/changes.d.ts +0 -34
- package/dist/commands/ads/google/changes.d.ts.map +0 -1
- package/dist/commands/ads/google/changes.js +0 -80
- package/dist/commands/ads/google/changes.js.map +0 -1
- package/dist/commands/ads/google/correction-table.d.ts +0 -3
- package/dist/commands/ads/google/correction-table.d.ts.map +0 -1
- package/dist/commands/ads/google/correction-table.js +0 -352
- package/dist/commands/ads/google/correction-table.js.map +0 -1
- package/dist/commands/ads/google/currency.d.ts +0 -13
- package/dist/commands/ads/google/currency.d.ts.map +0 -1
- package/dist/commands/ads/google/currency.js +0 -68
- package/dist/commands/ads/google/currency.js.map +0 -1
- package/dist/commands/ads/google/error-parser.d.ts +0 -3
- package/dist/commands/ads/google/error-parser.d.ts.map +0 -1
- package/dist/commands/ads/google/error-parser.js +0 -91
- package/dist/commands/ads/google/error-parser.js.map +0 -1
- package/dist/commands/ads/google/error-parser.test.d.ts +0 -2
- package/dist/commands/ads/google/error-parser.test.d.ts.map +0 -1
- package/dist/commands/ads/google/error-parser.test.js +0 -48
- package/dist/commands/ads/google/error-parser.test.js.map +0 -1
- package/dist/commands/ads/google/index.d.ts +0 -2
- package/dist/commands/ads/google/index.d.ts.map +0 -1
- package/dist/commands/ads/google/index.js +0 -34
- package/dist/commands/ads/google/index.js.map +0 -1
- package/dist/commands/ads/google/keywords/discover.d.ts +0 -49
- package/dist/commands/ads/google/keywords/discover.d.ts.map +0 -1
- package/dist/commands/ads/google/keywords/discover.js +0 -151
- package/dist/commands/ads/google/keywords/discover.js.map +0 -1
- package/dist/commands/ads/google/keywords/index.d.ts +0 -2
- package/dist/commands/ads/google/keywords/index.d.ts.map +0 -1
- package/dist/commands/ads/google/keywords/index.js +0 -24
- package/dist/commands/ads/google/keywords/index.js.map +0 -1
- package/dist/commands/ads/google/keywords/languages.d.ts +0 -2
- package/dist/commands/ads/google/keywords/languages.d.ts.map +0 -1
- package/dist/commands/ads/google/keywords/languages.js +0 -23
- package/dist/commands/ads/google/keywords/languages.js.map +0 -1
- package/dist/commands/ads/google/keywords/locations.d.ts +0 -2
- package/dist/commands/ads/google/keywords/locations.d.ts.map +0 -1
- package/dist/commands/ads/google/keywords/locations.js +0 -23
- package/dist/commands/ads/google/keywords/locations.js.map +0 -1
- package/dist/commands/ads/google/keywords/metrics.d.ts +0 -34
- package/dist/commands/ads/google/keywords/metrics.d.ts.map +0 -1
- package/dist/commands/ads/google/keywords/metrics.js +0 -123
- package/dist/commands/ads/google/keywords/metrics.js.map +0 -1
- package/dist/commands/ads/google/library/index.d.ts +0 -3
- package/dist/commands/ads/google/library/index.d.ts.map +0 -1
- package/dist/commands/ads/google/library/index.js +0 -279
- package/dist/commands/ads/google/library/index.js.map +0 -1
- package/dist/commands/ads/google/library/index.test.d.ts +0 -2
- package/dist/commands/ads/google/library/index.test.d.ts.map +0 -1
- package/dist/commands/ads/google/library/index.test.js +0 -26
- package/dist/commands/ads/google/library/index.test.js.map +0 -1
- package/dist/commands/ads/google/preflight.d.ts +0 -3
- package/dist/commands/ads/google/preflight.d.ts.map +0 -1
- package/dist/commands/ads/google/preflight.js +0 -122
- package/dist/commands/ads/google/preflight.js.map +0 -1
- package/dist/commands/ads/google/preflight.test.d.ts +0 -2
- package/dist/commands/ads/google/preflight.test.d.ts.map +0 -1
- package/dist/commands/ads/google/preflight.test.js +0 -50
- package/dist/commands/ads/google/preflight.test.js.map +0 -1
- package/dist/commands/ads/google/presets.d.ts +0 -12
- package/dist/commands/ads/google/presets.d.ts.map +0 -1
- package/dist/commands/ads/google/presets.js +0 -85
- package/dist/commands/ads/google/presets.js.map +0 -1
- package/dist/commands/ads/google/presets.test.d.ts +0 -2
- package/dist/commands/ads/google/presets.test.d.ts.map +0 -1
- package/dist/commands/ads/google/presets.test.js +0 -79
- package/dist/commands/ads/google/presets.test.js.map +0 -1
- package/dist/commands/ads/google/query.d.ts +0 -64
- package/dist/commands/ads/google/query.d.ts.map +0 -1
- package/dist/commands/ads/google/query.js +0 -304
- package/dist/commands/ads/google/query.js.map +0 -1
- package/dist/commands/ads/index.d.ts +0 -2
- package/dist/commands/ads/index.d.ts.map +0 -1
- package/dist/commands/ads/index.js +0 -34
- package/dist/commands/ads/index.js.map +0 -1
- package/dist/commands/ads/linkedin/account.d.ts +0 -20
- package/dist/commands/ads/linkedin/account.d.ts.map +0 -1
- package/dist/commands/ads/linkedin/account.js +0 -39
- package/dist/commands/ads/linkedin/account.js.map +0 -1
- package/dist/commands/ads/linkedin/accounts.d.ts +0 -20
- package/dist/commands/ads/linkedin/accounts.d.ts.map +0 -1
- package/dist/commands/ads/linkedin/accounts.js +0 -56
- package/dist/commands/ads/linkedin/accounts.js.map +0 -1
- package/dist/commands/ads/linkedin/analytics.d.ts +0 -84
- package/dist/commands/ads/linkedin/analytics.d.ts.map +0 -1
- package/dist/commands/ads/linkedin/analytics.js +0 -249
- package/dist/commands/ads/linkedin/analytics.js.map +0 -1
- package/dist/commands/ads/linkedin/audience-size.d.ts +0 -28
- package/dist/commands/ads/linkedin/audience-size.d.ts.map +0 -1
- package/dist/commands/ads/linkedin/audience-size.js +0 -75
- package/dist/commands/ads/linkedin/audience-size.js.map +0 -1
- package/dist/commands/ads/linkedin/audit.d.ts +0 -35
- package/dist/commands/ads/linkedin/audit.d.ts.map +0 -1
- package/dist/commands/ads/linkedin/audit.js +0 -136
- package/dist/commands/ads/linkedin/audit.js.map +0 -1
- package/dist/commands/ads/linkedin/bid-pricing.d.ts +0 -38
- package/dist/commands/ads/linkedin/bid-pricing.d.ts.map +0 -1
- package/dist/commands/ads/linkedin/bid-pricing.js +0 -76
- package/dist/commands/ads/linkedin/bid-pricing.js.map +0 -1
- package/dist/commands/ads/linkedin/campaign-groups.d.ts +0 -32
- package/dist/commands/ads/linkedin/campaign-groups.d.ts.map +0 -1
- package/dist/commands/ads/linkedin/campaign-groups.js +0 -50
- package/dist/commands/ads/linkedin/campaign-groups.js.map +0 -1
- package/dist/commands/ads/linkedin/campaigns.d.ts +0 -36
- package/dist/commands/ads/linkedin/campaigns.d.ts.map +0 -1
- package/dist/commands/ads/linkedin/campaigns.js +0 -57
- package/dist/commands/ads/linkedin/campaigns.js.map +0 -1
- package/dist/commands/ads/linkedin/conversation.d.ts +0 -36
- package/dist/commands/ads/linkedin/conversation.d.ts.map +0 -1
- package/dist/commands/ads/linkedin/conversation.js +0 -77
- package/dist/commands/ads/linkedin/conversation.js.map +0 -1
- package/dist/commands/ads/linkedin/conversions.d.ts +0 -2
- package/dist/commands/ads/linkedin/conversions.d.ts.map +0 -1
- package/dist/commands/ads/linkedin/conversions.js +0 -102
- package/dist/commands/ads/linkedin/conversions.js.map +0 -1
- package/dist/commands/ads/linkedin/creatives.d.ts +0 -36
- package/dist/commands/ads/linkedin/creatives.d.ts.map +0 -1
- package/dist/commands/ads/linkedin/creatives.js +0 -57
- package/dist/commands/ads/linkedin/creatives.js.map +0 -1
- package/dist/commands/ads/linkedin/demographics.d.ts +0 -40
- package/dist/commands/ads/linkedin/demographics.d.ts.map +0 -1
- package/dist/commands/ads/linkedin/demographics.js +0 -117
- package/dist/commands/ads/linkedin/demographics.js.map +0 -1
- package/dist/commands/ads/linkedin/facets.d.ts +0 -2
- package/dist/commands/ads/linkedin/facets.d.ts.map +0 -1
- package/dist/commands/ads/linkedin/facets.js +0 -95
- package/dist/commands/ads/linkedin/facets.js.map +0 -1
- package/dist/commands/ads/linkedin/forecast.d.ts +0 -50
- package/dist/commands/ads/linkedin/forecast.d.ts.map +0 -1
- package/dist/commands/ads/linkedin/forecast.js +0 -83
- package/dist/commands/ads/linkedin/forecast.js.map +0 -1
- package/dist/commands/ads/linkedin/index.d.ts +0 -19
- package/dist/commands/ads/linkedin/index.d.ts.map +0 -1
- package/dist/commands/ads/linkedin/index.js +0 -83
- package/dist/commands/ads/linkedin/index.js.map +0 -1
- package/dist/commands/ads/linkedin/leads.d.ts +0 -40
- package/dist/commands/ads/linkedin/leads.d.ts.map +0 -1
- package/dist/commands/ads/linkedin/leads.js +0 -75
- package/dist/commands/ads/linkedin/leads.js.map +0 -1
- package/dist/commands/ads/linkedin/presets.d.ts +0 -40
- package/dist/commands/ads/linkedin/presets.d.ts.map +0 -1
- package/dist/commands/ads/linkedin/presets.js +0 -193
- package/dist/commands/ads/linkedin/presets.js.map +0 -1
- package/dist/commands/ads/linkedin/presets.test.d.ts +0 -2
- package/dist/commands/ads/linkedin/presets.test.d.ts.map +0 -1
- package/dist/commands/ads/linkedin/presets.test.js +0 -98
- package/dist/commands/ads/linkedin/presets.test.js.map +0 -1
- package/dist/commands/ads/linkedin/schemas.d.ts +0 -2
- package/dist/commands/ads/linkedin/schemas.d.ts.map +0 -1
- package/dist/commands/ads/linkedin/schemas.js +0 -300
- package/dist/commands/ads/linkedin/schemas.js.map +0 -1
- package/dist/commands/ads/linkedin/shared.d.ts +0 -17
- package/dist/commands/ads/linkedin/shared.d.ts.map +0 -1
- package/dist/commands/ads/linkedin/shared.js +0 -116
- package/dist/commands/ads/linkedin/shared.js.map +0 -1
- package/dist/commands/ads/linkedin/top-companies.d.ts +0 -44
- package/dist/commands/ads/linkedin/top-companies.d.ts.map +0 -1
- package/dist/commands/ads/linkedin/top-companies.js +0 -86
- package/dist/commands/ads/linkedin/top-companies.js.map +0 -1
- package/dist/commands/ads/meta/account.d.ts +0 -11
- package/dist/commands/ads/meta/account.d.ts.map +0 -1
- package/dist/commands/ads/meta/account.js +0 -32
- package/dist/commands/ads/meta/account.js.map +0 -1
- package/dist/commands/ads/meta/accounts.d.ts +0 -20
- package/dist/commands/ads/meta/accounts.d.ts.map +0 -1
- package/dist/commands/ads/meta/accounts.js +0 -55
- package/dist/commands/ads/meta/accounts.js.map +0 -1
- package/dist/commands/ads/meta/activities.d.ts +0 -24
- package/dist/commands/ads/meta/activities.d.ts.map +0 -1
- package/dist/commands/ads/meta/activities.js +0 -44
- package/dist/commands/ads/meta/activities.js.map +0 -1
- package/dist/commands/ads/meta/ads.d.ts +0 -36
- package/dist/commands/ads/meta/ads.d.ts.map +0 -1
- package/dist/commands/ads/meta/ads.js +0 -57
- package/dist/commands/ads/meta/ads.js.map +0 -1
- package/dist/commands/ads/meta/adsets.d.ts +0 -32
- package/dist/commands/ads/meta/adsets.d.ts.map +0 -1
- package/dist/commands/ads/meta/adsets.js +0 -50
- package/dist/commands/ads/meta/adsets.js.map +0 -1
- package/dist/commands/ads/meta/audiences.d.ts +0 -20
- package/dist/commands/ads/meta/audiences.d.ts.map +0 -1
- package/dist/commands/ads/meta/audiences.js +0 -41
- package/dist/commands/ads/meta/audiences.js.map +0 -1
- package/dist/commands/ads/meta/businesses.d.ts +0 -12
- package/dist/commands/ads/meta/businesses.d.ts.map +0 -1
- package/dist/commands/ads/meta/businesses.js +0 -35
- package/dist/commands/ads/meta/businesses.js.map +0 -1
- package/dist/commands/ads/meta/campaigns.d.ts +0 -28
- package/dist/commands/ads/meta/campaigns.d.ts.map +0 -1
- package/dist/commands/ads/meta/campaigns.js +0 -51
- package/dist/commands/ads/meta/campaigns.js.map +0 -1
- package/dist/commands/ads/meta/creatives.d.ts +0 -24
- package/dist/commands/ads/meta/creatives.d.ts.map +0 -1
- package/dist/commands/ads/meta/creatives.js +0 -51
- package/dist/commands/ads/meta/creatives.js.map +0 -1
- package/dist/commands/ads/meta/index.d.ts +0 -17
- package/dist/commands/ads/meta/index.d.ts.map +0 -1
- package/dist/commands/ads/meta/index.js +0 -79
- package/dist/commands/ads/meta/index.js.map +0 -1
- package/dist/commands/ads/meta/insights.d.ts +0 -92
- package/dist/commands/ads/meta/insights.d.ts.map +0 -1
- package/dist/commands/ads/meta/insights.js +0 -260
- package/dist/commands/ads/meta/insights.js.map +0 -1
- package/dist/commands/ads/meta/pixels.d.ts +0 -33
- package/dist/commands/ads/meta/pixels.d.ts.map +0 -1
- package/dist/commands/ads/meta/pixels.js +0 -76
- package/dist/commands/ads/meta/pixels.js.map +0 -1
- package/dist/commands/ads/meta/presets.d.ts +0 -30
- package/dist/commands/ads/meta/presets.d.ts.map +0 -1
- package/dist/commands/ads/meta/presets.js +0 -86
- package/dist/commands/ads/meta/presets.js.map +0 -1
- package/dist/commands/ads/meta/preview.d.ts +0 -32
- package/dist/commands/ads/meta/preview.d.ts.map +0 -1
- package/dist/commands/ads/meta/preview.js +0 -90
- package/dist/commands/ads/meta/preview.js.map +0 -1
- package/dist/commands/ads/meta/shared.d.ts +0 -18
- package/dist/commands/ads/meta/shared.d.ts.map +0 -1
- package/dist/commands/ads/meta/shared.js +0 -86
- package/dist/commands/ads/meta/shared.js.map +0 -1
- package/dist/commands/ads/output.d.ts +0 -22
- package/dist/commands/ads/output.d.ts.map +0 -1
- package/dist/commands/ads/output.js +0 -130
- package/dist/commands/ads/output.js.map +0 -1
- package/dist/commands/ads/output.test.d.ts +0 -2
- package/dist/commands/ads/output.test.d.ts.map +0 -1
- package/dist/commands/ads/output.test.js +0 -100
- package/dist/commands/ads/output.test.js.map +0 -1
- package/dist/commands/ads/types.d.ts +0 -69
- package/dist/commands/ads/types.d.ts.map +0 -1
- package/dist/commands/ads/types.js +0 -2
- package/dist/commands/ads/types.js.map +0 -1
- package/dist/commands/ads/x/accounts.d.ts +0 -14
- package/dist/commands/ads/x/accounts.d.ts.map +0 -1
- package/dist/commands/ads/x/accounts.js +0 -73
- package/dist/commands/ads/x/accounts.js.map +0 -1
- package/dist/commands/ads/x/active-entities.d.ts +0 -43
- package/dist/commands/ads/x/active-entities.d.ts.map +0 -1
- package/dist/commands/ads/x/active-entities.js +0 -88
- package/dist/commands/ads/x/active-entities.js.map +0 -1
- package/dist/commands/ads/x/audiences.d.ts +0 -19
- package/dist/commands/ads/x/audiences.d.ts.map +0 -1
- package/dist/commands/ads/x/audiences.js +0 -65
- package/dist/commands/ads/x/audiences.js.map +0 -1
- package/dist/commands/ads/x/campaigns.d.ts +0 -34
- package/dist/commands/ads/x/campaigns.d.ts.map +0 -1
- package/dist/commands/ads/x/campaigns.js +0 -56
- package/dist/commands/ads/x/campaigns.js.map +0 -1
- package/dist/commands/ads/x/cards.d.ts +0 -19
- package/dist/commands/ads/x/cards.d.ts.map +0 -1
- package/dist/commands/ads/x/cards.js +0 -65
- package/dist/commands/ads/x/cards.js.map +0 -1
- package/dist/commands/ads/x/error-parser.d.ts +0 -3
- package/dist/commands/ads/x/error-parser.d.ts.map +0 -1
- package/dist/commands/ads/x/error-parser.js +0 -80
- package/dist/commands/ads/x/error-parser.js.map +0 -1
- package/dist/commands/ads/x/funding.d.ts +0 -19
- package/dist/commands/ads/x/funding.d.ts.map +0 -1
- package/dist/commands/ads/x/funding.js +0 -65
- package/dist/commands/ads/x/funding.js.map +0 -1
- package/dist/commands/ads/x/index.d.ts +0 -2
- package/dist/commands/ads/x/index.d.ts.map +0 -1
- package/dist/commands/ads/x/index.js +0 -50
- package/dist/commands/ads/x/index.js.map +0 -1
- package/dist/commands/ads/x/line-items.d.ts +0 -34
- package/dist/commands/ads/x/line-items.d.ts.map +0 -1
- package/dist/commands/ads/x/line-items.js +0 -55
- package/dist/commands/ads/x/line-items.js.map +0 -1
- package/dist/commands/ads/x/media.d.ts +0 -24
- package/dist/commands/ads/x/media.d.ts.map +0 -1
- package/dist/commands/ads/x/media.js +0 -70
- package/dist/commands/ads/x/media.js.map +0 -1
- package/dist/commands/ads/x/output.d.ts +0 -13
- package/dist/commands/ads/x/output.d.ts.map +0 -1
- package/dist/commands/ads/x/output.js +0 -75
- package/dist/commands/ads/x/output.js.map +0 -1
- package/dist/commands/ads/x/presets.d.ts +0 -15
- package/dist/commands/ads/x/presets.d.ts.map +0 -1
- package/dist/commands/ads/x/presets.js +0 -60
- package/dist/commands/ads/x/presets.js.map +0 -1
- package/dist/commands/ads/x/promoted-tweets.d.ts +0 -29
- package/dist/commands/ads/x/promoted-tweets.d.ts.map +0 -1
- package/dist/commands/ads/x/promoted-tweets.js +0 -74
- package/dist/commands/ads/x/promoted-tweets.js.map +0 -1
- package/dist/commands/ads/x/run-list.d.ts +0 -17
- package/dist/commands/ads/x/run-list.d.ts.map +0 -1
- package/dist/commands/ads/x/run-list.js +0 -60
- package/dist/commands/ads/x/run-list.js.map +0 -1
- package/dist/commands/ads/x/stats/index.d.ts +0 -2
- package/dist/commands/ads/x/stats/index.d.ts.map +0 -1
- package/dist/commands/ads/x/stats/index.js +0 -32
- package/dist/commands/ads/x/stats/index.js.map +0 -1
- package/dist/commands/ads/x/stats/job-create.d.ts +0 -58
- package/dist/commands/ads/x/stats/job-create.d.ts.map +0 -1
- package/dist/commands/ads/x/stats/job-create.js +0 -95
- package/dist/commands/ads/x/stats/job-create.js.map +0 -1
- package/dist/commands/ads/x/stats/job-status.d.ts +0 -18
- package/dist/commands/ads/x/stats/job-status.d.ts.map +0 -1
- package/dist/commands/ads/x/stats/job-status.js +0 -58
- package/dist/commands/ads/x/stats/job-status.js.map +0 -1
- package/dist/commands/ads/x/stats/job.d.ts +0 -63
- package/dist/commands/ads/x/stats/job.d.ts.map +0 -1
- package/dist/commands/ads/x/stats/job.js +0 -183
- package/dist/commands/ads/x/stats/job.js.map +0 -1
- package/dist/commands/ads/x/stats/sync.d.ts +0 -73
- package/dist/commands/ads/x/stats/sync.d.ts.map +0 -1
- package/dist/commands/ads/x/stats/sync.js +0 -151
- package/dist/commands/ads/x/stats/sync.js.map +0 -1
- package/dist/commands/ads/x/targeting-constants.d.ts +0 -34
- package/dist/commands/ads/x/targeting-constants.d.ts.map +0 -1
- package/dist/commands/ads/x/targeting-constants.js +0 -80
- package/dist/commands/ads/x/targeting-constants.js.map +0 -1
- package/dist/commands/ads/x/targeting-criteria.d.ts +0 -24
- package/dist/commands/ads/x/targeting-criteria.d.ts.map +0 -1
- package/dist/commands/ads/x/targeting-criteria.js +0 -69
- package/dist/commands/ads/x/targeting-criteria.js.map +0 -1
- package/dist/commands/ga4/audit.d.ts +0 -13
- package/dist/commands/ga4/audit.d.ts.map +0 -1
- package/dist/commands/ga4/audit.js +0 -67
- package/dist/commands/ga4/audit.js.map +0 -1
- package/dist/commands/ga4/index.d.ts +0 -2
- package/dist/commands/ga4/index.d.ts.map +0 -1
- package/dist/commands/ga4/index.js +0 -26
- package/dist/commands/ga4/index.js.map +0 -1
- package/dist/commands/ga4/presets.d.ts +0 -8
- package/dist/commands/ga4/presets.d.ts.map +0 -1
- package/dist/commands/ga4/presets.js +0 -33
- package/dist/commands/ga4/presets.js.map +0 -1
- package/dist/commands/ga4/properties.d.ts +0 -14
- package/dist/commands/ga4/properties.d.ts.map +0 -1
- package/dist/commands/ga4/properties.js +0 -61
- package/dist/commands/ga4/properties.js.map +0 -1
- package/dist/commands/ga4/query.d.ts +0 -69
- package/dist/commands/ga4/query.d.ts.map +0 -1
- package/dist/commands/ga4/query.js +0 -184
- package/dist/commands/ga4/query.js.map +0 -1
- package/dist/commands/ga4/resolve.d.ts +0 -2
- package/dist/commands/ga4/resolve.d.ts.map +0 -1
- package/dist/commands/ga4/resolve.js +0 -57
- package/dist/commands/ga4/resolve.js.map +0 -1
- package/dist/commands/gsc/index.d.ts +0 -2
- package/dist/commands/gsc/index.d.ts.map +0 -1
- package/dist/commands/gsc/index.js +0 -26
- package/dist/commands/gsc/index.js.map +0 -1
- package/dist/commands/gsc/presets.d.ts +0 -9
- package/dist/commands/gsc/presets.d.ts.map +0 -1
- package/dist/commands/gsc/presets.js +0 -34
- package/dist/commands/gsc/presets.js.map +0 -1
- package/dist/commands/gsc/query.d.ts +0 -79
- package/dist/commands/gsc/query.d.ts.map +0 -1
- package/dist/commands/gsc/query.js +0 -196
- package/dist/commands/gsc/query.js.map +0 -1
- package/dist/commands/gsc/resolve.d.ts +0 -2
- package/dist/commands/gsc/resolve.d.ts.map +0 -1
- package/dist/commands/gsc/resolve.js +0 -57
- package/dist/commands/gsc/resolve.js.map +0 -1
- package/dist/commands/gsc/sitemaps.d.ts +0 -19
- package/dist/commands/gsc/sitemaps.d.ts.map +0 -1
- package/dist/commands/gsc/sitemaps.js +0 -65
- package/dist/commands/gsc/sitemaps.js.map +0 -1
- package/dist/commands/gsc/sites.d.ts +0 -14
- package/dist/commands/gsc/sites.d.ts.map +0 -1
- package/dist/commands/gsc/sites.js +0 -61
- package/dist/commands/gsc/sites.js.map +0 -1
- package/dist/commands/images/delete.d.ts +0 -19
- package/dist/commands/images/delete.d.ts.map +0 -1
- package/dist/commands/images/delete.js +0 -58
- package/dist/commands/images/delete.js.map +0 -1
- package/dist/commands/images/extract.d.ts +0 -23
- package/dist/commands/images/extract.d.ts.map +0 -1
- package/dist/commands/images/extract.js +0 -53
- package/dist/commands/images/extract.js.map +0 -1
- package/dist/commands/images/find.d.ts +0 -33
- package/dist/commands/images/find.d.ts.map +0 -1
- package/dist/commands/images/find.js +0 -70
- package/dist/commands/images/find.js.map +0 -1
- package/dist/commands/images/get.d.ts +0 -30
- package/dist/commands/images/get.d.ts.map +0 -1
- package/dist/commands/images/get.js +0 -42
- package/dist/commands/images/get.js.map +0 -1
- package/dist/commands/images/gif.d.ts +0 -33
- package/dist/commands/images/gif.d.ts.map +0 -1
- package/dist/commands/images/gif.js +0 -81
- package/dist/commands/images/gif.js.map +0 -1
- package/dist/commands/images/google.d.ts +0 -38
- package/dist/commands/images/google.d.ts.map +0 -1
- package/dist/commands/images/google.js +0 -77
- package/dist/commands/images/google.js.map +0 -1
- package/dist/commands/images/icon.d.ts +0 -23
- package/dist/commands/images/icon.d.ts.map +0 -1
- package/dist/commands/images/icon.js +0 -57
- package/dist/commands/images/icon.js.map +0 -1
- package/dist/commands/images/index.d.ts +0 -2
- package/dist/commands/images/index.d.ts.map +0 -1
- package/dist/commands/images/index.js +0 -63
- package/dist/commands/images/index.js.map +0 -1
- package/dist/commands/images/ingest.d.ts +0 -28
- package/dist/commands/images/ingest.d.ts.map +0 -1
- package/dist/commands/images/ingest.js +0 -60
- package/dist/commands/images/ingest.js.map +0 -1
- package/dist/commands/images/library.d.ts +0 -55
- package/dist/commands/images/library.d.ts.map +0 -1
- package/dist/commands/images/library.js +0 -86
- package/dist/commands/images/library.js.map +0 -1
- package/dist/commands/images/logo.d.ts +0 -18
- package/dist/commands/images/logo.d.ts.map +0 -1
- package/dist/commands/images/logo.js +0 -49
- package/dist/commands/images/logo.js.map +0 -1
- package/dist/commands/images/meme.d.ts +0 -28
- package/dist/commands/images/meme.d.ts.map +0 -1
- package/dist/commands/images/meme.js +0 -66
- package/dist/commands/images/meme.js.map +0 -1
- package/dist/commands/images/screenshot.d.ts +0 -23
- package/dist/commands/images/screenshot.d.ts.map +0 -1
- package/dist/commands/images/screenshot.js +0 -64
- package/dist/commands/images/screenshot.js.map +0 -1
- package/dist/commands/images/search.d.ts +0 -45
- package/dist/commands/images/search.d.ts.map +0 -1
- package/dist/commands/images/search.js +0 -74
- package/dist/commands/images/search.js.map +0 -1
- package/dist/commands/images/sticker.d.ts +0 -33
- package/dist/commands/images/sticker.d.ts.map +0 -1
- package/dist/commands/images/sticker.js +0 -81
- package/dist/commands/images/sticker.js.map +0 -1
- package/dist/commands/images/stock.d.ts +0 -58
- package/dist/commands/images/stock.d.ts.map +0 -1
- package/dist/commands/images/stock.js +0 -116
- package/dist/commands/images/stock.js.map +0 -1
- package/dist/commands/images/upload.d.ts +0 -24
- package/dist/commands/images/upload.d.ts.map +0 -1
- package/dist/commands/images/upload.js +0 -90
- package/dist/commands/images/upload.js.map +0 -1
- package/dist/commands/images/use.d.ts +0 -18
- package/dist/commands/images/use.d.ts.map +0 -1
- package/dist/commands/images/use.js +0 -57
- package/dist/commands/images/use.js.map +0 -1
- package/dist/commands/research/advertisers.d.ts +0 -34
- package/dist/commands/research/advertisers.d.ts.map +0 -1
- package/dist/commands/research/advertisers.js +0 -78
- package/dist/commands/research/advertisers.js.map +0 -1
- package/dist/commands/research/autocomplete.d.ts +0 -34
- package/dist/commands/research/autocomplete.d.ts.map +0 -1
- package/dist/commands/research/autocomplete.js +0 -73
- package/dist/commands/research/autocomplete.js.map +0 -1
- package/dist/commands/research/countries.d.ts +0 -2
- package/dist/commands/research/countries.d.ts.map +0 -1
- package/dist/commands/research/countries.js +0 -69
- package/dist/commands/research/countries.js.map +0 -1
- package/dist/commands/research/index.d.ts +0 -2
- package/dist/commands/research/index.d.ts.map +0 -1
- package/dist/commands/research/index.js +0 -50
- package/dist/commands/research/index.js.map +0 -1
- package/dist/commands/research/intent.d.ts +0 -24
- package/dist/commands/research/intent.d.ts.map +0 -1
- package/dist/commands/research/intent.js +0 -78
- package/dist/commands/research/intent.js.map +0 -1
- package/dist/commands/research/keyword-gap.d.ts +0 -49
- package/dist/commands/research/keyword-gap.d.ts.map +0 -1
- package/dist/commands/research/keyword-gap.js +0 -107
- package/dist/commands/research/keyword-gap.js.map +0 -1
- package/dist/commands/research/keywords-for-site.d.ts +0 -44
- package/dist/commands/research/keywords-for-site.d.ts.map +0 -1
- package/dist/commands/research/keywords-for-site.js +0 -90
- package/dist/commands/research/keywords-for-site.js.map +0 -1
- package/dist/commands/research/languages.d.ts +0 -2
- package/dist/commands/research/languages.d.ts.map +0 -1
- package/dist/commands/research/languages.js +0 -42
- package/dist/commands/research/languages.js.map +0 -1
- package/dist/commands/research/lighthouse.d.ts +0 -24
- package/dist/commands/research/lighthouse.d.ts.map +0 -1
- package/dist/commands/research/lighthouse.js +0 -60
- package/dist/commands/research/lighthouse.js.map +0 -1
- package/dist/commands/research/output.d.ts +0 -29
- package/dist/commands/research/output.d.ts.map +0 -1
- package/dist/commands/research/output.js +0 -81
- package/dist/commands/research/output.js.map +0 -1
- package/dist/commands/research/relevant-pages.d.ts +0 -34
- package/dist/commands/research/relevant-pages.d.ts.map +0 -1
- package/dist/commands/research/relevant-pages.js +0 -76
- package/dist/commands/research/relevant-pages.js.map +0 -1
- package/dist/commands/research/web.d.ts +0 -19
- package/dist/commands/research/web.d.ts.map +0 -1
- package/dist/commands/research/web.js +0 -112
- package/dist/commands/research/web.js.map +0 -1
- package/dist/commands/schema.d.ts +0 -8
- package/dist/commands/schema.d.ts.map +0 -1
- package/dist/commands/schema.js +0 -38
- package/dist/commands/schema.js.map +0 -1
- package/dist/commands/testimonials/get.d.ts +0 -30
- package/dist/commands/testimonials/get.d.ts.map +0 -1
- package/dist/commands/testimonials/get.js +0 -42
- package/dist/commands/testimonials/get.js.map +0 -1
- package/dist/commands/testimonials/index.d.ts +0 -2
- package/dist/commands/testimonials/index.d.ts.map +0 -1
- package/dist/commands/testimonials/index.js +0 -22
- package/dist/commands/testimonials/index.js.map +0 -1
- package/dist/commands/testimonials/list.d.ts +0 -60
- package/dist/commands/testimonials/list.d.ts.map +0 -1
- package/dist/commands/testimonials/list.js +0 -69
- package/dist/commands/testimonials/list.js.map +0 -1
- package/dist/commands/testimonials/search.d.ts +0 -40
- package/dist/commands/testimonials/search.d.ts.map +0 -1
- package/dist/commands/testimonials/search.js +0 -59
- package/dist/commands/testimonials/search.js.map +0 -1
- package/dist/commands/videos/delete.d.ts +0 -19
- package/dist/commands/videos/delete.d.ts.map +0 -1
- package/dist/commands/videos/delete.js +0 -58
- package/dist/commands/videos/delete.js.map +0 -1
- package/dist/commands/videos/get.d.ts +0 -30
- package/dist/commands/videos/get.d.ts.map +0 -1
- package/dist/commands/videos/get.js +0 -42
- package/dist/commands/videos/get.js.map +0 -1
- package/dist/commands/videos/index.d.ts +0 -2
- package/dist/commands/videos/index.d.ts.map +0 -1
- package/dist/commands/videos/index.js +0 -25
- package/dist/commands/videos/index.js.map +0 -1
- package/dist/commands/videos/search.d.ts +0 -35
- package/dist/commands/videos/search.d.ts.map +0 -1
- package/dist/commands/videos/search.js +0 -54
- package/dist/commands/videos/search.js.map +0 -1
- package/dist/commands/videos/upload.d.ts +0 -19
- package/dist/commands/videos/upload.d.ts.map +0 -1
- package/dist/commands/videos/upload.js +0 -92
- package/dist/commands/videos/upload.js.map +0 -1
- package/dist/env.d.ts +0 -15
- package/dist/env.d.ts.map +0 -1
- package/dist/env.js +0 -39
- package/dist/env.js.map +0 -1
- package/dist/error-handler.d.ts +0 -8
- package/dist/error-handler.d.ts.map +0 -1
- package/dist/error-handler.js +0 -46
- package/dist/error-handler.js.map +0 -1
- package/dist/geo-context.d.ts +0 -21
- package/dist/geo-context.d.ts.map +0 -1
- package/dist/geo-context.js +0 -208
- package/dist/geo-context.js.map +0 -1
- package/dist/output.d.ts +0 -43
- package/dist/output.d.ts.map +0 -1
- package/dist/output.js +0 -182
- package/dist/output.js.map +0 -1
- package/dist/output.test.d.ts +0 -2
- package/dist/output.test.d.ts.map +0 -1
- package/dist/output.test.js +0 -117
- package/dist/output.test.js.map +0 -1
- package/dist/schemas.d.ts +0 -17
- package/dist/schemas.d.ts.map +0 -1
- package/dist/schemas.js +0 -11
- package/dist/schemas.js.map +0 -1
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
import { defineCommand } from "citty";
|
|
2
|
-
import { apiPost } from "../../../client.js";
|
|
3
|
-
import { writeAdsJson } from "../output.js";
|
|
4
|
-
import { handleLinkedinError, resolveAccountIdArg } from "./shared.js";
|
|
5
|
-
const SEVERITY_RANK = {
|
|
6
|
-
critical: 0,
|
|
7
|
-
high: 1,
|
|
8
|
-
medium: 2,
|
|
9
|
-
low: 3,
|
|
10
|
-
};
|
|
11
|
-
const STATUS_RANK = {
|
|
12
|
-
fail: 0,
|
|
13
|
-
warn: 1,
|
|
14
|
-
partial: 2,
|
|
15
|
-
pass: 3,
|
|
16
|
-
n_a: 4,
|
|
17
|
-
};
|
|
18
|
-
function filterFindings(findings, severity, area) {
|
|
19
|
-
return findings.filter((f) => {
|
|
20
|
-
if (severity && !severity.includes(f.severity))
|
|
21
|
-
return false;
|
|
22
|
-
if (area && !area.includes(f.area))
|
|
23
|
-
return false;
|
|
24
|
-
return true;
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
function sortFindings(findings) {
|
|
28
|
-
return [...findings].sort((a, b) => {
|
|
29
|
-
const sa = STATUS_RANK[a.status] - STATUS_RANK[b.status];
|
|
30
|
-
if (sa !== 0)
|
|
31
|
-
return sa;
|
|
32
|
-
return SEVERITY_RANK[a.severity] - SEVERITY_RANK[b.severity];
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Render the audit as a markdown table that mirrors
|
|
37
|
-
* google-ads-playbook/10-audit-summary.md so the agent can drop it into a
|
|
38
|
-
* client deliverable as-is.
|
|
39
|
-
*/
|
|
40
|
-
function renderMarkdown(result) {
|
|
41
|
-
const lines = [];
|
|
42
|
-
lines.push(`# LinkedIn Ads Audit — ${result.account.name} (${result.account.id})`);
|
|
43
|
-
lines.push("");
|
|
44
|
-
lines.push(`**Scope:** ${result.scope.campaigns} campaigns, ${result.scope.creatives} creatives, last ${result.scope.windowDays}d`);
|
|
45
|
-
lines.push("");
|
|
46
|
-
lines.push(`**Summary:** ${result.summary.pass} pass • ${result.summary.critical} critical • ${result.summary.high} high • ${result.summary.medium} medium • ${result.summary.low} low • ${result.summary.n_a} n/a (${result.summary.totalChecks} total)`);
|
|
47
|
-
lines.push("");
|
|
48
|
-
lines.push("| # | Area | Check | Status | Severity | Notes |");
|
|
49
|
-
lines.push("|---|------|-------|--------|----------|-------|");
|
|
50
|
-
result.findings.forEach((f, idx) => {
|
|
51
|
-
const note = noteOf(f);
|
|
52
|
-
lines.push(`| ${idx + 1} | ${f.area} | ${escapeMd(f.check)} | ${f.status.toUpperCase()} | ${f.severity} | ${escapeMd(note)} |`);
|
|
53
|
-
});
|
|
54
|
-
return lines.join("\n");
|
|
55
|
-
}
|
|
56
|
-
function escapeMd(text) {
|
|
57
|
-
return text.replace(/\|/g, "\\|").replace(/\n/g, " ");
|
|
58
|
-
}
|
|
59
|
-
function noteOf(f) {
|
|
60
|
-
if (f.status === "pass")
|
|
61
|
-
return "";
|
|
62
|
-
const ev = f.evidence ? JSON.stringify(f.evidence) : "";
|
|
63
|
-
const fix = f.fix?.explanation ?? "";
|
|
64
|
-
return [fix, ev].filter(Boolean).join(" — ");
|
|
65
|
-
}
|
|
66
|
-
export const auditCommand = defineCommand({
|
|
67
|
-
meta: {
|
|
68
|
-
name: "audit",
|
|
69
|
-
description: `Run a LinkedIn Ads playbook audit — 30+ checks across Settings, Tracking,
|
|
70
|
-
Audience, Campaigns, Creative, Performance, Bidding, and Compliance.
|
|
71
|
-
|
|
72
|
-
Each finding has {id, area, check, status, severity, evidence, fix} fields with
|
|
73
|
-
playbook citations. The default JSON output is agent-friendly; --format md
|
|
74
|
-
renders a deliverable-ready table that mirrors the google-ads-playbook
|
|
75
|
-
10-audit-summary.md style.
|
|
76
|
-
|
|
77
|
-
Exit code 0 always. Use the JSON 'summary' counts to decide if action is needed.
|
|
78
|
-
|
|
79
|
-
Examples:
|
|
80
|
-
baker ads linkedin audit --account-id 503001492
|
|
81
|
-
baker ads linkedin audit --account-id 503001492 --campaign-id 1234 # narrow scope
|
|
82
|
-
baker ads linkedin audit --account-id 503001492 --window-days 90
|
|
83
|
-
baker ads linkedin audit --account-id 503001492 --severity critical,high
|
|
84
|
-
baker ads linkedin audit --account-id 503001492 --area Settings,Tracking
|
|
85
|
-
baker ads linkedin audit --account-id 503001492 --format md`,
|
|
86
|
-
},
|
|
87
|
-
args: {
|
|
88
|
-
"account-id": { type: "string", description: "Numeric account ID or urn:li:sponsoredAccount:N" },
|
|
89
|
-
"account-urn": { type: "string", description: "Alias for --account-id" },
|
|
90
|
-
"campaign-id": { type: "string", description: "Narrow scope to a single campaign" },
|
|
91
|
-
"window-days": { type: "string", description: "Lookback window for performance checks (default: 30)" },
|
|
92
|
-
severity: { type: "string", description: "CSV severity filter: critical,high,medium,low" },
|
|
93
|
-
area: {
|
|
94
|
-
type: "string",
|
|
95
|
-
description: "CSV area filter: Settings,Tracking,Audience,Campaigns,Creative,Performance,Bidding,Compliance,Hygiene",
|
|
96
|
-
},
|
|
97
|
-
format: { type: "string", description: "Output format: json | md (default: json)" },
|
|
98
|
-
"skip-cache": { type: "boolean", description: "Bypass server-side cache" },
|
|
99
|
-
},
|
|
100
|
-
run: async ({ args }) => {
|
|
101
|
-
const accountId = resolveAccountIdArg(args);
|
|
102
|
-
const windowDays = args["window-days"] ? Number(args["window-days"]) : 30;
|
|
103
|
-
if (!Number.isFinite(windowDays) || windowDays < 1 || windowDays > 365) {
|
|
104
|
-
handleLinkedinError(new Error("--window-days must be 1..365"));
|
|
105
|
-
}
|
|
106
|
-
try {
|
|
107
|
-
const data = await apiPost("/api/ads/linkedin/audit", {
|
|
108
|
-
accountId,
|
|
109
|
-
campaignId: args["campaign-id"] ? String(args["campaign-id"]) : undefined,
|
|
110
|
-
windowDays,
|
|
111
|
-
skipCache: Boolean(args["skip-cache"]),
|
|
112
|
-
});
|
|
113
|
-
const severityFilter = args.severity
|
|
114
|
-
?.split(",")
|
|
115
|
-
.map((s) => s.trim().toLowerCase())
|
|
116
|
-
.filter(Boolean);
|
|
117
|
-
const areaFilter = args.area
|
|
118
|
-
?.split(",")
|
|
119
|
-
.map((s) => s.trim())
|
|
120
|
-
.filter(Boolean);
|
|
121
|
-
const filtered = filterFindings(data.findings, severityFilter, areaFilter);
|
|
122
|
-
const sorted = sortFindings(filtered);
|
|
123
|
-
const result = { ...data, findings: sorted };
|
|
124
|
-
const fmt = args.format ?? "json";
|
|
125
|
-
if (fmt === "md") {
|
|
126
|
-
process.stdout.write(`${renderMarkdown(result)}\n`);
|
|
127
|
-
return;
|
|
128
|
-
}
|
|
129
|
-
writeAdsJson({ ok: true, data: result });
|
|
130
|
-
}
|
|
131
|
-
catch (err) {
|
|
132
|
-
handleLinkedinError(err);
|
|
133
|
-
}
|
|
134
|
-
},
|
|
135
|
-
});
|
|
136
|
-
//# sourceMappingURL=audit.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../../../src/commands/ads/linkedin/audit.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
export declare const bidPricingCommand: import("citty").CommandDef<{
|
|
2
|
-
readonly "account-id": {
|
|
3
|
-
readonly type: "string";
|
|
4
|
-
readonly description: "Numeric account ID or urn:li:sponsoredAccount:N";
|
|
5
|
-
};
|
|
6
|
-
readonly "account-urn": {
|
|
7
|
-
readonly type: "string";
|
|
8
|
-
readonly description: "Alias for --account-id";
|
|
9
|
-
};
|
|
10
|
-
readonly objective: {
|
|
11
|
-
readonly type: "string";
|
|
12
|
-
readonly description: "Objective type (e.g. WEBSITE_CONVERSION, LEAD_GENERATION)";
|
|
13
|
-
readonly required: true;
|
|
14
|
-
};
|
|
15
|
-
readonly "cost-type": {
|
|
16
|
-
readonly type: "string";
|
|
17
|
-
readonly description: "CPC | CPM | CPV | CPS";
|
|
18
|
-
readonly required: true;
|
|
19
|
-
};
|
|
20
|
-
readonly targeting: {
|
|
21
|
-
readonly type: "string";
|
|
22
|
-
readonly description: "Inline JSON targetingCriteria";
|
|
23
|
-
};
|
|
24
|
-
readonly "targeting-file": {
|
|
25
|
-
readonly type: "string";
|
|
26
|
-
readonly description: "Path to JSON file with targetingCriteria";
|
|
27
|
-
};
|
|
28
|
-
readonly "skip-cache": {
|
|
29
|
-
readonly type: "boolean";
|
|
30
|
-
readonly description: "Bypass server-side cache";
|
|
31
|
-
};
|
|
32
|
-
readonly output: {
|
|
33
|
-
readonly type: "string";
|
|
34
|
-
readonly description: "json";
|
|
35
|
-
readonly default: "json";
|
|
36
|
-
};
|
|
37
|
-
}>;
|
|
38
|
-
//# sourceMappingURL=bid-pricing.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bid-pricing.d.ts","sourceRoot":"","sources":["../../../../src/commands/ads/linkedin/bid-pricing.ts"],"names":[],"mappings":"AAyCA,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+C5B,CAAC"}
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
import { readFileSync } from "node:fs";
|
|
2
|
-
import { defineCommand } from "citty";
|
|
3
|
-
import { apiPost } from "../../../client.js";
|
|
4
|
-
import { writeAdsJson } from "../output.js";
|
|
5
|
-
import { handleLinkedinError, resolveAccountIdArg } from "./shared.js";
|
|
6
|
-
function loadTargeting(args) {
|
|
7
|
-
const inline = args.targeting;
|
|
8
|
-
if (inline) {
|
|
9
|
-
try {
|
|
10
|
-
return JSON.parse(inline);
|
|
11
|
-
}
|
|
12
|
-
catch {
|
|
13
|
-
handleLinkedinError(new Error("--targeting must be valid JSON. See LinkedIn 'targetingCriteria' shape."));
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
const file = args["targeting-file"];
|
|
17
|
-
if (file) {
|
|
18
|
-
try {
|
|
19
|
-
return JSON.parse(readFileSync(file, "utf-8"));
|
|
20
|
-
}
|
|
21
|
-
catch (e) {
|
|
22
|
-
handleLinkedinError(new Error(`Failed to read --targeting-file: ${e instanceof Error ? e.message : "I/O error"}`));
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
handleLinkedinError(new Error("Pass --targeting-file <path> or --targeting '{...JSON...}'"));
|
|
26
|
-
}
|
|
27
|
-
export const bidPricingCommand = defineCommand({
|
|
28
|
-
meta: {
|
|
29
|
-
name: "bid-pricing",
|
|
30
|
-
description: `Get LinkedIn's suggested bid range for a targeting + objective + cost type.
|
|
31
|
-
|
|
32
|
-
Returns LinkedIn's min / suggested / max bid plus the playbook §06 floor
|
|
33
|
-
(2/3 of suggested — the recommended manual CPC starting point).
|
|
34
|
-
|
|
35
|
-
Objective types: BRAND_AWARENESS | WEBSITE_TRAFFIC | WEBSITE_VISIT |
|
|
36
|
-
ENGAGEMENT | WEBSITE_CONVERSION | LEAD_GENERATION |
|
|
37
|
-
JOB_APPLICANT | VIDEO_VIEW
|
|
38
|
-
Cost types: CPC | CPM | CPV | CPS
|
|
39
|
-
|
|
40
|
-
Examples:
|
|
41
|
-
baker ads linkedin bid-pricing --account-id 503001492 --objective WEBSITE_CONVERSION --cost-type CPC --targeting-file targeting.json
|
|
42
|
-
baker ads linkedin bid-pricing --account-id 503001492 --objective LEAD_GENERATION --cost-type CPM --targeting '{"include":...}'`,
|
|
43
|
-
},
|
|
44
|
-
args: {
|
|
45
|
-
"account-id": { type: "string", description: "Numeric account ID or urn:li:sponsoredAccount:N" },
|
|
46
|
-
"account-urn": { type: "string", description: "Alias for --account-id" },
|
|
47
|
-
objective: {
|
|
48
|
-
type: "string",
|
|
49
|
-
description: "Objective type (e.g. WEBSITE_CONVERSION, LEAD_GENERATION)",
|
|
50
|
-
required: true,
|
|
51
|
-
},
|
|
52
|
-
"cost-type": { type: "string", description: "CPC | CPM | CPV | CPS", required: true },
|
|
53
|
-
targeting: { type: "string", description: "Inline JSON targetingCriteria" },
|
|
54
|
-
"targeting-file": { type: "string", description: "Path to JSON file with targetingCriteria" },
|
|
55
|
-
"skip-cache": { type: "boolean", description: "Bypass server-side cache" },
|
|
56
|
-
output: { type: "string", description: "json", default: "json" },
|
|
57
|
-
},
|
|
58
|
-
run: async ({ args }) => {
|
|
59
|
-
const accountId = resolveAccountIdArg(args);
|
|
60
|
-
const targetingCriteria = loadTargeting(args);
|
|
61
|
-
try {
|
|
62
|
-
const data = await apiPost("/api/ads/linkedin/bid-pricing", {
|
|
63
|
-
accountId,
|
|
64
|
-
objectiveType: String(args.objective),
|
|
65
|
-
costType: String(args["cost-type"]).toUpperCase(),
|
|
66
|
-
targetingCriteria,
|
|
67
|
-
skipCache: Boolean(args["skip-cache"]),
|
|
68
|
-
});
|
|
69
|
-
writeAdsJson({ ok: true, data });
|
|
70
|
-
}
|
|
71
|
-
catch (err) {
|
|
72
|
-
handleLinkedinError(err);
|
|
73
|
-
}
|
|
74
|
-
},
|
|
75
|
-
});
|
|
76
|
-
//# sourceMappingURL=bid-pricing.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bid-pricing.js","sourceRoot":"","sources":["../../../../src/commands/ads/linkedin/bid-pricing.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
export declare const campaignGroupsCommand: import("citty").CommandDef<{
|
|
2
|
-
readonly "account-id": {
|
|
3
|
-
readonly type: "string";
|
|
4
|
-
readonly description: "Numeric account ID or urn:li:sponsoredAccount:N";
|
|
5
|
-
};
|
|
6
|
-
readonly "account-urn": {
|
|
7
|
-
readonly type: "string";
|
|
8
|
-
readonly description: "Alias for --account-id";
|
|
9
|
-
};
|
|
10
|
-
readonly "all-statuses": {
|
|
11
|
-
readonly type: "boolean";
|
|
12
|
-
readonly description: "Drop the default ACTIVE filter";
|
|
13
|
-
};
|
|
14
|
-
readonly statuses: {
|
|
15
|
-
readonly type: "string";
|
|
16
|
-
readonly description: "CSV of statuses (ACTIVE,PAUSED,ARCHIVED,COMPLETED,DRAFT)";
|
|
17
|
-
};
|
|
18
|
-
readonly limit: {
|
|
19
|
-
readonly type: "string";
|
|
20
|
-
readonly description: "Max rows (default: 500)";
|
|
21
|
-
};
|
|
22
|
-
readonly "skip-cache": {
|
|
23
|
-
readonly type: "boolean";
|
|
24
|
-
readonly description: "Bypass server-side cache";
|
|
25
|
-
};
|
|
26
|
-
readonly output: {
|
|
27
|
-
readonly type: "string";
|
|
28
|
-
readonly description: "json|csv|jsonl|md";
|
|
29
|
-
readonly default: "json";
|
|
30
|
-
};
|
|
31
|
-
}>;
|
|
32
|
-
//# sourceMappingURL=campaign-groups.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"campaign-groups.d.ts","sourceRoot":"","sources":["../../../../src/commands/ads/linkedin/campaign-groups.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyChC,CAAC"}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import { defineCommand } from "citty";
|
|
2
|
-
import { apiGet } from "../../../client.js";
|
|
3
|
-
import { writeAdsJson, writeAdsOutput } from "../output.js";
|
|
4
|
-
import { csvOrJson, handleLinkedinError, resolveAccountIdArg, resolveStatusFilter } from "./shared.js";
|
|
5
|
-
export const campaignGroupsCommand = defineCommand({
|
|
6
|
-
meta: {
|
|
7
|
-
name: "campaign-groups",
|
|
8
|
-
description: `List LinkedIn campaign groups.
|
|
9
|
-
|
|
10
|
-
Default: ACTIVE only. Pass --all-statuses to widen, or --statuses ACTIVE,PAUSED to override.
|
|
11
|
-
|
|
12
|
-
Examples:
|
|
13
|
-
baker ads linkedin campaign-groups --account-id 503001492
|
|
14
|
-
baker ads linkedin campaign-groups --account-id 503001492 --all-statuses
|
|
15
|
-
baker ads linkedin campaign-groups --account-id 503001492 --statuses ACTIVE,PAUSED --output csv`,
|
|
16
|
-
},
|
|
17
|
-
args: {
|
|
18
|
-
"account-id": { type: "string", description: "Numeric account ID or urn:li:sponsoredAccount:N" },
|
|
19
|
-
"account-urn": { type: "string", description: "Alias for --account-id" },
|
|
20
|
-
"all-statuses": { type: "boolean", description: "Drop the default ACTIVE filter" },
|
|
21
|
-
statuses: { type: "string", description: "CSV of statuses (ACTIVE,PAUSED,ARCHIVED,COMPLETED,DRAFT)" },
|
|
22
|
-
limit: { type: "string", description: "Max rows (default: 500)" },
|
|
23
|
-
"skip-cache": { type: "boolean", description: "Bypass server-side cache" },
|
|
24
|
-
output: { type: "string", description: "json|csv|jsonl|md", default: "json" },
|
|
25
|
-
},
|
|
26
|
-
run: async ({ args }) => {
|
|
27
|
-
const accountId = resolveAccountIdArg(args);
|
|
28
|
-
try {
|
|
29
|
-
const params = { "account-id": accountId };
|
|
30
|
-
const statuses = resolveStatusFilter(args);
|
|
31
|
-
if (statuses)
|
|
32
|
-
params.statuses = statuses.join(",");
|
|
33
|
-
if (args.limit)
|
|
34
|
-
params.limit = String(args.limit);
|
|
35
|
-
if (args["skip-cache"])
|
|
36
|
-
params["skip-cache"] = "true";
|
|
37
|
-
const data = await apiGet("/api/ads/linkedin/campaign-groups", params);
|
|
38
|
-
const fmt = csvOrJson(args);
|
|
39
|
-
if (fmt !== "json") {
|
|
40
|
-
writeAdsOutput(data, fmt);
|
|
41
|
-
return;
|
|
42
|
-
}
|
|
43
|
-
writeAdsJson({ ok: true, data });
|
|
44
|
-
}
|
|
45
|
-
catch (err) {
|
|
46
|
-
handleLinkedinError(err);
|
|
47
|
-
}
|
|
48
|
-
},
|
|
49
|
-
});
|
|
50
|
-
//# sourceMappingURL=campaign-groups.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"campaign-groups.js","sourceRoot":"","sources":["../../../../src/commands/ads/linkedin/campaign-groups.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAavG,MAAM,CAAC,MAAM,qBAAqB,GAAG,aAAa,CAAC;IACjD,IAAI,EAAE;QACJ,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE;;;;;;;kGAOiF;KAC/F;IACD,IAAI,EAAE;QACJ,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iDAAiD,EAAE;QAChG,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wBAAwB,EAAE;QACxE,cAAc,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,gCAAgC,EAAE;QAClF,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0DAA0D,EAAE;QACrG,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yBAAyB,EAAE;QACjE,YAAY,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,0BAA0B,EAAE;QAC1E,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,EAAE;KAC9E;IACD,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QACtB,MAAM,SAAS,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC;YACH,MAAM,MAAM,GAA2B,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC;YACnE,MAAM,QAAQ,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;YAC3C,IAAI,QAAQ;gBAAE,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACnD,IAAI,IAAI,CAAC,KAAK;gBAAE,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClD,IAAI,IAAI,CAAC,YAAY,CAAC;gBAAE,MAAM,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC;YAEtD,MAAM,IAAI,GAAG,MAAM,MAAM,CAA6B,mCAAmC,EAAE,MAAM,CAAC,CAAC;YACnG,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;YAC5B,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;gBACnB,cAAc,CAAC,IAAiD,EAAE,GAAG,CAAC,CAAC;gBACvE,OAAO;YACT,CAAC;YACD,YAAY,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
export declare const campaignsCommand: import("citty").CommandDef<{
|
|
2
|
-
readonly "account-id": {
|
|
3
|
-
readonly type: "string";
|
|
4
|
-
readonly description: "Numeric account ID or urn:li:sponsoredAccount:N";
|
|
5
|
-
};
|
|
6
|
-
readonly "account-urn": {
|
|
7
|
-
readonly type: "string";
|
|
8
|
-
readonly description: "Alias for --account-id";
|
|
9
|
-
};
|
|
10
|
-
readonly "campaign-group-id": {
|
|
11
|
-
readonly type: "string";
|
|
12
|
-
readonly description: "Filter by campaign group";
|
|
13
|
-
};
|
|
14
|
-
readonly "all-statuses": {
|
|
15
|
-
readonly type: "boolean";
|
|
16
|
-
readonly description: "Drop the default ACTIVE filter";
|
|
17
|
-
};
|
|
18
|
-
readonly statuses: {
|
|
19
|
-
readonly type: "string";
|
|
20
|
-
readonly description: "CSV of statuses";
|
|
21
|
-
};
|
|
22
|
-
readonly limit: {
|
|
23
|
-
readonly type: "string";
|
|
24
|
-
readonly description: "Max rows (default: 500)";
|
|
25
|
-
};
|
|
26
|
-
readonly "skip-cache": {
|
|
27
|
-
readonly type: "boolean";
|
|
28
|
-
readonly description: "Bypass server-side cache";
|
|
29
|
-
};
|
|
30
|
-
readonly output: {
|
|
31
|
-
readonly type: "string";
|
|
32
|
-
readonly description: "json|csv|jsonl|md";
|
|
33
|
-
readonly default: "json";
|
|
34
|
-
};
|
|
35
|
-
}>;
|
|
36
|
-
//# sourceMappingURL=campaigns.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"campaigns.d.ts","sourceRoot":"","sources":["../../../../src/commands/ads/linkedin/campaigns.ts"],"names":[],"mappings":"AA2BA,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+C3B,CAAC"}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { defineCommand } from "citty";
|
|
2
|
-
import { apiGet } from "../../../client.js";
|
|
3
|
-
import { writeAdsJson, writeAdsOutput } from "../output.js";
|
|
4
|
-
import { csvOrJson, handleLinkedinError, resolveAccountIdArg, resolveStatusFilter } from "./shared.js";
|
|
5
|
-
export const campaignsCommand = defineCommand({
|
|
6
|
-
meta: {
|
|
7
|
-
name: "campaigns",
|
|
8
|
-
description: `List LinkedIn campaigns.
|
|
9
|
-
|
|
10
|
-
Default: ACTIVE only. The schema includes the audit-relevant settings:
|
|
11
|
-
audienceExpansionEnabled — playbook §02 silent budget drain (should be false)
|
|
12
|
-
offsiteDeliveryEnabled — LinkedIn Audience Network gate
|
|
13
|
-
optimizationTargetType — driver of the bidding strategy
|
|
14
|
-
costType — CPC | CPM | CPV | CPS
|
|
15
|
-
|
|
16
|
-
Examples:
|
|
17
|
-
baker ads linkedin campaigns --account-id 503001492
|
|
18
|
-
baker ads linkedin campaigns --account-id 503001492 --campaign-group-id 12345
|
|
19
|
-
baker ads linkedin campaigns --account-id 503001492 --all-statuses --output csv`,
|
|
20
|
-
},
|
|
21
|
-
args: {
|
|
22
|
-
"account-id": { type: "string", description: "Numeric account ID or urn:li:sponsoredAccount:N" },
|
|
23
|
-
"account-urn": { type: "string", description: "Alias for --account-id" },
|
|
24
|
-
"campaign-group-id": { type: "string", description: "Filter by campaign group" },
|
|
25
|
-
"all-statuses": { type: "boolean", description: "Drop the default ACTIVE filter" },
|
|
26
|
-
statuses: { type: "string", description: "CSV of statuses" },
|
|
27
|
-
limit: { type: "string", description: "Max rows (default: 500)" },
|
|
28
|
-
"skip-cache": { type: "boolean", description: "Bypass server-side cache" },
|
|
29
|
-
output: { type: "string", description: "json|csv|jsonl|md", default: "json" },
|
|
30
|
-
},
|
|
31
|
-
run: async ({ args }) => {
|
|
32
|
-
const accountId = resolveAccountIdArg(args);
|
|
33
|
-
try {
|
|
34
|
-
const params = { "account-id": accountId };
|
|
35
|
-
const statuses = resolveStatusFilter(args);
|
|
36
|
-
if (statuses)
|
|
37
|
-
params.statuses = statuses.join(",");
|
|
38
|
-
if (args["campaign-group-id"])
|
|
39
|
-
params["campaign-group-id"] = String(args["campaign-group-id"]);
|
|
40
|
-
if (args.limit)
|
|
41
|
-
params.limit = String(args.limit);
|
|
42
|
-
if (args["skip-cache"])
|
|
43
|
-
params["skip-cache"] = "true";
|
|
44
|
-
const data = await apiGet("/api/ads/linkedin/campaigns", params);
|
|
45
|
-
const fmt = csvOrJson(args);
|
|
46
|
-
if (fmt !== "json") {
|
|
47
|
-
writeAdsOutput(data, fmt);
|
|
48
|
-
return;
|
|
49
|
-
}
|
|
50
|
-
writeAdsJson({ ok: true, data });
|
|
51
|
-
}
|
|
52
|
-
catch (err) {
|
|
53
|
-
handleLinkedinError(err);
|
|
54
|
-
}
|
|
55
|
-
},
|
|
56
|
-
});
|
|
57
|
-
//# sourceMappingURL=campaigns.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"campaigns.js","sourceRoot":"","sources":["../../../../src/commands/ads/linkedin/campaigns.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAwBvG,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAa,CAAC;IAC5C,IAAI,EAAE;QACJ,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE;;;;;;;;;;;kFAWiE;KAC/E;IACD,IAAI,EAAE;QACJ,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iDAAiD,EAAE;QAChG,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wBAAwB,EAAE;QACxE,mBAAmB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0BAA0B,EAAE;QAChF,cAAc,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,gCAAgC,EAAE;QAClF,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iBAAiB,EAAE;QAC5D,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yBAAyB,EAAE;QACjE,YAAY,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,0BAA0B,EAAE;QAC1E,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,EAAE;KAC9E;IACD,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QACtB,MAAM,SAAS,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC;YACH,MAAM,MAAM,GAA2B,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC;YACnE,MAAM,QAAQ,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;YAC3C,IAAI,QAAQ;gBAAE,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACnD,IAAI,IAAI,CAAC,mBAAmB,CAAC;gBAAE,MAAM,CAAC,mBAAmB,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;YAC/F,IAAI,IAAI,CAAC,KAAK;gBAAE,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClD,IAAI,IAAI,CAAC,YAAY,CAAC;gBAAE,MAAM,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC;YAEtD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAwB,6BAA6B,EAAE,MAAM,CAAC,CAAC;YACxF,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;YAC5B,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;gBACnB,cAAc,CAAC,IAAiD,EAAE,GAAG,CAAC,CAAC;gBACvE,OAAO;YACT,CAAC;YACD,YAAY,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Conversation Ads (Sponsored Messaging) per-button analytics. Wraps
|
|
3
|
-
* --pivot conversation-node-button on /api/ads/linkedin/analytics.
|
|
4
|
-
*
|
|
5
|
-
* Lets agents see which CTA button inside a multi-step Sponsored Message
|
|
6
|
-
* actually drives clicks — no other ad platform exposes this granularity.
|
|
7
|
-
*/
|
|
8
|
-
export declare const conversationCommand: import("citty").CommandDef<{
|
|
9
|
-
readonly "campaign-id": {
|
|
10
|
-
readonly type: "string";
|
|
11
|
-
readonly description: "Comma-separated campaign IDs (Conversation Ad campaigns)";
|
|
12
|
-
readonly required: true;
|
|
13
|
-
};
|
|
14
|
-
readonly start: {
|
|
15
|
-
readonly type: "string";
|
|
16
|
-
readonly description: "Start date YYYY-MM-DD";
|
|
17
|
-
};
|
|
18
|
-
readonly end: {
|
|
19
|
-
readonly type: "string";
|
|
20
|
-
readonly description: "End date YYYY-MM-DD";
|
|
21
|
-
};
|
|
22
|
-
readonly "last-days": {
|
|
23
|
-
readonly type: "string";
|
|
24
|
-
readonly description: "Window relative to today (default: 30)";
|
|
25
|
-
};
|
|
26
|
-
readonly "skip-cache": {
|
|
27
|
-
readonly type: "boolean";
|
|
28
|
-
readonly description: "Bypass server-side cache";
|
|
29
|
-
};
|
|
30
|
-
readonly output: {
|
|
31
|
-
readonly type: "string";
|
|
32
|
-
readonly description: "json|csv|jsonl|md";
|
|
33
|
-
readonly default: "json";
|
|
34
|
-
};
|
|
35
|
-
}>;
|
|
36
|
-
//# sourceMappingURL=conversation.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../../../../src/commands/ads/linkedin/conversation.ts"],"names":[],"mappings":"AAWA;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgE9B,CAAC"}
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import { defineCommand } from "citty";
|
|
2
|
-
import { apiPost } from "../../../client.js";
|
|
3
|
-
import { writeAdsJson, writeAdsOutput } from "../output.js";
|
|
4
|
-
import { csvOrJson, daysAgoIso, handleLinkedinError, todayIso } from "./shared.js";
|
|
5
|
-
/**
|
|
6
|
-
* Conversation Ads (Sponsored Messaging) per-button analytics. Wraps
|
|
7
|
-
* --pivot conversation-node-button on /api/ads/linkedin/analytics.
|
|
8
|
-
*
|
|
9
|
-
* Lets agents see which CTA button inside a multi-step Sponsored Message
|
|
10
|
-
* actually drives clicks — no other ad platform exposes this granularity.
|
|
11
|
-
*/
|
|
12
|
-
export const conversationCommand = defineCommand({
|
|
13
|
-
meta: {
|
|
14
|
-
name: "conversation",
|
|
15
|
-
description: `Per-button click rates inside Sponsored Messaging / Conversation Ads.
|
|
16
|
-
|
|
17
|
-
Returns one row per CONVERSATION_NODE_BUTTON pivot, sorted by clicks desc.
|
|
18
|
-
Use this to A/B test button copy and the cascade tree.
|
|
19
|
-
|
|
20
|
-
Examples:
|
|
21
|
-
baker ads linkedin conversation --campaign-id 1234
|
|
22
|
-
baker ads linkedin conversation --campaign-id 1234 --last-days 30 --output csv`,
|
|
23
|
-
},
|
|
24
|
-
args: {
|
|
25
|
-
"campaign-id": {
|
|
26
|
-
type: "string",
|
|
27
|
-
description: "Comma-separated campaign IDs (Conversation Ad campaigns)",
|
|
28
|
-
required: true,
|
|
29
|
-
},
|
|
30
|
-
start: { type: "string", description: "Start date YYYY-MM-DD" },
|
|
31
|
-
end: { type: "string", description: "End date YYYY-MM-DD" },
|
|
32
|
-
"last-days": { type: "string", description: "Window relative to today (default: 30)" },
|
|
33
|
-
"skip-cache": { type: "boolean", description: "Bypass server-side cache" },
|
|
34
|
-
output: { type: "string", description: "json|csv|jsonl|md", default: "json" },
|
|
35
|
-
},
|
|
36
|
-
run: async ({ args }) => {
|
|
37
|
-
const campaignIdsRaw = args["campaign-id"];
|
|
38
|
-
if (!campaignIdsRaw) {
|
|
39
|
-
handleLinkedinError(new Error("--campaign-id is required"));
|
|
40
|
-
}
|
|
41
|
-
const ids = campaignIdsRaw
|
|
42
|
-
.split(",")
|
|
43
|
-
.map((s) => s.trim())
|
|
44
|
-
.filter(Boolean);
|
|
45
|
-
const start = args.start ?? daysAgoIso(args["last-days"] ? Number(args["last-days"]) : 30);
|
|
46
|
-
const end = args.end ?? todayIso();
|
|
47
|
-
try {
|
|
48
|
-
const data = await apiPost("/api/ads/linkedin/analytics", {
|
|
49
|
-
request: {
|
|
50
|
-
level: "campaign",
|
|
51
|
-
ids,
|
|
52
|
-
intent: "inmail",
|
|
53
|
-
pivot: "conversation-node-button",
|
|
54
|
-
start,
|
|
55
|
-
end,
|
|
56
|
-
granularity: "ALL",
|
|
57
|
-
limit: 500,
|
|
58
|
-
},
|
|
59
|
-
skipCache: Boolean(args["skip-cache"]),
|
|
60
|
-
});
|
|
61
|
-
const sorted = [...data.rows].sort((a, b) => Number(b.clicks ?? 0) - Number(a.clicks ?? 0));
|
|
62
|
-
const fmt = csvOrJson(args);
|
|
63
|
-
if (fmt !== "json") {
|
|
64
|
-
writeAdsOutput(sorted, fmt, data.fields);
|
|
65
|
-
return;
|
|
66
|
-
}
|
|
67
|
-
writeAdsJson({
|
|
68
|
-
ok: true,
|
|
69
|
-
data: { query: { campaigns: ids, start, end }, rows: sorted, warnings: data.warnings },
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
catch (err) {
|
|
73
|
-
handleLinkedinError(err);
|
|
74
|
-
}
|
|
75
|
-
},
|
|
76
|
-
});
|
|
77
|
-
//# sourceMappingURL=conversation.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"conversation.js","sourceRoot":"","sources":["../../../../src/commands/ads/linkedin/conversation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"conversions.d.ts","sourceRoot":"","sources":["../../../../src/commands/ads/linkedin/conversions.ts"],"names":[],"mappings":"AAsHA,eAAO,MAAM,kBAAkB,qDAa7B,CAAC"}
|