AdWords API Re: UNEXPECTED_INTERNAL_API_ERROR Trying to Add one or more Criterion

2010-02-04 Thread Kyle LeNeau
Hi Eric,

Thanks for the response.  Is there anyway I can check for this before
I make the request (like using the validate only flag in the request
header)?  If not do you know or have an ETA on a solution for the
engineering team?  Also what are you defining as handled
automatically of the error?

Thanks,
Kyle LeNeau

On Feb 4, 9:24 am, AdWords API Advisor adwordsapiadvi...@google.com
wrote:
 Hi Kyle,

 It looks like this error was caused because the keyword you were
 trying to add was already present in the ad group.  This type of error
 is normally handled automatically, and I'll work with the core
 engineering team to resolve this issue.

 Best,
 - Eric Koleda, AdWords API Team

 On Feb 3, 10:54 am, Kyle LeNeau k.len...@gmail.com wrote:



  Hello,

  I am getting a very generic error when I try to add new criterion.  I
  am trying to add multiple operations at one time except I am getting
  an UNEXPECTED_INTERNAL_API_ERROR returned.  I have tried reducing the
  number of operations per call all they way down to one and am
  consistently getting this error.  Here are my request and responses
  that I have traced.

  Request
  ---

  POST /api/adwords/cm/v200909/AdGroupCriterionService
  User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client
  Protocol 2.0.50727.4927)
  VsDebuggerCausalityData:
  uIDPo43de8ScpjJArhaHqjPGyb0A3gH8qt6H9kCDw0hbeo1ILfa6k1gts0FBs8B9zzFv/
  TcACQAA
  Content-Type: text/xml; charset=utf-8
  SOAPAction: 
  Host: adwords.google.com
  Content-Length: 1217
  Expect: 100-continue
  Connection: Keep-Alive

  ?xml version=1.0 encoding=utf-8?
  soap:Envelope xmlns:soap=http://schemas.xmlsoap.org/soap/envelope/;
  xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance;
  xmlns:xsd=http://www.w3.org/2001/XMLSchema;
      soap:Header
          RequestHeader xmlns=https://adwords.google.com/api/adwords/
  cm/v200909
              authToken/authToken
              clientCustomerId493-624-2678/clientCustomerId
              developerTokeniRFg/developerToken
              userAgentAWAPI DotNetLib 6.2 - WhereToLive.com/
  userAgent
          /RequestHeader
      /soap:Header
      soap:Body
          mutate xmlns=https://adwords.google.com/api/adwords/cm/
  v200909
              operations
                  operatorADD/operator
                  operand xsi:type=BiddableAdGroupCriterion
                      adGroupId1044065073/adGroupId
                      criterion xsi:type=Keyword
                          text5 Private  Drive 1617/text
                          matchTypePHRASE/matchType
                      /criterion
                      userStatusACTIVE/userStatus
                      
  destinationUrlhttp://www.coldwellbankerlegacy.com/100174?utm_source=gawutm_medium=ppc.../destinationUrl
                  /operand
              /operations
          /mutate
      /soap:Body
  /soap:Envelope

  Response
  

  Transfer-Encoding: chunked
  X-Content-Type-Options: nosniff
  X-XSS-Protection: 0
  X-Frame-Options: SAMEORIGIN
  Cache-Control: private, max-age=0
  Content-Type: text/xml; charset=UTF-8
  Date: Wed, 03 Feb 2010 15:50:45 GMT
  Expires: Wed, 03 Feb 2010 15:50:45 GMT
  Server: GFE/2.0

  soap:Envelope xmlns:soap=http://schemas.xmlsoap.org/soap/envelope/;
      soap:Body
          soap:Fault
              faultcodesoap:Server/faultcode

  faultstringInternalApiError.UNEXPECTED_INTERNAL_API_ERROR @ /
  faultstring
              detail
                  ApiExceptionFault xmlns=https://adwords.google.com/
  api/adwords/cm/v200909

  messageInternalApiError.UNEXPECTED_INTERNAL_API_ERROR @ /message
                      ApplicationException.TypeApiException/
  ApplicationException.Type
                      errors xmlns:xsi=http://www.w3.org/2001/
  XMLSchema-instance xsi:type=InternalApiError
                          fieldPath/fieldPath
                          trigger/trigger
                          ApiError.TypeInternalApiError/
  ApiError.Type
                          reasonUNEXPECTED_INTERNAL_API_ERROR/reason
                      /errors
                  /ApiExceptionFault
              /detail
          /soap:Fault
      /soap:Body
  /soap:Envelope

-- 
You received this message because you are subscribed to the Google Groups 
AdWords API Forum group.
To post to this group, send email to adwords-...@googlegroups.com.
To unsubscribe from this group, send email to 
adwords-api+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/adwords-api?hl=en.



AdWords API UNEXPECTED_INTERNAL_API_ERROR Trying to Add one or more Criterion

2010-02-03 Thread Kyle LeNeau
Hello,

I am getting a very generic error when I try to add new criterion.  I
am trying to add multiple operations at one time except I am getting
an UNEXPECTED_INTERNAL_API_ERROR returned.  I have tried reducing the
number of operations per call all they way down to one and am
consistently getting this error.  Here are my request and responses
that I have traced.

Request
---

POST /api/adwords/cm/v200909/AdGroupCriterionService
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client
Protocol 2.0.50727.4927)
VsDebuggerCausalityData:
uIDPo43de8ScpjJArhaHqjPGyb0A3gH8qt6H9kCDw0hbeo1ILfa6k1gts0FBs8B9zzFv/
TcACQAA
Content-Type: text/xml; charset=utf-8
SOAPAction: 
Host: adwords.google.com
Content-Length: 1217
Expect: 100-continue
Connection: Keep-Alive

?xml version=1.0 encoding=utf-8?
soap:Envelope xmlns:soap=http://schemas.xmlsoap.org/soap/envelope/;
xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance;
xmlns:xsd=http://www.w3.org/2001/XMLSchema;
soap:Header
RequestHeader xmlns=https://adwords.google.com/api/adwords/
cm/v200909
authToken/authToken
clientCustomerId493-624-2678/clientCustomerId
developerTokeniRFg/developerToken
userAgentAWAPI DotNetLib 6.2 - WhereToLive.com/
userAgent
/RequestHeader
/soap:Header
soap:Body
mutate xmlns=https://adwords.google.com/api/adwords/cm/
v200909
operations
operatorADD/operator
operand xsi:type=BiddableAdGroupCriterion
adGroupId1044065073/adGroupId
criterion xsi:type=Keyword
text5 Private  Drive 1617/text
matchTypePHRASE/matchType
/criterion
userStatusACTIVE/userStatus
destinationUrlhttp://
www.coldwellbankerlegacy.com/100174?utm_source=gawamp;utm_medium=ppcamp;utm_campaign=addresses/destinationUrl
/operand
/operations
/mutate
/soap:Body
/soap:Envelope


Response


Transfer-Encoding: chunked
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
X-Frame-Options: SAMEORIGIN
Cache-Control: private, max-age=0
Content-Type: text/xml; charset=UTF-8
Date: Wed, 03 Feb 2010 15:50:45 GMT
Expires: Wed, 03 Feb 2010 15:50:45 GMT
Server: GFE/2.0

soap:Envelope xmlns:soap=http://schemas.xmlsoap.org/soap/envelope/;
soap:Body
soap:Fault
faultcodesoap:Server/faultcode
 
faultstringInternalApiError.UNEXPECTED_INTERNAL_API_ERROR @ /
faultstring
detail
ApiExceptionFault xmlns=https://adwords.google.com/
api/adwords/cm/v200909
 
messageInternalApiError.UNEXPECTED_INTERNAL_API_ERROR @ /message
ApplicationException.TypeApiException/
ApplicationException.Type
errors xmlns:xsi=http://www.w3.org/2001/
XMLSchema-instance xsi:type=InternalApiError
fieldPath/fieldPath
trigger/trigger
ApiError.TypeInternalApiError/
ApiError.Type
reasonUNEXPECTED_INTERNAL_API_ERROR/reason
/errors
/ApiExceptionFault
/detail
/soap:Fault
/soap:Body
/soap:Envelope

-- 
You received this message because you are subscribed to the Google Groups 
AdWords API Forum group.
To post to this group, send email to adwords-...@googlegroups.com.
To unsubscribe from this group, send email to 
adwords-api+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/adwords-api?hl=en.



AdWords API UNEXPECTED_INTERNAL_API_ERROR Trying to Add one or more Criterion

2010-02-03 Thread Kyle LeNeau
Hello,

I am getting a very generic error when I try to add new criterion.  I
am trying to add multiple operations at one time except I am getting
an UNEXPECTED_INTERNAL_API_ERROR returned.  I have tried reducing the
number of operations per call all they way down to one and am
consistently getting this error.  Here are my request and responses
that I have traced.

Request
---

POST /api/adwords/cm/v200909/AdGroupCriterionService
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client
Protocol 2.0.50727.4927)
VsDebuggerCausalityData:
uIDPo43de8ScpjJArhaHqjPGyb0A3gH8qt6H9kCDw0hbeo1ILfa6k1gts0FBs8B9zzFv/
TcACQAA
Content-Type: text/xml; charset=utf-8
SOAPAction: 
Host: adwords.google.com
Content-Length: 1217
Expect: 100-continue
Connection: Keep-Alive

?xml version=1.0 encoding=utf-8?
soap:Envelope xmlns:soap=http://schemas.xmlsoap.org/soap/envelope/;
xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance;
xmlns:xsd=http://www.w3.org/2001/XMLSchema;
soap:Header
RequestHeader xmlns=https://adwords.google.com/api/adwords/
cm/v200909
authToken/authToken
clientCustomerId493-624-2678/clientCustomerId
developerTokeniRFg/developerToken
userAgentAWAPI DotNetLib 6.2 - WhereToLive.com/
userAgent
/RequestHeader
/soap:Header
soap:Body
mutate xmlns=https://adwords.google.com/api/adwords/cm/
v200909
operations
operatorADD/operator
operand xsi:type=BiddableAdGroupCriterion
adGroupId1044065073/adGroupId
criterion xsi:type=Keyword
text5 Private  Drive 1617/text
matchTypePHRASE/matchType
/criterion
userStatusACTIVE/userStatus
destinationUrlhttp://
www.coldwellbankerlegacy.com/100174?utm_source=gawamp;utm_medium=ppcamp;utm_campaign=addresses/destinationUrl
/operand
/operations
/mutate
/soap:Body
/soap:Envelope


Response


Transfer-Encoding: chunked
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
X-Frame-Options: SAMEORIGIN
Cache-Control: private, max-age=0
Content-Type: text/xml; charset=UTF-8
Date: Wed, 03 Feb 2010 15:50:45 GMT
Expires: Wed, 03 Feb 2010 15:50:45 GMT
Server: GFE/2.0

soap:Envelope xmlns:soap=http://schemas.xmlsoap.org/soap/envelope/;
soap:Body
soap:Fault
faultcodesoap:Server/faultcode
 
faultstringInternalApiError.UNEXPECTED_INTERNAL_API_ERROR @ /
faultstring
detail
ApiExceptionFault xmlns=https://adwords.google.com/
api/adwords/cm/v200909
 
messageInternalApiError.UNEXPECTED_INTERNAL_API_ERROR @ /message
ApplicationException.TypeApiException/
ApplicationException.Type
errors xmlns:xsi=http://www.w3.org/2001/
XMLSchema-instance xsi:type=InternalApiError
fieldPath/fieldPath
trigger/trigger
ApiError.TypeInternalApiError/
ApiError.Type
reasonUNEXPECTED_INTERNAL_API_ERROR/reason
/errors
/ApiExceptionFault
/detail
/soap:Fault
/soap:Body
/soap:Envelope

-- 
You received this message because you are subscribed to the Google Groups 
AdWords API Forum group.
To post to this group, send email to adwords-...@googlegroups.com.
To unsubscribe from this group, send email to 
adwords-api+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/adwords-api?hl=en.



AdWords API Re: Order of Returned Operations Through Criterion Service

2010-02-02 Thread Kyle LeNeau
Hi Eric,

What happens if one of the keywords fails to be added does the whole
mutate request fail like batch transactions or will one fail at a time
and return something else in the index place?

Thanks,
Kyle

On Feb 2, 9:28 am, AdWords API Advisor adwordsapiadvi...@google.com
wrote:
 Hi Kyle,

 Order is maintained between operations and results, so you can use a
 form of logic like you outlined.

 Best,
 - Eric Koleda, AdWords API Team

 On Feb 1, 6:38 pm, Kyle LeNeau k.len...@gmail.com wrote:



  Hello,

  I am developing a process to bulk add/purchase keywords.  I need to
  maintain what is added and what I need to add or save to my database.
  Will the operations that I send in the mutate request be returned to
  me in the same order as I sent them (based on index)?  Here is my code
  and expectation.

  m_adGroupCriterionService.mutate(new AdGroupCriterionOperation[]
  { operation1, operation2 });
  if (result != null  result.value != null  result.value.Length  0)
  {
      // expecting:
      // result.value[0] = operation1
      // result.value[1] = operation2

  }

  Thanks,
  Kyle LeNeau

-- 
You received this message because you are subscribed to the Google Groups 
AdWords API Forum group.
To post to this group, send email to adwords-...@googlegroups.com.
To unsubscribe from this group, send email to 
adwords-api+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/adwords-api?hl=en.



AdWords API Re: BulkMutateJob and extra identifiers

2010-01-28 Thread Kyle LeNeau
Hi Eric,

I appreciate the detailed response.  However I am still unclear on why
performance is incredibly slow.  I still (last 2 days) trying up
update 7,000 keywords and I am getting a TON of concurrent
modification errors.

Response to topic #1:  I am only sending the destination url to be
updated with this code and it is still running SUPER slow to the point
of unusable, what gives:

Criterion criterion = new Criterion();
criterion.id = criterionId;
criterion.idSpecified = true;

BiddableAdGroupCriterion biddableAdGroupCriterion = new
BiddableAdGroupCriterion();
biddableAdGroupCriterion.adGroupId = adGroupId;
biddableAdGroupCriterion.adGroupIdSpecified = true;
biddableAdGroupCriterion.destinationUrl = destinationUrl;
biddableAdGroupCriterion.criterion = criterion;

AdGroupCriterionOperation operation = GetAdGroupCriterionOperation
(Operator.SET, biddableAdGroupCriterion);
m_adGroupCriterionService.mutate(new AdGroupCriterionOperation[]
{ operation });

Response to topic #2:  I am not re-updating the same keyword after
failure, I moving on the next one.

Response to topic #3:  To clarify is there a way to send additional
parameters what will just be sent back to with the criterion so that I
can parse it and match it to my DB, sort of like a known request ID
that is unique across all criterion.  I also think of this as like and
extra public property on the criterion of type string that I can put
something into (like a JSON structure).  Then I can de-serialize it on
the return.  I can seem this being a well used feature in the API.

This way I can create a bulk update job, send it to the API and then
check on it every X minutes (asynchronously).  This will reduce the
traffic to outside the building and reduce the SSL handshakes down
significantly.  It is assumed that your API has written good logic to
process bulk jobs efficiently in house faster and with higher
priority.

Thanks Eric, I hope to hear from you again or someone else on your
team.

Thanks,
Kyle

On Jan 27, 10:13 am, AdWords API Advisor
adwordsapiadvi...@google.com wrote:
 Hi Kyle,

 Thank you for the detailed description of your goals and the problems
 you have encountered. Some points I'd like to mention:

 - A simple way to improve the performance of keyword updates is to
 only send the information you wish to change.  So for instance if you
 only want to change the bid on a keyword only send the adGroupId,
 criteriaId, and bids fields.  Sending other fields that you aren't
 changing can often lead to increased request time since those other
 fields must also be processed and can sometimes trigger other
 workflows.

 - CONCURRENT_MODIFICATION errors can happen when you attempt to update
 the same keyword in quick succession.  After you update a keyword it
 may need to be re-approved, and the back end approval workflow can
 sometimes try to modify a keyword at the same time you do.  For this
 reason it is best to leave a few seconds before attempting to to make
 another update to the same keyword.

 - It is possible to retrieve the resulting IDs with the
 BulkMutateJobService, by setting the resultPartIndex on the
 BulkMutateJobSelector.  We have an example of this included with our
 client libraries:

  http://code.google.com/p/google-api-adwords-java/source/browse/trunk/...

 In general though the BMJS makes no guarantees that it will process
 results any faster than the synchronous services, as that is not the
 main goal of the service.  Under certain circumstances you may see
 some improvement, but the service is best used for changes that aren't
 as time-sensitive.

 Best,
 - Eric Koleda, AdWords API Team

 On Jan 26, 2:51 pm, Kyle LeNeau k.len...@gmail.com wrote:



  I have a process that maintains an Adwords campaign on behalf of a
  customer.  The process will either purchase new keywords, or update
  keywords (destination URL only) nightly.  The source of truth for what
  keywords to maintain is in a database on our end and a user/customer
  was the ability to insert new records into the table, thus triggering
  a purchase of a new keyword.

  When a new keyword is purchased the record that exists in my database
  is updated with the criterion id, adgroup id, campaign id, url,
  keywords and more.  I then use the URL later to determine if the
  keyword should be updated.  In the previous version of the API (v13) I
  was able to just update the keyword quickly and catch/handle any
  errors.  This happened very quickly; our small customer of 7000
  keywords would run and usually update 80% of the keywords in a little
  over an hour.  With the new API (v200909) it is extremely slow, the
  same 7000 keywords and 80% update is approaching the 6 hour mark and
  has only updated 1/3 of the total.

  This is a C# program and I am using the client library off of google
  code.  I have been debuging it all day and am getting a lot of
  Database.CONCURRENT_MODIFICATION errors and am only running on one
  thread.  While debugging I have

AdWords API What are the effects of deleting all adgroups and criterion from a campaign?

2010-01-28 Thread Kyle LeNeau
Hello,

As the subject states my question is simple: what are or would be the
effect of deleting all adgroups and their criterion from a campaign?

For example, will I loose bids on established keywords, statistics
traffic, reporting, etc.  Please be specific if you know the answer.

My reason for wanting to do such a thing stems from my other topic/
discussion here :
http://groups.google.com/group/adwords-api/browse_thread/thread/e77c38382813f7/72e42ee9adc70dd7#72e42ee9adc70dd7

The API is slow to update a LOT of keywords in a synchronous manner so
I am thinking of manually using the ad words tool for the desktop to
truncate a campaign, re-create ad groups dynamically, create a text
file of keywords to load into the ad words tool.  Then to keep my
system in sync I will run a structure report to pull the keywords in
the campaign, parse the XML file and insert a record of the keyword
(and what entity it belongs to in my system) into our DB.

Then in the future I can perform the updates, removals and add's in
bulk.  This is all in the hope of decreasing the execution time for
some of our much larger customers we work on behalf of where the
keyword count is in the tens of thousands and one being over one
hundred thousand keywords (yes we hit a limit, and yes we had to call
to get it raised).

I hope someone can help answer my main question above and the the API
team can look into why there is such consistently slow performance.

Thanks,
Kyle LeNeau

-- 
You received this message because you are subscribed to the Google Groups 
AdWords API Forum group.
To post to this group, send email to adwords-...@googlegroups.com.
To unsubscribe from this group, send email to 
adwords-api+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/adwords-api?hl=en.



AdWords API BulkMutateJob and extra identifiers

2010-01-26 Thread Kyle LeNeau
I have a process that maintains an Adwords campaign on behalf of a
customer.  The process will either purchase new keywords, or update
keywords (destination URL only) nightly.  The source of truth for what
keywords to maintain is in a database on our end and a user/customer
was the ability to insert new records into the table, thus triggering
a purchase of a new keyword.

When a new keyword is purchased the record that exists in my database
is updated with the criterion id, adgroup id, campaign id, url,
keywords and more.  I then use the URL later to determine if the
keyword should be updated.  In the previous version of the API (v13) I
was able to just update the keyword quickly and catch/handle any
errors.  This happened very quickly; our small customer of 7000
keywords would run and usually update 80% of the keywords in a little
over an hour.  With the new API (v200909) it is extremely slow, the
same 7000 keywords and 80% update is approaching the 6 hour mark and
has only updated 1/3 of the total.

This is a C# program and I am using the client library off of google
code.  I have been debuging it all day and am getting a lot of
Database.CONCURRENT_MODIFICATION errors and am only running on one
thread.  While debugging I have noticed that the call to update/mutate
a criterion is sometimes taking 30+ seconds to return, this was not
the case in the last version.

Which brings me to my main question about the Bulk Mutate Job.  Is
there a way to pass along extra identifiers to the job/operation so
that when it returns and the job is complete I can loop over the
results and grab my database ID's (primary key) from the criterion to
update my system accordingly?  If not, what are some alternatives to
keeping two systems connected like this?  If this is not currently
supported can it be a feature request, sometime we want or need to
pass along our identifiers so we know what to do with it when it
returns.

Thanks for the help, Kyle.

-- 
You received this message because you are subscribed to the Google Groups 
AdWords API Forum group.
To post to this group, send email to adwords-...@googlegroups.com.
To unsubscribe from this group, send email to 
adwords-api+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/adwords-api?hl=en.