Noizu.Google.Api.Ads.Customers (Noizu Google v0.2.3)

Copy Markdown View Source

Google Ads API — thin REST helpers (search + mutate).

Base: https://googleads.googleapis.com/v17/

Requires:

  • OAuth access token with adwords scope
  • developer-token header (opts :developer_token or app env :developer_token)
  • Optional login-customer-id for MCC (opts :login_customer_id)

Mutates support :validate_only / :dry_run (maps to API validateOnly) so callers can preview without applying.

Docs: https://developers.google.com/google-ads/api/docs/start

Summary

Functions

Create a conversion action via mutate.

Convenience: list campaigns (read-only) via GAQL.

Convenience: list conversion actions via GAQL.

POST customers/{customerId}/googleAds:mutate

POST customers/{customerId}/googleAds:search

Types

opts()

@type opts() :: keyword() | map()

result()

@type result() :: {:ok, term()} | {:error, Noizu.Google.Error.t()}

Functions

create_conversion_action(customer_id, opts \\ [])

@spec create_conversion_action(String.t(), opts()) :: result()

Create a conversion action via mutate.

Options:

  • :name (required)
  • :type — default "WEBPAGE"
  • :category — default "DEFAULT"
  • :status — default "ENABLED"
  • :dry_run — validate only
  • developer token / login customer as usual

list_campaigns(customer_id, opts \\ [])

@spec list_campaigns(String.t(), opts()) :: result()

Convenience: list campaigns (read-only) via GAQL.

list_conversion_actions(customer_id, opts \\ [])

@spec list_conversion_actions(String.t(), opts()) :: result()

Convenience: list conversion actions via GAQL.

Customers.list_conversion_actions("1234567890", client: client, developer_token: "…")

mutate(customer_id, body, opts \\ [])

@spec mutate(String.t(), map(), opts()) :: result()

POST customers/{customerId}/googleAds:mutate

Body must include mutateOperations (list). Optional opts:

  • :dry_run / :validate_only — when true, sets validateOnly: true (no apply)
  • :partial_failure — default true

Example

Customers.mutate("1234567890", %{
  mutateOperations: [
    %{
      campaignOperation: %{
        update: %{
          resourceName: "customers/1234567890/campaigns/1",
          status: "PAUSED"
        },
        updateMask: "status"
      }
    }
  ]
}, dry_run: true, developer_token: "…", client: client)

search(customer_id, body, opts \\ [])

@spec search(String.t(), map(), opts()) :: result()

POST customers/{customerId}/googleAds:search

customer_id is digits only (no dashes). Body is a map, typically:

%{query: "SELECT campaign.id, campaign.name FROM campaign LIMIT 10"}