I'm simply trying to construct a test script that can change/mutate a specific campaign budget using the REST interface of the Google Ads API on Google Apps Scripts but I keep on running into the following error:
Exception: Request failed for https://googleads.googleapis.com returned code 400. Truncated server response: { "error": { "code": 400, "message": "Invalid JSON payload received. Unexpected token.\nvalidateOnly=true&pa\n^", "status": "INVALID_... (use muteHttpExceptions option to examine full response)
The relevant function code is as follows:
//API specific variables
const developer_token = {DEVELOPER TOKEN};
const parent_mcc_id = "xxxxxxxxxx";
//Temporary placeholder values
var child_customer_id = "xxxxxxxxxx";
var budget_id = "xxxxxxxxxx";
  let headers = {
     Authorization: "Bearer " + ScriptApp.getOAuthToken(),
     "developer-token": developer_token,
     "login-customer-id": parent_mcc_id
  };
  //Make API call to retrieve each Google Ads account
  try{
    let requestParams = {
     method: "POST",
     contentType: "application/json",
     headers: headers,
     payload: {
       operations:
       [
        {
          updateMask: "amount_micros",
          update:{
            resourceName: "customers/" + child_customer_id + "/campaignBudgets/" + budget_id,
            amountMicros: "60000000"
          }
        }
       ],
      "partialFailure": true,
      "validateOnly": true,
      "responseContentType": "RESOURCE_NAME_ONLY"
      }
    }
    
    var url = ("https://googleads.googleapis.com/v11/customers/{CHILD ACCOUNT ID}/campaignBudgets:mutate");
    Logger.log(requestParams.payload);
    var postChange = UrlFetchApp.fetch(url, requestParams);
  }
  catch(e) {
   Logger.log(e);
  }
I have used similar functions with queries in the payload portion to get data through the Google Ads API, place the data in an array and dump it into a spreadsheet, so I know that my developer token, mcc ids, and child account ids are correct. Any help would be greatly appreciated!