Access onenote content - onenote

My use case is to integrate onenote in our application. I am using document mentioned at https://msdn.microsoft.com/en-us/office/office365/howto/onenote-copy.
To get notebooks some url's are mentioned like -
Construct the request URI
To construct the request URI, start with the service root URL for your platform:
Notebooks on OneDrive for Business
/me/notes/
/users/{id}/notes/
SharePoint site notebooks
/myOrganization/siteCollections/{id}/sites/{id}/notes/
Unified group notebooks
/myOrganization/groups/{id}/notes/
Out of which I am able to successfully access https://www.onenote.com/api/v1.0/me/notes/.
What about id's in other api's. From where I can get groupId or userId of user who has shared content. Can anyone share link for documentation which mention details about all these things.
Any leads would be appreciated.

For retrieving shared OneNote content, you can use the GetRecentNotebooks API (https://blogs.msdn.microsoft.com/onenotedev/2017/04/21/get-recent-notebooks-api/) or /me/notes/notebooks?includesharednotebooks=true

Related

Simple Esri/ArcGIS Online connection using a link or iframe

I was asked by a potential client if I can have my software interact with Esri/ArcGIS Online.
Use case: users is logged into SomeRandomSoftwareApp and is looking at a Widget, this Widget includes an Esri asset id, the user clicks a link that passes that ID to Esri/ArcGIS Online and behind the scenes the user is logged into Esri and they see the data associated with the Esri/ArcGIS Online.
Thanks, Keith
If I understand correctly, you have two options for this: API Keys or Application Credentials.
The first one, is a permanent token generated by the owner of the data that will allow the application easy access to it. This is still in beta, and it was not ready for use the last time I check some time ago.
The second one, the owner of the data will generate credentials for your application. With this credentials you will have to request a token each time you want to access the data, all this via OAuth 2.0.
Check the docs for more details ArcGIS Services - Security

Multiple RESTful API-s in one Swagger for Tyk

I have 2 different restful api-s, and I would like to use Tyk for gateway.
My plan is to have a common url (like: http://viktorservices) which can towards messages to those two api endpoints.
For example, the first api is a user manager api, and has an endpoint:
GET: http://localhost:8080/usermanager/users
And the other api is a car manager api, and it's endpoint:
GET: http://localhost:8081/carmanager/cars
Is it possible somehow, to upload a Swagger JSON for the Tyk Catalog (For developer portal) to be able to se only one API called: User and Car Manager?
And when I click on "View Documentation" in Tyk's developer site, all of the endpoints from both APIs are visible, grouped by their main API names?
I tried to put the two swagger jsons into one as an array, but then it is not visible on the Developer Site.
I am able to upload the swaggers one by one, but then I will have two API-s on the Dev site of Tyk.
I think the main point here is that developer portal documentation/swagger does not have to correlate with the actual APIs you have. Portal gets organized by catalogues/policies. So you can have multiple internal Tyk APIs, but expose them as the single catalog in Portal, by creating Policy which gives access to both APIs. So, just create new "public" swagger file for documentation purpose, which includes endpoints from both of your internal APIs.
Does it make sense?

How does OneNote differ between "View Notebooks" and "View Notebooks in Your Org"?

I'm creating an application to work with OneNote in Office 365 and so I'm creating an app registration in Azure. I want to be able to view notebooks, and there are two permission options: View notebooks and View notebooks in your organization. Irrespective of which permission I select, the only notebooks the call returns are ones in the currently authenticated user's personal site (using "https://www.onenote.com/api/v1.0/me/notes/notebooks" as the Url for the GET request).
So...is it because of the Url I'm using (I haven't found any documentation that uses anything other than ".../me/..."), or is it just working as expected? For example, there's no documentation I've found that describes what all notebooks "in your organization" means - does that include every SharePoint site collection Notebook? Something else? Any additional details or links to specific information would be appreciated.
Yes it is possible to Get Personal Notebooks in the Users OneDrive For Business (/me/) as well as Notebooks hosted in SharePoint sites(/myorganization/) that the user has access to.
Organization Notebooks -
https://www.onenote.com/api/{version}/myorganization/siteCollections/{id}/sites/{id}/notes/notebooks
You would need SiteCollectionId and SiteId to access the organization notebooks.
To understand how you get the notebooks (in the users organization) by referring to this documentation -
https://blogs.msdn.microsoft.com/onenotedev/2015/06/11/and-sharepoint-makes-three/
I did finally find the documentation where they list the different locations from which you can request notebooks: https://msdn.microsoft.com/en-us/office/office365/howto/onenote-get-content. Also, to get the gist of my question, although the service uses a common Url to access notebooks, there isn't a single location where you can ask for all notebooks in an organization. The Azure permission merely gives you the right to go get them if you can find them. As noted in the first answer above, if you know where they are at and if you have the right permissions with your app then that all works great. But you have to know where they are, because there doesn't seem to be a discovery type API for them.

How to retrieve shared notebooks using the MS Graph API (beta endpoint)

According to OneNote in the Microsoft Graph API (in Preview) it should be possible to retrieve and access notebooks owned by the user and shared by other users (plus O365 group notebooks).
However, executing https://graph.microsoft.com/beta/me/notes/notebooks just returns my (owned) notebooks (not the shared ones). So maybe I'm doing something wrong here, but how do I list all notebooks that my user has access to (owned as well as shared) using the Graph API?
Sorry for the confusion, OliverL. We've updated the blog post to clarify that the /me endpoint currently only provides access to the OneNote content that’s owned by the current user.
Soon the /me endpoint will also include OneNote content that others have shared with the current user, and then you'll be able to get a list of shared notebooks. But right now, you can only use the /users/<id> or /users/<userPrincipalName> endpoint to access content that another user (specified in the URL) has shared with the current user.
We'll announce the upcoming change in the OneNote Dev Blog when we release it, and make note of it here too. Thanks for your feedback!

Reading other user's Google Fit data via REST API

We have a user who gave consent for our Cloud Project to read their Fit data through the Android app. We now want user's coach to access their Fit data through a web UI associated with our Cloud Project. Is this possible, and if so, what is the right way to do it?
Can cross-client identity be used? https://developers.google.com/identity/protocols/CrossClientAuth
I was trying to replace "me" with "user#gmail.com" in the REST endpoint but it doesn't work:
https://www.googleapis.com/fitness/v1/users/me/... ->
https://www.googleapis.com/fitness/v1/users/user#gmail.com/...
Thanks!
There is a mechanism for Android apps to obtain offline access for web back-ends highlighted in the CrossClientAuth guide from your question. With offline access, you can theoretically serve or store that data in any way that the user has consented to. Any access controls of that data to another person is something that you'd have to handle on your own.