이 가이드에서는 데이터 세그먼트를 만들거나 수정하는 데 사용할 수 있는 메서드를 설명합니다.
시작하기 전에
계속하기 전에 인증을 설정해야 합니다.
새 데이터 세그먼트 만들기
curators.dataSegments.create
메서드를 사용하여 새 데이터 세그먼트를 만들 수 있습니다. 생성 후 내 데이터 세그먼트는 ACTIVE 상태가 되므로 실시간 입찰에서 게재되는 거래 또는 패키지가 데이터 세그먼트를 타겟팅할 수 있습니다.
거래 또는 패키지 타겟팅을 위해 미디어 기획자에게 데이터 세그먼트를 표시하려면 세그먼트 공개 상태를 데이터 세그먼트 설정 탭의 Curation UI에서 사용 설정해야 합니다.
다음 예에서는 POST 객체가 포함된 JSON 본문으로
curators.dataSegments.create
메서드에 DataSegment 요청을 보냅니다. 이 요청은 지정된 구성으로 데이터 세그먼트를 만듭니다.
REST
요청
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: 계정 IDACCESS_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"
}
자바
/* * 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 쿼리 매개변수에 지정된 필드만 변경합니다.
REST
요청
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"
}
자바
/* * 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); } } }
다음 단계
- Curation Partners API로 데이터 세그먼트를 활성화 및 비활성화하는 방법을 알아봅니다.
- Curation Partners API로 데이터 세그먼트를 보는 방법 을 알아봅니다.
- 실시간 Curation 사양에 대해 알아봅니다.
- 실시간 Curation에서 수신 세그먼트 요청을 파싱하는 방법을 알아봅니다.