SlideShare uma empresa Scribd logo
1 de 29
Peter Vogel, Solutions Architect, Intuit Developer group
@IPPAlphaGeek
Building the next
generation of QuickBooks
app integrations
11/17/17
#QBConnect | WiFi: QBConnect Password not required
2
#QBConnect@IntuitDev
3rd-party developer using IDN & QuickBooks SDK
since 2001
Joined Intuit Developer team in 2002
Variety of roles at Intuit:
Developer Support Engineer
SDK Product Manager
Developer Support Manager
Group Product Manager for Dev Products
Founded Intuit Partner Platform
About today’s speaker
Peter Vogel
Solutions Architect
@IPPAlphaGeek
3
#QBConnect@IntuitDev
What is V4
Core V4 Principles
Central Concepts of V4
Brief Look: The Domain Models of V4
DEMO: V4 APIs via REST and QBO’s own interactions
Agenda
4
#QBConnect@IntuitDev
Not just a new API version:
V4 is a program to bootstrap the Intuit QuickBooks Platform
• Until V4, we’ve been a product with an API (and you have felt the pain daily)
• Until V4, QuickBooks Online used over 600 (steadily growing) single-purpose API endpoints for
itself (and we felt that pain daily)
• Neither V3 not QBO’s own organically developed API were maintainable “as is”
What is V4?
5
#QBConnect@IntuitDev
V4 is transformative
• For the first time in Intuit’s history, we’ll be “eating the same dog food” that we give to
you, our 3rd-party developers
• QuickBooks Online use cases drive a different way of thinking about the API
– Concepts don’t change
– How we expose those concepts changes
– It is possible to map V3 APIs to V4 equivalents and vice versa
• Our recently announced Turbo product is also V4-based. V4 goes beyond
QuickBooks, to all of Intuit.
What is V4?
6
#QBConnect@IntuitDev
To
• One API
• API as a Product & Orchestration
• API-based developer experience
• Developer experience w/ TTFHW < 5 min
• Isolated and encapsulated services
• Configuration-based variability
From
• Internal vs External API
• Offering/project-specific API
• Service-based developer experience
• Effort/time-consuming app development
• Monolithic applications
• Customization/connect-the-dots for variant
features
V4 Platform Vision
A coherent API realized by isolated and well-encapsulated services to enable developers
to build applications quickly and cost-effectively
7
#QBConnect@IntuitDev
API is a product! Developers are our customers
• API design is client-centric, not service-centric
• Any potential client, not just a single use case
• Deep documentation. Docs tell a story
Seek better abstraction within the domain language
• Common mistake: designing service resources that directly reflect implementation or DB model
• Better = Benefit to the user of the API, not necessarily higher order
• Example: Transactions and Links vs Deep type hierarchy and “helper objects” like “Undeposited Transaction”
Resources/Nouns over Verbs where appropriate
• Example: Send invoice as mutation of Invoice, not controller resource
• Don’t let RESTafarian idealism trump usability
Our internal principles for API design
8
#QBConnect@IntuitDev
V4 logical architecture
API GW/
PAS
V4 Service
(Contact)
V4 Service
(Ledger
Account)
V4 Service
(Invoice)
V4 Service
(Transactions)
Batch Protocol (AIP)
Mobile
Client
Web
Client
3rd-party
Apps
Graph, Batch, REST APIs
API GW: Routing, Throttling
PAS : Graph, Batch, REST APIs < Batch Protocol
V4 SDK V4 SDK V4 SDK V4 SDK
V4 Graph/API Definition
V4 Event Bus
Capability APIs
Experience APIs
V3/V4
Translation
GW
Central Concepts of V4
10
#QBConnect@IntuitDev
Problem:
• XML is fragile, fields not in the original schema cannot be added without potentially breaking apps.
• XML is bulky: every field name is repeated twice leading to shortening of field names in the API
• XML lacks expressiveness: how can you tell null from not present from blank?
• Still want a way to describe the scheme of the data to enable code generation.
Solution:
• JSON is relatively compact, well-understood, ”native” to browsers, supported by all major languages for wire-
>object and object->wire transformations, easy to read.
• New fields are absorbed easily by all major implementations of JSON.
• Null is different from ’ ‘ is different from not present.
• JSON Schema is an industry standard means of describing the “shape” of JSON data with YAML as an
excellent input source to code-generation tools.
JSON only
11
#QBConnect@IntuitDev
Problem:
As you move from region to region, or even preference to preference, business logic constraints for
what fields may or may not be enabled, required, etc., change. In V3 you had to query the Company
and Preferences object, read a bunch of documentation, connect the dots, and then make your best
guess as to what data was or want not required.
Solution:
Every object contains a “meta” version of itself with each field containing an object describing the
variability characteristics of that field in the real object. For example, required or not, enabled or not,
min/max lengths, etc.
Variability
12
#QBConnect@IntuitDev
Problem:
As you move from region to region, or even preference to preference, the data that QBO
populates into various transactions by default is not at all easy to determine and is driven by
QuickBooks business logic taking into account both region, user preferences and even
certain user selections (i.e. choosing a vendor in a bill form can fill the bill with the contents
of the previous bill from that vendor).
Users can choose to “memorize” transactions to stamp out a new one periodically
Solution:
Template objects (default being my personal favorite) that you can query to obtain a pre-
populated new transaction ready to be fleshed out and POSTed to create a new transaction!
Templates
13
#QBConnect@IntuitDev
Problem:
Small business is a very complex set of domains with many references to other types of data. This can lead to
excessively chatty clients following lots of references or creating/finding lots of objects and then referencing them.
For the UI to perform well, we should be able to get the data we need in a properly structured form with only the
data we need and nothing “extra,” even though that data is needed in other use-cases and other forms.
Solution:
Instead of defining “reference” types that hold a subset of information about an entity referenced by another entity
(e.g., the customer associated with an invoice), we simply define the field to be of the appropriate entity type:
invoice:
customer: $ref:/network/contact
…
This allows the entire contact to be returned as part of the invoice, not just the id and name. It also allows you
to express the intent to create the invoice and the customer in one shot!
Graphs, not references
14
#QBConnect@IntuitDev
Problem:
The QBO UI involves many complex interactions with thin slice of a very large graph. For a client (including the
QBO UI) to perform well, we should be able to get the data we need (but nothing we don’t need) in as few round-
trips as possible. Facebook’s GraphQL is ideal for this scenario.
At the same time, we want the API to be easily accessible and explorable, and to make the transition from V3 to
V4 an easy one.
Further, data is frequently “owned” by different masters in the small business space. For example, the existence
of a contact belongs to QBO’s Network (contacts) domain, but the fact that the contact is an employee and all the
data related to that contact’s employment belongs to the Payroll domain. Details about that contact as a customer
belong to QBO’s accounting domain.
Solution:
A combined service gateway and service orchestration layer that provides multiple projections of the underlying
domain services: REST, Batch, and GraphQL. Routing requests and portions of requests to the appropriate
providers in parallel and assembling the response appropriately.
Multiple projections
Brief Look:
The Domain Models of V4
Demo: V4 APIs via REST
and QBO’s own interactions
The QuickBooks Connect 2017 Conference App
The QuickBooks Community
qbcommunity.com
Sign in with your QuickBooks login
Access the presentations &
continue the conversation
Questions?
APPENDIX
21
#QBConnect@IntuitDev
Entity Browser Operations
Versioning
Relationships
Scalars
Relationships
22
#QBConnect@IntuitDev
GraphQL Type system
Samples
Types
23
#QBConnect@IntuitDev
Swagger
Query
25
#QBConnect@IntuitDev
•Prepared Query
•Simple Query
•Graph Query
•By Id
Query type
26
#QBConnect@IntuitDev
• Type : entity type being retrieved
• Name: Field names expected
• Order by
• Where :
• Simple expression (SE)
• LHS : property name
• Op: < > != in
• Args: array of arguments
• compound expression (CE)
• Op: (&& ||)
• Args: (list of SE or CE)
Query types: Prepared Query
27
#QBConnect@IntuitDev
Supports 3 projections
• Default projection
• SELECT FROM /transaction/invoice
• Returns all scalars & compositions
• Full projection
• SELECT * From /transaction/invoice
• Returns what default returns + id for all references.
• Custom Projection
• SELECT a, b, c, link.* from /transactions/invoice
• Returns exactly what was requested
• Preferred projection
Query types: Simple Query
28
#QBConnect@IntuitDev
{
"company": {
"ledgerAccounts": {
"edges": [
{
"node": {
balance
”invoices": {
"edges": [
{
"node": {
txnDate
amount
”contacts": {
displayName
}
}
}
]
}
}
}
]
}
}
}
Query types: GraphQL
29
#QBConnect@IntuitDev
• id: Global ID of the entity
[ { “id” : "djQuMToxOmRlNWQ3ZmNjMzE:1”}]
Query by Id

Mais conteúdo relacionado

Mais procurados

MATERI TIK SMP/MTs BAB 4 JARINGAN KOMPUTER DAN INTERNET
MATERI TIK SMP/MTs BAB 4 JARINGAN KOMPUTER DAN INTERNETMATERI TIK SMP/MTs BAB 4 JARINGAN KOMPUTER DAN INTERNET
MATERI TIK SMP/MTs BAB 4 JARINGAN KOMPUTER DAN INTERNETrezamardi
 
Power point mataram kuno ( kelas xi ipa 1)
Power point mataram kuno ( kelas xi ipa 1)Power point mataram kuno ( kelas xi ipa 1)
Power point mataram kuno ( kelas xi ipa 1)Purna Senda
 
Sejarah hindu di jawa tengah
Sejarah hindu di jawa tengahSejarah hindu di jawa tengah
Sejarah hindu di jawa tengahMade Yudha Giri
 
Pendekatan Scientific Learning
Pendekatan Scientific LearningPendekatan Scientific Learning
Pendekatan Scientific Learningtbpck
 
Pemilihan topik dan penulisan latar belakang
Pemilihan topik dan penulisan latar belakangPemilihan topik dan penulisan latar belakang
Pemilihan topik dan penulisan latar belakangHeriyanto
 
Rangkuman x semester ii
Rangkuman x semester iiRangkuman x semester ii
Rangkuman x semester iilisna nurmala
 
Belajar Komputer Dasar
Belajar Komputer DasarBelajar Komputer Dasar
Belajar Komputer DasarAhmad Syaikhu
 
Strategi Dakwah dan Perkembangan Islam di Sumatera
Strategi Dakwah dan Perkembangan Islam di SumateraStrategi Dakwah dan Perkembangan Islam di Sumatera
Strategi Dakwah dan Perkembangan Islam di SumateraSuci Indah Ricky Anjaya
 
Angket kemandirian belajar
Angket kemandirian belajarAngket kemandirian belajar
Angket kemandirian belajarencep suryana
 
25.Capaian Pembelajaran Informatika.pdf
25.Capaian Pembelajaran Informatika.pdf25.Capaian Pembelajaran Informatika.pdf
25.Capaian Pembelajaran Informatika.pdfTedkStembase
 
Makalah pengantar teknologi informatika
Makalah pengantar teknologi informatikaMakalah pengantar teknologi informatika
Makalah pengantar teknologi informatikaQueen Anaqi
 
Bahasa indonesia sd mi kelas 4. bab 3
Bahasa indonesia sd mi kelas 4. bab 3Bahasa indonesia sd mi kelas 4. bab 3
Bahasa indonesia sd mi kelas 4. bab 3fitriani2909
 
Penerapan teori bilangan pada kriptografi rsa
Penerapan teori bilangan pada kriptografi rsaPenerapan teori bilangan pada kriptografi rsa
Penerapan teori bilangan pada kriptografi rsanafis_apis
 

Mais procurados (20)

Materi awal masuknya islam di indonesia
Materi awal masuknya islam di indonesiaMateri awal masuknya islam di indonesia
Materi awal masuknya islam di indonesia
 
MATERI TIK SMP/MTs BAB 4 JARINGAN KOMPUTER DAN INTERNET
MATERI TIK SMP/MTs BAB 4 JARINGAN KOMPUTER DAN INTERNETMATERI TIK SMP/MTs BAB 4 JARINGAN KOMPUTER DAN INTERNET
MATERI TIK SMP/MTs BAB 4 JARINGAN KOMPUTER DAN INTERNET
 
Taksonomi bloom
Taksonomi bloomTaksonomi bloom
Taksonomi bloom
 
Power point mataram kuno ( kelas xi ipa 1)
Power point mataram kuno ( kelas xi ipa 1)Power point mataram kuno ( kelas xi ipa 1)
Power point mataram kuno ( kelas xi ipa 1)
 
Sejarah hindu di jawa tengah
Sejarah hindu di jawa tengahSejarah hindu di jawa tengah
Sejarah hindu di jawa tengah
 
Rangkuman Bab 8.pptx
Rangkuman Bab 8.pptxRangkuman Bab 8.pptx
Rangkuman Bab 8.pptx
 
Pendekatan Scientific Learning
Pendekatan Scientific LearningPendekatan Scientific Learning
Pendekatan Scientific Learning
 
Pemilihan topik dan penulisan latar belakang
Pemilihan topik dan penulisan latar belakangPemilihan topik dan penulisan latar belakang
Pemilihan topik dan penulisan latar belakang
 
Rangkuman x semester ii
Rangkuman x semester iiRangkuman x semester ii
Rangkuman x semester ii
 
Belajar Komputer Dasar
Belajar Komputer DasarBelajar Komputer Dasar
Belajar Komputer Dasar
 
Strategi Dakwah dan Perkembangan Islam di Sumatera
Strategi Dakwah dan Perkembangan Islam di SumateraStrategi Dakwah dan Perkembangan Islam di Sumatera
Strategi Dakwah dan Perkembangan Islam di Sumatera
 
Angket kemandirian belajar
Angket kemandirian belajarAngket kemandirian belajar
Angket kemandirian belajar
 
Power Point membuat email
Power Point membuat emailPower Point membuat email
Power Point membuat email
 
25.Capaian Pembelajaran Informatika.pdf
25.Capaian Pembelajaran Informatika.pdf25.Capaian Pembelajaran Informatika.pdf
25.Capaian Pembelajaran Informatika.pdf
 
Makalah pengantar teknologi informatika
Makalah pengantar teknologi informatikaMakalah pengantar teknologi informatika
Makalah pengantar teknologi informatika
 
Kd 3.16 4.16
Kd  3.16   4.16Kd  3.16   4.16
Kd 3.16 4.16
 
Bahasa indonesia sd mi kelas 4. bab 3
Bahasa indonesia sd mi kelas 4. bab 3Bahasa indonesia sd mi kelas 4. bab 3
Bahasa indonesia sd mi kelas 4. bab 3
 
Penerapan teori bilangan pada kriptografi rsa
Penerapan teori bilangan pada kriptografi rsaPenerapan teori bilangan pada kriptografi rsa
Penerapan teori bilangan pada kriptografi rsa
 
TES URAIAN
TES URAIANTES URAIAN
TES URAIAN
 
Komponen di dalam CPU
Komponen di dalam CPUKomponen di dalam CPU
Komponen di dalam CPU
 

Semelhante a Building the Next Generation of QuickBooks App Integrations, QuickBooks Connect 2017

Dynamic APIs: SOA Done Right
Dynamic APIs: SOA Done RightDynamic APIs: SOA Done Right
Dynamic APIs: SOA Done RightInside Analysis
 
CV_PurnimaBalla_WCS-Consultant_7Yrs
CV_PurnimaBalla_WCS-Consultant_7YrsCV_PurnimaBalla_WCS-Consultant_7Yrs
CV_PurnimaBalla_WCS-Consultant_7YrsPurnima Balla
 
SOA (Service Oriented Architecture)
SOA (Service Oriented Architecture)SOA (Service Oriented Architecture)
SOA (Service Oriented Architecture)Annie Comp
 
Cloud Native Patterns with Bluemix Developer Console
Cloud Native Patterns with Bluemix Developer ConsoleCloud Native Patterns with Bluemix Developer Console
Cloud Native Patterns with Bluemix Developer ConsoleMatthew Perrins
 
Nageswara Reddy Ambati
Nageswara Reddy AmbatiNageswara Reddy Ambati
Nageswara Reddy AmbatiAmbati Reddy
 
INTERFACE, by apidays - Lessons learned from implementing our custom ‘Big Da...
INTERFACE, by apidays  - Lessons learned from implementing our custom ‘Big Da...INTERFACE, by apidays  - Lessons learned from implementing our custom ‘Big Da...
INTERFACE, by apidays - Lessons learned from implementing our custom ‘Big Da...apidays
 
Build Business Web Applications with PHPOpenbiz Framework and Cubi Platform
Build Business Web Applications with PHPOpenbiz Framework and Cubi PlatformBuild Business Web Applications with PHPOpenbiz Framework and Cubi Platform
Build Business Web Applications with PHPOpenbiz Framework and Cubi PlatformAgus Suhartono
 
Keynote - The Benefits of an Open Service Oriented Architecture in the Enterpr...
Keynote - The Benefits of an Open Service Oriented Architecture in the Enterpr...Keynote - The Benefits of an Open Service Oriented Architecture in the Enterpr...
Keynote - The Benefits of an Open Service Oriented Architecture in the Enterpr...mfrancis
 
Mark Simpson - UKOUG23 - Refactoring Monolithic Oracle Database Applications ...
Mark Simpson - UKOUG23 - Refactoring Monolithic Oracle Database Applications ...Mark Simpson - UKOUG23 - Refactoring Monolithic Oracle Database Applications ...
Mark Simpson - UKOUG23 - Refactoring Monolithic Oracle Database Applications ...marksimpsongw
 
Aw (3) webinar serverless-fisher-rymer
Aw (3) webinar serverless-fisher-rymerAw (3) webinar serverless-fisher-rymer
Aw (3) webinar serverless-fisher-rymerVMware Tanzu
 
Portfolio
PortfolioPortfolio
Portfoliojeanux
 
API-first Integration for Microservices
API-first Integration for MicroservicesAPI-first Integration for Microservices
API-first Integration for MicroservicesWSO2
 
sunanda having 4.10 yrs of exp in .net and SQL
sunanda having 4.10 yrs of exp in .net and SQLsunanda having 4.10 yrs of exp in .net and SQL
sunanda having 4.10 yrs of exp in .net and SQLsunanda Sunanda1989
 

Semelhante a Building the Next Generation of QuickBooks App Integrations, QuickBooks Connect 2017 (20)

Dynamic APIs: SOA Done Right
Dynamic APIs: SOA Done RightDynamic APIs: SOA Done Right
Dynamic APIs: SOA Done Right
 
CV_PurnimaBalla_WCS-Consultant_7Yrs
CV_PurnimaBalla_WCS-Consultant_7YrsCV_PurnimaBalla_WCS-Consultant_7Yrs
CV_PurnimaBalla_WCS-Consultant_7Yrs
 
SOA (Service Oriented Architecture)
SOA (Service Oriented Architecture)SOA (Service Oriented Architecture)
SOA (Service Oriented Architecture)
 
Cloud Native Patterns with Bluemix Developer Console
Cloud Native Patterns with Bluemix Developer ConsoleCloud Native Patterns with Bluemix Developer Console
Cloud Native Patterns with Bluemix Developer Console
 
Nageswara Reddy Ambati
Nageswara Reddy AmbatiNageswara Reddy Ambati
Nageswara Reddy Ambati
 
INTERFACE, by apidays - Lessons learned from implementing our custom ‘Big Da...
INTERFACE, by apidays  - Lessons learned from implementing our custom ‘Big Da...INTERFACE, by apidays  - Lessons learned from implementing our custom ‘Big Da...
INTERFACE, by apidays - Lessons learned from implementing our custom ‘Big Da...
 
Build Business Web Applications with PHPOpenbiz Framework and Cubi Platform
Build Business Web Applications with PHPOpenbiz Framework and Cubi PlatformBuild Business Web Applications with PHPOpenbiz Framework and Cubi Platform
Build Business Web Applications with PHPOpenbiz Framework and Cubi Platform
 
Sambasiva Suresh Kumar (1)
Sambasiva Suresh Kumar (1)Sambasiva Suresh Kumar (1)
Sambasiva Suresh Kumar (1)
 
Keynote - The Benefits of an Open Service Oriented Architecture in the Enterpr...
Keynote - The Benefits of an Open Service Oriented Architecture in the Enterpr...Keynote - The Benefits of an Open Service Oriented Architecture in the Enterpr...
Keynote - The Benefits of an Open Service Oriented Architecture in the Enterpr...
 
Mark Simpson - UKOUG23 - Refactoring Monolithic Oracle Database Applications ...
Mark Simpson - UKOUG23 - Refactoring Monolithic Oracle Database Applications ...Mark Simpson - UKOUG23 - Refactoring Monolithic Oracle Database Applications ...
Mark Simpson - UKOUG23 - Refactoring Monolithic Oracle Database Applications ...
 
Oracle soa training
Oracle soa training Oracle soa training
Oracle soa training
 
PykQuery.js
PykQuery.jsPykQuery.js
PykQuery.js
 
Aw (3) webinar serverless-fisher-rymer
Aw (3) webinar serverless-fisher-rymerAw (3) webinar serverless-fisher-rymer
Aw (3) webinar serverless-fisher-rymer
 
UpwanGupta
UpwanGuptaUpwanGupta
UpwanGupta
 
Nazeer Resume
Nazeer ResumeNazeer Resume
Nazeer Resume
 
Soumitra_CV_9.4yrs_TIBCO
Soumitra_CV_9.4yrs_TIBCOSoumitra_CV_9.4yrs_TIBCO
Soumitra_CV_9.4yrs_TIBCO
 
Portfolio
PortfolioPortfolio
Portfolio
 
Nishant
NishantNishant
Nishant
 
API-first Integration for Microservices
API-first Integration for MicroservicesAPI-first Integration for Microservices
API-first Integration for Microservices
 
sunanda having 4.10 yrs of exp in .net and SQL
sunanda having 4.10 yrs of exp in .net and SQLsunanda having 4.10 yrs of exp in .net and SQL
sunanda having 4.10 yrs of exp in .net and SQL
 

Mais de Intuit Developer

Anatomy of a Quality App, QuickBooks Connect 2017
Anatomy of a Quality App, QuickBooks Connect 2017Anatomy of a Quality App, QuickBooks Connect 2017
Anatomy of a Quality App, QuickBooks Connect 2017Intuit Developer
 
The Momentum of QuickBooks Developers: the Road to Success, QuickBooks Connec...
The Momentum of QuickBooks Developers: the Road to Success, QuickBooks Connec...The Momentum of QuickBooks Developers: the Road to Success, QuickBooks Connec...
The Momentum of QuickBooks Developers: the Road to Success, QuickBooks Connec...Intuit Developer
 
From Idea to Published App, QuickBooks Connect 2017
From Idea to Published App, QuickBooks Connect 2017From Idea to Published App, QuickBooks Connect 2017
From Idea to Published App, QuickBooks Connect 2017Intuit Developer
 
Data Integrations that Delight! QuickBooks Connect San Jose 2017
Data Integrations that Delight! QuickBooks Connect San Jose 2017Data Integrations that Delight! QuickBooks Connect San Jose 2017
Data Integrations that Delight! QuickBooks Connect San Jose 2017Intuit Developer
 
50 Niche Apps in 50 Minutes
50 Niche Apps in 50 Minutes50 Niche Apps in 50 Minutes
50 Niche Apps in 50 MinutesIntuit Developer
 
VIP Developer Day Kick Off - QuickBooks Connect Sydney 2017
VIP Developer Day Kick Off - QuickBooks Connect Sydney 2017VIP Developer Day Kick Off - QuickBooks Connect Sydney 2017
VIP Developer Day Kick Off - QuickBooks Connect Sydney 2017Intuit Developer
 
Developer Day Tech Session at QuickBooks Connect Sydney 2017
Developer Day Tech Session at QuickBooks Connect Sydney 2017Developer Day Tech Session at QuickBooks Connect Sydney 2017
Developer Day Tech Session at QuickBooks Connect Sydney 2017Intuit Developer
 
QuickBooks Connect 2016 - How small business can benefit from developer innov...
QuickBooks Connect 2016 - How small business can benefit from developer innov...QuickBooks Connect 2016 - How small business can benefit from developer innov...
QuickBooks Connect 2016 - How small business can benefit from developer innov...Intuit Developer
 
QuickBooks Connect 2016 - Building your first QuickBooks App integration
QuickBooks Connect 2016 - Building your first QuickBooks App integrationQuickBooks Connect 2016 - Building your first QuickBooks App integration
QuickBooks Connect 2016 - Building your first QuickBooks App integrationIntuit Developer
 
QuickBooks Connect 2016 - Using WebHooks to handle data changes in your app
QuickBooks Connect 2016 - Using WebHooks to handle data changes in your appQuickBooks Connect 2016 - Using WebHooks to handle data changes in your app
QuickBooks Connect 2016 - Using WebHooks to handle data changes in your appIntuit Developer
 
QuickBooks Connect 2016 - The 12 golden rules for building products that cust...
QuickBooks Connect 2016 - The 12 golden rules for building products that cust...QuickBooks Connect 2016 - The 12 golden rules for building products that cust...
QuickBooks Connect 2016 - The 12 golden rules for building products that cust...Intuit Developer
 
QuickBooks Connect 2016 - Marketing your app: learn from your developer peers
QuickBooks Connect 2016 - Marketing your app: learn from your developer peersQuickBooks Connect 2016 - Marketing your app: learn from your developer peers
QuickBooks Connect 2016 - Marketing your app: learn from your developer peersIntuit Developer
 
QuickBooks Connect 2016 - Implementing analytic and optimization tools on you...
QuickBooks Connect 2016 - Implementing analytic and optimization tools on you...QuickBooks Connect 2016 - Implementing analytic and optimization tools on you...
QuickBooks Connect 2016 - Implementing analytic and optimization tools on you...Intuit Developer
 
QuickBooks Connect 2016 - Designing for mobile
QuickBooks Connect 2016 - Designing for mobileQuickBooks Connect 2016 - Designing for mobile
QuickBooks Connect 2016 - Designing for mobileIntuit Developer
 
QuickBooks Connect 2016 - Building a global app: understanding the Global Tax...
QuickBooks Connect 2016 - Building a global app: understanding the Global Tax...QuickBooks Connect 2016 - Building a global app: understanding the Global Tax...
QuickBooks Connect 2016 - Building a global app: understanding the Global Tax...Intuit Developer
 
What Lawyers Can Learn From Accountants and their Journey to the Cloud
What Lawyers Can Learn From Accountants and their Journey to the CloudWhat Lawyers Can Learn From Accountants and their Journey to the Cloud
What Lawyers Can Learn From Accountants and their Journey to the CloudIntuit Developer
 
Deep Dive on the QuickBooks Online API and Intuit Developer Platform
Deep Dive on the QuickBooks Online API and Intuit Developer PlatformDeep Dive on the QuickBooks Online API and Intuit Developer Platform
Deep Dive on the QuickBooks Online API and Intuit Developer PlatformIntuit Developer
 
OAuth for QuickBooks Online REST Services
OAuth for QuickBooks Online REST ServicesOAuth for QuickBooks Online REST Services
OAuth for QuickBooks Online REST ServicesIntuit Developer
 
“Build it and They Will Come” May Not Work: Investing Early in Developer Success
“Build it and They Will Come” May Not Work: Investing Early in Developer Success“Build it and They Will Come” May Not Work: Investing Early in Developer Success
“Build it and They Will Come” May Not Work: Investing Early in Developer SuccessIntuit Developer
 
QuickBooks Connect 2015: Hackathon Kickoff
QuickBooks Connect 2015: Hackathon KickoffQuickBooks Connect 2015: Hackathon Kickoff
QuickBooks Connect 2015: Hackathon KickoffIntuit Developer
 

Mais de Intuit Developer (20)

Anatomy of a Quality App, QuickBooks Connect 2017
Anatomy of a Quality App, QuickBooks Connect 2017Anatomy of a Quality App, QuickBooks Connect 2017
Anatomy of a Quality App, QuickBooks Connect 2017
 
The Momentum of QuickBooks Developers: the Road to Success, QuickBooks Connec...
The Momentum of QuickBooks Developers: the Road to Success, QuickBooks Connec...The Momentum of QuickBooks Developers: the Road to Success, QuickBooks Connec...
The Momentum of QuickBooks Developers: the Road to Success, QuickBooks Connec...
 
From Idea to Published App, QuickBooks Connect 2017
From Idea to Published App, QuickBooks Connect 2017From Idea to Published App, QuickBooks Connect 2017
From Idea to Published App, QuickBooks Connect 2017
 
Data Integrations that Delight! QuickBooks Connect San Jose 2017
Data Integrations that Delight! QuickBooks Connect San Jose 2017Data Integrations that Delight! QuickBooks Connect San Jose 2017
Data Integrations that Delight! QuickBooks Connect San Jose 2017
 
50 Niche Apps in 50 Minutes
50 Niche Apps in 50 Minutes50 Niche Apps in 50 Minutes
50 Niche Apps in 50 Minutes
 
VIP Developer Day Kick Off - QuickBooks Connect Sydney 2017
VIP Developer Day Kick Off - QuickBooks Connect Sydney 2017VIP Developer Day Kick Off - QuickBooks Connect Sydney 2017
VIP Developer Day Kick Off - QuickBooks Connect Sydney 2017
 
Developer Day Tech Session at QuickBooks Connect Sydney 2017
Developer Day Tech Session at QuickBooks Connect Sydney 2017Developer Day Tech Session at QuickBooks Connect Sydney 2017
Developer Day Tech Session at QuickBooks Connect Sydney 2017
 
QuickBooks Connect 2016 - How small business can benefit from developer innov...
QuickBooks Connect 2016 - How small business can benefit from developer innov...QuickBooks Connect 2016 - How small business can benefit from developer innov...
QuickBooks Connect 2016 - How small business can benefit from developer innov...
 
QuickBooks Connect 2016 - Building your first QuickBooks App integration
QuickBooks Connect 2016 - Building your first QuickBooks App integrationQuickBooks Connect 2016 - Building your first QuickBooks App integration
QuickBooks Connect 2016 - Building your first QuickBooks App integration
 
QuickBooks Connect 2016 - Using WebHooks to handle data changes in your app
QuickBooks Connect 2016 - Using WebHooks to handle data changes in your appQuickBooks Connect 2016 - Using WebHooks to handle data changes in your app
QuickBooks Connect 2016 - Using WebHooks to handle data changes in your app
 
QuickBooks Connect 2016 - The 12 golden rules for building products that cust...
QuickBooks Connect 2016 - The 12 golden rules for building products that cust...QuickBooks Connect 2016 - The 12 golden rules for building products that cust...
QuickBooks Connect 2016 - The 12 golden rules for building products that cust...
 
QuickBooks Connect 2016 - Marketing your app: learn from your developer peers
QuickBooks Connect 2016 - Marketing your app: learn from your developer peersQuickBooks Connect 2016 - Marketing your app: learn from your developer peers
QuickBooks Connect 2016 - Marketing your app: learn from your developer peers
 
QuickBooks Connect 2016 - Implementing analytic and optimization tools on you...
QuickBooks Connect 2016 - Implementing analytic and optimization tools on you...QuickBooks Connect 2016 - Implementing analytic and optimization tools on you...
QuickBooks Connect 2016 - Implementing analytic and optimization tools on you...
 
QuickBooks Connect 2016 - Designing for mobile
QuickBooks Connect 2016 - Designing for mobileQuickBooks Connect 2016 - Designing for mobile
QuickBooks Connect 2016 - Designing for mobile
 
QuickBooks Connect 2016 - Building a global app: understanding the Global Tax...
QuickBooks Connect 2016 - Building a global app: understanding the Global Tax...QuickBooks Connect 2016 - Building a global app: understanding the Global Tax...
QuickBooks Connect 2016 - Building a global app: understanding the Global Tax...
 
What Lawyers Can Learn From Accountants and their Journey to the Cloud
What Lawyers Can Learn From Accountants and their Journey to the CloudWhat Lawyers Can Learn From Accountants and their Journey to the Cloud
What Lawyers Can Learn From Accountants and their Journey to the Cloud
 
Deep Dive on the QuickBooks Online API and Intuit Developer Platform
Deep Dive on the QuickBooks Online API and Intuit Developer PlatformDeep Dive on the QuickBooks Online API and Intuit Developer Platform
Deep Dive on the QuickBooks Online API and Intuit Developer Platform
 
OAuth for QuickBooks Online REST Services
OAuth for QuickBooks Online REST ServicesOAuth for QuickBooks Online REST Services
OAuth for QuickBooks Online REST Services
 
“Build it and They Will Come” May Not Work: Investing Early in Developer Success
“Build it and They Will Come” May Not Work: Investing Early in Developer Success“Build it and They Will Come” May Not Work: Investing Early in Developer Success
“Build it and They Will Come” May Not Work: Investing Early in Developer Success
 
QuickBooks Connect 2015: Hackathon Kickoff
QuickBooks Connect 2015: Hackathon KickoffQuickBooks Connect 2015: Hackathon Kickoff
QuickBooks Connect 2015: Hackathon Kickoff
 

Último

TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)Intelisync
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptkotipi9215
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyFrank van der Linden
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationkaushalgiri8080
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfkalichargn70th171
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 

Último (20)

TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The Ugly
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanation
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 

Building the Next Generation of QuickBooks App Integrations, QuickBooks Connect 2017

  • 1. Peter Vogel, Solutions Architect, Intuit Developer group @IPPAlphaGeek Building the next generation of QuickBooks app integrations 11/17/17 #QBConnect | WiFi: QBConnect Password not required
  • 2. 2 #QBConnect@IntuitDev 3rd-party developer using IDN & QuickBooks SDK since 2001 Joined Intuit Developer team in 2002 Variety of roles at Intuit: Developer Support Engineer SDK Product Manager Developer Support Manager Group Product Manager for Dev Products Founded Intuit Partner Platform About today’s speaker Peter Vogel Solutions Architect @IPPAlphaGeek
  • 3. 3 #QBConnect@IntuitDev What is V4 Core V4 Principles Central Concepts of V4 Brief Look: The Domain Models of V4 DEMO: V4 APIs via REST and QBO’s own interactions Agenda
  • 4. 4 #QBConnect@IntuitDev Not just a new API version: V4 is a program to bootstrap the Intuit QuickBooks Platform • Until V4, we’ve been a product with an API (and you have felt the pain daily) • Until V4, QuickBooks Online used over 600 (steadily growing) single-purpose API endpoints for itself (and we felt that pain daily) • Neither V3 not QBO’s own organically developed API were maintainable “as is” What is V4?
  • 5. 5 #QBConnect@IntuitDev V4 is transformative • For the first time in Intuit’s history, we’ll be “eating the same dog food” that we give to you, our 3rd-party developers • QuickBooks Online use cases drive a different way of thinking about the API – Concepts don’t change – How we expose those concepts changes – It is possible to map V3 APIs to V4 equivalents and vice versa • Our recently announced Turbo product is also V4-based. V4 goes beyond QuickBooks, to all of Intuit. What is V4?
  • 6. 6 #QBConnect@IntuitDev To • One API • API as a Product & Orchestration • API-based developer experience • Developer experience w/ TTFHW < 5 min • Isolated and encapsulated services • Configuration-based variability From • Internal vs External API • Offering/project-specific API • Service-based developer experience • Effort/time-consuming app development • Monolithic applications • Customization/connect-the-dots for variant features V4 Platform Vision A coherent API realized by isolated and well-encapsulated services to enable developers to build applications quickly and cost-effectively
  • 7. 7 #QBConnect@IntuitDev API is a product! Developers are our customers • API design is client-centric, not service-centric • Any potential client, not just a single use case • Deep documentation. Docs tell a story Seek better abstraction within the domain language • Common mistake: designing service resources that directly reflect implementation or DB model • Better = Benefit to the user of the API, not necessarily higher order • Example: Transactions and Links vs Deep type hierarchy and “helper objects” like “Undeposited Transaction” Resources/Nouns over Verbs where appropriate • Example: Send invoice as mutation of Invoice, not controller resource • Don’t let RESTafarian idealism trump usability Our internal principles for API design
  • 8. 8 #QBConnect@IntuitDev V4 logical architecture API GW/ PAS V4 Service (Contact) V4 Service (Ledger Account) V4 Service (Invoice) V4 Service (Transactions) Batch Protocol (AIP) Mobile Client Web Client 3rd-party Apps Graph, Batch, REST APIs API GW: Routing, Throttling PAS : Graph, Batch, REST APIs < Batch Protocol V4 SDK V4 SDK V4 SDK V4 SDK V4 Graph/API Definition V4 Event Bus Capability APIs Experience APIs V3/V4 Translation GW
  • 10. 10 #QBConnect@IntuitDev Problem: • XML is fragile, fields not in the original schema cannot be added without potentially breaking apps. • XML is bulky: every field name is repeated twice leading to shortening of field names in the API • XML lacks expressiveness: how can you tell null from not present from blank? • Still want a way to describe the scheme of the data to enable code generation. Solution: • JSON is relatively compact, well-understood, ”native” to browsers, supported by all major languages for wire- >object and object->wire transformations, easy to read. • New fields are absorbed easily by all major implementations of JSON. • Null is different from ’ ‘ is different from not present. • JSON Schema is an industry standard means of describing the “shape” of JSON data with YAML as an excellent input source to code-generation tools. JSON only
  • 11. 11 #QBConnect@IntuitDev Problem: As you move from region to region, or even preference to preference, business logic constraints for what fields may or may not be enabled, required, etc., change. In V3 you had to query the Company and Preferences object, read a bunch of documentation, connect the dots, and then make your best guess as to what data was or want not required. Solution: Every object contains a “meta” version of itself with each field containing an object describing the variability characteristics of that field in the real object. For example, required or not, enabled or not, min/max lengths, etc. Variability
  • 12. 12 #QBConnect@IntuitDev Problem: As you move from region to region, or even preference to preference, the data that QBO populates into various transactions by default is not at all easy to determine and is driven by QuickBooks business logic taking into account both region, user preferences and even certain user selections (i.e. choosing a vendor in a bill form can fill the bill with the contents of the previous bill from that vendor). Users can choose to “memorize” transactions to stamp out a new one periodically Solution: Template objects (default being my personal favorite) that you can query to obtain a pre- populated new transaction ready to be fleshed out and POSTed to create a new transaction! Templates
  • 13. 13 #QBConnect@IntuitDev Problem: Small business is a very complex set of domains with many references to other types of data. This can lead to excessively chatty clients following lots of references or creating/finding lots of objects and then referencing them. For the UI to perform well, we should be able to get the data we need in a properly structured form with only the data we need and nothing “extra,” even though that data is needed in other use-cases and other forms. Solution: Instead of defining “reference” types that hold a subset of information about an entity referenced by another entity (e.g., the customer associated with an invoice), we simply define the field to be of the appropriate entity type: invoice: customer: $ref:/network/contact … This allows the entire contact to be returned as part of the invoice, not just the id and name. It also allows you to express the intent to create the invoice and the customer in one shot! Graphs, not references
  • 14. 14 #QBConnect@IntuitDev Problem: The QBO UI involves many complex interactions with thin slice of a very large graph. For a client (including the QBO UI) to perform well, we should be able to get the data we need (but nothing we don’t need) in as few round- trips as possible. Facebook’s GraphQL is ideal for this scenario. At the same time, we want the API to be easily accessible and explorable, and to make the transition from V3 to V4 an easy one. Further, data is frequently “owned” by different masters in the small business space. For example, the existence of a contact belongs to QBO’s Network (contacts) domain, but the fact that the contact is an employee and all the data related to that contact’s employment belongs to the Payroll domain. Details about that contact as a customer belong to QBO’s accounting domain. Solution: A combined service gateway and service orchestration layer that provides multiple projections of the underlying domain services: REST, Batch, and GraphQL. Routing requests and portions of requests to the appropriate providers in parallel and assembling the response appropriately. Multiple projections
  • 15. Brief Look: The Domain Models of V4
  • 16. Demo: V4 APIs via REST and QBO’s own interactions
  • 17. The QuickBooks Connect 2017 Conference App The QuickBooks Community qbcommunity.com Sign in with your QuickBooks login Access the presentations & continue the conversation
  • 19.
  • 24. Query
  • 26. 26 #QBConnect@IntuitDev • Type : entity type being retrieved • Name: Field names expected • Order by • Where : • Simple expression (SE) • LHS : property name • Op: < > != in • Args: array of arguments • compound expression (CE) • Op: (&& ||) • Args: (list of SE or CE) Query types: Prepared Query
  • 27. 27 #QBConnect@IntuitDev Supports 3 projections • Default projection • SELECT FROM /transaction/invoice • Returns all scalars & compositions • Full projection • SELECT * From /transaction/invoice • Returns what default returns + id for all references. • Custom Projection • SELECT a, b, c, link.* from /transactions/invoice • Returns exactly what was requested • Preferred projection Query types: Simple Query
  • 28. 28 #QBConnect@IntuitDev { "company": { "ledgerAccounts": { "edges": [ { "node": { balance ”invoices": { "edges": [ { "node": { txnDate amount ”contacts": { displayName } } } ] } } } ] } } } Query types: GraphQL
  • 29. 29 #QBConnect@IntuitDev • id: Global ID of the entity [ { “id” : "djQuMToxOmRlNWQ3ZmNjMzE:1”}] Query by Id

Notas do Editor

  1. AIP – Abstract Interaction Protocol
  2. Schema.intuit.com Start with /network/Contact – show composition vs. inheritance, just contact, not Customer, Vendor, employee, etc. Note new stuff there: Client, User, etc. Continue to /Inventory/Item – again, composition vs. inheritance “traits” concept. No Inventory/Non-Inventory/Service/Bundle item types, but one Item with different traits. Touch on Payroll CompensationItem, etc.? Finish with /transactions/Transaction, Line and Links – traits concept goes all the way: ex: invoice and bill both carry a balance and have a person to whom the stuff or payment should be delivered, hence both have balanceTrait and deliveryTrait, etc. Links: universal way of linking transactions to each other and to specific lines within each other. Lines: Again, no inheritance, just traits. NB: USE CLEANED UP VERSION OF SCHEMA
  3. Benefits Single source of truth Code-Gen -> Simple POJOs & GraphQL Type system Express Access Validations
  4. Benefits Single source of truth Code-Gen -> Simple POJOs & GraphQL Type system Express Access Validations
  5. As soon as the schema is defined you can immediately query There is a mock server that provides for loaded schema This is a great model tool to as you are designing your domain
  6. AST Providers speak this language Think of it like a database query Based format for all communication between providers Provides abstraction from any language
  7. Un parsed database query Here for backwards computability reasons (supported by V3 also) Can be embedded in any of the projections Provides a short cut
  8. *Returns exactly what you requested *Type system available to build queries *Used by facebook & many other companies to build experiences *
  9. Simplest form of Query