13

After discovering that the Google team upgraded the Android Developer API, I made a script to automatically update all my apps data in multiple languages at once.

However, I've noticed that, when you follow a workflow of:

  1. Ask for Edit ID,
  2. Do all your changes
  3. Commit all your changes

At some point, you get a SocketTimeoutException when you try to update changes. Well, this may be due to a problem in my connection.

So, to solve that, I changed my workflow:

  1. Ask for Edit ID,
  2. Do one change
  3. Commit one change
  4. Repeat from 1 until changes finished

However, following this process, it ends with this when I try to commit after some changes:

{
  "code" : 403,
  "errors" : [ {
    "domain" : "androidpublisher",
    "message" : "Daily save quota exceeded.",
    "reason" : "publishingDailySaveQuotaExceeded"
  } ],
  "message" : "Daily save quota exceeded."
}

Looks weird to me, as there is no explanation about save quotas for this API.

Also, after an intense use, the current quota limit keeps frozen at 0/200k, as if I didn't do anything. I didn't use the v1 of this API, so I don't know anything about this.

Do you know if that's the correct behavior?

Sergi Juanola
  • 6,531
  • 8
  • 56
  • 93
  • 2
    I'm guessing this is to prevent people from uploading an app 15 times per day... that said it makes learning the api/testing horrible :/ – neuron Oct 22 '14 at 09:07
  • @neuron Google's known for having a great set of APIs, but an awful set of documentation at the same time. I guess you're correct, but being unable to know what stands by `Save quota`, well, it's unfair. – Sergi Juanola Oct 22 '14 at 10:59

2 Answers2

6

Unfortunately it looks like their "recommendation" in their API's usage page is the rule.

Do not publish alpha or beta updates more frequently than once a day. (Production apps should be updated even less frequently than that.) Every update costs your users time and possibly money. If you update too frequently, users will start ignoring updates, or even uninstall the product.

Seems odd to me that they hard limit it like this though. It should be explicit at the very least.


Update

To follow up, I'm actually able to publish more than once a day as long as attempted uploads aren't rejected for some reason (such as 401 unauthorized). Haven't tested to see what the upper limit is, but it does make testing this a nuisance if it does heavily rate limit after one bad attempt.

Zac Sweers
  • 3,101
  • 2
  • 18
  • 20
  • I ended up commiting only once per processed app, so limits were "gone". Anyway, I guess we can't ask more to Google. Gosh, they're such a mess in terms of documenting APIs... – Sergi Juanola Nov 13 '14 at 14:17
  • To follow up, I'm actually able to publish more than once a day as long as attempted uploads aren't rejected for some reason. Haven't tested to see what the upper limit is, but it does make testing this a nuisance. I'll edit my answer as well – Zac Sweers Nov 22 '14 at 11:36
  • @Korcholis could you please explain what you mean by "commiting only once per processed app"? I am running into this same issue on our build servers and I am not sure how to fix it. thanks – C0D3LIC1OU5 Aug 16 '17 at 14:56
  • @C0D3LIC1OU5 each change can be committed individually. Say, a name change, a missing comma in the description, every screenshot. This means that each change you do is spending a "credit". You can, however, prepare a commit, do multiple changes in that app (descriptions in different languages, add multiple screenshots, change the logo in all of the language variants, etc), and then, and only then, process the commit. This will count as a single action, and you'll probably not reach the limit again – Sergi Juanola Aug 16 '17 at 16:07
0
The Google Play Developer API has a default limit of 200,000 queries per day.
For the purpose of enforcing this quota, the day ends at midnight Pacific time (UTC-8 when California is on standard time, UTC-7 when California is on daylight time).

https://developers.google.com/android-publisher/quotas

Aqib Mumtaz
  • 4,936
  • 1
  • 36
  • 33