SlideShare ist ein Scribd-Unternehmen 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

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

Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Peter Udo Diehl
 
Structuring Teams and Portfolios for Success
Structuring Teams and Portfolios for SuccessStructuring Teams and Portfolios for Success
Structuring Teams and Portfolios for Success
UXDXConf
 

Kürzlich hochgeladen (20)

Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
 
Speed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in MinutesSpeed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in Minutes
 
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone KomSalesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
 
Strategic AI Integration in Engineering Teams
Strategic AI Integration in Engineering TeamsStrategic AI Integration in Engineering Teams
Strategic AI Integration in Engineering Teams
 
Demystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John StaveleyDemystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John Staveley
 
What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024
 
Syngulon - Selection technology May 2024.pdf
Syngulon - Selection technology May 2024.pdfSyngulon - Selection technology May 2024.pdf
Syngulon - Selection technology May 2024.pdf
 
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxUnpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
 
Buy Epson EcoTank L3210 Colour Printer Online.pdf
Buy Epson EcoTank L3210 Colour Printer Online.pdfBuy Epson EcoTank L3210 Colour Printer Online.pdf
Buy Epson EcoTank L3210 Colour Printer Online.pdf
 
Connecting the Dots in Product Design at KAYAK
Connecting the Dots in Product Design at KAYAKConnecting the Dots in Product Design at KAYAK
Connecting the Dots in Product Design at KAYAK
 
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
 
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdfHow Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
 
IESVE for Early Stage Design and Planning
IESVE for Early Stage Design and PlanningIESVE for Early Stage Design and Planning
IESVE for Early Stage Design and Planning
 
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
 
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
 
Optimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through ObservabilityOptimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through Observability
 
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
 
10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka Doktorová10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka Doktorová
 
Structuring Teams and Portfolios for Success
Structuring Teams and Portfolios for SuccessStructuring Teams and Portfolios for Success
Structuring Teams and Portfolios for Success
 
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi IbrahimzadeFree and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
 

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