{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-getting-started/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["admonition"]},"type":"markdown"},"seo":{"title":"Integration models"},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"integration-models","__idx":0},"children":["Integration models"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Every integration falls into one of two models: ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Partner"]}," or ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Client"]},". Which one applies to you decides the agreements you sign, the authorisation flow you use, how you handle tokens, and how long it takes to reach production. Work this out before you do anything else."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"the-two-models","__idx":1},"children":["The two models"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":""},"children":[]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Client"},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Client"]}]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Partner"},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Partner"]}]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Who you are"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["An existing customer"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["A technology or solution provider"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Whose data you access"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Your own"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Data belonging to your customers, who are also our customers"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["How access is granted"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["By agreement, once"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["By each customer, individually"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Credentials serve"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["One business"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Many businesses"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Agreement required"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Service agreement"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Partner Agreement"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Security assessment"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Not required"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Required"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Production readiness review"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Not required"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Required"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Typical time to production"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Short"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Longer — allow for review and assessment"]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"what-determines-your-model","__idx":2},"children":["What determines your model"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The distinction is not about who writes the code. It is about how many businesses a single set of API credentials is used to access."]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["One business — you are a Client."]}," You are pulling your own data out of a product you already use."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["More than one business — you are a Partner."]}," You are building something that serves multiple customers, each of whom must authorise your application against their own data."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This holds regardless of who does the building. If you engage a contractor or a development agency to build an integration against your own data, the credentials still serve only your business, and you are still a Client. The contractor is building on your behalf."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Consider where you are heading, not just where you are today."]}," If you are building software you intend to sell to more than one business, start as a Partner — even if you only have one customer right now. Starting as a Client and converting later means redoing your authorisation and token handling, and going through Partner onboarding anyway."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"which-are-you","__idx":3},"children":["Which are you?"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["You are a Client if:"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["You are an existing customer and you want programmatic access to your own data."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["You want to move data between our product and your own internal systems."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["You have engaged a contractor to build an integration for your business only."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["You are a Partner if:"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["You are building an application that your customers will connect to their own accounts."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Your product integrates with ours as a feature for mutual customers."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["You intend to offer the same integration to more than one business."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"why-the-partner-path-asks-for-more","__idx":4},"children":["Why the Partner path asks for more"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Everything the Partner path requires follows from one fact: the data is not yours."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Because each business owns its own data, each business must individually authorise your application before you can access it. That consent is what makes the model work, and it drives the rest:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Consent per customer."]}," A user at each business grants your application access, and can revoke it later."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Tokens per customer."]}," Every business you serve produces its own set of tokens, which you must store separately and securely against that customer's record in your system."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["A security assessment and production review."]}," You are handling other organisations' data, so we assess how you protect it before you reach production."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The Client path has none of these requirements because there is only one business, and it is yours."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"authorisation-flows","__idx":5},"children":["Authorisation flows"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Each product documents its own supported flows, but the pattern is consistent:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Partners"]}," use a consent-based flow. Each customer is redirected to authorise your application, and you receive tokens scoped to that customer."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Clients"]}," may have access to a more direct flow, since no third-party consent is involved."]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Direct credential flows are never available to Partners."]}," Flows that involve sending a user's username and password to the authorisation server are restricted to Clients accessing their own data. If you are a Partner, you must use the consent-based flow, regardless of what is technically available."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For the flows supported by the product you are integrating with, see that product's documentation:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/hub24/apis"},"children":["HUB24"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/class/resources/overview"},"children":["Class"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/nowinfinity/resources/overview"},"children":["NowInfinity"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/myprosperity/apis"},"children":["myprosperity"]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"still-not-sure","__idx":6},"children":["Still not sure?"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If your situation does not fit neatly into either model, contact us at ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"mailto:partners@class.com.au"},"children":["partners@class.com.au"]}," before you start building. It is far cheaper to resolve this now than after your integration is written."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"next-step","__idx":7},"children":["Next step"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Once you know which model applies to you, continue to ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/getting-started/request-access"},"children":["Request access"]},"."]}]},"headings":[{"value":"Integration models","id":"integration-models","depth":1},{"value":"The two models","id":"the-two-models","depth":2},{"value":"What determines your model","id":"what-determines-your-model","depth":2},{"value":"Which are you?","id":"which-are-you","depth":2},{"value":"Why the Partner path asks for more","id":"why-the-partner-path-asks-for-more","depth":2},{"value":"Authorisation flows","id":"authorisation-flows","depth":2},{"value":"Still not sure?","id":"still-not-sure","depth":2},{"value":"Next step","id":"next-step","depth":2}],"frontmatter":{"title":"Integration models","description":"Work out whether you are integrating as a Partner or as a Client, and what each path involves.","seo":{"title":"Integration models"}},"lastModified":"2026-09-03T00:32:02.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/getting-started/integration-models","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}