SlideShare une entreprise Scribd logo
1  sur  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

Contenu connexe

Tendances

Confidential Computing in Azure - SlideShare Ed Dec 2022.pptx
Confidential Computing in Azure - SlideShare Ed Dec 2022.pptxConfidential Computing in Azure - SlideShare Ed Dec 2022.pptx
Confidential Computing in Azure - SlideShare Ed Dec 2022.pptxCarlo Sacchi
 
Optimizing Strategies to Stimulate Mobile VAS Usage and Maximize Operators’ R...
Optimizing Strategies to Stimulate Mobile VAS Usage and Maximize Operators’ R...Optimizing Strategies to Stimulate Mobile VAS Usage and Maximize Operators’ R...
Optimizing Strategies to Stimulate Mobile VAS Usage and Maximize Operators’ R...Ali Saghaeian
 
Distributed Systems for Blockchain using Cloud
Distributed  Systems for Blockchain  using CloudDistributed  Systems for Blockchain  using Cloud
Distributed Systems for Blockchain using CloudHridyesh Bisht
 
Online payment gateway provider
Online payment gateway providerOnline payment gateway provider
Online payment gateway providerPayment Gateways
 
BaaS-platforms and open APIs in fintech l bank-as-a-service.com
BaaS-platforms and open APIs in fintech l bank-as-a-service.comBaaS-platforms and open APIs in fintech l bank-as-a-service.com
BaaS-platforms and open APIs in fintech l bank-as-a-service.comVladislav Solodkiy
 
Payment gateway testing
Payment gateway testingPayment gateway testing
Payment gateway testingAtul Pant
 
CORE banking, a black box explained
CORE banking, a black box explainedCORE banking, a black box explained
CORE banking, a black box explainedGiorgio Giuliani
 
KYC optimization using Block chain Technology
KYC optimization using Block chain TechnologyKYC optimization using Block chain Technology
KYC optimization using Block chain TechnologyShobhita Jain
 
Open Banking - Opening the door to Digital Transformation
Open Banking - Opening the door to Digital Transformation Open Banking - Opening the door to Digital Transformation
Open Banking - Opening the door to Digital Transformation WSO2
 
Core banking and electronic clearance settlement system
Core banking and electronic clearance settlement systemCore banking and electronic clearance settlement system
Core banking and electronic clearance settlement systemRoy Thomas
 
Digital platform and mobile app for banks and credit unions
Digital platform and mobile app for banks and credit unionsDigital platform and mobile app for banks and credit unions
Digital platform and mobile app for banks and credit unionsMikhail Miroshnichenko
 
Seminar-Two Factor Authentication
Seminar-Two Factor AuthenticationSeminar-Two Factor Authentication
Seminar-Two Factor AuthenticationDilip Kr. Jangir
 
Gain Deep Visibility into APIs and Integrations with Anypoint Monitoring
Gain Deep Visibility into APIs and Integrations with Anypoint MonitoringGain Deep Visibility into APIs and Integrations with Anypoint Monitoring
Gain Deep Visibility into APIs and Integrations with Anypoint MonitoringInfluxData
 
Epayments system in India and globally iit project
Epayments system in India and globally iit project Epayments system in India and globally iit project
Epayments system in India and globally iit project abhiROCKS1103
 
IT Application Decommissioning - Application Retirement Services
IT Application Decommissioning - Application Retirement ServicesIT Application Decommissioning - Application Retirement Services
IT Application Decommissioning - Application Retirement ServicesAvenDATA
 
Click_Pay_Business_Plan
Click_Pay_Business_PlanClick_Pay_Business_Plan
Click_Pay_Business_PlanAmir Almas
 

Tendances (20)

Confidential Computing in Azure - SlideShare Ed Dec 2022.pptx
Confidential Computing in Azure - SlideShare Ed Dec 2022.pptxConfidential Computing in Azure - SlideShare Ed Dec 2022.pptx
Confidential Computing in Azure - SlideShare Ed Dec 2022.pptx
 
Optimizing Strategies to Stimulate Mobile VAS Usage and Maximize Operators’ R...
Optimizing Strategies to Stimulate Mobile VAS Usage and Maximize Operators’ R...Optimizing Strategies to Stimulate Mobile VAS Usage and Maximize Operators’ R...
Optimizing Strategies to Stimulate Mobile VAS Usage and Maximize Operators’ R...
 
Payment Gateway
Payment Gateway Payment Gateway
Payment Gateway
 
Distributed Systems for Blockchain using Cloud
Distributed  Systems for Blockchain  using CloudDistributed  Systems for Blockchain  using Cloud
Distributed Systems for Blockchain using Cloud
 
Online payment gateway provider
Online payment gateway providerOnline payment gateway provider
Online payment gateway provider
 
Mobile Wallet functions
Mobile Wallet functionsMobile Wallet functions
Mobile Wallet functions
 
BaaS-platforms and open APIs in fintech l bank-as-a-service.com
BaaS-platforms and open APIs in fintech l bank-as-a-service.comBaaS-platforms and open APIs in fintech l bank-as-a-service.com
BaaS-platforms and open APIs in fintech l bank-as-a-service.com
 
Payment gateway testing
Payment gateway testingPayment gateway testing
Payment gateway testing
 
CORE banking, a black box explained
CORE banking, a black box explainedCORE banking, a black box explained
CORE banking, a black box explained
 
KYC optimization using Block chain Technology
KYC optimization using Block chain TechnologyKYC optimization using Block chain Technology
KYC optimization using Block chain Technology
 
Open Banking - Opening the door to Digital Transformation
Open Banking - Opening the door to Digital Transformation Open Banking - Opening the door to Digital Transformation
Open Banking - Opening the door to Digital Transformation
 
Core banking and electronic clearance settlement system
Core banking and electronic clearance settlement systemCore banking and electronic clearance settlement system
Core banking and electronic clearance settlement system
 
Digital platform and mobile app for banks and credit unions
Digital platform and mobile app for banks and credit unionsDigital platform and mobile app for banks and credit unions
Digital platform and mobile app for banks and credit unions
 
Seminar-Two Factor Authentication
Seminar-Two Factor AuthenticationSeminar-Two Factor Authentication
Seminar-Two Factor Authentication
 
Gain Deep Visibility into APIs and Integrations with Anypoint Monitoring
Gain Deep Visibility into APIs and Integrations with Anypoint MonitoringGain Deep Visibility into APIs and Integrations with Anypoint Monitoring
Gain Deep Visibility into APIs and Integrations with Anypoint Monitoring
 
Epayments system in India and globally iit project
Epayments system in India and globally iit project Epayments system in India and globally iit project
Epayments system in India and globally iit project
 
Payment Gateway
Payment GatewayPayment Gateway
Payment Gateway
 
IBM Payments Gateway
IBM Payments GatewayIBM Payments Gateway
IBM Payments Gateway
 
IT Application Decommissioning - Application Retirement Services
IT Application Decommissioning - Application Retirement ServicesIT Application Decommissioning - Application Retirement Services
IT Application Decommissioning - Application Retirement Services
 
Click_Pay_Business_Plan
Click_Pay_Business_PlanClick_Pay_Business_Plan
Click_Pay_Business_Plan
 

Similaire à 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
 

Similaire à 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
 

Plus 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
 

Plus 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
 

Dernier

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
 
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
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
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.
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
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
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
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
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceanilsa9823
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 

Dernier (20)

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...
 
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
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
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 ...
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
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
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
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
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 

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

Notes de l'éditeur

  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