Solución de problemas de RTB

En esta guía, se abordan los recursos para la solución de problemas de RTB, que te permiten acceder de manera programática a las métricas de las campañas de ofertas en tiempo real que también se exponen mediante la herramienta Desglose de RTB que se encuentra en la IU de Authorized Buyers. Estos incluyen bidders.filterSets, bidders.accounts.filterSets y todos los recursos secundarios de forma jerárquica.

Si usas las métricas de los recursos de solución de problemas de RTB, puedes obtener estadísticas sobre las oportunidades perdidas para obtener impresiones que pueden ayudarte a optimizar tu campaña de ofertas en tiempo real.

Ajustes en la estructura y el estilo de la API

Los recursos de solución de problemas de RTB introducen algunos cambios para indicar de manera explícita la propiedad y el acceso, proporcionan un control más detallado sobre los datos que muestra la API y se alinean mejor con las prácticas de diseño de la API de Google.

Recursos a nivel del ofertante y de la cuenta

Los recursos se estructuran bajo bidders y bidders.accounts. Estas te permiten especificar si una llamada a la API se orienta a un ofertante (también conocida como cuenta principal) y todas las cuentas secundarias asociadas o cuentas individuales de Authorized Buyers. En el contexto de la solución de problemas de RTB, los recursos estructurados en bidders.filterSets mostrarán métricas agregadas del ofertante en cuestión y todas las cuentas secundarias asociadas. Por el contrario, aquellos en bidders.accounts.filterSets solo mostrarán métricas para la cuenta especificada, sin importar si es una cuenta secundaria o de ofertantes.

Nota: Las cuentas que delegan sus ofertas a otro comprador no son cuentas de ofertantes y, por lo tanto, no pueden acceder a recursos a nivel del ofertante. Además, las cuentas que no son ofertantes no pueden acceder a los recursos impressionMetrics, filteredBidResponses, bidResponseErrors ni bidResponsesWithoutBids a nivel de la cuenta.

Presentamos los nombres de recursos como identificadores únicos

Los nombres de recursos se usan como identificadores únicos en lugar de ID de números enteros o strings. Al crear una instancia nueva de un tipo de recurso determinado, ahora debes especificar un nombre de recurso relativo mediante la ruta del URI del recurso seguida del ID del recurso preferido. Los siguientes son ejemplos de nombres relevantes para los recursos de solución de problemas de RTB:

Recurso Ejemplo de nombre
bidders.filterSets bidders/12345678/filterSets/fset_1
bidders.accounts.filterSets bidders/12345678/accounts/87654321/filterSets/fset_2

Nota: El ID de recurso especificado para bidders en el nombre debe ser el ID de la cuenta de Authorized Buyers del ofertante. En el caso de accounts, el ID de recurso debe ser el ID de la cuenta del ofertante o de una cuenta secundaria que este administre. Si no sabes qué cuentas de Authorized Buyers están asociadas con tu Cuenta de Google, puedes usar el método accounts.list para encontrarlas.

Filtrar conjuntos

Un conjunto de filtros es una representación de las opciones de filtrado que están disponibles y se pueden crear a nivel del ofertante o de la cuenta. Se usa para filtrar la lista de resultados de los recursos de solución de problemas de RTB que recuperan métricas para tus campañas de ofertas en tiempo real.

El filtro que se aplica cuando se recuperan métricas es la intersección de cada filtro en el conjunto de filtros especificado. Los filtros de lista, como platforms, se interpretan como la unión de cada elemento de la lista.

Los conjuntos de filtros a nivel de la cuenta y el ofertante son distintos y solo se puede acceder a ellos desde el nivel en el que se crearon, independientemente de la cuenta que se usó para crearlos. Los conjuntos de filtros de uso compartido de una cuenta secundaria y un ofertante creados a nivel de la cuenta, mientras que solo un ofertante puede acceder a los recursos a nivel del ofertante En la siguiente tabla, se resume cómo el ofertante y las cuentas secundarias pueden acceder a los recursos en cualquier nivel:

  bidders.filterSets bidders.accounts.filterSets
Cuenta del ofertante Una llamada a la API que afecta solo a los conjuntos de filtros a nivel del ofertante Una llamada a la API que afecta solo a los conjuntos de filtros a nivel de la cuenta.
Cuenta infantil Esta llamada a la API mostrará una respuesta de error. Una llamada a la API que afecta solo a los conjuntos de filtros a nivel de la cuenta.

Crear un conjunto de filtros

Cuando creas un conjunto de filtros, debes especificar un intervalo de tiempo como relativeDateRange, absoluteDateRange o realtimeTimeRange. Cuando se recuperan métricas, el comportamiento predeterminado es que se proporcionen todos los datos para todo el intervalo de tiempo. Si deseas recibir un desglose de series temporales durante el intervalo de tiempo, puedes especificar timeSeriesGranularity para indicar intervalos de HOURLY o DAILY.

Si solo necesitas un conjunto de filtros por un período breve, puedes establecer el parámetro de consulta isTransient en true. Esto indicará que el conjunto de filtros es transitorio, lo que significa que no persistirá indefinidamente. Los conjuntos de filtros transitorios estarán disponibles durante al menos una hora después de su creación, pero con el tiempo se borrarán. De forma predeterminada, los conjuntos de filtros no son transitorios.

Ejemplo a nivel del ofertante

Para crear un nuevo conjunto de filtros a nivel de ofertante, envía una solicitud POST al URI de recurso bidders.filterSets, que tiene el siguiente formato:

https://adexchangebuyer.googleapis.com/v2beta1/bidders/{bidder resource ID}/filterSets

Advertencia: Los conjuntos de filtros a nivel del ofertante no pueden filtrar por creatividad ni ID de acuerdo. Si especificas estos filtros cuando creas un conjunto de filtros a nivel del ofertante, recibirás una respuesta de error.

Solicitud

A continuación, se muestra un ejemplo de una solicitud POST que crea un nuevo conjunto de filtros a nivel del ofertante no transitorio:

POST https://adexchangebuyer.googleapis.com/v2beta1/bidders/12345678/filterSets
Authorization: Bearer access token here
Content-Type: application/json

{
  "name": "bidders/12345678/filterSets/bidder-fs",
  "format": "DISPLAY",
  "environment": "APP",
  "platforms": ["TABLET", "MOBILE"],
  "absoluteDateRange": {
    "startDate": {
      "month": 11,
      "day": 26,
      "year": 2017
    },
    "endDate": {
      "month": 12,
      "day": 3,
      "year": 2017
    }
  },
  "timeSeriesGranularity": "DAILY"
}

Respuesta

Si la solicitud se realiza correctamente, el servidor responde con un código de estado 200 OK. El cuerpo de la respuesta incluirá el recurso del conjunto de filtros creado, que será idéntico al conjunto de filtros enviado en la solicitud.

Ejemplo a nivel de la cuenta

Para crear un nuevo conjunto de filtros a nivel de la cuenta, envía una solicitud POST al URI de recurso bidders.accounts.filterSets, que tiene el siguiente formato:

https://adexchangebuyer.googleapis.com/v2beta1/bidders/{bidder resource ID}/accounts/{account resource ID}/filterSets

Nota: El ID de recurso especificado para accounts puede ser el de cualquier cuenta de Authorized Buyers a la que pueda acceder la cuenta del ofertante especificada en el URI, incluida la cuenta del ofertante.

Solicitud

A continuación, se muestra un ejemplo de una solicitud POST que crea un nuevo conjunto de filtros no transitorios a nivel de la cuenta:

POST https://adexchangebuyer.googleapis.com/v2beta1/bidders/12345678/accounts/87654321/filterSets
Authorization: Bearer access token here
Content-Type: application/json

{
  "name": "bidders/12345678/accounts/87654321/filterSets/account-fs",
  "format": "VIDEO",
  "environment": "WEB",
  "platforms": ["DESKTOP"],
  "absoluteDateRange": {
    "startDate": {
      "month": 11,
      "day": 26,
      "year": 2017
    },
    "endDate": {
      "month": 12,
      "day": 3,
      "year": 2017
    }
  },
  "timeSeriesGranularity": "DAILY"
}
Respuesta

Si la solicitud se realiza correctamente, el servidor responde con un código de estado 200 OK. El cuerpo de la respuesta incluirá el recurso del conjunto de filtros creado, que será idéntico al conjunto de filtros enviado en la solicitud.

Obtener un conjunto de filtros

El método get solo puede obtener un conjunto de filtros en el mismo nivel en el que se creó. Por ejemplo, la cuenta de un ofertante debería usar bidders.accounts.filterSets.get para recuperar un conjunto de filtros creado a nivel de la cuenta en lugar del método bidders.filterSets.get.

A nivel del ofertante

Para recuperar un conjunto de filtros a nivel de ofertante, envía una solicitud GET HTTP al URI de recurso bidders.filterSets, que tiene el siguiente formato:

GET https://adexchangebuyer.googleapis.com/v2beta1/bidders/{bidder resource ID}/filterSets/{filter set resource ID}
Solicitar

Por ejemplo:

GET https://adexchangebuyer.googleapis.com/v2beta1/bidders/12345678/filterSets/bidder-fs
Respuesta

Si la solicitud se realiza correctamente, el servidor responde con un código de estado HTTP 200 OK y el conjunto de filtros recuperado:

{
  "name": "bidders/12345678/filterSets/bidder-fs",
  "format": "DISPLAY",
  "environment": "APP",
  "platforms": ["TABLET", "MOBILE"],
  "absoluteDateRange": {
    "startDate": {
      "month": 11,
      "day": 26,
      "year": 2017
    },
    "endDate": {
      "month": 12,
      "day": 3,
      "year": 2017
    }
  },
  "timeSeriesGranularity": "DAILY"
}

Nivel de la cuenta

Para recuperar un conjunto de filtros a nivel de la cuenta, envía una solicitud HTTP GET al URI de recurso bidders.accounts.filterSets, que tiene el siguiente formato:

GET https://adexchangebuyer.googleapis.com/v2beta1/bidders/{bidder resource ID}/accounts/{account resource ID}/filterSets/{filter set resource ID}
Solicitar

Por ejemplo:

GET https://adexchangebuyer.googleapis.com/v2beta1/bidders/12345678/accounts/87654321/filterSets/account-fs
Respuesta

Si la solicitud se realiza correctamente, el servidor responde con un código de estado HTTP 200 OK y el conjunto de filtros recuperado:

{
  "name": "bidders/12345678/accounts/87654321/filterSets/account-fs",
  "format": "VIDEO",
  "environment": "WEB",
  "platforms": ["DESKTOP"],
  "absoluteDateRange": {
    "startDate": {
      "month": 11,
      "day": 26,
      "year": 2017
    },
    "endDate": {
      "month": 12,
      "day": 3,
      "year": 2017
    }
  },
  "timeSeriesGranularity": "DAILY"
}

Enumerar conjuntos de filtros

El método list solo mostrará conjuntos de filtros a los que se puede acceder desde el nivel al que se los llama. Por ejemplo, la cuenta de un ofertante no verá los conjuntos de filtros creados para sí misma a través de bidders.accounts.filterSets.create cuando llame a bidders.filterSets.list.

A nivel del ofertante

Puedes recuperar todos los conjuntos de filtros a nivel de ofertante para un ofertante determinado enviando una solicitud GET HTTP al URI de recurso bidders.filtersets, que tiene el siguiente formato:

GET https://adexchangebuyer.googleapis.com/v2beta1/bidders/{bidder resource ID}/filterSets
Solicitar

A continuación, se incluye un ejemplo en el que se enumeran todos los conjuntos de filtros a nivel del ofertante para un ofertante con el ID de cuenta 12345678:

GET https://adexchangebuyer.googleapis.com/v2beta1/bidders/12345678/filterSets
Respuesta
{
  "filterSets": [{
      "filterSetId": "99994",
      "name": "bidders/12345678/filterSets/test-b-1",
      "relativeDateRange": {
        "durationDays": 30
      }
    },
    {
      "realtimeTimeRange": {
        "startTimeStamp": "2017-11-15T12:30:30.072831583Z"
      },
      "filterSetId": "99995",
      "name": "bidders/12345678/filterSets/test-b-2",
      "timeSeriesGranularity": "HOURLY"
    },
    {
      "absoluteDateRange": {
        "endDate": {
          "day": 12,
          "month": 3,
          "year": 2017
        },
        "startDate": {
          "day": 26,
          "month": 11,
          "year": 2017
        }
      },
      "filterSetId": "99996",
      "name": "bidders/12345678/filterSets/bidder-fs",
      "timeSeriesGranularity": "DAILY",
      "platforms": ["TABLET", "MOBILE"],
      "environment": "APP",
      "format": "DISPLAY"
    }
  ]
}

Nivel de la cuenta

Puedes recuperar todos los conjuntos de filtros a nivel de la cuenta si envías una solicitud GET HTTP al URI del recurso bidders.accounts.filtersets, que tiene el siguiente formato:

GET https://adexchangebuyer.googleapis.com/v2beta1/bidders/{bidder resource ID}/accounts/{account resource ID}/filterSets
Solicitar

A continuación, se incluye un ejemplo en el que se enumeran todos los conjuntos de filtros a nivel de la cuenta para una cuenta secundaria con el ID de la cuenta 87654321:

GET https://adexchangebuyer.googleapis.com/v2beta1/bidders/12345678/accounts/87654321/filterSets
Respuesta
{
  "filterSets": [{
        "realtimeTimeRange": {
        "startTimeStamp": "2017-11-19T04:24:43.252893487Z"
      },
      "filterSetId": "99997",
      "name": "bidders/12345678/accounts/87654321/filterSets/test-a-1",
      "timeSeriesGranularity": "DAILY"
    },
    {
      "absoluteDateRange": {
        "endDate": {
          "day": 3,
          "month": 12,
          "year": 2017
        },
        "startDate": {
          "day": 26,
          "month": 11,
          "year": 2017
        }
      },
      "filterSetId": "99998",
      "name": "bidders/12345678/accounts/87654321/filterSets/account-fs",
      "timeSeriesGranularity": "DAILY",
      "platforms": ["DESKTOP"],
      "environment": "WEB",
      "format": "VIDEO"
    }
  ]
}

Cómo borrar un conjunto de filtros

Puedes usar el método delete para quitar los conjuntos de filtros no transitorios que ya no sean necesarios. Solo puede quitar conjuntos de filtros a los que se puede acceder desde el nivel al que se llama; por ejemplo, una cuenta de ofertante no puede borrar un conjunto de filtros creado con bidders.accounts.filterSets.create con bidders.filterSets.delete.

A nivel del ofertante

Puedes borrar un conjunto de filtros a nivel de ofertante para una cuenta determinada si envías una solicitud HTTP DELETE al URI de recurso bidders.filtersets, que tiene el siguiente formato:

DELETE https://adexchangebuyer.googleapis.com/v2beta1/bidders/{bidder resource ID}/filterSets/{filter set resource ID}
Solicitar

A continuación, se muestra un ejemplo de eliminación de un conjunto de filtros a nivel del ofertante:

DELETE https://adexchangebuyer.googleapis.com/v2beta1/bidders/12345678/filterSets/test-b-2
Respuesta

Si se ejecuta de forma correcta, el cuerpo de la solicitud estará vacío. Ya no se podrá acceder al conjunto de filtros especificado.

Nivel de la cuenta

Puedes borrar un conjunto de filtros a nivel de la cuenta para una cuenta determinada si envías una solicitud HTTP DELETE al URI del recurso bidders.accounts.filtersets, que tiene el siguiente formato:

DELETE https://adexchangebuyer.googleapis.com/v2beta1/bidders/{bidder resource ID}/accounts/{account resource ID}/filterSets/{filter set resource ID}
Solicitar

A continuación, se incluye un ejemplo de eliminación de un conjunto de filtros a nivel de la cuenta:

DELETE https://adexchangebuyer.googleapis.com/v2beta1/bidders/12345678/accounts/87654321/filterSets/test-a-1
Respuesta

Si se ejecuta de forma correcta, el cuerpo de la solicitud estará vacío. Ya no se podrá acceder al conjunto de filtros especificado.

Recupera métricas de solución de problemas de RTB

Todos los recursos de solución de problemas de RTB que se usan para recibir métricas funcionan de manera similar: tienen un solo método para enumerar las métricas del conjunto de filtros especificado a través de un parámetro de ruta de acceso filterSetName. El conjunto de filtros especificado determinará qué filtros y parámetros de configuración se aplicarán cuando se consulten las métricas. Si llamas a estos recursos desde el nivel del ofertante, se mostrarán métricas agregadas de la cuenta del ofertante y todas las cuentas secundarias asociadas, mientras que una llamada a nivel de la cuenta solo mostrará métricas para una cuenta individual.

Métricas de ofertas

El recurso bidMetrics se usa para recuperar las métricas que se miden en la cantidad de ofertas. Por ejemplo, puedes usar esto para determinar la cantidad total de ofertas durante un período determinado y cuántas de ellas no se filtraron de la subasta, ganaron una impresión, etc. Al igual que todos los demás recursos de solución de problemas de RTB que se usaron para recopilar métricas, solo tiene un método list.

Enumerar métricas de ofertas a nivel del ofertante

Puedes enumerar las métricas de ofertas a nivel del ofertante para un conjunto de filtros determinado. Para ello, envía una solicitud GET HTTP al URI de recurso bidders.filtersets.bidMetrics, que tiene el siguiente formato:

GET https://adexchangebuyer.googleapis.com/v2beta1/bidders/{bidder resource ID}/filterSets/{filter set resource ID}/bidMetrics
Solicitar

Este es un ejemplo de una lista de las métricas de ofertas a nivel del ofertante:

GET https://adexchangebuyer.googleapis.com/v2beta1/bidders/12345678/filterSets/bidder-fs/bidMetrics
Respuesta

Si la solicitud se realiza correctamente, el servidor responde con un código de estado 200 OK y un cuerpo que contiene filas de métricas para las dimensiones y el nivel de detalle especificados.

{
  "bidMetricsRows": [{
        "bids": {
        "value": "6160"
      },
      "bidsInAuction": {
        "value": "5698"
      },
      "billedImpressions": {
        "value": "1196"
      },
      "impressionsWon": {
        "value": "2920"
      },
      "measurableImpressions": {
        "value": "1160"
      },
      "rowDimensions": {
        "timeInterval": {
          "endTime": "2017-11-29T08:00:00Z",
          "startTime": "2017-11-28T08:00:00Z"
        }
      },
      "viewableImpressions": {
        "value": "683"
      }
    },
    {
      "bids": {
        "value": "104288"
      },
      "bidsInAuction": {
        "value": "94016"
      },
      "billedImpressions": {
        "value": "99"
      },
      "impressionsWon": {
        "value": "125"
      },
      "measurableImpressions": {
        "value": "94"
      },
      "rowDimensions": {
        "timeInterval": {
          "endTime": "2017-11-30T08:00:00Z",
          "startTime": "2017-11-29T08:00:00Z"
        }
      },
      "viewableImpressions": {
        "value": "87"
      }
    },
    {
      "bids": {
        "value": "3999"
      },
      "bidsInAuction": {
        "value": "3631"
      },
      "billedImpressions": {
        "value": "618"
      },
      "impressionsWon": {
        "value": "1819"
      },
      "measurableImpressions": {
        "value": "604"
      },
      "rowDimensions": {
        "timeInterval": {
          "endTime": "2017-12-01T08:00:00Z",
          "startTime": "2017-11-30T08:00:00Z"
        }
      },
      "viewableImpressions": {
        "value": "369"
      }
    },
    {
      "bids": {
        "value": "15"
      },
      "bidsInAuction": {
        "value": "3"
      },
      "billedImpressions": {},
      "impressionsWon": {
        "value": "3"
      },
      "measurableImpressions": {},
      "rowDimensions": {
        "timeInterval": {
          "endTime": "2017-12-02T08:00:00Z",
          "startTime": "2017-12-01T08:00:00Z"
        }
      },
      "viewableImpressions": {}
    }
  ]
}

Nota: Los campos establecidos en 0 para una métrica determinada no aparecerán en la respuesta. Las métricas vacías billedImpressions y measurableImpressions anteriores indican que tanto el valor como la varianza de estas se establecieron en 0.

Advertencia: Para cualquier desglose de datos en la respuesta, la respuesta no incluirá filas si estas no contienen al menos una métrica distinta de cero. Por ejemplo, cuando se especifica una timeSeriesGranularity, la respuesta no incluirá filas para ningún timeInterval durante el intervalo de tiempo especificado del conjunto de filtros en el que todas las métricas son cero.

Enumerar métricas de ofertas a nivel de la cuenta

Puedes enumerar las métricas de ofertas a nivel de la cuenta para un conjunto de filtros determinado si envías una solicitud GET HTTP al URI de recurso bidders.accounts.filtersets.bidMetrics, que tiene el siguiente formato:

GET https://adexchangebuyer.googleapis.com/v2beta1/bidders/{bidder resource ID}/accounts/{account resource ID}/filterSets/{filter set resource ID}/bidMetrics
Solicitar

A continuación, se incluye un ejemplo con una lista de métricas de ofertas a nivel de la cuenta:

GET https://adexchangebuyer.googleapis.com/v2beta1/bidders/12345678/accounts/87654321/filterSets/account-fs/bidMetrics
Respuesta

Si la solicitud se realiza correctamente, el servidor responde con un código de estado 200 OK y un cuerpo que contiene filas de métricas para las dimensiones y el nivel de detalle especificados.

{
  "bidMetricsRows": [{
      "bids": {
        "value": "1748"
      },
      "bidsInAuction": {
        "value": "1421"
      },
      "billedImpressions": {
        "value": "301"
      },
      "impressionsWon": {
        "value": "915"
      },
      "measurableImpressions": {
        "value": "298"
      },
      "rowDimensions": {
        "timeInterval": {
          "endTime": "2017-12-01T08:00:00Z",
          "startTime": "2017-11-30T08:00:00Z"
        }
      },
      "viewableImpressions": {
        "value": "172"
      }
    },
    {
      "bids": {
        "value": "6"
      },
      "bidsInAuction": {
        "value": "2"
      },
      "billedImpressions": {},
      "impressionsWon": {
        "value": "1"
      },
      "measurableImpressions": {},
      "rowDimensions": {
        "timeInterval": {
          "endTime": "2017-12-02T08:00:00Z",
          "startTime": "2017-12-01T08:00:00Z"
        }
      },
      "viewableImpressions": {}
    }
  ]
}

Nota: Los campos establecidos en 0 para una métrica determinada no aparecerán en la respuesta. Las métricas vacías billedImpressions y measurableImpressions anteriores indican que su valor y la varianza se establecieron en 0.

Advertencia: Para cualquier desglose de datos en la respuesta, la respuesta no incluirá filas si estas no contienen al menos una métrica distinta de cero. Por ejemplo, cuando se especifica una timeSeriesGranularity, la respuesta no incluirá filas para ningún timeInterval durante el intervalo de tiempo especificado del conjunto de filtros en el que todas las métricas son cero.