В этом руководстве описаны методы, которые можно использовать для создания или изменения сегмента данных.
Прежде чем начать
Прежде чем продолжить, необходимо настроить аутентификацию .
Создайте новый сегмент данных.
Вы можете создать новый сегмент данных, используя метод curators.dataSegments.create . После создания ваш сегмент данных переходит в состояние ACTIVE , что позволяет сделкам или пакетам, используемым в торгах в реальном времени, ориентироваться на этот сегмент данных.
Чтобы сделать сегменты данных видимыми для медиапланеров при таргетировании сделок или пакетов, необходимо включить видимость сегментов на вкладке « Настройки сегментов данных» в пользовательском интерфейсе управления контентом .
В следующем примере выполняется POST запрос к методу curators.dataSegments.create с JSON-телом, содержащим объект DataSegment . Этот запрос создает сегмент данных с указанной конфигурацией.
ОТДЫХ
Запрос
curl --request POST \
'https://curationpartners.googleapis.com/v1/curators/ACCOUNT_ID/dataSegments' \
--header 'Authorization: Bearer ACCESS_TOKEN' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"cpmFee":{"nanos":100,"units":0,"currencyCode":"USD"},"name":"curators/ACCOUNT_ID/dataSegments/test-data-segment-2"}' \
--compressed
Замените следующее:
-
ACCOUNT_ID: ваш идентификатор учетной записи -
ACCESS_TOKEN: ваш токен доступа.
Ответ
{
"name": "curators/ACCOUNT_ID/dataSegments/test-data-segment-2",
"createTime": "2025-08-14T17:45:08.744379Z",
"updateTime": "2025-08-14T17:45:08.744379Z",
"cpmFee": {
"currencyCode": "USD",
"nanos": 100
},
"state": "ACTIVE"
}
Java
/* * Copyright (c) 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except * in compliance with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under the License * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express * or implied. See the License for the specific language governing permissions and limitations under * the License. */ package com.google.api.services.samples.authorizedbuyers.marketplace.v1beta.curators.dataSegments; import com.google.api.services.authorizedbuyersmarketplace.v1beta.AuthorizedBuyersMarketplace; import com.google.api.services.authorizedbuyersmarketplace.v1beta.model.DataSegment; import com.google.api.services.authorizedbuyersmarketplace.v1beta.model.Money; import com.google.api.services.samples.authorizedbuyers.marketplace.v1beta.Utils; import java.io.IOException; import java.security.GeneralSecurityException; import net.sourceforge.argparse4j.ArgumentParsers; import net.sourceforge.argparse4j.inf.ArgumentParser; import net.sourceforge.argparse4j.inf.ArgumentParserException; import net.sourceforge.argparse4j.inf.Namespace; public class CreateDataSegment { private CreateDataSegment() {} /** * Executes the create operation for a data segment. * * @param marketplaceClient the initialized Marketplace API client. * @param accountId the account ID of the curator that is creating the data segment * @param dataSegmentId the id of the data segment to be created * @param cpmFeeCurrencyCode the currency code of the data segment's CPM fee * @param cpmFeeUnits the whole units of the data segment's CPM fee * @param cpmFeeNanos the nanos of the data segment's CPM fee, representing a fraction of the * specified currency. */ public static void execute( AuthorizedBuyersMarketplace marketplaceClient, Long accountId, String dataSegmentId, String cpmFeeCurrencyCode, Long cpmFeeUnits, Integer cpmFeeNanos) throws IOException { // Create the required objects to call the create method. DataSegment dataSegmentToCreate = new DataSegment() .setName(String.format("curators/%d/dataSegments/%s", accountId, dataSegmentId)) .setCpmFee( new Money() .setCurrencyCode(cpmFeeCurrencyCode) .setUnits(cpmFeeUnits) .setNanos(cpmFeeNanos)); String parent = String.format("curators/%d", accountId); // Call the API to create the data segment. DataSegment createdDataSegment = marketplaceClient.curators().dataSegments().create(parent, dataSegmentToCreate).execute(); System.out.println("Successfully created data segment:"); Utils.jsonPrettyPrint(createdDataSegment); } /** * Creates and configures the ArgumentParser for this sample. * * @return the configured ArgumentParser. */ private static ArgumentParser createArgumentParser() { ArgumentParser parser = ArgumentParsers.newFor("CreateDataSegment") .build() .defaultHelp(true) .description("Creates a new data segment for the given curator account."); // Required arguments. parser .addArgument("-a", "--account_id") .help("The account ID of the curator that will create the curated package.") .required(true) .type(Long.class); parser .addArgument("-d", "--data_segment_id") .help( "The identifier to be used in the name of the data segment to be created." + " The final name will be curators/{account_id}/dataSegments/{data_segment_id}") .required(true); parser .addArgument("--cpm_fee_currency_code") .help("The three-letter currency code defined in ISO 4217. For example, \"USD\".") .required(true); parser .addArgument("--cpm_fee_units") .help( "The whole units of the CPM fee. For example, if `currencyCode` were set to \"USD\", " + "a value of \"1\" would be $1 USD for 1,000 views. ") .type(Long.class) .required(true); parser .addArgument("--cpm_fee_nanos") .help( "The nano units of the CPM fee, representing a fraction of the specified " + "currency. For example, if `currencyCode` were set to \"USD\", a value of " + "\"20000000\" would be $0.02 USD for 1,000 views. ") .type(Integer.class) .required(true); return parser; } public static void main(String[] args) { ArgumentParser parser = createArgumentParser(); Namespace parsedArgs = null; try { parsedArgs = parser.parseArgs(args); } catch (ArgumentParserException e) { parser.handleError(e); System.exit(1); } AuthorizedBuyersMarketplace client = null; try { client = Utils.getMarketplaceClient(); } catch (IOException ex) { System.out.printf("Unable to create Marketplace API service:%n%s", ex); System.out.println("Did you specify a valid path to a service account key file?"); System.exit(1); } catch (GeneralSecurityException ex) { System.out.printf("Unable to establish secure HttpTransport:%n%s", ex); System.exit(1); } // Parse arguments. Long accountId = parsedArgs.getLong("account_id"); String dataSegmentId = parsedArgs.getString("data_segment_id"); String cpmFeeCurrencyCode = parsedArgs.getString("cpm_fee_currency_code"); Long cpmFeeUnits = parsedArgs.getLong("cpm_fee_units"); Integer cpmFeeNanos = parsedArgs.getInt("cpm_fee_nanos"); try { execute(client, accountId, dataSegmentId, cpmFeeCurrencyCode, cpmFeeUnits, cpmFeeNanos); } catch (Exception e) { System.out.printf("Marketplace API returned error response:%n%s", e); System.exit(1); } } }
Изменить существующий сегмент данных
Для изменения существующего сегмента данных можно использовать метод curators.dataSegments.patch . Например, используйте этот метод для корректировки поля cpmFee для сегмента данных.
В следующем примере выполняется PATCH запрос к методу curators.dataSegments.patch с JSON-телом, содержащим объект DataSegment . Этот запрос изменяет указанный сегмент данных, затрагивая только поля, указанные в параметре запроса updateMask .
ОТДЫХ
Запрос
curl --request PATCH \
'https://curationpartners.googleapis.com/v1/curators/ACCOUNT_ID/dataSegments/test-data-segment-2?updateMask=cpmFee.nanos' \
--header 'Authorization: Bearer ACCESS_TOKEN' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"cpmFee":{"nanos":50}}' \
--compressed
Ответ
{
"name": "curators/ACCOUNT_ID/dataSegments/test-data-segment-2",
"createTime": "2025-08-14T17:45:08.744Z",
"updateTime": "2025-08-14T17:56:02.200619Z",
"cpmFee": {
"currencyCode": "USD",
"nanos": 50
},
"state": "ACTIVE"
}
Java
/* * Copyright (c) 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except * in compliance with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under the License * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express * or implied. See the License for the specific language governing permissions and limitations under * the License. */ package com.google.api.services.samples.authorizedbuyers.marketplace.v1beta.curators.dataSegments; import com.google.api.services.authorizedbuyersmarketplace.v1beta.AuthorizedBuyersMarketplace; import com.google.api.services.authorizedbuyersmarketplace.v1beta.model.DataSegment; import com.google.api.services.authorizedbuyersmarketplace.v1beta.model.Money; import com.google.api.services.samples.authorizedbuyers.marketplace.v1beta.Utils; import java.io.IOException; import java.security.GeneralSecurityException; import java.util.ArrayList; import java.util.List; import net.sourceforge.argparse4j.ArgumentParsers; import net.sourceforge.argparse4j.inf.ArgumentParser; import net.sourceforge.argparse4j.inf.ArgumentParserException; import net.sourceforge.argparse4j.inf.Namespace; public class PatchDataSegment { private PatchDataSegment() {} /** * Executes the patch operation for a data segment. * * @param marketplaceClient the initialized Marketplace API client. * @param accountId the account ID of the curator that created the data segment. * @param dataSegmentId the resource ID of the data segment to update. * @param cpmFeeUnits the modified value of `DataSegment.cpmFee.units` (or null if the field is * not being modified). * @param cpmFeeNanos the modified value of `DataSegment.cpmFee.nanos` (or null if the field is * not being modified). */ public static void execute( AuthorizedBuyersMarketplace marketplaceClient, Long accountId, String dataSegmentId, Long cpmFeeUnits, Integer cpmFeeNanos) throws IOException { // Construct resources needed for the patch request. String name = String.format("curators/%d/dataSegments/%s", accountId, dataSegmentId); List<String> patchedFields = new ArrayList<>(); DataSegment patchedDataSegment = new DataSegment(); Money cpmFee = new Money(); if (cpmFeeUnits != null) { cpmFee.setUnits(cpmFeeUnits); patchedFields.add("cpmFee.units"); } if (cpmFeeNanos != null) { cpmFee.setNanos(cpmFeeNanos); patchedFields.add("cpmFee.nanos"); } patchedDataSegment.setCpmFee(cpmFee); String updateMask = String.join(",", patchedFields); // Patch the data segment. DataSegment returnedDataSegment = marketplaceClient .curators() .dataSegments() .patch(name, patchedDataSegment) .setUpdateMask(updateMask) .execute(); System.out.println("Successfully patched data segment:"); Utils.jsonPrettyPrint(returnedDataSegment); } /** * Creates and configures the ArgumentParser for this sample. * * @return the configured ArgumentParser. */ private static ArgumentParser createArgumentParser() { ArgumentParser parser = ArgumentParsers.newFor("PatchDataSegment") .build() .defaultHelp(true) .description( "Updates a specific data segment. To modify the state of a " + "data segment, use the curators.dataSegments.activate or " + "curators.dataSegments.deactivate methods instead."); // Required arguments. parser .addArgument("-a", "--account_id") .help("The account ID of the curator that created the data segment.") .required(true) .type(Long.class); parser .addArgument("-d", "--data_segment_id") .help("The resource ID of the data segment to update.") .required(true); // Optional arguments. // (Note: the currency code of the cpm fee is not modifiable, and thus is not included here.) parser .addArgument("--cpm_fee_units") .help( "The modified value of `DataSegment.cpmFee.units`. This represents the whole units of " + "the CPM fee. For example, if `currencyCode` were set to \"USD\", " + "a value of \"1\" would be $1 USD for 1,000 views. ") .type(Long.class); parser .addArgument("--cpm_fee_nanos") .help( "The modified value of `DataSegment.cpmFee.nanos`. This represents the nano units of " + "the CPM fee, representing a fraction of the specified currency. " + "For example, if `currencyCode` were set to \"USD\", a value of " + "\"20000000\" would be $0.02 USD for 1,000 views. ") .type(Integer.class); return parser; } public static void main(String[] args) { ArgumentParser parser = createArgumentParser(); Namespace parsedArgs = null; try { parsedArgs = parser.parseArgs(args); } catch (ArgumentParserException e) { parser.handleError(e); System.exit(1); } AuthorizedBuyersMarketplace client = null; try { client = Utils.getMarketplaceClient(); } catch (IOException ex) { System.out.printf("Unable to create Marketplace API service:%n%s", ex); System.out.println("Did you specify a valid path to a service account key file?"); System.exit(1); } catch (GeneralSecurityException ex) { System.out.printf("Unable to establish secure HttpTransport:%n%s", ex); System.exit(1); } // Get parsed arguments. Long accountId = parsedArgs.getLong("account_id"); String dataSegmentId = parsedArgs.getString("data_segment_id"); Long cpmFeeUnits = parsedArgs.getLong("cpm_fee_units"); Integer cpmFeeNanos = parsedArgs.getInt("cpm_fee_nanos"); try { execute(client, accountId, dataSegmentId, cpmFeeUnits, cpmFeeNanos); } catch (Exception e) { System.out.printf("Marketplace API returned error response:%n%s", e); System.exit(1); } } }
Следующие шаги
- Узнайте, как активировать и деактивировать сегменты данных с помощью API партнеров по курированию контента.
- Узнайте, как просматривать сегменты ваших данных с помощью API партнеров по курированию.
- Узнайте о спецификации Real-time Curation .
- Узнайте, как анализировать входящие запросы сегментов в режиме реального времени при обработке запросов.