SlideShare una empresa de Scribd logo
1 de 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

Más contenido relacionado

Destacado

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 Stacey Harmon
 
State of the Evernote Platform
State of the Evernote PlatformState of the Evernote Platform
State of the Evernote PlatformChris Traganos
 
VMware Integrated OpenStack 2.0
VMware Integrated OpenStack 2.0VMware Integrated OpenStack 2.0
VMware Integrated OpenStack 2.0Erik Bussink
 
PulsoConf: Platform & Community - Dev Outreach @ Evernote
PulsoConf: Platform & Community - Dev Outreach @ EvernotePulsoConf: Platform & Community - Dev Outreach @ Evernote
PulsoConf: Platform & Community - Dev Outreach @ EvernoteChris Traganos
 
Using Evernote to Remember Everything
Using Evernote to Remember EverythingUsing Evernote to Remember Everything
Using Evernote to Remember EverythingCrystal Paradis
 
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 EasierCrystal Paradis
 
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
 
Vagrant + Docker provider [+Puppet]
Vagrant + Docker provider [+Puppet]Vagrant + Docker provider [+Puppet]
Vagrant + Docker provider [+Puppet]Nicolas Poggi
 

Destacado (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
 

Similar a Evernote Business API workshop

Ane for 9ria_cn
Ane for 9ria_cnAne for 9ria_cn
Ane for 9ria_cnsonicxs
 
EverNote iOS SDK introduction & practices
EverNote iOS SDK introduction & practices EverNote iOS SDK introduction & practices
EverNote iOS SDK introduction & practices MaoYang Chien
 
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 togetherJana Moudrá
 
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[Klaus Hofeditz
 
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, EverFastly
 
Introduzione alla SEO Automation con Python
Introduzione alla SEO Automation con PythonIntroduzione alla SEO Automation con Python
Introduzione alla SEO Automation con PythonAndrea Baggio
 
Ektron CMS400 8.02
Ektron CMS400 8.02Ektron CMS400 8.02
Ektron CMS400 8.02Alpesh Patel
 
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.xUlrich Krause
 
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 FunctionsMassimo Bonanni
 
Building Cloud Castles
Building Cloud CastlesBuilding Cloud Castles
Building Cloud CastlesBen Scofield
 
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.pptxGoogleDeveloperStude22
 
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 2015Windows Developer
 
Exchange 2010 Web Services
Exchange 2010 Web ServicesExchange 2010 Web Services
Exchange 2010 Web ServicesEduardo Castro
 
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 FinlandMaarten Balliauw
 
Lean Php Presentation
Lean Php PresentationLean Php Presentation
Lean Php PresentationAlan Pinstein
 
Going open source with small teams
Going open source with small teamsGoing open source with small teams
Going open source with small teamsJamie Thomas
 

Similar a 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
 

Último

Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Victor Rentea
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
How to Check CNIC Information Online with Pakdata cf
How to Check CNIC Information Online with Pakdata cfHow to Check CNIC Information Online with Pakdata cf
How to Check CNIC Information Online with Pakdata cfdanishmna97
 
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptxHarnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptxFIDO Alliance
 
Tales from a Passkey Provider Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider  Progress from Awareness to Implementation.pptxTales from a Passkey Provider  Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider Progress from Awareness to Implementation.pptxFIDO Alliance
 
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 FMESafe Software
 
Stronger Together: Developing an Organizational Strategy for Accessible Desig...
Stronger Together: Developing an Organizational Strategy for Accessible Desig...Stronger Together: Developing an Organizational Strategy for Accessible Desig...
Stronger Together: Developing an Organizational Strategy for Accessible Desig...caitlingebhard1
 
Less Is More: Utilizing Ballerina to Architect a Cloud Data Platform
Less Is More: Utilizing Ballerina to Architect a Cloud Data PlatformLess Is More: Utilizing Ballerina to Architect a Cloud Data Platform
Less Is More: Utilizing Ballerina to Architect a Cloud Data PlatformWSO2
 
ERP Contender Series: Acumatica vs. Sage Intacct
ERP Contender Series: Acumatica vs. Sage IntacctERP Contender Series: Acumatica vs. Sage Intacct
ERP Contender Series: Acumatica vs. Sage IntacctBrainSell Technologies
 
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on ThanabotsContinuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on ThanabotsLeah Henrickson
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
UiPath manufacturing technology benefits and AI overview
UiPath manufacturing technology benefits and AI overviewUiPath manufacturing technology benefits and AI overview
UiPath manufacturing technology benefits and AI overviewDianaGray10
 
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 DevelopersWSO2
 
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...WSO2
 
Decarbonising Commercial Real Estate: The Role of Operational Performance
Decarbonising Commercial Real Estate: The Role of Operational PerformanceDecarbonising Commercial Real Estate: The Role of Operational Performance
Decarbonising Commercial Real Estate: The Role of Operational PerformanceIES VE
 
The Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and InsightThe Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and InsightSafe Software
 
JohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptxJohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptxJohnPollard37
 
AI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAnitaRaj43
 
Event-Driven Architecture Masterclass: Challenges in Stream Processing
Event-Driven Architecture Masterclass: Challenges in Stream ProcessingEvent-Driven Architecture Masterclass: Challenges in Stream Processing
Event-Driven Architecture Masterclass: Challenges in Stream ProcessingScyllaDB
 

Último (20)

Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
How to Check CNIC Information Online with Pakdata cf
How to Check CNIC Information Online with Pakdata cfHow to Check CNIC Information Online with Pakdata cf
How to Check CNIC Information Online with Pakdata cf
 
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptxHarnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
 
Tales from a Passkey Provider Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider  Progress from Awareness to Implementation.pptxTales from a Passkey Provider  Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider Progress from Awareness to Implementation.pptx
 
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
 
Stronger Together: Developing an Organizational Strategy for Accessible Desig...
Stronger Together: Developing an Organizational Strategy for Accessible Desig...Stronger Together: Developing an Organizational Strategy for Accessible Desig...
Stronger Together: Developing an Organizational Strategy for Accessible Desig...
 
Less Is More: Utilizing Ballerina to Architect a Cloud Data Platform
Less Is More: Utilizing Ballerina to Architect a Cloud Data PlatformLess Is More: Utilizing Ballerina to Architect a Cloud Data Platform
Less Is More: Utilizing Ballerina to Architect a Cloud Data Platform
 
ERP Contender Series: Acumatica vs. Sage Intacct
ERP Contender Series: Acumatica vs. Sage IntacctERP Contender Series: Acumatica vs. Sage Intacct
ERP Contender Series: Acumatica vs. Sage Intacct
 
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on ThanabotsContinuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
UiPath manufacturing technology benefits and AI overview
UiPath manufacturing technology benefits and AI overviewUiPath manufacturing technology benefits and AI overview
UiPath manufacturing technology benefits and AI overview
 
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
 
Overview of Hyperledger Foundation
Overview of Hyperledger FoundationOverview of Hyperledger Foundation
Overview of Hyperledger Foundation
 
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
 
Decarbonising Commercial Real Estate: The Role of Operational Performance
Decarbonising Commercial Real Estate: The Role of Operational PerformanceDecarbonising Commercial Real Estate: The Role of Operational Performance
Decarbonising Commercial Real Estate: The Role of Operational Performance
 
The Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and InsightThe Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and Insight
 
JohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptxJohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptx
 
AI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by Anitaraj
 
Event-Driven Architecture Masterclass: Challenges in Stream Processing
Event-Driven Architecture Masterclass: Challenges in Stream ProcessingEvent-Driven Architecture Masterclass: Challenges in Stream Processing
Event-Driven Architecture Masterclass: Challenges in Stream Processing
 

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

Notas del editor

  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