I am using MSGraph endpoints to access Onenote notebooks. Just wanted to understand what is rate limit per user . Secondly does this rate limit depends upon how you register your application with Microsoft application registration portal.
From the blog post below:
https://blogs.msdn.microsoft.com/onenotedev/2016/01/12/onenote-api-throttling-and-how-to-avoid-it/
...if you're running into throttling (429's) during development, you
can simply change your user or your app (this does require giving
permissions again) and keep coding/testing against the API.
As for the public limits of the OneNote API, they aren't public unfortunately. If you're running into them in a valid scenario, do contact us.
Related
I am attempting to use "v1.0/me/joinedTeams" to get all the joined teams for the currently authenticated user in my asp.net service. This works fine for external accounts that use a Microsoft identity (have a live account) but the same call returns a 400 Bad Request when I attempt to use an external account that uses a mail identity (no live account). The request is the same regardless of external account type. The token generated when authenticating as the mail identity external user looks correct when I inspect it.
I have been able to implement a workaround where I instead use the SharePoint REST service to get the groupId for the team site the user is apart of and then use the Graph call "v1.0/teams/{groupId}" to get that team. However, I need to do this for all the teams the external user has access to which slows things down quiet a bit.
I am aware of what looks like a bug in Graph when trying to make any Graph calls with any external user type, described here: https://github.com/OneDrive/onedrive-api-docs/issues/1039. I have also implemented the workaround for this issue which requires first accessing each site the user has access to by making some arbitrary call using the REST service. Then any subsequent calls using Graph should work. I do this for external accounts with a mail identity before trying to make the joinedTeams call but still run into the 400 response.
These workarounds will suffice in the short term but they increase my execution time significantly, especially when there is a large number of teams the external user is apart of. Any insight on a solution is greatly appreciated.
/me/joinedTeams is not available for personal Microsoft accounts. Se the table on this page
I'm currently trying to use Google My Business API to get reviews for each location of my company. The problem is that i want to use the reviews methods but I can't use them without my account_id. To have it i know i can do the following request:
https://mybusinessaccountmanagement.googleapis.com/v1/accounts
The problem is that when I try to execute it, I have a 429 error saying that the quota of requests for the mybusinessaccountmanagement is exceeded. When I go to the My Business Account Manager page on my Google Cloud Platform Console, i can see that the Quota for this API is setted at 0 and I can't modify it because they ask for my account to have a facturation account.
Do you have any idea of how can I get my account_id to make my request with the Google My Business API?
Thank you
The Google My Business API is restricted by default because of its ability to access sensitive information and so requires approval before you are allowed to use it.
https://developers.google.com/my-business/content/prereqs#request-access
The prerequisites page calls this out and provides a link to the form to submit your application to gain access. Until you are approved through that process, your API quota will stay at 0.
My app invokes the Twitter v2 APIs to retrieve users tweets.
According to the Twitter Dev Portal I have a monthly tweet cap of 500,000 tweets that I can retrieve, and this UI tells me how much I've used.
However, is there any way to retrieve this data via an API?
This page seems to imply it's just via the UI, but I'm surprised there is no way to retrieve this via an API. Is there any such way even for v1?
v1.1 had no volume cap, but does have rate limits, which you can access via the HTTP headers on GET requests. POST requests are different, and managed at the user account level.
In v2, at the time of writing, there is currently no way to access the cap and volume data via the API - it is only available in the UI.
The current youtube API quota is 10,000 units/day.
So what if I created an app and this app has 100 copies installed on different 100 devices and all of them use different IPs, would the quota be 10,000 units/day for every device (1M/day) or the 10,000 units would be distributed among the different copies?
Note that the requests will be executed on different devices. this is an embedded app., not a cloud one.
10,000 units/day is project based, not user based. IP address won't affect anything.
As you can see from the above image on the Queries per minute per user is user based, and detected via ip address, sending the quotauser parameter along with the request or sending an authorization header containing an access token.
In order to get around your 10k quota in this manner you would need to create 100 projects on google developer console and create credietnals for each of those projects and then each project would have 10k quota. However the drawback would be trying to get 100 projects though the google verification process.
You could just request an extension of your quota if you need more quota. 😊
Additional Clarifications
API key Used to access public data only and identifies your application to google
Client id and client secrete used to create a access token, will identify both the application and the user to google once a user is authorized and you are sending an access token authorization header with your request.
The quotaUser and userIp parameters can only be used for anonymous requests with some Google apis this has changed recently i am not sure if it still works with YouTube api private calls. userIp allows you to send any ip address with the request, and QuotaUser allows you to send any string for example your internal user id for the user making the requests. In the past this allowed for some hacking / work around for the per user quotas.
None of the above information will really help you as the quota you are trying to get around is a project based quota and not a user based quota. Its detecting the project associated with your client id / api key (depending upon what you are using) changing the IP or generating a new client under your project isnt going to help.
Really just request more quota
There are two ways an app is identified by the API:
the API key that the app uses when invoking the API endpoints (for reading only public data), or
the credentials data (i.e. access token) the app makes use of when calling in various endpoints (for reading only public data pertaining to any YouTube channel, or, otherwise, for reading/updating/deleting public and/or private data pertaining the YouTube account/channel that granted permissions of operation to the respective app).
Therefore, from the point of view of the API, it doesn't really matter if you are running N different instances of your app (i.e. programs running on concrete computers). The API accounts for the quota consumption of a given project created through Google developers console.
In this context of an app (as a concrete program) running on several machines that share API keys and/or credentials data, I recommend warmly to get familiar with the content of the DTOS specifications.
I'm building a suite of tools that integrate with Asana. These tools comprise a web browser extension and a web app (or Chrome packaged app). Do the browser extension and web app share the same API call quota?
Right now, API rate limits are enforced per-user. Until we released OAuth support, there was no way to distinguish between different apps (since users were always authorized by the same API key). In future, each app will get its own rate limit quota (per user). If you intend to make them separate apps (and have users authorize them separately) they would then get separate quotas - but if you're either using an API key for both, or sharing one OAuth app, they'll end up sharing their quota, too, even if we roll out the change I mentioned earlier.