To simplify your application logic and integration with the Knot iOS SDK, Version 1.0 includes a number of breaking changes that may affect the way your integration works or behaves.The new version includes a number of significant improvements:
Enhanced speed and stability in loading merchant flows.
More streamlined initialization of the SDK.
Simplified event handling, more informative event messaging, and uniform naming conventions for easier debugging.
Improved maintainability and foundations for new feature compatibility.
Configuring and opening the Knot SDK has changed significantly in iOS Version 1.0 and requires some refactoring in order to initialize the SDK with a session. Errors are now encapsulated in a KnotError object which provides an enumerated value to debug with.
Event handling is now managed through KnotEventDelegate instead of closures.
Events like onSuccess, onError, and onExit are now explicit methods inside a delegate.
The onEvent method introduces the KnotEvent object to better handle Knot emitted events.
The KnotError type provides improved error descriptions.
The sendCard parameter is deprecated and its functionality incorporated into the metaData dictionary within KnotEvent when KnotEvent.event equals AUTHENTICATED.
Before
session.onSuccess = { merchant in print("Successfully updated card for \(merchant)")}session.onError = { errorCode, errorMessage in print("Error: \(errorCode) - \(errorMessage)")}session.onExit = { print("User exited the SDK")}session.onEvent = { event, merchant, taskId, sendCard in print("event code: \(event), merchant: \(merchant), taskId: \(taskId), sendCard: \(sendCard)")}
// MyViewController.m#import "MyViewController.h"@interface MyViewController : UIViewController <KnotEventDelegate>@end// MyViewController.h@implementation MyViewController- (void)onSuccessWithMerchant:(NSString *)merchant { NSLog(@"Successfully updated card for %@", merchant);}- (void)onErrorWithError:(KnotError *)error { // Assuming `KnotError` has an `errorDescription` property NSLog(@"Error: %@", error.errorDescription);}- (void)onEventWithEvent:(KnotEvent *)event { // Assuming `KnotEvent` has an `event` property or method NSLog(@"Event: %@", event.event);}- (void)onExit { NSLog(@"User exited the SDK");}@end
SendCard
Most apps do not use the explicit sendCard method, as it is rarely applicable to the integration with the Knot SDK.
The sendCard parameter has been deprecated and its functionality is incorporated into the metaData dictionary within KnotEvent when the KnotEvent.event equals AUTHENTICATED. This change enhances flexibility by allowing additional contextual data to be included in events without requiring separate parameters. Previously, sendCard was accessed as a standalone value, but now you can retrieve it from the metaData dictionary in the event callback. This approach ensures better extensibility and consistency across different event types. To access the sendCard value, simply extract it from the event’s metaData dictionary.
func onError(error: KnotError) { switch error { case .invalidSession: print("Error: Session is invalid. Please check your session ID.") case .expiredSession: print("Error: Session has expired. Please start a new session.") case .invalidClientId: print("Error: Invalid client ID. Ensure your credentials are correct.") case .internalError: print("Error: An internal error occurred. Try again later.") }}
- (void)onErrorWithError:(KnotError)error { switch (error) { case KnotErrorInvalidSession: NSLog(@"Error: Session is invalid. Please check your session ID."); break; case KnotErrorExpiredSession: NSLog(@"Error: Session has expired. Please start a new session."); break; case KnotErrorInvalidClientId: NSLog(@"Error: Invalid client ID. Ensure your credentials are correct."); break; case KnotErrorInternalError: NSLog(@"Error: An internal error occurred. Try again later."); break; } // If you also need the string description or error code: NSString *description = KnotErrorDescription(error); NSString *code = KnotErrorCode(error); NSLog(@"Additional info => Description: %@, Code: %@", description, code);}
Error TypesThe Knot SDK provides predefined error cases for you to handle based on your own needs.
Most apps do not use the explicit close method, as it is infrequently applicable to the integration with the Knot SDK.
Changes
Closing the SDK is now statically accessed via Knot.close() as opposed to being bound to the session object.
Before
session.close()
[session close];
After
Knot.close()
[Knot close];
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Knot","description":"Guides and API reference for integrating Knot products, such as CardSwitcher and Supernova","colors":{"primary":"#0F0E0E","light":"#D8D8D8","dark":"#0F0E0E"},"logo":{"light":"https://mintcdn.com/knot/VBuG2prLV3p6xOTo/logo/light.svg?fit=max\u0026auto=format\u0026n=VBuG2prLV3p6xOTo\u0026q=85\u0026s=fd06fd47577a90c8e224072b4be0e5dd","dark":"https://mintcdn.com/knot/VBuG2prLV3p6xOTo/logo/dark.svg?fit=max\u0026auto=format\u0026n=VBuG2prLV3p6xOTo\u0026q=85\u0026s=3ec182904f4fcae0296bd34329d1ffa0","href":"https://www.knotapi.com"},"favicon":"https://mintcdn.com/knot/VBuG2prLV3p6xOTo/favicon.svg?fit=max\u0026auto=format\u0026n=VBuG2prLV3p6xOTo\u0026q=85\u0026s=47782d8aa08991b4c5e03be1fb07dcd0","api":{"openapi":"api-reference/openapi.json"},"navbar":{"links":[{"href":"https://knotapi.com/careers","label":"We're hiring"}],"primary":{"type":"button","label":"Dashboard","href":"https://dashboard.knotapi.com"}},"footer":{"socials":{"linkedin":"https://www.linkedin.com/company/knotapi","x":"https://x.com/KnotAPIs"},"links":[{"header":"Products","items":[{"label":"CardSwitcher™","href":"https://www.knotapi.com/cardswitcher"},{"label":"TransactionLink™","href":"https://www.knotapi.com/txn-link"},{"label":"AgenticShopping™","href":"https://www.knotapi.com/agentic-shopping"},{"label":"AccountUpdater™","href":"https://www.knotapi.com/accountupdater"}]},{"header":"Use Cases","items":[{"label":"Personal Banking","href":"https://www.knotapi.com/personal-banking"},{"label":"Business Banking","href":"https://www.knotapi.com/business-banking"},{"label":"Merchants","href":"https://www.knotapi.com/merchants"},{"label":"BaaS","href":"https://www.knotapi.com/baas"}]},{"header":"Company","items":[{"label":"About Us","href":"https://www.knotapi.com/about-us"},{"label":"Trust Center","href":"https://trust.knotapi.com/"},{"label":"Contact","href":"https://www.knotapi.com/contact"},{"label":"Careers","href":"https://knotapi.com/careers"}]},{"header":"Legal","items":[{"label":"Terms \u0026 Conditions","href":"https://www.knotapi.com/terms"},{"label":"Privacy Policy","href":"https://www.knotapi.com/privacy"}]}]},"search":{"prompt":"Search or ask AI..."},"seo":{"organization":{"name":"Knot","url":"https://www.knotapi.com","sameAs":["https://www.linkedin.com/company/knotapi","https://x.com/KnotAPIs"]}},"fonts":{"heading":{"family":"Geist","weight":500},"body":{"family":"Geist","weight":400}},"styling":{"codeblocks":"system","latex":false},"integrations":{"segment":{"key":"2VQVWDiEQctuTfDIREdqA3l0KGlREyN5"}},"errors":{"404":{"redirect":false,"title":"Hello there...","description":"This page doesn’t exist, but your next opportunity might 👀. Check out [open roles at Knot](https://knotapi.com/careers). Looking for documentation? Start at the [introduction](/), browse the [documentation index (llms.txt)](/llms.txt) or [sitemap](/sitemap.xml), or [contact Knot](https://www.knotapi.com/contact/)."}},"contextual":{"options":["assistant","copy","add-mcp","chatgpt","claude","cursor","vscode"],"display":"header"},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"knot","hasAudioNarration":true,"actualSubdomain":"knot","customDomains":["docs.knotapi.com"],"gitSource":{"type":"github","owner":"millionscard","repo":"knot-api-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6aecae8daa2acd904672092d","collectionId":"de61173d-7549-490c-8322-e8f856a37e9d","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6aecae8daa2acd904672092d"},"feedback":{"edits":false,"thumbs":true,"issues":true,"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6aecae8daa2acd904672092d","clientVersion":"0.0.4074","searchFilterCounts":[{"language":"default","tag":"Docs","count":76},{"language":"default","tag":"API Reference","count":48},{"language":"default","tag":"Webhook Events","count":28},{"language":"default","tag":"CardSwitcher","count":19},{"language":"default","tag":"TransactionLink","count":16},{"language":"default","tag":"Merchant Account Linking","count":13},{"language":"default","tag":"SubscriptionManager","count":12},{"language":"default","tag":"SDK","count":12},{"language":"default","tag":"Shopping","count":9},{"language":"default","tag":"Use Cases","count":8}],"searchSettings":{"showContentSnippets":true,"isFiltersEnabled":false}},"assistantConfig":{"enableStarterQuestions":true,"enableContextualStarterQuestions":false,"deflection":{"enabled":true,"email":"product@knotapi.com"}},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[],"starterQuestions":[{"_id":"6900107fa0d9fd2c40a2a17e","deploymentId":"67259f59f39b3bc1a898c425","questionText":"How do I get a list of available merchants?","status":"active","generatedBy":"manual","createdAt":"2025-10-28T00:38:23.158Z","updatedAt":"2025-10-28T00:38:23.158Z","__v":0},{"_id":"69001016a0d9fd2c40a27dce","deploymentId":"67259f59f39b3bc1a898c425","questionText":"How do I send card data to Knot?","status":"active","generatedBy":"manual","createdAt":"2025-10-28T00:36:38.949Z","updatedAt":"2025-10-28T00:36:38.949Z","__v":0},{"_id":"69000fe3a0d9fd2c40a26975","deploymentId":"67259f59f39b3bc1a898c425","questionText":"How do I create a session?","status":"active","generatedBy":"manual","createdAt":"2025-10-28T00:35:47.577Z","updatedAt":"2025-10-28T00:35:47.577Z","__v":0}],"googleFontsInlined":true},"customCss":[{"filePath":"custom.css","content":"html[data-current-path=\"/api-reference/work-at-knot/apply\"] #sidebar{display:none}html[data-current-path=\"/api-reference/work-at-knot/apply\"] #content-area{margin-left:0;padding-left:0;max-width:100%}"}],"page":{"pagePath":"sdk/migration-guides/ios/ios-1-0","slug":"/sdk/migration-guides/ios/ios-1-0","pageMetadata":{"title":"iOS version 1.0+","description":"Migrate to version 1.0 of the Knot iOS SDK: initialize sessions with KnotConfiguration and handle errors encapsulated in KnotError objects.","href":"/sdk/migration-guides/ios/ios-1-0"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Migrate to version 1.0 of the Knot iOS SDK: initialize sessions with KnotConfiguration and handle errors encapsulated in KnotError objects.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={code:`code`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,CodeGroup,Heading,Table,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!CodeGroup)_missingMdxReference(`CodeGroup`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`2`,id:`overview`,children:`Overview`}),`\n`,_jsx(_components.p,{children:`To simplify your application logic and integration with the Knot iOS SDK, Version 1.0 includes a number of breaking changes that may affect the way your integration works or behaves.`}),`\n`,_jsx(_components.p,{children:`The new version includes a number of significant improvements:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Enhanced speed and stability in loading merchant flows.`}),`\n`,_jsx(_components.li,{children:`More streamlined initialization of the SDK.`}),`\n`,_jsx(_components.li,{children:`Simplified event handling, more informative event messaging, and uniform naming conventions for easier debugging.`}),`\n`,_jsx(_components.li,{children:`Improved maintainability and foundations for new feature compatibility.`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`breaking-changes`,children:`Breaking changes`}),`\n`,_jsxs(_components.p,{children:[`Configuring and opening the Knot SDK has changed significantly in iOS Version 1.0 and requires some refactoring in order to initialize the SDK with a session. Errors are now encapsulated in a `,_jsx(_components.code,{children:`KnotError`}),` object which provides an enumerated value to debug with.`]}),`\n`,_jsx(Heading,{level:`3`,id:`session-initialization`,children:`Session initialization`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Changes`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`Knot.createCardSwitcherSession`}),` and `,_jsx(_components.code,{children:`Knot.createTransactionsLinkSession `}),`\\xA0are replaced with a more flexible\\xA0`,_jsx(_components.code,{children:`KnotConfiguration`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`The new interface allows configuration of additional properties such as\\xA0`,_jsx(_components.code,{children:`useCategories`}),`,\\xA0`,_jsx(_components.code,{children:`useSearch`}),`, and\\xA0`,_jsx(_components.code,{children:`merchantIds`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`The `,_jsx(_components.code,{children:`open`}),` action now requires a `,_jsx(_components.code,{children:`KnotConfiguration`}),` and an optional `,_jsx(_components.code,{children:`KnotEventDelegate`}),` which is now\\xA0`,_jsx(_components.code,{children:`Knot.open(configuration:delegate:)`}),`.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Before`})}),`\n`,_jsxs(CodeGroup,{children:[_jsx(CodeBlock,{filename:`Swift`,numberOfLines:`6`,language:`swift`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`swift`,children:_jsxs(_components.code,{language:`swift`,numberOfLines:`6`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`let`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` session `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` CardOnFileSwitcherSession`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`sessionId`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"SESSION_ID\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`clientId`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"CLIENT_ID\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`environment`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: .`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`sandbox`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`session.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`entryPoint`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Onboarding\"`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` // Optionally, set an entry point.`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`session.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`merchantIds`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` [`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`44`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`] `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Optionally, a specific merchant Id`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`Knot.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`open`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`session`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: session)`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`Objective-C`,numberOfLines:`15`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`15`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`#import \"CardOnFileSwitcherSession.h\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`#import \"Knot.h\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`// ...`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`CardOnFileSwitcherSession *session = [[CardOnFileSwitcherSession alloc]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` initWithSessionId:@\"SESSION_ID\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` clientId:@\"CLIENT_ID\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` environment:CardOnFileSwitcherEnvironmentSandbox];`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`session.entryPoint = @\"Onboarding\"; // Optionally, set an entry point.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`session.merchantIds = @[@44]; // Optionally, a specific merchant ID`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`[Knot openWithSession:session];`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})})]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`After`})}),`\n`,_jsxs(CodeGroup,{children:[_jsx(CodeBlock,{filename:`Swift`,numberOfLines:`12`,language:`swift`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`swift`,children:_jsxs(_components.code,{language:`swift`,numberOfLines:`12`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`let`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` configuration `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` KnotConfiguration`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` sessionId`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"SESSION_ID\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` clientId`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"CLIENT_ID\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` environment`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: .`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`development`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` entryPoint`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`nil`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` product`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: .`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`card_switcher`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` useCategories`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` useSearch`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`false`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` merchantIds`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`nil`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`Knot.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`open`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`configuration`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: configuration, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`delegate`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`self`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`Objective-C`,numberOfLines:`12`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`12`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`KnotConfiguration *configuration = [[KnotConfiguration alloc] `})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` initWithSessionId:@\"SESSION_ID\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` clientId:@\"CLIENT_ID\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` environment:KnotEnvironmentDevelopment`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` entryPoint:nil`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` product:KnotProductCardSwitcher`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` useCategories:YES`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` useSearch:NO`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` merchantIds:nil];`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`[Knot openWithConfiguration:configuration delegate:self];`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})})]}),`\n`,_jsx(Heading,{level:`3`,id:`event-handling`,children:`Event handling`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Changes`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Event handling is now managed through\\xA0`,_jsx(_components.code,{children:`KnotEventDelegate`}),`\\xA0instead of closures.`]}),`\n`,_jsxs(_components.li,{children:[`Events like\\xA0`,_jsx(_components.code,{children:`onSuccess`}),`,\\xA0`,_jsx(_components.code,{children:`onError`}),`, and\\xA0`,_jsx(_components.code,{children:`onExit`}),`\\xA0are now\\xA0`,_jsx(_components.strong,{children:`explicit methods`}),`\\xA0inside a delegate.`]}),`\n`,_jsxs(_components.li,{children:[`The `,_jsx(_components.code,{children:`onEvent`}),` method introduces the `,_jsx(_components.code,{children:`KnotEvent`}),` object to better handle Knot emitted events.`]}),`\n`,_jsxs(_components.li,{children:[`The\\xA0`,_jsx(_components.code,{children:`KnotError`}),`\\xA0type provides improved error descriptions.`]}),`\n`,_jsxs(_components.li,{children:[`The `,_jsx(_components.code,{children:`sendCard`}),` parameter is deprecated and its functionality incorporated into the `,_jsx(_components.code,{children:`metaData`}),` dictionary within `,_jsx(_components.code,{children:`KnotEvent`}),` when `,_jsx(_components.code,{children:`KnotEvent.event`}),` equals `,_jsx(_components.code,{children:`AUTHENTICATED`}),`.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Before`})}),`\n`,_jsxs(CodeGroup,{children:[_jsx(CodeBlock,{filename:`Swift`,numberOfLines:`15`,language:`swift`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`swift`,children:_jsxs(_components.code,{language:`swift`,numberOfLines:`15`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`session.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`onSuccess`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { merchant `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`in`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` print`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Successfully updated card for `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`\\\\(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`merchant`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`)`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`session.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`onError`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { errorCode, errorMessage `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`in`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` print`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Error: `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`\\\\(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`errorCode`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`)`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` - `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`\\\\(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`errorMessage`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`)`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`session.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`onExit`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` print`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"User exited the SDK\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`session.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`onEvent`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { event, merchant, taskId, sendCard `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`in`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` print`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"event code: `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`\\\\(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`event`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`)`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`, merchant: `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`\\\\(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`merchant`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`)`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`, taskId: `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`\\\\(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`taskId`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`)`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`, sendCard: `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`\\\\(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`sendCard`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`)`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),_jsx(CodeBlock,{numberOfLines:`17`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`17`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`session.onSuccess = ^(Merchant *merchant) {`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` NSLog(@\"Successfully updated card for %@\", merchant);`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`};`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`session.onError = ^(NSInteger errorCode, NSString *errorMessage) {`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` NSLog(@\"Error: %ld - %@\", (long)errorCode, errorMessage);`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`};`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`session.onExit = ^{`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` NSLog(@\"User exited the SDK\");`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`};`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`session.onEvent = ^(NSInteger event, Merchant *merchant, NSString *taskId, BOOL sendCard) {`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` NSLog(@\"event code: %ld, merchant: %@, taskId: %@, sendCard: %d\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` (long)event, merchant, taskId, sendCard);`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`};`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})})]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`After`})}),`\n`,_jsxs(CodeGroup,{children:[_jsx(CodeBlock,{filename:`Swift`,numberOfLines:`17`,language:`swift`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`swift`,children:_jsxs(_components.code,{language:`swift`,numberOfLines:`17`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`class`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` MyViewController`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`UIViewController`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`KnotEventDelegate `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` func`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` onSuccess`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`merchant`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`String`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` print`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Successfully updated card for `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`\\\\(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`merchant`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`)`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` func`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` onError`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`error`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: KnotError) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` print`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Error: `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`\\\\(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`error.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`errorDescription`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`)`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` func`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` onEvent`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`event`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: KnotEvent) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` print`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Event: `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`\\\\(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`event.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`event`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`)`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` func`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` onExit`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`() {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` print`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"User exited the SDK\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),_jsx(CodeBlock,{numberOfLines:`29`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`29`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`// MyViewController.m`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`#import \"MyViewController.h\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`@interface MyViewController : UIViewController \u003cKnotEventDelegate>`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`@end`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`// MyViewController.h`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`@implementation MyViewController`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`- (void)onSuccessWithMerchant:(NSString *)merchant {`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` NSLog(@\"Successfully updated card for %@\", merchant);`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`- (void)onErrorWithError:(KnotError *)error {`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:\" // Assuming `KnotError` has an `errorDescription` property\"})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` NSLog(@\"Error: %@\", error.errorDescription);`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`- (void)onEventWithEvent:(KnotEvent *)event {`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:\" // Assuming `KnotEvent` has an `event` property or method\"})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` NSLog(@\"Event: %@\", event.event);`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`- (void)onExit {`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` NSLog(@\"User exited the SDK\");`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`@end `})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})})]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`SendCard`})}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Most apps do not use the explicit `,_jsx(_components.code,{children:`sendCard`}),` method, as it is rarely applicable to the integration with the Knot SDK.`]})}),`\n`,_jsxs(_components.p,{children:[`The\\xA0`,_jsx(_components.code,{children:`sendCard`}),`\\xA0parameter has been deprecated and its functionality is incorporated into the\\xA0`,_jsx(_components.code,{children:`metaData`}),`\\xA0dictionary within\\xA0`,_jsx(_components.code,{children:`KnotEvent`}),` when the `,_jsx(_components.code,{children:`KnotEvent.event`}),` equals `,_jsx(_components.code,{children:`AUTHENTICATED`}),`. This change enhances flexibility by allowing additional contextual data to be included in events without requiring separate parameters. Previously,\\xA0`,_jsx(_components.code,{children:`sendCard`}),`\\xA0was accessed as a standalone value, but now you can retrieve it from the\\xA0`,_jsx(_components.code,{children:`metaData`}),`\\xA0dictionary in the event callback. This approach ensures better extensibility and consistency across different event types. To access the\\xA0`,_jsx(_components.code,{children:`sendCard`}),`\\xA0value, simply extract it from the event’s\\xA0`,_jsx(_components.code,{children:`metaData`}),`\\xA0dictionary.`]}),`\n`,_jsxs(CodeGroup,{children:[_jsx(CodeBlock,{filename:`Swift`,numberOfLines:`19`,language:`swift`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`swift`,children:_jsxs(_components.code,{language:`swift`,numberOfLines:`19`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`class`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` MyViewController`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`UIViewController`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`KnotEventDelegate `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` func`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` onSuccess`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`merchant`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`String`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` print`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Successfully updated card for `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`\\\\(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`merchant`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`)`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` func`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` onError`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`error`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: KnotError) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` print`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Error: `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`\\\\(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`error.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`errorDescription`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`)`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` func`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` onEvent`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`event`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: KnotEvent) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` if`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` event.event `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`==`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"AUTHENTICATED\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` print`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Event.AUTHENTICATED sendCard: `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`\\\\(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`event.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`metaData`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`[`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"sendCard\"`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`] `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`as?`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:` Bool`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`)`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` func`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` onExit`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`() {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` print`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"User exited the SDK\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}}`})}),`\n`]})})}),_jsx(CodeBlock,{numberOfLines:`36`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`36`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`// MyViewController.h`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`@interface MyViewController : UIViewController \u003cKnotEventDelegate>`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`@end`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`// MyViewController.m`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`#import \"MyViewController.h\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`@implementation MyViewController`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`- (void)onSuccessWithMerchant:(NSString *)merchant {`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` NSLog(@\"Successfully updated card for %@\", merchant);`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`- (void)onErrorWithError:(KnotError *)error {`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` // Assuming KnotError has a property named errorDescription`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` NSLog(@\"Error: %@\", error.errorDescription);`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`- (void)onEventWithEvent:(KnotEvent *)event {`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` // Assuming KnotEvent has an 'event' property (NSString *) and 'metaData' (NSDictionary *)`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` if ([event.event isEqualToString:@\"AUTHENTICATED\"]) {`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` // Safely extract the \"sendCard\" value from event.metaData`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` NSNumber *sendCardNumber = event.metaData[@\"sendCard\"];`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` BOOL sendCard = [sendCardNumber boolValue];`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` NSLog(@\"Event.AUTHENTICATED sendCard: %d\", sendCard);`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`- (void)onExit {`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` NSLog(@\"User exited the SDK\");`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`@end`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})})]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Event Names`})}),`\n`,_jsx(_components.p,{children:`The SDK now maps raw event names to standardized event names for easier handling.`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{style:{textAlign:`left`},children:`Event Name Prior to 1.0`}),_jsx(_components.th,{style:{textAlign:`left`},children:`1.0 Event Name`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`refresh session request`}),_jsx(_components.td,{style:{textAlign:`left`},children:`REFRESH_SESSION_REQUEST`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`merchant clicked`}),_jsx(_components.td,{style:{textAlign:`left`},children:`MERCHANT_CLICKED`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`login started`}),_jsx(_components.td,{style:{textAlign:`left`},children:`LOGIN_STARTED`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`authenticated`}),_jsx(_components.td,{style:{textAlign:`left`},children:`AUTHENTICATED`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`otp required`}),_jsx(_components.td,{style:{textAlign:`left`},children:`OTP_REQUIRED`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`security questions required`}),_jsx(_components.td,{style:{textAlign:`left`},children:`SECURITY_QUESTIONS_REQUIRED`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`approval required`}),_jsx(_components.td,{style:{textAlign:`left`},children:`APPROVAL_REQUIRED`})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`error-handling`,children:`Error handling`}),`\n`,_jsx(_components.p,{children:`Error handling has been improved with more structured and meaningful error messages.`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Changes`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Errors are now encapsulated in the\\xA0`,_jsx(_components.code,{children:`KnotError`}),`\\xA0enum.`]}),`\n`,_jsxs(_components.li,{children:[`Each error has a\\xA0`,_jsx(_components.strong,{children:`human-readable description`}),`\\xA0(`,_jsx(_components.code,{children:`errorDescription`}),`) and a\\xA0`,_jsx(_components.strong,{children:`unique error code`}),`\\xA0(`,_jsx(_components.code,{children:`errorCode`}),`).`]}),`\n`,_jsx(_components.li,{children:`Improved clarity and consistency across error messages.`}),`\n`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Before`})}),`\n`,_jsxs(CodeGroup,{children:[_jsx(CodeBlock,{filename:`Swift`,numberOfLines:`3`,language:`swift`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`swift`,children:_jsxs(_components.code,{language:`swift`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`session.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`onError`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { errorCode, errorMessage `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`in`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` print`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Error: `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`\\\\(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`errorCode`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`)`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` - `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`\\\\(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`errorMessage`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`)`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),_jsx(CodeBlock,{filename:`Objective-C`,numberOfLines:`4`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`4`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`session.onError = ^(NSInteger errorCode, NSString *errorMessage) {`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` NSLog(@\"Error: %ld - %@\", (long)errorCode, errorMessage);`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`};`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})})]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`After`})}),`\n`,_jsxs(CodeGroup,{children:[_jsx(CodeBlock,{filename:`Swift`,numberOfLines:`12`,language:`swift`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`swift`,children:_jsxs(_components.code,{language:`swift`,numberOfLines:`12`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`func`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` onError`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`error`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: KnotError) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` switch`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` error {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` case`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` .`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`invalidSession`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` print`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Error: Session is invalid. Please check your session ID.\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` case`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` .`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`expiredSession`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` print`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Error: Session has expired. Please start a new session.\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` case`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` .`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`invalidClientId`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` print`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Error: Invalid client ID. Ensure your credentials are correct.\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` case`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` .`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`internalError`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` print`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Error: An internal error occurred. Try again later.\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),_jsx(CodeBlock,{filename:`Objective-C`,numberOfLines:`22`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`22`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`- (void)onErrorWithError:(KnotError)error {`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` switch (error) {`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` case KnotErrorInvalidSession:`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` NSLog(@\"Error: Session is invalid. Please check your session ID.\");`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` break;`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` case KnotErrorExpiredSession:`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` NSLog(@\"Error: Session has expired. Please start a new session.\");`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` break;`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` case KnotErrorInvalidClientId:`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` NSLog(@\"Error: Invalid client ID. Ensure your credentials are correct.\");`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` break;`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` case KnotErrorInternalError:`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` NSLog(@\"Error: An internal error occurred. Try again later.\");`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` break;`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` `})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` // If you also need the string description or error code:`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` NSString *description = KnotErrorDescription(error);`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` NSString *code = KnotErrorCode(error);`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` NSLog(@\"Additional info => Description: %@, Code: %@\", description, code);`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})})]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Error Types`})}),`\n`,_jsx(_components.p,{children:`The Knot SDK provides predefined error cases for you to handle based on your own needs.`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{style:{textAlign:`left`},children:`Error Case`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`.invalidSession`}),_jsx(_components.td,{style:{textAlign:`left`},children:`The session is invalid.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`.expiredSession`}),_jsx(_components.td,{style:{textAlign:`left`},children:`The session has expired.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`.invalidClientId`}),_jsx(_components.td,{style:{textAlign:`left`},children:`The client ID is invalid.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`.internalError`}),_jsx(_components.td,{style:{textAlign:`left`},children:`An internal error occurred.`})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`closing-the-sdk`,children:`Closing the SDK`}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Most apps do not use the explicit `,_jsx(_components.code,{children:`close`}),` method, as it is infrequently applicable to the integration with the Knot SDK.`]})}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Changes`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Closing the SDK is now statically accessed via `,_jsx(_components.code,{children:`Knot.close()`}),` as opposed to being bound to the session object.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Before`})}),`\n`,_jsxs(CodeGroup,{children:[_jsx(CodeBlock,{filename:`Swift`,numberOfLines:`1`,language:`swift`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`swift`,children:_jsxs(_components.code,{language:`swift`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`session.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`close`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`Objective-C`,numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`[session close];`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})})]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`After`})}),`\n`,_jsxs(CodeGroup,{children:[_jsx(CodeBlock,{filename:`Swift`,numberOfLines:`1`,language:`swift`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`swift`,children:_jsxs(_components.code,{language:`swift`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`Knot.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`close`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`Objective-C`,numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`[Knot close];`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"codeStyling":"system","config":{},"pageMetadata":{"title":"iOS version 1.0+","description":"Migrate to version 1.0 of the Knot iOS SDK: initialize sessions with KnotConfiguration and handle errors encapsulated in KnotError objects.","href":"/sdk/migration-guides/ios/ios-1-0"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Overview","slug":"overview","depth":2,"children":[]},{"title":"Breaking changes","slug":"breaking-changes","depth":2,"children":[{"title":"Session initialization","slug":"session-initialization","depth":3,"children":[]},{"title":"Event handling","slug":"event-handling","depth":3,"children":[]},{"title":"Error handling","slug":"error-handling","depth":3,"children":[]},{"title":"Closing the SDK","slug":"closing-the-sdk","depth":3,"children":[]}]}],"codeExamples":{}},"jsLinks":[],"narration":{"path":"sdk/migration-guides/ios/ios-1-0","locale":"en","estimatedDurationSec":187},"subdomain":"knot","siteName":"Knot","title":"iOS version 1.0+ - Knot","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-01T14:09:18.904Z","originalFileLocation":"sdk/migration-guides/ios/ios-1-0.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Migrate to version 1.0 of the Knot iOS SDK: initialize sessions with KnotConfiguration and handle errors encapsulated in KnotError objects.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Knot\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/knot/X2cfOEMCNQ4RTMjp/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/knot/X2cfOEMCNQ4RTMjp/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/knot/X2cfOEMCNQ4RTMjp/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/knot/X2cfOEMCNQ4RTMjp/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/knot/X2cfOEMCNQ4RTMjp/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/knot/X2cfOEMCNQ4RTMjp/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/knot/X2cfOEMCNQ4RTMjp/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/knot/X2cfOEMCNQ4RTMjp/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/knot/X2cfOEMCNQ4RTMjp/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"iOS version 1.0+ - Knot\">\u003cmeta data-mint-head property=\"og:description\" content=\"Migrate to version 1.0 of the Knot iOS SDK: initialize sessions with KnotConfiguration and handle errors encapsulated in KnotError objects.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Knot\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.knotapi.com/sdk/migration-guides/ios/ios-1-0\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://knot.mintlify.site/_mintlify/api/og/v2?division=Migration+Guides\u0026amp;title=iOS+version+1.0%2B\u0026amp;description=Migrate+to+version+1.0+of+the+Knot+iOS+SDK%3A+initialize+sessions+with+KnotConfiguration+and+handle+errors+encapsulated+in+KnotError+objects.\u0026amp;theme=c2017d1867bb9f3af1e4a591\u0026amp;signature=b887031f76f91583ef436766d0f6bc4928c65e998d5855c838b48f063e50e2bf\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"iOS version 1.0+ - Knot\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Migrate to version 1.0 of the Knot iOS SDK: initialize sessions with KnotConfiguration and handle errors encapsulated in KnotError objects.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://knot.mintlify.site/_mintlify/api/og/v2?division=Migration+Guides\u0026amp;title=iOS+version+1.0%2B\u0026amp;description=Migrate+to+version+1.0+of+the+Knot+iOS+SDK%3A+initialize+sessions+with+KnotConfiguration+and+handle+errors+encapsulated+in+KnotError+objects.\u0026amp;theme=c2017d1867bb9f3af1e4a591\u0026amp;signature=b887031f76f91583ef436766d0f6bc4928c65e998d5855c838b48f063e50e2bf\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/knot/X2cfOEMCNQ4RTMjp/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Knot\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0F0E0E\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.knotapi.com/sdk/migration-guides/ios/ios-1-0\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/sdk/migration-guides/ios/ios-1-0.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://www.knotapi.com/#organization\",\"name\":\"Knot\",\"url\":\"https://www.knotapi.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/knot/VBuG2prLV3p6xOTo/logo/light.svg?fit=max\u0026auto=format\u0026n=VBuG2prLV3p6xOTo\u0026q=85\u0026s=fd06fd47577a90c8e224072b4be0e5dd\"},\"sameAs\":[\"https://www.linkedin.com/company/knotapi\",\"https://x.com/KnotAPIs\"]},{\"@type\":\"WebSite\",\"@id\":\"https://docs.knotapi.com#website\",\"name\":\"Knot\",\"url\":\"https://docs.knotapi.com\",\"publisher\":{\"@id\":\"https://www.knotapi.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.knotapi.com/sdk/migration-guides/ios/ios-1-0#webpage\",\"url\":\"https://docs.knotapi.com/sdk/migration-guides/ios/ios-1-0\",\"name\":\"iOS version 1.0+\",\"description\":\"Migrate to version 1.0 of the Knot iOS SDK: initialize sessions with KnotConfiguration and handle errors encapsulated in KnotError objects.\",\"dateModified\":\"2026-10-01T14:09:18.904Z\",\"isPartOf\":{\"@id\":\"https://docs.knotapi.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.knotapi.com/sdk/migration-guides/ios/ios-1-0#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.knotapi.com/sdk/migration-guides/ios/ios-1-0#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"SDK\",\"item\":\"https://docs.knotapi.com/sdk/introduction\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"iOS version 1.0+\",\"item\":\"https://docs.knotapi.com/sdk/migration-guides/ios/ios-1-0\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.knotapi.com/sdk/migration-guides/ios/ios-1-0#article\",\"headline\":\"iOS version 1.0+\",\"name\":\"iOS version 1.0+\",\"description\":\"Migrate to version 1.0 of the Knot iOS SDK: initialize sessions with KnotConfiguration and handle errors encapsulated in KnotError objects.\",\"url\":\"https://docs.knotapi.com/sdk/migration-guides/ios/ios-1-0\",\"mainEntityOfPage\":{\"@id\":\"https://docs.knotapi.com/sdk/migration-guides/ios/ios-1-0#webpage\"},\"dateModified\":\"2026-10-01T14:09:18.904Z\",\"publisher\":{\"@id\":\"https://www.knotapi.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.knotapi.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Knot\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Knot","nav":{"global":null,"tabs":[{"tab":"Docs","groups":[{"group":"General","pages":[{"title":"Knot API Documentation","sidebarTitle":"Introduction","mode":"frame","href":""},{"group":"Build with AI","pages":[{"title":"Skills","href":"/ai/skills"},{"title":"Docs MCP server","href":"/ai/mcp-server"}]},{"group":"Dashboard","pages":[{"title":"Overview","href":"/dashboard/overview"},{"title":"Single sign-on","href":"/dashboard/single-sign-on"}]},{"title":"Webhooks","href":"/webhooks"}]},{"group":"Supernova","tag":"Early access","pages":[{"title":"Quickstart","href":"/supernova/quickstart"},{"title":"Tools","href":"/supernova/tools"}]},{"group":"SDK","pages":[{"title":"Introduction","href":"/sdk/introduction"},{"title":"Localization","href":"/localization"},{"title":"iOS SDK","href":"/sdk/ios"},{"title":"Android SDK","href":"/sdk/android"},{"title":"React Native SDK","href":"/sdk/react-native"},{"title":"Flutter SDK","href":"/sdk/flutter"},{"title":"Web SDK","description":"Load the Knot Link JS SDK from unpkg or npm, initialize a session in the browser, and handle events to link users' merchant accounts on the web.","href":"/sdk/web"},{"group":"Migration Guides","pages":[{"title":"iOS version 1.0+","href":"/sdk/migration-guides/ios/ios-1-0"},{"title":"Android version 2.0+","description":"Migrate to version 2.0 of the Knot Android SDK: refactor session initialization with KnotConfiguration and handle KnotError-based errors.","href":"/sdk/migration-guides/android/android-2-0"},{"title":"React Native version 1.0+","href":"/sdk/migration-guides/react-native/react-native-1-0"},{"title":"Flutter version 1.0+","href":"/sdk/migration-guides/flutter/flutter-1-0"},{"title":"Web version 1.0+","href":"/sdk/migration-guides/web/web-1-0"}]}]},{"group":"CardSwitcher","pages":[{"title":"Quickstart","href":"/card-switcher/quickstart"},{"group":"Webhook Events","pages":[{"title":"CARD_UPDATED","openapi":"api-reference/openapi.json webhook card_updated","href":"/card-switcher/webhook-events/card-updated"},{"title":"CARD_FAILED","openapi":"api-reference/openapi.json webhook card_failed","href":"/card-switcher/webhook-events/card-failed"},{"title":"AUTHENTICATED","openapi":"api-reference/openapi.json webhook authenticated","href":"/link/webhook-events/authenticated"},{"title":"MERCHANT_STATUS_UPDATE","openapi":"api-reference/openapi.json webhook merchant_status_update","href":"/link/webhook-events/merchant-status-update"}]},{"title":"Testing","href":"/card-switcher/testing"},{"title":"Launch checklist","href":"/launch-checklist"},{"title":"Sending card \u0026 bank account data","href":"/card-switcher/sending-card-data"},{"title":"Knot Zero","href":"/card-switcher/knot-zero"},{"title":"Personalization","href":"/card-switcher/personalization"},{"title":"Server-side updates","href":"/card-switcher/card-updater"},{"group":"Processor \u0026 Digital Banking Integrations","pages":[{"title":"Unit","href":"/card-switcher/processor-digital-banking-integrations/unit"},{"title":"I2C","href":"/card-switcher/processor-digital-banking-integrations/i2c"},{"title":"Q2","href":"/card-switcher/processor-digital-banking-integrations/q2"}]},{"title":"Plaid integration","href":"/card-switcher/plaid-integration"}]},{"group":"SubscriptionManager","pages":[{"title":"Quickstart","href":"/subscription-manager/quickstart"},{"group":"Webhook Events","pages":[{"title":"CARD_UPDATED","openapi":"api-reference/openapi.json webhook card_updated","href":"/card-switcher/webhook-events/card-updated"},{"title":"NEW_SUBSCRIPTIONS_AVAILABLE","openapi":"api-reference/openapi.json webhook new_subscriptions_available","href":"/subscription-manager/webhook-events/new-subscriptions-available"},{"title":"UPDATED_SUBSCRIPTIONS_AVAILABLE","openapi":"api-reference/openapi.json webhook updated_subscriptions_available","href":"/subscription-manager/webhook-events/updated-subscriptions-available"},{"title":"CANCELLATION_SUCCEEDED","openapi":"api-reference/openapi.json webhook cancellation_succeeded","href":"/subscription-manager/webhook-events/cancellation-succeeded"},{"title":"CANCELLATION_FAILED","openapi":"api-reference/openapi.json webhook cancellation_failed","href":"/subscription-manager/webhook-events/cancellation-failed"}]}]},{"group":"TransactionLink","pages":[{"group":"Use Cases","root":{"title":"Knot use case gallery for banking and fintech apps","sidebarTitle":"Use cases","mode":"default","href":"/use-cases/gallery"},"pages":[{"title":"Upcoming subscription charge funding alerts","href":"/use-cases/upcoming-charge-funding-alert"},{"title":"Enrich transactions with SKU-level purchase details","href":"/use-cases/enrich-transaction-details"},{"title":"Dispute deflection","href":"/use-cases/dispute-deflection"},{"title":"Personalized dining deals","href":"/use-cases/personalized-dining-deals"},{"title":"Post-purchase price adjustment refunds with Knot","href":"/use-cases/post-purchase-price-adjustment"},{"title":"Store brand alternative savings","href":"/use-cases/store-brand-alternative-savings"},{"title":"Cross-merchant savings","href":"/use-cases/cross-merchant-savings"},{"title":"Shopping list","href":"/use-cases/shopping-list"}]},{"title":"Quickstart","href":"/transaction-link/quickstart"},{"group":"Webhook Events","pages":[{"title":"NEW_TRANSACTIONS_AVAILABLE","openapi":"api-reference/openapi.json webhook new_transactions_available","href":"/transaction-link/webhook-events/new-transactions-available"},{"title":"UPDATED_TRANSACTIONS_AVAILABLE","openapi":"api-reference/openapi.json webhook updated_transactions_available","href":"/transaction-link/webhook-events/updated-transactions-available"},{"title":"AUTHENTICATED","openapi":"api-reference/openapi.json webhook authenticated","href":"/link/webhook-events/authenticated"},{"title":"MERCHANT_STATUS_UPDATE","openapi":"api-reference/openapi.json webhook merchant_status_update","href":"/link/webhook-events/merchant-status-update"},{"title":"ACCOUNT_LOGIN_REQUIRED","openapi":"api-reference/openapi.json webhook account_login_required","href":"/link/webhook-events/account-login-required"}]},{"title":"Testing","href":"/transaction-link/testing"}]},{"group":"Detect","pages":[{"title":"Quickstart","href":"/detect/quickstart"},{"group":"Webhook Events","pages":[{"title":"NEW_DETECTED_ACCOUNTS_AVAILABLE","openapi":"api-reference/openapi.json webhook new_detected_accounts_available","href":"/detect/webhook-events/new-detected-accounts-available"},{"title":"AUTHENTICATED","openapi":"api-reference/openapi.json webhook authenticated","href":"/link/webhook-events/authenticated"}]}]},{"group":"Vaulting","pages":[{"title":"Quickstart","href":"/vaulting/quickstart"},{"group":"Webhook Events","pages":[{"title":"VAULTING_SUCCEEDED","openapi":"api-reference/openapi.json webhook vaulting_succeeded","href":"/vaulting/webhook-events/vaulting-succeeded"},{"title":"VAULTING_FAILED","openapi":"api-reference/openapi.json webhook vaulting_failed","href":"/vaulting/webhook-events/vaulting-failed"},{"title":"AUTHENTICATED","openapi":"api-reference/openapi.json webhook authenticated","href":"/link/webhook-events/authenticated"},{"title":"MERCHANT_STATUS_UPDATE","openapi":"api-reference/openapi.json webhook merchant_status_update","href":"/link/webhook-events/merchant-status-update"}]},{"title":"Testing","href":"/vaulting/testing"}]},{"group":"Shopping","pages":[{"title":"Quickstart","href":"/shopping/quickstart"},{"group":"Webhook Events","pages":[{"title":"SYNC_CART_SUCCEEDED","openapi":"api-reference/openapi.json webhook sync_cart_succeeded","href":"/shopping/webhook-events/sync-cart-succeeded"},{"title":"SYNC_CART_FAILED","openapi":"api-reference/openapi.json webhook sync_cart_failed","href":"/shopping/webhook-events/sync-cart-failed"},{"title":"CHECKOUT_SUCCEEDED","openapi":"api-reference/openapi.json webhook checkout_succeeded","href":"/shopping/webhook-events/checkout-succeeded"},{"title":"CHECKOUT_FAILED","openapi":"api-reference/openapi.json webhook checkout_failed","href":"/shopping/webhook-events/checkout-failed"},{"title":"AUTHENTICATED","openapi":"api-reference/openapi.json webhook authenticated","href":"/link/webhook-events/authenticated"},{"title":"MERCHANT_STATUS_UPDATE","openapi":"api-reference/openapi.json webhook merchant_status_update","href":"/link/webhook-events/merchant-status-update"},{"title":"ACCOUNT_LOGIN_REQUIRED","openapi":"api-reference/openapi.json webhook account_login_required","href":"/link/webhook-events/account-login-required"}]},{"title":"Testing","href":"/shopping/testing"}]},{"group":"Merchant Account Linking","pages":[{"group":"Webhook Events","pages":[{"title":"CREDENTIALS_FAILED","openapi":"api-reference/openapi.json webhook credentials_failed","href":"/link/webhook-events/credentials-failed"},{"title":"OTP_REQUIRED","openapi":"api-reference/openapi.json webhook otp_required","href":"/link/webhook-events/otp-required"},{"title":"OTP_FAILED","openapi":"api-reference/openapi.json webhook otp_failed","href":"/link/webhook-events/otp-failed"},{"title":"QUESTIONS_REQUIRED","openapi":"api-reference/openapi.json webhook questions_required","href":"/link/webhook-events/questions-required"},{"title":"QUESTIONS_FAILED","openapi":"api-reference/openapi.json webhook questions_failed","href":"/link/webhook-events/questions-failed"},{"title":"DOB_REQUIRED","openapi":"api-reference/openapi.json webhook dob_required","href":"/link/webhook-events/dob-required"},{"title":"DOB_FAILED","openapi":"api-reference/openapi.json webhook dob_failed","href":"/link/webhook-events/dob-failed"},{"title":"LICENSE_REQUIRED","openapi":"api-reference/openapi.json webhook license_required","href":"/link/webhook-events/license-required"},{"title":"LICENSE_FAILED","openapi":"api-reference/openapi.json webhook license_failed","href":"/link/webhook-events/license-failed"},{"title":"LOGIN_APPROVAL","openapi":"api-reference/openapi.json webhook login_approval","href":"/link/webhook-events/login-approval"},{"title":"AUTHENTICATED","openapi":"api-reference/openapi.json webhook authenticated","href":"/link/webhook-events/authenticated"},{"title":"MERCHANT_STATUS_UPDATE","openapi":"api-reference/openapi.json webhook merchant_status_update","href":"/link/webhook-events/merchant-status-update"}]},{"title":"Retrieving and listing merchants","href":"/link/retrieving-and-listing-merchants"}]}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/api-reference/authentication"}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog/product-updates"}]}]},"basePath":"","title":"iOS version 1.0+ - Knot","buildId":"dpl_BLQvU86QFwq3AhPofSTw6q8dGWKm","deploymentId":"dpl_BLQvU86QFwq3AhPofSTw6q8dGWKm","dynamics":["2bfc744e19"],"chunks":["NarrationPlayer-BGzar47A.js","types-CiTgMxws.js","shallow-CWELCZ77.js"]}