Kích hoạt và huỷ kích hoạt gói tuyển chọn

Hướng dẫn này mô tả các phương thức mà bạn có thể dùng để kích hoạt hoặc huỷ kích hoạt một trong các gói được tuyển chọn.

Kích hoạt gói tuyển chọn

Để kích hoạt một trong các gói tuyển chọn, hãy sử dụng phương thức curators.curatedPackages.activate. Những nhà lập kế hoạch truyền thông đã đăng ký sẽ nhận được yêu cầu đặt giá thầu theo thời gian thực có chứa curatedPackageId của gói được tuyển chọn đang hoạt động cho khoảng không quảng cáo mà gói được tuyển chọn của bạn nhắm đến.

Ví dụ sau đây đưa ra yêu cầu POST đến điểm cuối API kích hoạt gói được tuyển chọn đã chỉ định:

REST

Yêu cầu

POST https://curationpartners.googleapis.com/v1/curators/ACCOUNT_ID/curatedPackages/123456789:activate?alt=json
Authorization: Bearer ACCESS_TOKEN
Content-Type: application/json

{}

Phản hồi

{
 "name": "curators/ACCOUNT_ID/curatedPackages/123456789",
 "displayName": "Premium Mobile Web Package",
 "description": "High-performing mobile web inventory for premium brands.",
 "createTime": "2026-06-01T16:00:00Z",
 "updateTime": "2026-06-01T16:20:00Z",
 "floorPriceCpm": {
   "currencyCode": "USD",
   "units": "2",
   "nanos": 500000000
 },
 "feeCpm": {
   "currencyCode": "USD",
   "units": "0",
   "nanos": 150000000
 },
 "state": "ACTIVE",
 "accessSettings": {
   "allowlistedMediaPlanners": [
     "mediaPlanners/987654321"
   ]
 },
 "targeting": {
   "includedDeviceTypes": [
     "DEVICE_TYPE_PHONE",
     "DEVICE_TYPE_TABLET"
   ],
   "includedEnvironment": "ENVIRONMENT_SITE"
 }
}

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.curationpartners.v1.curators.curatedPackages;

import com.google.api.services.curationpartners.v1.CurationPartners;
import com.google.api.services.curationpartners.v1.model.ActivateCuratedPackageRequest;
import com.google.api.services.curationpartners.v1.model.CuratedPackage;
import com.google.api.services.samples.curationpartners.v1.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 ActivateCuratedPackage {

  /**
   * Executes the activate operation for a curated package.
   *
   * @param curationPartnersClient the initialized Curation Partners API client.
   * @param accountId the resource ID of the curator account.
   * @param curatedPackageId the resource ID of the curated package.
   * @throws IOException if the API returns an error.
   */
  public static void execute(
      CurationPartners curationPartnersClient, Long accountId, String curatedPackageId)
      throws IOException {
    String name = String.format("curators/%s/curatedPackages/%s", accountId, curatedPackageId);

    System.out.printf("Activating curated package with name \"%s\".%n", name);

    // Activate the specified curated package.
    CuratedPackage activatedPackage =
        curationPartnersClient
            .curators()
            .curatedPackages()
            .activate(name, new ActivateCuratedPackageRequest())
            .execute();

    System.out.println("Successfully activated curated package:");
    Utils.jsonPrettyPrint(activatedPackage);
  }

  /**
   * Creates and configures the ArgumentParser for this sample.
   *
   * @return the configured ArgumentParser.
   */
  private static ArgumentParser createArgumentParser() {
    ArgumentParser parser =
        ArgumentParsers.newFor("ActivateCuratedPackage")
            .build()
            .defaultHelp(true)
            .description("Activates a specified curated package.");

    // Required arguments.
    parser
        .addArgument("-a", "--account_id")
        .help("The account ID of the curator that created the curated package.")
        .required(true)
        .type(Long.class);
    parser
        .addArgument("-c", "--curated_package_id")
        .help("The resource ID of the curated package to activate.")
        .required(true);

    return parser;
  }

  public static void main(String[] args) {
    ArgumentParser parser = createArgumentParser();

    Namespace parsedArgs = null;
    try {
      parsedArgs = parser.parseArgs(args);
    } catch (ArgumentParserException ex) {
      parser.handleError(ex);
      System.exit(1);
    }

    CurationPartners client = null;
    try {
      client = Utils.getCurationPartnersClient();
    } catch (IOException ex) {
      System.out.printf("Unable to create Curation Partners 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);
    }

    try {
      execute(
          client,
          parsedArgs.getLong("account_id"),
          parsedArgs.getString("curated_package_id"));
    } catch (IOException ex) {
      System.out.printf("Curation Partners API returned error response:%n%s", ex);
      System.exit(1);
    }
  }
}

Huỷ kích hoạt gói tuyển chọn

Để huỷ kích hoạt một trong các gói tuyển chọn, hãy sử dụng phương thức curators.curatedPackages.deactivate. Khi một gói được tuyển chọn không hoạt động, nhà lập kế hoạch truyền thông sẽ không nhận được curatedPackageId của gói được tuyển chọn trong yêu cầu giá thầu Đặt giá thầu theo thời gian thực cho khoảng không quảng cáo mà gói được tuyển chọn nhắm đến, ngay cả khi nhà lập kế hoạch truyền thông đã đăng ký.

Ví dụ sau đây đưa ra yêu cầu POST đến điểm cuối API sẽ huỷ kích hoạt gói tuyển chọn được chỉ định:

REST

Yêu cầu

POST https://curationpartners.googleapis.com/v1/curators/ACCOUNT_ID/curatedPackages/123456789:deactivate?alt=json
Authorization: Bearer ACCESS_TOKEN
Content-Type: application/json

{}

Phản hồi

{
 "name": "curators/ACCOUNT_ID/curatedPackages/123456789",
 "displayName": "Premium Mobile Web Package",
 "description": "High-performing mobile web inventory for premium brands.",
 "createTime": "2026-06-01T16:00:00Z",
 "updateTime": "2026-06-01T16:25:00Z",
 "floorPriceCpm": {
   "currencyCode": "USD",
   "units": "2",
   "nanos": 500000000
 },
 "feeCpm": {
   "currencyCode": "USD",
   "units": "0",
   "nanos": 150000000
 },
 "state": "INACTIVE",
 "accessSettings": {
   "allowlistedMediaPlanners": [
     "mediaPlanners/987654321"
   ]
 },
 "targeting": {
   "includedDeviceTypes": [
     "DEVICE_TYPE_PHONE",
     "DEVICE_TYPE_TABLET"
   ],
   "includedEnvironment": "ENVIRONMENT_SITE"
 }
}

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.curationpartners.v1.curators.curatedPackages;

import com.google.api.services.curationpartners.v1.CurationPartners;
import com.google.api.services.curationpartners.v1.model.CuratedPackage;
import com.google.api.services.curationpartners.v1.model.DeactivateCuratedPackageRequest;
import com.google.api.services.samples.curationpartners.v1.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 DeactivateCuratedPackage {

  /**
   * Executes the deactivate operation for a curated package.
   *
   * @param curationPartnersClient the initialized Curation Partners API client.
   * @param accountId the resource ID of the curator account.
   * @param curatedPackageId the resource ID of the curated package.
   * @throws IOException if the API returns an error.
   */
  public static void execute(
      CurationPartners curationPartnersClient, Long accountId, String curatedPackageId)
      throws IOException {
    String name = String.format("curators/%s/curatedPackages/%s", accountId, curatedPackageId);

    System.out.printf("Deactivating curated package with name \"%s\".%n", name);

    // Deactivate the specified curated package.
    CuratedPackage deactivatedPackage =
        curationPartnersClient
            .curators()
            .curatedPackages()
            .deactivate(name, new DeactivateCuratedPackageRequest())
            .execute();

    System.out.println("Successfully deactivated curated package:");
    Utils.jsonPrettyPrint(deactivatedPackage);
  }

  /**
   * Creates and configures the ArgumentParser for this sample.
   *
   * @return the configured ArgumentParser.
   */
  private static ArgumentParser createArgumentParser() {
    ArgumentParser parser =
        ArgumentParsers.newFor("DeactivateCuratedPackage")
            .build()
            .defaultHelp(true)
            .description("Deactivates a specific curated package.");

    // Required arguments.
    parser
        .addArgument("-a", "--account_id")
        .help("The account ID of the curator that created the curated package.")
        .required(true)
        .type(Long.class);
    parser
        .addArgument("-c", "--curated_package_id")
        .help("The resource ID of the curated package to deactivate.")
        .required(true);

    return parser;
  }

  public static void main(String[] args) {
    ArgumentParser parser = createArgumentParser();

    Namespace parsedArgs = null;
    try {
      parsedArgs = parser.parseArgs(args);
    } catch (ArgumentParserException ex) {
      parser.handleError(ex);
      System.exit(1);
    }

    CurationPartners client = null;
    try {
      client = Utils.getCurationPartnersClient();
    } catch (IOException ex) {
      System.out.printf("Unable to create Curation Partners 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);
    }

    try {
      execute(
          client,
          parsedArgs.getLong("account_id"),
          parsedArgs.getString("curated_package_id"));
    } catch (IOException ex) {
      System.out.printf("Curation Partners API returned error response:%n%s", ex);
      System.exit(1);
    }
  }
}

Các bước tiếp theo

Để tìm hiểu thêm về các quy trình công việc khác mà bạn có thể thực hiện bằng tài nguyên curatedPackages, hãy xem nội dung sau: