{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/google-ads/json-schema/google-ads-google-ads-googleads-v25-services-mutate-campaign-drafts-request-schema.json",
  "title": "GoogleAdsGoogleadsV25Services__MutateCampaignDraftsRequest",
  "description": "Request message for CampaignDraftService.MutateCampaignDrafts.",
  "x-generated": "2026-11-04",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/google-ads-customers-campaigndrafts-api-openapi.yml#/components/schemas/GoogleAdsGoogleadsV25Services__MutateCampaignDraftsRequest",
  "type": "object",
  "properties": {
    "operations": {
      "description": "Required. The list of operations to perform on individual campaign drafts.",
      "items": {
        "$ref": "#/$defs/GoogleAdsGoogleadsV25Services__CampaignDraftOperation"
      },
      "type": "array"
    },
    "validateOnly": {
      "type": "boolean",
      "description": "If true, the request is validated but not executed. Only errors are returned, not results."
    },
    "responseContentType": {
      "type": "string",
      "description": "The response content type setting. Determines whether the mutable resource or just the resource name should be returned post mutation.",
      "x-enumDescriptions": [
        "Not specified. Will return the resource name only in the response.",
        "The mutate response will be the resource name.",
        "The mutate response will contain the resource name and the resource with mutable fields if possible. Otherwise, only the resource name will be returned."
      ],
      "enum": [
        "UNSPECIFIED",
        "RESOURCE_NAME_ONLY",
        "MUTABLE_RESOURCE"
      ]
    },
    "partialFailure": {
      "description": "If true, successful operations will be carried out and invalid operations will return errors. If false, all operations will be carried out in one transaction if and only if they are all valid. Default is false.",
      "type": "boolean"
    }
  },
  "$defs": {
    "GoogleAdsGoogleadsV25Resources__CampaignDraft": {
      "description": "A campaign draft.",
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the campaign draft. This field is required and should not be empty when creating new campaign drafts. It must not contain any null (code point 0x0), NL line feed (code point 0xA) or carriage return (code point 0xD) characters."
        },
        "draftId": {
          "format": "int64",
          "type": "string",
          "description": "Output only. The ID of the draft. This field is read-only."
        },
        "resourceName": {
          "description": "Immutable. The resource name of the campaign draft. Campaign draft resource names have the form: `customers/{customer_id}/campaignDrafts/{base_campaign_id}~{draft_id}`",
          "type": "string"
        },
        "hasExperimentRunning": {
          "type": "boolean",
          "description": "Output only. Whether there is an experiment based on this draft currently serving."
        },
        "status": {
          "enum": [
            "UNSPECIFIED",
            "UNKNOWN",
            "PROPOSED",
            "REMOVED",
            "PROMOTING",
            "PROMOTED",
            "PROMOTE_FAILED"
          ],
          "description": "Output only. The status of the campaign draft. This field is read-only. When a new campaign draft is added, the status defaults to PROPOSED.",
          "type": "string",
          "x-enumDescriptions": [
            "The status has not been specified.",
            "Used for return value only. Represents value unknown in this version.",
            "Initial state of the draft, the advertiser can start adding changes with no effect on serving.",
            "The campaign draft is removed.",
            "Advertiser requested to promote draft's changes back into the original campaign. Advertiser can poll the long running operation returned by the promote action to see the status of the promotion.",
            "The process to merge changes in the draft back to the original campaign has completed successfully.",
            "The promotion failed after it was partially applied. Promote cannot be attempted again safely, so the issue must be corrected in the original campaign."
          ]
        },
        "baseCampaign": {
          "description": "Immutable. The base campaign to which the draft belongs.",
          "type": "string"
        },
        "draftCampaign": {
          "description": "Output only. Resource name of the Campaign that results from overlaying the draft changes onto the base campaign. This field is read-only.",
          "type": "string"
        },
        "longRunningOperation": {
          "description": "Output only. The resource name of the long-running operation that can be used to poll for completion of draft promotion. This is only set if the draft promotion is in progress or finished.",
          "type": "string"
        }
      }
    },
    "GoogleAdsGoogleadsV25Services__CampaignDraftOperation": {
      "type": "object",
      "properties": {
        "remove": {
          "description": "Remove operation: The campaign draft is expected to have a valid resource name, in this format: `customers/{customer_id}/campaignDrafts/{base_campaign_id}~{draft_id}`",
          "type": "string"
        },
        "updateMask": {
          "format": "google-fieldmask",
          "type": "string",
          "description": "FieldMask that determines which resource fields are modified in an update."
        },
        "create": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources__CampaignDraft",
          "description": "Create operation: No resource name is expected for the new campaign draft."
        },
        "update": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources__CampaignDraft",
          "description": "Update operation: The campaign draft is expected to have a valid resource name."
        }
      },
      "description": "A single operation (create, update, remove) on a campaign draft."
    }
  }
}