SlideShare ist ein Scribd-Unternehmen logo
1 von 24
Julien Boëdec @boedec
Partner Integrations Manager
Evernote Business API Workshop
#EC2013
Evernote Business API Workshop
1 - Understanding Evernote Business
2 - The Evernote API
3 - Code walkthroughs
4 - Partner showcase
#EC2013
Understanding Evernote Business
An extension of Evernote
Knowledge sharing and discovery
Data owned by the business
Works with all our core products (Evernote desktop, iOS, Android, Web
Clipper...)
#EC2013
Understanding Evernote Business
#EC2013
The Evernote API
Our core product: The Evernote API is used for
external developers and our internal apps alike. 12
Billion API calls are made every month!
Same functions: All the functionality available in
Evernote (OCR, Files, Audio, etc)
Every platform: We have SDKs for almost every
platform on Github.
Apache Thrift, not REST: We take care of the
connection, just make calls to our SDK in your
application
#EC2013
The Evernote API - Endpoints
ThriftThrift
UserUser
StoreStore
NoteNote
StoreStore
NoteNote
StoreStore
NoteNote
StoreStore
NoteNote
StoreStore
NoteNote
StoreStore
NoteNote
StoreStore
https://www.evernote.com/shard/s1https://www.evernote.com/shard/s1
#EC2013
The Evernote API - Endpoints
ThriftThrift
UserUser
StoreStore
BusinessBusiness
Note StoreNote Store
PersonalPersonal
Note StoreNote Store
#EC2013
Code walkthroughs
Getting started - connecting to the business account
Creating a note
Searching for notes in the business
Working with notebooks
Related content
Provisioning API
#EC2013
Connecting to the business account
# Get information about the user
ourUser = user_store.getUser(auth_token)
# Is the user part of a business?
if ourUser.businessUserInfo:
print "Business name: " + ourUser.businessUserInfo.businessName
# Connecting to the Evernote Business account
business_auth_result = user_store.authenticateToBusiness(auth_token)
business_auth_token = business_auth_result.authenticationToken
#EC2013
Creating a note
# Creating a note
my_note = Types.Note()
my_note.title = "I'm a test note!"
my_note.notebookGuid = "8d382c0b-08f3-46a5-9356-bb28fb0f4eb6"
content = '<?xml version="1.0" encoding="UTF-8"?>'
content += '<!DOCTYPE en-note SYSTEM "http://xml.evernote.com/pub/enml2.dtd">'
content += "<en-note>I'm the body of a test note!</en-note>"
my_note.content = content
# Create a new note in the business notebook
# if modifying an existing Note, call updateNote here
#EC2013
Searching for notes
# Define the filter to search with
filter = NoteStore.NoteFilter()
filter.words = "EC3"
# Define the data the service should return
result_spec = NoteStore.NotesMetadataResultSpec ()
result_spec.includeTitle = True
# Search
notes_metadata = business_note_store.findNotesMetadata (business_auth_token, filter, 0, 50, result_spec)
#EC2013
Working with notebooks
#EC2013
Working with notebooks
#Listing the notebooks a user has joined
linked_notebooks = note_store.listLinkedNotebooks(auth_token)
for lnb in linked_notebooks:
if lnb.businessId:
print lnb.shareName
# Listing the notebooks published to the business
published_notebooks = business_note_store.listPublishedBusinessNotebooks(business_auth_token)
#EC2013
Related Content
FindRelated()FindRelated()FindRelated()FindRelated()
#EC2013
Related Content
result_query = NoteStore.RelatedQuery ()
result_query.plainText = "text content for searching related notes"
#result_query.filter
result_spec = NoteStore.RelatedResultSpec ()
result_spec.maxNotes = 3
result_spec.maxNotebooks = 2
result_spec.maxTags = 5
related_result = business_note_store.findRelated (business_auth_token, result_query, result_spec)
#EC2013
Provisioning API - Add / Remove
UserStore.inviteToBusiness(string authenticationToken, string emailAddress)
UserStore.removeFromBusiness(string authenticationToken, string emailAddress)
LDAP / ADLDAP / ADLDAP / ADLDAP / AD
#EC2013
Partner showcase
Azendoo
LiveMinutes
UberConference
Zapier
In house development: Ducati Motor
#EC2013
Partner showcase - Azendoo
#EC2013
Partner showcase - LiveMinutes
#EC2013
Partner showcase - UberConference
#EC2013
Partner showcase - Zapier
#EC2013
Partner showcase - Ducati Motor
#EC2013
Get Help
Documentation: dev.evernote.com
Developer forums
Follow us: @evernote_dev
Contact me: jboedec@evernote.com
Thank you!
Julien Boëdec @boedec
Partner Integrations Manager

Weitere ähnliche Inhalte

Andere mochten auch

VMware Integrated OpenStack 2.0
VMware Integrated OpenStack 2.0VMware Integrated OpenStack 2.0
VMware Integrated OpenStack 2.0
Erik Bussink
 
Why should C-Level care about APIs? It's the new economy, stupid.
Why should C-Level care about APIs? It's the new economy, stupid.Why should C-Level care about APIs? It's the new economy, stupid.
Why should C-Level care about APIs? It's the new economy, stupid.
Fabernovel
 

Andere mochten auch (10)

Get Untethered with Evernote - Core Skills & Tips
Get Untethered with Evernote - Core Skills & Tips Get Untethered with Evernote - Core Skills & Tips
Get Untethered with Evernote - Core Skills & Tips
 
State of the Evernote Platform
State of the Evernote PlatformState of the Evernote Platform
State of the Evernote Platform
 
Strategy and IMC
Strategy and IMCStrategy and IMC
Strategy and IMC
 
VMware Integrated OpenStack 2.0
VMware Integrated OpenStack 2.0VMware Integrated OpenStack 2.0
VMware Integrated OpenStack 2.0
 
PulsoConf: Platform & Community - Dev Outreach @ Evernote
PulsoConf: Platform & Community - Dev Outreach @ EvernotePulsoConf: Platform & Community - Dev Outreach @ Evernote
PulsoConf: Platform & Community - Dev Outreach @ Evernote
 
Using Evernote to Remember Everything
Using Evernote to Remember EverythingUsing Evernote to Remember Everything
Using Evernote to Remember Everything
 
Evernote & Beyond! Tools to Save Time and Make Your Life Easier
Evernote & Beyond! Tools to Save Time and Make Your Life EasierEvernote & Beyond! Tools to Save Time and Make Your Life Easier
Evernote & Beyond! Tools to Save Time and Make Your Life Easier
 
Why should C-Level care about APIs? It's the new economy, stupid.
Why should C-Level care about APIs? It's the new economy, stupid.Why should C-Level care about APIs? It's the new economy, stupid.
Why should C-Level care about APIs? It's the new economy, stupid.
 
Vagrant + Docker provider [+Puppet]
Vagrant + Docker provider [+Puppet]Vagrant + Docker provider [+Puppet]
Vagrant + Docker provider [+Puppet]
 
Culture
CultureCulture
Culture
 

Ähnlich wie Evernote Business API workshop

Ähnlich wie Evernote Business API workshop (20)

Scaling / optimizing search on netlog
Scaling / optimizing search on netlogScaling / optimizing search on netlog
Scaling / optimizing search on netlog
 
Ane for 9ria_cn
Ane for 9ria_cnAne for 9ria_cn
Ane for 9ria_cn
 
EverNote iOS SDK introduction & practices
EverNote iOS SDK introduction & practices EverNote iOS SDK introduction & practices
EverNote iOS SDK introduction & practices
 
How AngularDart & Firebase did an App together
How AngularDart & Firebase did an App togetherHow AngularDart & Firebase did an App together
How AngularDart & Firebase did an App together
 
Tutorial: Writing Sencha Touch Mobile Apps using ]project-open[
Tutorial: Writing Sencha Touch Mobile Apps using ]project-open[Tutorial: Writing Sencha Touch Mobile Apps using ]project-open[
Tutorial: Writing Sencha Touch Mobile Apps using ]project-open[
 
Altitude NY 2018: Leveraging Log Streaming to Build the Best Dashboards, Ever
Altitude NY 2018: Leveraging Log Streaming to Build the Best Dashboards, EverAltitude NY 2018: Leveraging Log Streaming to Build the Best Dashboards, Ever
Altitude NY 2018: Leveraging Log Streaming to Build the Best Dashboards, Ever
 
Asp.net tips
Asp.net tipsAsp.net tips
Asp.net tips
 
Introduzione alla SEO Automation con Python
Introduzione alla SEO Automation con PythonIntroduzione alla SEO Automation con Python
Introduzione alla SEO Automation con Python
 
Ektron CMS400 8.02
Ektron CMS400 8.02Ektron CMS400 8.02
Ektron CMS400 8.02
 
What is new in Notes & Domino Deleopment V10.x
What is new in Notes & Domino Deleopment V10.xWhat is new in Notes & Domino Deleopment V10.x
What is new in Notes & Domino Deleopment V10.x
 
Let's do SPA
Let's do SPALet's do SPA
Let's do SPA
 
Workflow as code with Azure Durable Functions
Workflow as code with Azure Durable FunctionsWorkflow as code with Azure Durable Functions
Workflow as code with Azure Durable Functions
 
Building Cloud Castles
Building Cloud CastlesBuilding Cloud Castles
Building Cloud Castles
 
solution Challenge design and flutter day.pptx
solution Challenge design and flutter day.pptxsolution Challenge design and flutter day.pptx
solution Challenge design and flutter day.pptx
 
Build 2016 - B880 - Top 6 Reasons to Move Your C++ Code to Visual Studio 2015
Build 2016 - B880 - Top 6 Reasons to Move Your C++ Code to Visual Studio 2015Build 2016 - B880 - Top 6 Reasons to Move Your C++ Code to Visual Studio 2015
Build 2016 - B880 - Top 6 Reasons to Move Your C++ Code to Visual Studio 2015
 
Exchange 2010 Web Services
Exchange 2010 Web ServicesExchange 2010 Web Services
Exchange 2010 Web Services
 
Test script
Test scriptTest script
Test script
 
What is going on - Application diagnostics on Azure - TechDays Finland
What is going on - Application diagnostics on Azure - TechDays FinlandWhat is going on - Application diagnostics on Azure - TechDays Finland
What is going on - Application diagnostics on Azure - TechDays Finland
 
Lean Php Presentation
Lean Php PresentationLean Php Presentation
Lean Php Presentation
 
Going open source with small teams
Going open source with small teamsGoing open source with small teams
Going open source with small teams
 

Kürzlich hochgeladen

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Kürzlich hochgeladen (20)

presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 

Evernote Business API workshop

  • 1. Julien Boëdec @boedec Partner Integrations Manager Evernote Business API Workshop
  • 2. #EC2013 Evernote Business API Workshop 1 - Understanding Evernote Business 2 - The Evernote API 3 - Code walkthroughs 4 - Partner showcase
  • 3. #EC2013 Understanding Evernote Business An extension of Evernote Knowledge sharing and discovery Data owned by the business Works with all our core products (Evernote desktop, iOS, Android, Web Clipper...)
  • 5. #EC2013 The Evernote API Our core product: The Evernote API is used for external developers and our internal apps alike. 12 Billion API calls are made every month! Same functions: All the functionality available in Evernote (OCR, Files, Audio, etc) Every platform: We have SDKs for almost every platform on Github. Apache Thrift, not REST: We take care of the connection, just make calls to our SDK in your application
  • 6. #EC2013 The Evernote API - Endpoints ThriftThrift UserUser StoreStore NoteNote StoreStore NoteNote StoreStore NoteNote StoreStore NoteNote StoreStore NoteNote StoreStore NoteNote StoreStore https://www.evernote.com/shard/s1https://www.evernote.com/shard/s1
  • 7. #EC2013 The Evernote API - Endpoints ThriftThrift UserUser StoreStore BusinessBusiness Note StoreNote Store PersonalPersonal Note StoreNote Store
  • 8. #EC2013 Code walkthroughs Getting started - connecting to the business account Creating a note Searching for notes in the business Working with notebooks Related content Provisioning API
  • 9. #EC2013 Connecting to the business account # Get information about the user ourUser = user_store.getUser(auth_token) # Is the user part of a business? if ourUser.businessUserInfo: print "Business name: " + ourUser.businessUserInfo.businessName # Connecting to the Evernote Business account business_auth_result = user_store.authenticateToBusiness(auth_token) business_auth_token = business_auth_result.authenticationToken
  • 10. #EC2013 Creating a note # Creating a note my_note = Types.Note() my_note.title = "I'm a test note!" my_note.notebookGuid = "8d382c0b-08f3-46a5-9356-bb28fb0f4eb6" content = '<?xml version="1.0" encoding="UTF-8"?>' content += '<!DOCTYPE en-note SYSTEM "http://xml.evernote.com/pub/enml2.dtd">' content += "<en-note>I'm the body of a test note!</en-note>" my_note.content = content # Create a new note in the business notebook # if modifying an existing Note, call updateNote here
  • 11. #EC2013 Searching for notes # Define the filter to search with filter = NoteStore.NoteFilter() filter.words = "EC3" # Define the data the service should return result_spec = NoteStore.NotesMetadataResultSpec () result_spec.includeTitle = True # Search notes_metadata = business_note_store.findNotesMetadata (business_auth_token, filter, 0, 50, result_spec)
  • 13. #EC2013 Working with notebooks #Listing the notebooks a user has joined linked_notebooks = note_store.listLinkedNotebooks(auth_token) for lnb in linked_notebooks: if lnb.businessId: print lnb.shareName # Listing the notebooks published to the business published_notebooks = business_note_store.listPublishedBusinessNotebooks(business_auth_token)
  • 15. #EC2013 Related Content result_query = NoteStore.RelatedQuery () result_query.plainText = "text content for searching related notes" #result_query.filter result_spec = NoteStore.RelatedResultSpec () result_spec.maxNotes = 3 result_spec.maxNotebooks = 2 result_spec.maxTags = 5 related_result = business_note_store.findRelated (business_auth_token, result_query, result_spec)
  • 16. #EC2013 Provisioning API - Add / Remove UserStore.inviteToBusiness(string authenticationToken, string emailAddress) UserStore.removeFromBusiness(string authenticationToken, string emailAddress) LDAP / ADLDAP / ADLDAP / ADLDAP / AD
  • 20. #EC2013 Partner showcase - UberConference
  • 23. #EC2013 Get Help Documentation: dev.evernote.com Developer forums Follow us: @evernote_dev Contact me: jboedec@evernote.com
  • 24. Thank you! Julien Boëdec @boedec Partner Integrations Manager

Hinweis der Redaktion

  1. Over 300 shards containing around 200K users each
  2. Assuming that developers know how to access the personal account of a user (authentication...) Users only see a subset of the content in the business
  3. Types.User getUser(string authenticationToken) BusinessUserInfo : businessId, businessName, role, email AuthenticationResult currentTime, authenticationToken, expiration, user, PublicUserInfo, noteStoreUrl, webApiUrlPrefix, secondFactorRequired, secondFactorDeliveryHint
  4. totalNotes The number of notes in the larger set. This can be used to calculate how many notes are &quot;after&quot; this note in the set. (I.e. remaining = totalNotes - (startIndex + notes.length) ) Search in all the business notes you can access but haven’t necessarily joined::::: NoteFilter.includeAllReadableNotebooks = true
  5. Related context: different from a search, discovering content you forgot / didn’t know about
  6. First stab at a higher level of permission. Not a user’s data but the direct management of a business