SlideShare a Scribd company logo
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

More Related Content

PPTX
REST API for your WP7 App
PPTX
Research anytime, anywhere with Evernote and NVivo! Presented by Dr Lyn Lavery
PDF
Get Untethered with Evernote - Work Chat, Sharing & Collaborative Workflows
PPTX
Become a Part of Internet of Things (IoT) Revolution with CONNECT2.ME
PDF
Get Untethered with Evernote - Taming Your Taxes
PDF
Get Untethered with Evernote - Going All In: Upgrading to Evernote Business
PPTX
Time Management Tips for your New Job
PDF
Get Untethered with Evernote - Settings to Race You Forward with Evernote
REST API for your WP7 App
Research anytime, anywhere with Evernote and NVivo! Presented by Dr Lyn Lavery
Get Untethered with Evernote - Work Chat, Sharing & Collaborative Workflows
Become a Part of Internet of Things (IoT) Revolution with CONNECT2.ME
Get Untethered with Evernote - Taming Your Taxes
Get Untethered with Evernote - Going All In: Upgrading to Evernote Business
Time Management Tips for your New Job
Get Untethered with Evernote - Settings to Race You Forward with Evernote

Viewers also liked (10)

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

Similar to Evernote Business API workshop (20)

PDF
Scaling / optimizing search on netlog
PDF
Ane for 9ria_cn
PDF
EverNote iOS SDK introduction & practices
PPTX
ca8257c5-bb12-4e37-9ba4-110494369bcc.pptx
PDF
How AngularDart & Firebase did an App together
PPT
Tutorial: Writing Sencha Touch Mobile Apps using ]project-open[
PDF
Altitude NY 2018: Leveraging Log Streaming to Build the Best Dashboards, Ever
PPT
Asp.net tips
PDF
Introduzione alla SEO Automation con Python
PPTX
Ektron CMS400 8.02
PPTX
What is new in Notes & Domino Deleopment V10.x
PDF
Let's do SPA
PDF
Workflow as code with Azure Durable Functions
PDF
Building Cloud Castles
PPTX
solution Challenge design and flutter day.pptx
PPTX
Build 2016 - B880 - Top 6 Reasons to Move Your C++ Code to Visual Studio 2015
PPTX
Exchange 2010 Web Services
PDF
Test script
PPTX
What is going on - Application diagnostics on Azure - TechDays Finland
PDF
Lean Php Presentation
Scaling / optimizing search on netlog
Ane for 9ria_cn
EverNote iOS SDK introduction & practices
ca8257c5-bb12-4e37-9ba4-110494369bcc.pptx
How AngularDart & Firebase did an App together
Tutorial: Writing Sencha Touch Mobile Apps using ]project-open[
Altitude NY 2018: Leveraging Log Streaming to Build the Best Dashboards, Ever
Asp.net tips
Introduzione alla SEO Automation con Python
Ektron CMS400 8.02
What is new in Notes & Domino Deleopment V10.x
Let's do SPA
Workflow as code with Azure Durable Functions
Building Cloud Castles
solution Challenge design and flutter day.pptx
Build 2016 - B880 - Top 6 Reasons to Move Your C++ Code to Visual Studio 2015
Exchange 2010 Web Services
Test script
What is going on - Application diagnostics on Azure - TechDays Finland
Lean Php Presentation
Ad

Recently uploaded (20)

PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Network Security Unit 5.pdf for BCA BBA.
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Empathic Computing: Creating Shared Understanding
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PPTX
Big Data Technologies - Introduction.pptx
DOCX
The AUB Centre for AI in Media Proposal.docx
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PPTX
Spectroscopy.pptx food analysis technology
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Encapsulation theory and applications.pdf
PDF
KodekX | Application Modernization Development
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Approach and Philosophy of On baking technology
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Machine learning based COVID-19 study performance prediction
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PPTX
Cloud computing and distributed systems.
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
Spectral efficient network and resource selection model in 5G networks
Network Security Unit 5.pdf for BCA BBA.
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Empathic Computing: Creating Shared Understanding
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Big Data Technologies - Introduction.pptx
The AUB Centre for AI in Media Proposal.docx
Digital-Transformation-Roadmap-for-Companies.pptx
Spectroscopy.pptx food analysis technology
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Encapsulation theory and applications.pdf
KodekX | Application Modernization Development
Reach Out and Touch Someone: Haptics and Empathic Computing
Approach and Philosophy of On baking technology
MYSQL Presentation for SQL database connectivity
Machine learning based COVID-19 study performance prediction
Programs and apps: productivity, graphics, security and other tools
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Cloud computing and distributed systems.
The Rise and Fall of 3GPP – Time for a Sabbatical?

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

Editor's Notes

  • #7: Over 300 shards containing around 200K users each
  • #9: 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
  • #10: Types.User getUser(string authenticationToken) BusinessUserInfo : businessId, businessName, role, email AuthenticationResult currentTime, authenticationToken, expiration, user, PublicUserInfo, noteStoreUrl, webApiUrlPrefix, secondFactorRequired, secondFactorDeliveryHint
  • #12: 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
  • #15: Related context: different from a search, discovering content you forgot / didn’t know about
  • #17: First stab at a higher level of permission. Not a user’s data but the direct management of a business