{"ScriptPreparationCode":null,"TestCases":[{"Name":"Dom Parser","Code":"const html = \u0060\r\n\u003Chtml\u003E\r\n\r\n\u003Chead\u003E\r\n\u003C!--\u003Cmeta HTTP-EQUIV=\u0022Content-Type\u0022 CONTENT=\u0022text/html; charset=ISO-8859-1\u0022\u003E --\u003E\r\n\r\n\u003Ctitle\u003ELarge HTML page with images\u003C/title\u003E\r\n\r\n\u003C!-- The following link block and style block present methods how to load external CSS documents.\r\n The link tag forces an immediate download of the CSS document whereas the import clause in\r\n the style block has the document downloaded some random time later. --\u003E\r\n\r\n\u003Clink href=\u0022htmlparser/sections.css\u0022 rel=\u0022stylesheet\u0022 type=\u0022text/css\u0022\u003E\r\n\r\n\r\n\u003C!--\r\n\u003Cstyle type=\u0022text/css\u0022\u003E\r\n@import url(htmlparser/sections.css);\r\n\u003C/style\u003E \r\n--\u003E\r\n\r\n\u003C/head\u003E\r\n\r\n\u003Cbody\u003E\r\n\u003Cdiv align=\u0022center\u0022\u003E\u003Ccenter\u003E\r\n\u003Ch1 class=\u0022fore\u0022\u003EWhen to load CSS\u003C/h1\u003E\r\n\r\n\u003Ctable border=\u00220\u0022 cellspacing=\u00225\u0022 width=\u0022100%\u0022 bgcolor=\u0022#F2F2FF\u0022\u003E\r\n \u003Ctr\u003E\r\n \u003Ctd\u003E\u003Cp align=\u0022left\u0022\u003E\u003Cfont color=\u0022#000080\u0022 size=\u00225\u0022 face=\u0022Tahoma\u0022\u003E\u003Cstrong\u003ELarge HTML page\r\n with Images\u003C/strong\u003E\u003C/font\u003E\u003C/td\u003E\r\n \u003C/tr\u003E\r\n\u003C/table\u003E\r\n\u003C/center\u003E\u003C/div\u003E\r\n\r\n\u003Chr\u003E\r\n\r\n\u003Cp\u003E\u003Cstrong\u003E\u003Csmall\u003E\u003Cfont face=\u0022Verdana\u0022\u003EThis page shall test if the recorder generates\r\nscripts with requests in correct order. It includes images in sequential order: stadyn_image1.gif\r\nthrough stadyn_image10.gif\u003C/font\u003E\u003C/small\u003E\u003C/strong\u003E\u003C/p\u003E\r\n\r\n\u003Chr\u003E\r\n\r\n\u003Cp\u003E\u003Cimg src=\u0022stadyn_image1.gif\u0022 width=\u002270\u0022 height=\u002270\u0022 alt=\u0022stadyn_image1.gif (6512 bytes)\u0022\u003E\u003Cbr\u003E\r\nstadyn_image1\u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cimg src=\u0022stadyn_image2.gif\u0022 width=\u002270\u0022 height=\u002270\u0022 alt=\u0022stadyn_image2.gif (5983 bytes)\u0022\u003E\u003Cbr\u003E\r\nstadyn_image2\u003C/p\u003E\r\n\r\n\u003Cp align=\u0022center\u0022\u003E\u003Cb\u003E\u003Cfont SIZE=\u00226\u0022\u003EOpen Financial Exchange\u003Cbr\u003E\r\nSpecification 1.0\u003C/font\u003E\u003C/b\u003E \u003C/p\u003E\r\n\r\n\u003Cp align=\u0022center\u0022\u003E\u003Cb\u003E\u003Cfont SIZE=\u00222\u0022\u003EFebruary 14, 1997\u003Cbr\u003E\r\n\u003C/font\u003E\u003C/b\u003E\u003C/p\u003E\r\n\r\n\u003Cp align=\u0022center\u0022\u003E\u003Cb\u003E\u003Cfont SIZE=\u00222\u0022\u003E\u00A9 1997 CheckFree Corp., Intuit Inc., Microsoft Corp.\r\nAll rights reserved\u003Cbr\u003E\r\n\u003Cbr\u003E\r\n\u003Cbr\u003E\r\n\u003C/font\u003E\u003C/b\u003E\u003C/p\u003E\r\n\r\n\u003Cp align=\u0022center\u0022\u003E\u003Ci\u003E\u003Cb\u003E\u003Cfont SIZE=\u00225\u0022\u003EChapters 1 - 10\u003Cbr\u003E\r\n\u003Cbr\u003E\r\n\u003Cbr\u003E\r\n\u003Cbr\u003E\r\n\u003Cbr\u003E\r\n\u003C/font\u003E\u003C/b\u003E\u003C/i\u003E\u003C/p\u003E\r\n\r\n\u003Ch1\u003E\u003Cimg src=\u0022stadyn_image3.gif\u0022 width=\u002270\u0022 height=\u002270\u0022 alt=\u0022stadyn_image3.gif (6537 bytes)\u0022\u003E\u003Cbr\u003E\r\n\u003Cfont SIZE=\u00225\u0022\u003Estadyn_image3\u003C/font\u003E\u003C/h1\u003E\r\n\r\n\u003Ch1\u003E\u003Cimg src=\u0022stadyn_image4.gif\u0022 width=\u002270\u0022 height=\u002270\u0022 alt=\u0022stadyn_image4.gif (6028 bytes)\u0022\u003E\u003Cbr\u003E\r\nstadyn_image4\u003C/h1\u003E\r\n\r\n\u003Cp\u003E\u003Cimg src=\u0022stadyn_image5.gif\u0022 width=\u002270\u0022 height=\u002270\u0022 alt=\u0022stadyn_image5.gif (4068 bytes)\u0022\u003E\u003Cbr\u003E\r\nstadyn_image5\u003C/p\u003E\r\n\r\n\u003Cp\u003E\u0026nbsp;\u003C/p\u003E\r\n\r\n\u003Cp\u003E\u0026nbsp;\u003C/p\u003E\r\n\r\n\u003Ch1\u003E\u003Ca NAME=\u0022_Toc371408167\u0022\u003E\u003Cfont SIZE=\u00225\u0022\u003EContents\u003C/font\u003E\u003C/a\u003E\u003C/h1\u003E\r\n\r\n\u003Cp\u003E1. Overview 51.1 Introduction 51.1.1 Design Principles 51.2 Open Financial Exchange at\r\na Glance 71.2.1 Data Transport 71.2.2 Request and Response Model 81.3 Conventions 92.\r\nStructure 102.1 HTTP Headers 102.2 Open Financial Exchange Headers 112.2.1 The Meaning of\r\nVersion Numbers 122.3 SGML Details 122.3.1 Compliance 122.3.2 Special Characters 122.4\r\nOpen Financial Exchange SGML Structure 132.4.1 Overview 132.4.2 Top Level 132.4.3 Messages\r\n132.4.4 Message Sets and Version Control 142.4.5 Transactions 152.5 The Signon Message Set\r\n162.5.1 Signon \u0026lt;SONRQ\u0026gt; \u0026lt;SONRS\u0026gt; 162.5.2 PIN Change \u0026lt;PINCHRQ\u0026gt;\r\n\u0026lt;PINCHRS\u0026gt; 192.5.3 Examples 202.6 External Data Support 202.7 Extensions to Open\r\nFinancial Exchange 213. Common Aggregates, Elements, and Data Types 223.1 Common\r\nAggregates 223.1.1 Identifying Financial Institutions and Accounts 223.1.2 Balance Records\r\n\u0026lt;BAL\u0026gt; 223.1.3 Error Reporting \u0026lt;STATUS\u0026gt; 233.2 Common Elements 243.2.1 Financial\r\nInstitution Transaction ID \u0026lt;FITID\u0026gt; 243.2.2 Server-Assigned ID \u0026lt;SRVRTID\u0026gt;\r\n243.2.3 Client-Assigned Transaction UID \u0026lt;TRNUID\u0026gt; 253.2.4 Token \u0026lt;TOKEN\u0026gt; 253.2.5\r\nTransaction Amount \u0026lt;TRNAMT\u0026gt; 253.2.6 Memo \u0026lt;MEMO\u0026gt; 253.2.7 Date Start and Date\r\nEnd \u0026lt;DTSTART\u0026gt; \u0026lt;DTEND\u0026gt; 263.3 Common data types 263.3.1 Dates and Times 263.3.2\r\nAmounts, Prices, and Quantities 283.3.3 Language 283.3.4 Basic data types 284. Security\r\n294.1 Security Solutions 294.1.1 Determining Security Levels \u0026lt;OFXSEC\u0026gt;\r\n\u0026lt;TRANSPSEC\u0026gt; 294.2 Channel-Level Security 304.2.1 Security Requirements 304.2.2 Using\r\nSSL 3.0 in Open Financial Exchange 304.3 Application-Level Security 314.3.1 Requirements\r\nfor Application-Layer Security 314.3.2 Using Application-level Encryption in Open\r\nFinancial Exchange 325. International Support 335.1 Language and Encoding 335.2 Currency\r\n\u0026lt;CURDEF\u0026gt; \u0026lt;CURRENCY\u0026gt; \u0026lt;ORIGCURRENCY\u0026gt; 335.3 Country-Specific Tag Values\r\n346. Data Synchronization 356.1 Overview 356.2 Background 356.3 Data Synchronization\r\nApproach 366.4 Data Synchronization Specifics 376.5 Conflict Detection and Resolution\r\n396.6 Synchronization vs. Refresh 406.7 Typical Server Architecture for Synchronization\r\n416.8 Typical Client Processing of Synchronization Results 436.9 Simultaneous Connections\r\n446.10 Synchronization Alternatives 446.10.1 Lite Synchronization 446.10.2 Relating\r\nSynchronization and Error Recovery 456.11 Examples 467. FI Profile 487.1 Overview 487.1.1\r\nMessage Sets 487.1.2 Version Control 497.1.3 Batching and Routing 497.2 Profile Request\r\n507.3 Profile Response 517.3.1 Message Set 527.3.2 Signon Realms 537.3.3 Status Codes\r\n537.4 Profile Message Set Profile Information 548. Activation \u0026amp; Account Information\r\n558.1 Overview 558.2 Approaches to User Sign-Up with Open Financial Exchange 558.3 Users\r\nand Accounts 568.4 Enrollment and Password Acquisition \u0026lt;ENROLLRQ\u0026gt; \u0026lt;ENROLLRS\u0026gt;\r\n568.4.1 User IDs 578.4.2 Enrollment Request 578.4.3 Enrollment Response 598.4.4 Enrollment\r\nStatus Codes 598.4.5 Examples 608.5 Account Information 608.5.1 Request \u0026lt;ACCTINFORQ\u0026gt;\r\n618.5.2 Response \u0026lt;ACCTINFORS\u0026gt; 618.5.3 Account Information Aggregate \u0026lt;ACCTINFO\u0026gt;\r\n628.5.4 Status Codes 628.5.5 Examples 638.6 Service Activation 638.6.1 Activation Request\r\nand Response 648.6.2 Service Activation Synchronization 668.6.3 Examples 668.7 Name and\r\nAddress Changes \u0026lt;CHGUSERINFORQ\u0026gt; \u0026lt;CHGUSERINFORS\u0026gt; 678.7.1 \u0026lt;CHGUSERINFORQ\u0026gt;\r\n678.7.2 \u0026lt;CHGUSERINFORS\u0026gt; 688.7.3 Status Codes 688.8 Signup Message Set Profile\r\nInformation 699. Customer to FI Communication 709.1 The E-Mail Message Set 709.2 E-Mail\r\nMessages 709.2.1 Regular vs. Specialized E-Mail 719.2.2 Basic \u0026lt;MAIL\u0026gt; Aggregate\r\n719.2.3 E-Mail \u0026lt;MAILRQ\u0026gt; \u0026lt;MAILRS\u0026gt; 719.2.4 E-Mail Synchronization\r\n\u0026lt;MAILSYNCRQ\u0026gt; \u0026lt;MAILSYNCRS\u0026gt; 729.2.5 Example 739.3 Get HTML Page 749.3.1 MIME Get\r\nRequest and Response \u0026lt;GETMIMERQ\u0026gt; \u0026lt;GETMIMERS\u0026gt; 749.3.2 Example 759.4 E-Mail\r\nMessage Set Profile Information 7610. Recurring Transactions 7710.1 Creating a Recurring\r\nModel 7710.2 Recurring Instructions \u0026lt;RECURRINST\u0026gt; 7710.2.1 Values for \u0026lt;FREQ\u0026gt;\r\n7810.2.2 Examples 7910.3 Retrieving Transactions Generated by a Recurring Model 8010.4\r\nModifying and Canceling Individual Transactions 8010.5 Modifying and Canceling Recurring\r\nModels 8010.5.1 Examples 81 \r\n\r\n\u003Col\u003E\r\n \u003Cli\u003E\u003Ca NAME=\u0022_Toc380493239\u0022\u003E\u003Cfont SIZE=\u00226\u0022 FACE=\u0022Arial\u0022\u003EOverview\u003C/font\u003E\u003C/a\u003E \u003C/li\u003E\r\n \u003Cli\u003E\u003Ca NAME=\u0022_Toc380493240\u0022\u003E\u003Cfont SIZE=\u00225\u0022 FACE=\u0022Arial\u0022\u003EIntroduction\u003C/font\u003E\u003C/a\u003E \u003C/li\u003E\r\n\u003C/ol\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EOpen Financial Exchange is a broad-based framework for exchanging\r\nfinancial data and instructions between customers and their financial institutions. It\r\nallows institutions to connect directly to their customers without requiring an\r\nintermediary. \u003Cbr\u003E\r\n\u003Cbr\u003E\r\n\u003C/font\u003E\u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EOpen Financial Exchange is an open specification that anyone can\r\nimplement: any financial institution, transaction processor, software developer or other\r\nparty. It uses widely accepted open standards for data formatting (such as SGML),\r\nconnectivity (such as TCP/IP and HTTP), and security (such as SSL).\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EOpen Financial Exchange defines the request and response messages used\r\nby each financial service as well as the common framework and infrastructure to support\r\nthe communication of those messages. This specification does not describe any specific\r\nproduct implementation.\u003C/font\u003E \r\n\r\n\u003Col\u003E\r\n \u003Cli\u003E\u003Ca NAME=\u0022_Toc380493241\u0022\u003E\u003Cfont SIZE=\u00224\u0022 FACE=\u0022Arial\u0022\u003EDesign Principles\u003C/font\u003E\u003C/a\u003E \u003C/li\u003E\r\n\u003C/ol\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EThe following principles were used in designing Open Financial Exchange:\u003C/font\u003E\r\n\u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00221\u0022 FACE=\u0022Wingdings\u0022\u003El\u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\u003E \u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\r\nFACE=\u0022Arial\u0022\u003E\u003Cb\u003EBroad\u003C/b\u003E \u003Cb\u003ERange of Financial Activities\u003C/b\u003E\u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\u003E -\r\nOpen Financial Exchange provides support for a \u003Ci\u003E\u003Cb\u003Ebroad\u003C/b\u003E\u003C/i\u003E range of financial\r\nactivities. Open Financial Exchange 1.0 specifies the following services:\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00221\u0022 FACE=\u0022Wingdings\u0022\u003En\u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\u003E Bank statement download\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00221\u0022 FACE=\u0022Wingdings\u0022\u003En\u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\u003E Credit card statement download\u003C/font\u003E\r\n\u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00221\u0022 FACE=\u0022Wingdings\u0022\u003En\u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\u003E Funds transfers including\r\nrecurring transfers\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00221\u0022 FACE=\u0022Wingdings\u0022\u003En\u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\u003E Consumer payments, including\r\nrecurring payments\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00221\u0022 FACE=\u0022Wingdings\u0022\u003En\u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\u003E Business payments, including\r\nrecurring payments\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00221\u0022 FACE=\u0022Wingdings\u0022\u003En\u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\u003E Brokerage and mutual fund\r\nstatement download, including transaction history, current holdings and balances\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00221\u0022 FACE=\u0022Wingdings\u0022\u003El\u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\u003E \u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\r\nFACE=\u0022Arial\u0022\u003E\u003Cb\u003EBroad\u003C/b\u003E \u003Cb\u003ERange of Financial Institutions\u003C/b\u003E\u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\u003E -\r\nOpen Financial Exchange supports communication with a \u003Ci\u003E\u003Cb\u003Ebroad\u003C/b\u003E\u003C/i\u003E range of\r\nfinancial institutions (FIs), including:\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00221\u0022 FACE=\u0022Wingdings\u0022\u003En\u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\u003E Banks\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00221\u0022 FACE=\u0022Wingdings\u0022\u003En\u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\u003E Brokerage houses\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00221\u0022 FACE=\u0022Wingdings\u0022\u003En\u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\u003E Merchants\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00221\u0022 FACE=\u0022Wingdings\u0022\u003En\u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\u003E Processors\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00221\u0022 FACE=\u0022Wingdings\u0022\u003En\u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\u003E Financial advisors\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00221\u0022 FACE=\u0022Wingdings\u0022\u003En\u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\u003E Government agencies\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00221\u0022 FACE=\u0022Wingdings\u0022\u003El\u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\u003E \u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\r\nFACE=\u0022Arial\u0022\u003E\u003Cb\u003EBroad\u003C/b\u003E \u003Cb\u003ERange of Front-End applications\u003C/b\u003E\u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\u003E -\r\nOpen Financial Exchange supports a \u003Ci\u003E\u003Cb\u003Ebroad \u003C/b\u003E\u003C/i\u003Erange of front-end applications\r\ncovering all types of financial activities running on all types of platforms, including\r\nWeb-based applications.\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00221\u0022 FACE=\u0022Wingdings\u0022\u003El\u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\u003E \u003C/font\u003E\u003Cb\u003E\u003Cfont SIZE=\u00222\u0022\r\nFACE=\u0022Arial\u0022\u003EExtensible\u003C/font\u003E\u003C/b\u003E\u003Cfont SIZE=\u00222\u0022\u003E - Open Financial Exchange has been\r\ndesigned to allow the easy addition of new services. Future versions will include support\r\nfor many new services.\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00221\u0022 FACE=\u0022Wingdings\u0022\u003El\u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\u003E \u003C/font\u003E\u003Cb\u003E\u003Cfont SIZE=\u00222\u0022\r\nFACE=\u0022Arial\u0022\u003EOpen\u003C/font\u003E\u003C/b\u003E\u003Cfont SIZE=\u00222\u0022\u003E - This specification is publicly available.\r\nYou can build client and server applications using the Open Financial Exchange protocols\r\nindependent of any specific technology, product, or company.\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00221\u0022 FACE=\u0022Wingdings\u0022\u003El\u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\u003E \u003C/font\u003E\u003Cb\u003E\u003Cfont SIZE=\u00222\u0022\r\nFACE=\u0022Arial\u0022\u003EMultiple Client Support\u003C/font\u003E\u003C/b\u003E\u003Cfont SIZE=\u00222\u0022\u003E - Open Financial Exchange\r\nallows a user to use multiple client applications to access the same data at a financial\r\ninstitution. With the popularity of the World Wide Web, customers are increasingly more\r\nlikely to use multiple applications-either desktop-based or Web-based-to perform financial\r\nactivities. For example, a customer can track personal finances at home with a desktop\r\napplication and occasionally pay bills while at work with a Web-based application. The use\r\nof data synchronization to support multiple clients is a key innovation in Open Financial\r\nExchange.\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00221\u0022 FACE=\u0022Wingdings\u0022\u003El\u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\u003E \u003C/font\u003E\u003Cb\u003E\u003Cfont SIZE=\u00222\u0022\r\nFACE=\u0022Arial\u0022\u003ERobust\u003C/font\u003E\u003C/b\u003E\u003Cfont SIZE=\u00222\u0022\u003E - Open Financial Exchange will be used for\r\nexecuting important financial transactions and for communicating important financial\r\ninformation. Assuring users that transactions are executed and information is correct is\r\ncrucial. Open Financial Exchange provides robust protocols for error recovery.\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00221\u0022 FACE=\u0022Wingdings\u0022\u003El\u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\u003E \u003C/font\u003E\u003Cb\u003E\u003Cfont SIZE=\u00222\u0022\r\nFACE=\u0022Arial\u0022\u003ESecure\u003C/font\u003E\u003C/b\u003E\u003Cfont SIZE=\u00222\u0022\u003E - Open Financial Exchange provides a\r\nframework for building secure online financial services. In Open Financial Exchange,\r\nsecurity encompasses authentication of the parties involved, as well as secrecy and\r\nintegrity of the information being exchanged.\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00221\u0022 FACE=\u0022Wingdings\u0022\u003El\u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\u003E \u003C/font\u003E\u003Cb\u003E\u003Cfont SIZE=\u00222\u0022\r\nFACE=\u0022Arial\u0022\u003EBatch \u0026amp; Interactive\u003C/font\u003E\u003C/b\u003E\u003Cfont SIZE=\u00222\u0022\u003E - The design of request and\r\nresponse messages in Open Financial Exchange is for use in either batch or interactive\r\nstyle of communication. Open Financial Exchange provides for applying a single\r\nauthentication context to multiple requests in order to reduce the overhead of user\r\nauthentication.\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00221\u0022 FACE=\u0022Wingdings\u0022\u003El\u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\u003E \u003C/font\u003E\u003Cb\u003E\u003Cfont SIZE=\u00222\u0022\r\nFACE=\u0022Arial\u0022\u003EInternational\u003C/font\u003E\u003C/b\u003E\u003Cfont SIZE=\u00222\u0022\u003E \u003C/font\u003E\u003Cb\u003E\u003Cfont SIZE=\u00222\u0022 FACE=\u0022Arial\u0022\u003ESupport\u003C/font\u003E\u003C/b\u003E\u003Cfont\r\nSIZE=\u00222\u0022\u003E - Open Financial Exchange is designed to supply financial services throughout\r\nthe world. It supports multiple currencies, country-specific extensions, and different\r\nforms of encoding such as UNICODE.\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00221\u0022 FACE=\u0022Wingdings\u0022\u003El\u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\u003E \u003C/font\u003E\u003Cb\u003E\u003Cfont SIZE=\u00222\u0022\r\nFACE=\u0022Arial\u0022\u003EPlatform Independent\u003C/font\u003E\u003C/b\u003E\u003Cfont SIZE=\u00222\u0022\u003E -Open Financial Exchange can\r\nbe implemented on a wide variety of front-end client devices, including those running\r\nWindows 3.1, Windows 95, Windows NT, Macintosh, or UNIX. It also supports a wide variety\r\nof Web-based environments, including those using HTML, Java, JavaScript, or ActiveX.\r\nSimilarly on the back-end, Open Financial Exchange can be implemented on a wide variety of\r\nserver systems, including those running UNIX, Windows NT, or OS/2.\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00221\u0022 FACE=\u0022Wingdings\u0022\u003El\u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\u003E \u003C/font\u003E\u003Cb\u003E\u003Cfont SIZE=\u00222\u0022\r\nFACE=\u0022Arial\u0022\u003ETransport Independent\u003C/font\u003E\u003C/b\u003E\u003Cfont SIZE=\u00222\u0022\u003E - Open Financial Exchange is\r\nindependent of the data communication protocol used to transport the messages between the\r\nclient and server computers. Open Financial Exchange 1.0 will use HTTP.\u003C/font\u003E \r\n\r\n\u003Col\u003E\r\n \u003Cli\u003E\u003Cfont SIZE=\u00225\u0022 FACE=\u0022Arial\u0022\u003E\u003Ca NAME=\u0022_Toc380493242\u0022\u003EOpen Financial Exchange \u003C/a\u003Eat a\r\n Glance\u003C/font\u003E \u003C/li\u003E\r\n\u003C/ol\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EThe design of Open Financial Exchange is as a client and server system.\r\nAn end-user uses a client application to communicate with a server at a financial\r\ninstitution. The form of communication is requests from the client to the server and\r\nresponses from the server back to the client.\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EOpen Financial Exchange uses the Internet Protocol (IP) suite to provide\r\nthe communication channel between a client and a server. IP protocols are the foundation\r\nof the public Internet and a private network can also use them.\u003C/font\u003E \r\n\r\n\u003Col\u003E\r\n \u003Cli\u003E\u003Ca NAME=\u0022_Toc380493243\u0022\u003E\u003Cfont SIZE=\u00224\u0022 FACE=\u0022Arial\u0022\u003EData Transport\u003C/font\u003E\u003C/a\u003E \u003C/li\u003E\r\n\u003C/ol\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EClients use the HyperText Transport Protocol (HTTP) to communicate to an\r\nOpen Financial Exchange server. The World Wide Web throughout uses the same HTTP protocol.\r\nIn principle, a financial institution can use any off-the-shelf web server to implement\r\nits support for Open Financial Exchange.\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003ETo communicate by means of Open Financial Exchange over the Internet,\r\nthe client must establish an Internet connection. This connection can be a dial-up\r\nPoint-to-Point Protocol (PPP) connection to an Internet Service Provider (ISP) or a\r\nconnection over a local area network that has a gateway to the Internet.\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EClients use the HTTP POST command to send a request to the previously\r\nacquired Uniform Resource Locator (URL) for the desired financial institution. The URL\r\npresumably identifies a Common Gateway Interface (CGI) or other process on an FI server\r\nthat can accept Open Financial Exchange requests and produce a response.\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EThe POST identifies the data as being of type application/x-ofx. Use\r\napplication/x-ofx as the return type as well. Fill in other fields per the HTTP 1.0 spec.\r\nHere is a typical request:\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cpre\u003E\r\n\u003Cfont SIZE=\u00221\u0022\u003EPOST http://www.fi.com/ofx.cgi HTTP/1.0\r\nUser-Agent:MyApp 5.0\r\nContent-Type: application/x-ofx\r\nContent-Length: 1032\r\n\r\nOFXHEADER:100\r\n\u003C/font\u003E\u003Cfont\r\nSIZE=\u00222\u0022\u003EDATA:OFXSGML\r\nVERSION:100\r\nSECURITY:1\r\nENCODING:USASCII\r\n\r\n\u0026lt;OFX\u0026gt;\r\n... Open Financial Exchange requests ...\r\n\u0026lt;/OFX\u0026gt;\u003C/font\u003E\r\n\u003C/pre\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EA blank line defines the separation between the HTTP headers and the\r\nstart of the actual Open Financial Exchange data. A blank line also separates the Open\r\nFinancial Exchange headers and the actual response. (See Chapter 2, for more information.)\u003C/font\u003E\r\n\u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EThe structure of a response is similar to the request, with the first\r\nline containing the standard HTTP result, as shown next. The content length is given in\r\nbytes.\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cpre\u003E\r\n\u003Cfont SIZE=\u00221\u0022\u003EHTTP 1.0 200 OK\r\nContent-Type: application/x-ofx\r\nContent-Length: 8732\r\n\r\nOFXHEADER:100\r\n\u003C/font\u003E\u003Cfont\r\nSIZE=\u00222\u0022\u003EDATA:OFXSGML\r\nVERSION:100\r\nSECURITY:1\r\nENCODING:USASCII\r\n\r\n\u0026lt;OFX\u0026gt;\r\n... Open Financial Exchange responses ...\r\n\u0026lt;/OFX\u0026gt;\u003C/font\u003E\r\n\u003C/pre\u003E\r\n\r\n\u003Col\u003E\r\n \u003Cli\u003E\u003Cfont SIZE=\u00224\u0022 FACE=\u0022Arial\u0022\u003E\u003Ca NAME=\u0022_Toc380493244\u0022\u003ERequest and Response\u003C/a\u003E Model\u003C/font\u003E\r\n \u003C/li\u003E\r\n\u003C/ol\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EThe basis for Open Financial Exchange is the request and response model.\r\nOne or more requests can be batched in a single file. This file typically includes a\r\nsignon request and one or more service-specific requests. An FI server will process all of\r\nthe requests and return a single response file. This batch model lends itself to Internet\r\ntransport as well as other off-line transports. Both requests and responses are plain text\r\nfiles, formatted using a grammar based on Standard Generalized Markup Language (SGML).\r\nOpen Financial Exchange is syntactically similar to HyperText Markup Language (HTML),\r\nfeaturing tags to identify and delimit the data. The use of a tagged data format allows\r\nOpen Financial Exchange to evolve over time while continuing to support older clients and\r\nservers.\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EHere is a simplified example of an Open Financial Exchange request file.\r\n(This example does not show the Open Financial Exchange headers and the indentation is\r\nonly for readability.) For complete details, see the more complete examples throughout\r\nthis specification.\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u0026lt;OFX\u0026gt; \u0026lt;!-- Begin request data --\u0026gt; \u0026lt;SIGNONMSGSRQV1\u0026gt; \u0026lt;SONRQ\u0026gt;\r\n\u0026lt;!-- Begin signon --\u0026gt; \u0026lt;DTCLIENT\u0026gt;19961029101000 \u0026lt;!-- Oct. 29, 1996, 10:10:00\r\nam --\u0026gt; \u0026lt;USERID\u0026gt;123-45-6789 \u0026lt;!-- User ID (that is, SSN) --\u0026gt;\r\n\u0026lt;USERPASS\u0026gt;MyPassword \u0026lt;!-- Password (SSL encrypts whole) --\u0026gt;\r\n\u0026lt;LANGUAGE\u0026gt;ENG \u0026lt;!-- Language used for text --\u0026gt; \u0026lt;FI\u0026gt; \u0026lt;!-- ID of\r\nreceiving institution --\u0026gt; \u0026lt;ORG\u0026gt;NCH \u0026lt;!-- Name of ID owner --\u0026gt;\r\n\u0026lt;FID\u0026gt;1001 \u0026lt;!-- Actual ID --\u0026gt; \u0026lt;/FI\u0026gt; \u0026lt;APPID\u0026gt;MyApp \u0026lt;APPVER\u0026gt;0500\r\n\u0026lt;/SONRQ\u0026gt; \u0026lt;!-- End of signon --\u0026gt; \u0026lt;/SIGNONMSGSRQV1\u0026gt; \u0026lt;BANKMSGSRQV1\u0026gt;\r\n\u0026lt;STMTTRNRQ\u0026gt; \u0026lt;!-- First request in file --\u0026gt; \u0026lt;TRNUID\u0026gt;1001 \u0026lt;STMTRQ\u0026gt;\r\n\u0026lt;!-- Begin statement request --\u0026gt; \u0026lt;BANKACCTFROM\u0026gt; \u0026lt;!-- Identify the account\r\n--\u0026gt; \u0026lt;BANKID\u0026gt;121099999 \u0026lt;!-- Routing transit or other FI ID --\u0026gt;\r\n\u0026lt;ACCTID\u0026gt;999988 \u0026lt;!-- Account number --\u0026gt; \u0026lt;ACCTTYPE\u0026gt;CHECKING \u0026lt;!--\r\nAccount type --\u0026gt; \u0026lt;/BANKACCTFROM\u0026gt; \u0026lt;!-- End of account ID --\u0026gt; \u0026lt;INCTRAN\u0026gt;\r\n\u0026lt;!-- Begin include transaction --\u0026gt; \u0026lt;INCLUDE\u0026gt;Y \u0026lt;!-- Include transactions\r\n--\u0026gt; \u0026lt;/INCTRAN\u0026gt; \u0026lt;!-- End of include transaction --\u0026gt; \u0026lt;/STMTRQ\u0026gt; \u0026lt;!--\r\nEnd of statement request --\u0026gt; \u0026lt;/STMTTRNRQ\u0026gt; \u0026lt;!-- End of first request --\u0026gt;\r\n\u0026lt;/BANKMSGSRQV1\u0026gt;\u0026lt;/OFX\u0026gt; \u0026lt;!-- End of request data --\u0026gt;\u003Cfont SIZE=\u00222\u0022\u003EThe\r\nresponse format follows a similar structure. Although a response such as a statement\r\nresponse contains all of the details of each transaction, each element is identified using\r\ntags.\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EThe key rule of Open Financial Exchange syntax is that each tag is\r\neither an element or an aggregate. Data follows its element tag. An aggregate tag begins a\r\ncompound tag sequence, which must end with a matching tag; for example, \u0026lt;AGGREGATE\u0026gt;\r\n... \u0026lt;/AGGREGATE\u0026gt;. \u003C/font\u003E\u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EThe actual file Open Financial Exchange sends is without any extra white\r\nspace between tags.\u003C/font\u003E \r\n\r\n\u003Col\u003E\r\n \u003Cli\u003E\u003Ca NAME=\u0022_Toc380493245\u0022\u003E\u003Cfont SIZE=\u00225\u0022 FACE=\u0022Arial\u0022\u003EConventions\u003C/font\u003E\u003C/a\u003E \u003C/li\u003E\r\n\u003C/ol\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EThe conventions used in the detailed descriptions include: \u003C/font\u003E\r\n\r\n\u003Cul\u003E\r\n \u003Cli\u003E\u003Cfont SIZE=\u00222\u0022\u003ERequired tags are in \u003Cb\u003Ebold\u003C/b\u003E. Regular face indicates tags that are\r\n optional. Required means that a client will always include a tag in a request, and a\r\n server must always include a tag in a response.\u003C/font\u003E \u003C/li\u003E\r\n \u003Cli\u003E\u003Cfont SIZE=\u00222\u0022\u003E\u003Ci\u003EItalic \u003C/i\u003Eshows a required or optional aggregate from a set of\r\n possible aggregates. \u003C/font\u003E\u003C/li\u003E\r\n \u003Cli\u003E\u003Cfont SIZE=\u00222\u0022\u003ERequired tags occur once unless noted as one or more in the description,\r\n in which case the specification allows multiple occurrences. \u003C/font\u003E\u003C/li\u003E\r\n \u003Cli\u003E\u003Cfont SIZE=\u00222\u0022\u003EOptional tags occur once if present unless noted as zero or more in the\r\n description, in which case the specification allows multiple occurrences.\u003C/font\u003E \u003C/li\u003E\r\n \u003Cli\u003E\u003Cfont SIZE=\u00222\u0022\u003EAllowable specific values are listed, where applicable.\u003C/font\u003E \u003C/li\u003E\r\n \u003Cli\u003E\u003Cfont SIZE=\u00222\u0022\u003EA-\u003Ci\u003En\u003C/i\u003E or N-\u003Ci\u003En\u003C/i\u003E, specify those values that take general\r\n alphanumeric or pure numeric type values, where \u003Ci\u003En\u003C/i\u003E indicates the maximum size. \u003C/font\u003E\u003C/li\u003E\r\n \u003Cli\u003E\u003Cfont SIZE=\u00222\u0022\u003EReferences to certain common value types, such as a dollar amount, are by\r\n name. Chapter 3 lists value types that can be referenced by name.\u003C/font\u003E \u003C/li\u003E\r\n\u003C/ul\u003E\r\n\r\n\u003Ctable BORDER=\u00221\u0022\u003E\r\n \u003Ctr\u003E\r\n \u003Ctd BGCOLOR=\u0022#000000\u0022 WIDTH=\u0022162\u0022\u003E\u003Ci\u003E\u003Cfont SIZE=\u00221\u0022\u003ETag\u003C/font\u003E\u003C/i\u003E \u003C/td\u003E\r\n \u003Ctd BGCOLOR=\u0022#000000\u0022 WIDTH=\u0022336\u0022\u003E\u003Ci\u003E\u003Cfont SIZE=\u00222\u0022\u003EDescription\u003C/font\u003E\u003C/i\u003E \u003C/td\u003E\r\n \u003C/tr\u003E\r\n \u003Ctr\u003E\r\n \u003Ctd WIDTH=\u0022162\u0022\u003E\u003Cb\u003E\u003Cfont SIZE=\u00221\u0022\u003E\u0026lt;REQUIREDTAG\u0026gt;\u003C/font\u003E\u003C/b\u003E \u003C/td\u003E\r\n \u003Ctd WIDTH=\u0022336\u0022\u003E\u003Cfont SIZE=\u00222\u0022\u003ERequired tag (1 or more)\u003C/font\u003E \u003C/td\u003E\r\n \u003C/tr\u003E\r\n \u003Ctr\u003E\r\n \u003Ctd WIDTH=\u0022162\u0022\u003E\u003Cb\u003E\u003Cfont SIZE=\u00221\u0022\u003E\u0026lt;REQUIREDTAG2\u0026gt;\u003C/font\u003E\u003C/b\u003E \u003C/td\u003E\r\n \u003Ctd WIDTH=\u0022336\u0022\u003E\u003Cfont SIZE=\u00222\u0022\u003ERequired tag that occurs only once \u003C/font\u003E\u003C/td\u003E\r\n \u003C/tr\u003E\r\n \u003Ctr\u003E\r\n \u003Ctd WIDTH=\u0022162\u0022\u003E\u003Cfont SIZE=\u00221\u0022\u003E\u0026lt;OPTIONALTAG\u0026gt; \u003C/font\u003E\u003C/td\u003E\r\n \u003Ctd WIDTH=\u0022336\u0022\u003E\u003Cfont SIZE=\u00222\u0022\u003EOptional tag; this particular one can occur multiple times\r\n (0 or more) \u003C/font\u003E\u003C/td\u003E\r\n \u003C/tr\u003E\r\n \u003Ctr\u003E\r\n \u003Ctd WIDTH=\u0022162\u0022\u003E\u003Cfont SIZE=\u00221\u0022\u003E\u0026lt;SPECIFIC\u0026gt;\u003C/font\u003E\u003C/td\u003E\r\n \u003Ctd WIDTH=\u0022336\u0022\u003E\u003Cfont SIZE=\u00222\u0022\u003EValues are A, B, and C\u003C/font\u003E \u003C/td\u003E\r\n \u003C/tr\u003E\r\n \u003Ctr\u003E\r\n \u003Ctd WIDTH=\u0022162\u0022\u003E\u003Cfont SIZE=\u00221\u0022\u003E\u0026lt;ALPHAVALUE\u0026gt;\u003C/font\u003E\u003C/td\u003E\r\n \u003Ctd WIDTH=\u0022336\u0022\u003E\u003Cfont SIZE=\u00222\u0022\u003ETakes an alphanumeric value up to 32 characters,\u003Ci\u003E A-32\u003C/i\u003E\u003C/font\u003E\r\n \u003C/td\u003E\r\n \u003C/tr\u003E\r\n\u003C/table\u003E\r\n\r\n\u003Col\u003E\r\n \u003Cli\u003E\u003Ca NAME=\u0022_Toc380493246\u0022\u003E\u003Cfont SIZE=\u00226\u0022 FACE=\u0022Arial\u0022\u003EStructure\u003C/font\u003E\u003C/a\u003E \u003C/li\u003E\r\n\u003C/ol\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EThis chapter describes the basic structure of an Open Financial Exchange\r\nrequest and response. Structure includes headers, basic syntax, and the Signon request and\r\nresponse. This chapter also describes how Open Financial Exchange encodes external data,\r\nsuch as bit maps.\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EOpen Financial Exchange data consists of some headers plus one or more\r\nOpen Financial Exchange data blocks. Each block consists of a signon message and zero or\r\nmore additional messages. When sent over the internet using HTTP, standard HTTP and\r\nmulti-part MIME headers and formats surround the Open Financial Exchange data. A simple\r\nfile that contained only Open Financial Exchange data would have the following form:\u003C/font\u003E\r\n\u003C/p\u003E\r\n\r\n\u003Cpre\u003E\r\n\u003Cfont SIZE=\u00221\u0022\u003EHTTP headers\r\nMIME type application/x-ofx\r\nOpen Financial Exchange headers\r\nOpen Financial Exchange SGML block 1\u003C/font\u003E\r\n\u003C/pre\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EA more complex file that contained multiple Open Financial Exchange data\r\nblocks and additional Open Financial Exchange data would have this form:\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cpre\u003E\r\n\u003Cfont SIZE=\u00221\u0022\u003EHTTP headers\r\nMIME type multipart/x-mixed-replace; boundary =--boundary-\r\n---boundary---\r\nMIME type application/x-ofx\r\n\u003C/font\u003E\u003Cfont\r\nSIZE=\u00222\u0022\u003E\tOpen Financial Exchange headers\r\n\tOpen Financial Exchange SGML block 1\r\n\tOpen Financial Exchange SGML block 2\r\n---boundary---\r\n\tMIME type image/jpeg\r\n\t\tFI logo\u003C/font\u003E\r\n\u003C/pre\u003E\r\n\r\n\u003Col\u003E\r\n \u003Cli\u003E\u003Ca NAME=\u0022_Toc380493247\u0022\u003E\u003Cfont SIZE=\u00225\u0022 FACE=\u0022Arial\u0022\u003EHTTP Headers\u003C/font\u003E\u003C/a\u003E \u003C/li\u003E\r\n\u003C/ol\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EData delivered by way of HTTP places the standard HTTP result code on\r\nthe first line. HTTP defines a number of status codes. Servers can return any standard\r\nHTTP result. However, FIs should expect clients to collapse these codes into the following\r\nthree cases:\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Ctable BORDER=\u00221\u0022\u003E\r\n \u003Ctr\u003E\r\n \u003Ctd BGCOLOR=\u0022#000000\u0022 WIDTH=\u002284\u0022\u003E\u003Ci\u003E\u003Cfont SIZE=\u00221\u0022\u003ECode\u003C/font\u003E\u003C/i\u003E \u003C/td\u003E\r\n \u003Ctd BGCOLOR=\u0022#000000\u0022 WIDTH=\u002296\u0022\u003E\u003Ci\u003E\u003Cfont SIZE=\u00222\u0022\u003EMeaning\u003C/font\u003E\u003C/i\u003E \u003C/td\u003E\r\n \u003Ctd BGCOLOR=\u0022#000000\u0022 WIDTH=\u0022312\u0022\u003E\u003Ci\u003E\u003Cfont SIZE=\u00222\u0022\u003EAction\u003C/font\u003E\u003C/i\u003E \u003C/td\u003E\r\n \u003C/tr\u003E\r\n \u003Ctr\u003E\r\n \u003Ctd WIDTH=\u002284\u0022\u003E\u003Cfont SIZE=\u00221\u0022\u003E200\u003C/font\u003E\u003C/td\u003E\r\n \u003Ctd WIDTH=\u002296\u0022\u003E\u003Cfont SIZE=\u00222\u0022\u003EOK\u003C/font\u003E \u003C/td\u003E\r\n \u003Ctd WIDTH=\u0022312\u0022\u003E\u003Cfont SIZE=\u00222\u0022\u003EThe request was processed and a valid Open Financial\r\n Exchange result is returned.\u003C/font\u003E \u003C/td\u003E\r\n \u003C/tr\u003E\r\n \u003Ctr\u003E\r\n \u003Ctd WIDTH=\u002284\u0022\u003E\u003Cfont SIZE=\u00221\u0022\u003E400s\u003C/font\u003E\u003C/td\u003E\r\n \u003Ctd WIDTH=\u002296\u0022\u003E\u003Cfont SIZE=\u00222\u0022\u003EBad request\u003C/font\u003E \u003C/td\u003E\r\n \u003Ctd WIDTH=\u0022312\u0022\u003E\u003Cfont SIZE=\u00222\u0022\u003EThe request was invalid and was not processed. Clients will\r\n report an internal error to the user.\u003C/font\u003E \u003C/td\u003E\r\n \u003C/tr\u003E\r\n \u003Ctr\u003E\r\n \u003Ctd WIDTH=\u002284\u0022\u003E\u003Cfont SIZE=\u00221\u0022\u003E500s\u003C/font\u003E\u003C/td\u003E\r\n \u003Ctd WIDTH=\u002296\u0022\u003E\u003Cfont SIZE=\u00222\u0022\u003EServer error\u003C/font\u003E \u003C/td\u003E\r\n \u003Ctd WIDTH=\u0022312\u0022\u003E\u003Cfont SIZE=\u00222\u0022\u003EThe server is unavailable. Clients should advise the user\r\n to retry shortly.\u003C/font\u003E \u003C/td\u003E\r\n \u003C/tr\u003E\r\n\u003C/table\u003E\r\n\r\n\u003Cp\u003E\u003Ci\u003E\u003Cb\u003ENOTE:\u003C/b\u003E Open Financial Exchange returns a code 400 only if it cannot parse the\r\nfile. Open Financial Exchange handles content errors such as wrong PIN, or invalid\r\naccount, by returning a valid Open Financial Exchange response along with code 200.\u003C/i\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003EOpen Financial Exchange requires the following HTTP standard headers: \u003C/p\u003E\r\n\r\n\u003Ctable BORDER=\u00221\u0022\u003E\r\n \u003Ctr\u003E\r\n \u003Ctd BGCOLOR=\u0022#000000\u0022 WIDTH=\u002284\u0022\u003E\u003Ci\u003E\u003Cfont SIZE=\u00221\u0022\u003ECode\u003C/font\u003E\u003C/i\u003E \u003C/td\u003E\r\n \u003Ctd BGCOLOR=\u0022#000000\u0022 WIDTH=\u002296\u0022\u003E\u003Ci\u003E\u003Cfont SIZE=\u00222\u0022\u003EValue\u003C/font\u003E\u003C/i\u003E \u003C/td\u003E\r\n \u003Ctd BGCOLOR=\u0022#000000\u0022 WIDTH=\u0022312\u0022\u003E\u003Ci\u003E\u003Cfont SIZE=\u00222\u0022\u003EExplanation\u003C/font\u003E\u003C/i\u003E \u003C/td\u003E\r\n \u003C/tr\u003E\r\n \u003Ctr\u003E\r\n \u003Ctd WIDTH=\u002284\u0022\u003E\u003Cfont SIZE=\u00221\u0022\u003EContent-type\u003C/font\u003E\u003C/td\u003E\r\n \u003Ctd WIDTH=\u002296\u0022\u003E\u003Cfont SIZE=\u00222\u0022\u003Eapplication/x-ofx\u003C/font\u003E \u003C/td\u003E\r\n \u003Ctd WIDTH=\u0022312\u0022\u003E\u003Cfont SIZE=\u00222\u0022\u003EThe MIME type for Open Financial Exchange\u003C/font\u003E \u003C/td\u003E\r\n \u003C/tr\u003E\r\n \u003Ctr\u003E\r\n \u003Ctd WIDTH=\u002284\u0022\u003E\u003Cfont SIZE=\u00221\u0022\u003EContent-length\u003C/font\u003E\u003C/td\u003E\r\n \u003Ctd WIDTH=\u002296\u0022\u003E\u003Cfont SIZE=\u00222\u0022\u003Elength\u003C/font\u003E \u003C/td\u003E\r\n \u003Ctd WIDTH=\u0022312\u0022\u003E\u003Cfont SIZE=\u00222\u0022\u003ELength of the data after removing HTTP headers\u003C/font\u003E \u003C/td\u003E\r\n \u003C/tr\u003E\r\n\u003C/table\u003E\r\n\r\n\u003Cpre\u003E\r\n\r\n\u003C/pre\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EWhen responding with multi-part MIME, the main type will be\r\nmulti-part/x-mixed-replace; \u003Cbr\u003E\r\none of the parts will use application/x-ofx.\u003C/font\u003E \r\n\r\n\u003Col\u003E\r\n \u003Cli\u003E\u003Ca NAME=\u0022_Toc380493248\u0022\u003E\u003Cfont SIZE=\u00225\u0022 FACE=\u0022Arial\u0022\u003EOpen Financial Exchange Headers\u003C/font\u003E\u003C/a\u003E\r\n \u003C/li\u003E\r\n\u003C/ol\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EThe intent of Open Financial Exchange is for use with a variety of\r\ntransports and to provide sufficient version control capabilities for future expansion. To\r\nsupport this goal, the contents of an Open Financial Exchange file consist of a simple set\r\nof headers followed by contents defined by that header. \u0026quot;File format\u0026quot; means the\r\nentire content after removal of any transport headers. The HTTP transport described in\r\nthis document, means without the HTTP and MIME headers.\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EThe Open Financial Exchange headers are in a simple \u003Ci\u003Etag:value\u003C/i\u003E\r\nsyntax and terminated by a blank line. Open Financial Exchange always sends headers\r\nunencrypted, even if there is application-level encryption in use for the remaining\r\ncontents. The first entry will always be OFXHEADER with a version number. This entry will\r\nhelp identify the contents as an Open Financial Exchange file, and provides the version of\r\nthe Open Financial Exchange headers that follow (not of the content itself). For example:\u003C/font\u003E\r\n\u003C/p\u003E\r\n\r\n\u003Cpre\u003E\r\n\u003Cfont SIZE=\u00221\u0022\u003EOFXHEADER:100\u003C/font\u003E\r\n\u003C/pre\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EThis document defines version 1.0 of the headers to contain at least the\r\nfollowing additional tags:\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cpre\u003E\r\n\u003Cfont SIZE=\u00221\u0022\u003EDATA:OFXSGML\r\nVERSION:100\r\nSECURITY: \r\nENCODING:\r\n\u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\u003ECHARSET:\r\nCOMPRESSION:\r\nOLDFILEUID:\r\nNEWFILEUID:\u003C/font\u003E\r\n\u003C/pre\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EThe data tag identifies the contents as being in OFX SGML form. VERSION\r\nidentifies the version type as OFXSGML data. In the case of OFXSGML, it translates to the\r\nversion of the Document Type Definition (DTD) that it uses for parsing. The ENCODING and\r\nCHARSET tags define the interpretation of the character data. See Chapter 5,\r\n\u0026quot;International Support\u0026quot; for more information on these tags. Chapter 4 describes\r\nthe security tag. A future version of this specification will define compression.\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EOpen Financial Exchange uses OLDFILEUID and NEWFILEUID to support error\r\nrecovery. They are not present when clients are not requesting error recovery. (See\r\nChapter 6, \u0026quot;Data Synchronization\u0026quot;)\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EA blank line follows the last tag. Then (for type OFXSGML), the\r\nSGML-readable data begins with the \u0026lt;OFX\u0026gt; tag.\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003E\u003Ci\u003E\u003Cb\u003ENOTE:\u003C/b\u003E Here, VERSION provides the overall version of the DTD.\r\nThe \u0026lt;OFX\u0026gt; block describes the specific message set versions used, shown later in\r\nthis chapter.\u003C/i\u003E\u003C/font\u003E \r\n\r\n\u003Col\u003E\r\n \u003Cli\u003E\u003Ca NAME=\u0022_Toc380493249\u0022\u003E\u003Cfont SIZE=\u00224\u0022 FACE=\u0022Arial\u0022\u003EThe Meaning of Version Numbers\u003C/font\u003E\u003C/a\u003E\r\n \u003C/li\u003E\r\n\u003C/ol\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EThe OFXHEADER value should only change its major number if an existing\r\nclient is unable to process the new header. This can occur because of a complete syntax\r\nchange in a header, or a significant change in the semantics of an existing tag-not the\r\nentire response. You can add new tags as long as clients can function without\r\nunderstanding them.\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EYou should add new values for a data tag only when you introduce an\r\nentirely new syntax. In the case of OFXSGML, a new syntax would have to be non-SGML\r\ncompliant to warrant a new data value. It is possible that there will be more than one\r\nsyntax in use at the same time to meet different needs.\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EThe intent of the header version tag is to identify syntactic changes.\r\nIn the case of OFXSGML, this corresponds to the DTD. Purely for identification purposes,\r\neach change will increment the minor number of the version tag. If you introduce an\r\nincompatible change so that an older DTD can not parse the file, the major number will\r\nchange. See the general discussion of message sets and version control, later in this\r\nchapter.\u003C/font\u003E \r\n\r\n\u003Col\u003E\r\n \u003Cli\u003E\u003Ca NAME=\u0022_Toc380493250\u0022\u003E\u003Cfont SIZE=\u00225\u0022 FACE=\u0022Arial\u0022\u003ESGML Details\u003C/font\u003E\u003C/a\u003E \u003C/li\u003E\r\n \u003Cli\u003E\u003Ca NAME=\u0022_Toc380493251\u0022\u003E\u003Cfont SIZE=\u00224\u0022 FACE=\u0022Arial\u0022\u003ECompliance\u003C/font\u003E\u003C/a\u003E \u003C/li\u003E\r\n\u003C/ol\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003ESGML is the basis for Open Financial Exchange. There is a DTD that\r\nformally defines the SGML wire format. However, Open Financial Exchange is not completely\r\nSGML-\u003Ci\u003Ecompliant\u003C/i\u003E because the specification allows unrecognized tags to be present. It\r\nrequires clients and servers to skip over the unrecognized material. That is, if\r\n\u0026lt;XYZ\u0026gt;qqq\u0026lt;/XYZ\u0026gt; appeared and a client or server cannot recognize \u0026lt;XYZ\u0026gt;,\r\nthe server should ignore that tag and its enclosed data. A fully-compliant SGML parser\r\nwould not \u003Ci\u003Evalidate\u003C/i\u003E an Open Financial Exchange document if it contained any tags\r\nthat the DTD does not define.\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EAlthough SGML is the basis for the specification, and the specification\r\nis largely compliant with SGML, do not assume Open Financial Exchange supports any SGML\r\nfeatures not documented in this specification. The intent is to allow parsing to be as\r\nsimple as possible, while retaining compatibility with the SGML world.\u003C/font\u003E \r\n\r\n\u003Col\u003E\r\n \u003Cli\u003E\u003Ca NAME=\u0022_Toc380493252\u0022\u003E\u003Cfont SIZE=\u00224\u0022 FACE=\u0022Arial\u0022\u003ESpecial Characters\u003C/font\u003E\u003C/a\u003E \u003C/li\u003E\r\n\u003C/ol\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EThe following characters are special to SGML. Use the given alternative\r\nsequence to represent them:\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Ctable BORDER=\u00221\u0022\u003E\r\n \u003Ctr\u003E\r\n \u003Ctd BGCOLOR=\u0022#000000\u0022 WIDTH=\u0022162\u0022\u003E\u003Ci\u003E\u003Cfont SIZE=\u00221\u0022\u003ECharacter\u003C/font\u003E\u003C/i\u003E \u003C/td\u003E\r\n \u003Ctd BGCOLOR=\u0022#000000\u0022 WIDTH=\u0022336\u0022\u003E\u003Ci\u003E\u003Cfont SIZE=\u00222\u0022\u003EEscape sequence\u003C/font\u003E\u003C/i\u003E \u003C/td\u003E\r\n \u003C/tr\u003E\r\n \u003Ctr\u003E\r\n \u003Ctd WIDTH=\u0022162\u0022\u003E\u003Cfont SIZE=\u00221\u0022\u003E\u0026lt; (less than)\u003C/font\u003E\u003C/td\u003E\r\n \u003Ctd WIDTH=\u0022336\u0022\u003E\u003Cfont SIZE=\u00222\u0022\u003E\u0026amp;lt;\u003C/font\u003E \u003C/td\u003E\r\n \u003C/tr\u003E\r\n \u003Ctr\u003E\r\n \u003Ctd WIDTH=\u0022162\u0022\u003E\u003Cfont SIZE=\u00221\u0022\u003E\u0026gt; (greater than)\u003C/font\u003E\u003C/td\u003E\r\n \u003Ctd WIDTH=\u0022336\u0022\u003E\u003Cfont SIZE=\u00222\u0022\u003E\u0026amp;gt;\u003C/font\u003E\u003C/td\u003E\r\n \u003C/tr\u003E\r\n \u003Ctr\u003E\r\n \u003Ctd WIDTH=\u0022162\u0022\u003E\u003Cfont SIZE=\u00221\u0022\u003E\u0026amp; (ampersand)\u003C/font\u003E\u003C/td\u003E\r\n \u003Ctd WIDTH=\u0022336\u0022\u003E\u003Cfont SIZE=\u00222\u0022\u003E\u0026amp;amp;\u003C/font\u003E \u003C/td\u003E\r\n \u003C/tr\u003E\r\n\u003C/table\u003E\r\n\r\n\u003Cp\u003EFor example, the string \u0026quot;AT\u0026amp;amp;T\u0026quot; encodes \u0026quot;AT\u0026amp;T.\u0026quot; \u003C/p\u003E\r\n\r\n\u003Cp\u003EA special case applies in specific tags that can accept HTML-formatted strings, such as\r\ne-mail records. These accept SGML marked section syntax to hide the HTML from the Open\r\nFinancial Exchange parser. You must prefix strings with \u0026quot;\u0026lt;![ CDATA [\u0026quot;and\r\nsuffixed with\u0026quot;]]\u0026gt;.\u0026quot; Within these bounds, treat the above characters literally\r\nwithout an escape. See the Chapter 9 for an example. \r\n\r\n\u003Col\u003E\r\n \u003Cli\u003E\u003Ca NAME=\u0022_Toc380493253\u0022\u003E\u003Cfont SIZE=\u00225\u0022 FACE=\u0022Arial\u0022\u003EOpen Financial Exchange SGML\r\n Structure\u003C/font\u003E\u003C/a\u003E \u003C/li\u003E\r\n \u003Cli\u003E\u003Ca NAME=\u0022_Toc380493254\u0022\u003E\u003Cfont SIZE=\u00224\u0022 FACE=\u0022Arial\u0022\u003EOverview\u003C/font\u003E\u003C/a\u003E \u003C/li\u003E\r\n\u003C/ol\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EOpen Financial Exchange hierarchically organizes request and response\r\nblocks:\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003ETop Level \u0026lt;OFX\u0026gt;\u003Cbr\u003E\r\nMessage Set and Version \u0026lt;\u003Ci\u003EXXX\u003C/i\u003EMSGSVn\u0026gt;\u003Cbr\u003E\r\nSynchronization Wrappers \u0026lt;YYYSYNCRQ\u0026gt;, \u0026lt;YYYSYNCRS\u0026gt; \u003Cbr\u003E\r\nTransaction Wrappers \u0026lt;YYYTRNRQ\u0026gt;, \u0026lt;YYYTRNRS\u0026gt;\u003Cbr\u003E\r\nSpecific requests and responses\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EThe following sections describe each of these levels.\u003C/font\u003E \r\n\r\n\u003Col\u003E\r\n \u003Cli\u003E\u003Ca NAME=\u0022_Toc380493255\u0022\u003E\u003Cfont SIZE=\u00224\u0022 FACE=\u0022Arial\u0022\u003ETop Level\u003C/font\u003E\u003C/a\u003E \u003C/li\u003E\r\n\u003C/ol\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EAn Open Financial Exchange request or response has the following\r\ntop-level form:\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Ctable BORDER=\u00221\u0022\u003E\r\n \u003Ctr\u003E\r\n \u003Ctd BGCOLOR=\u0022#000000\u0022 WIDTH=\u0022162\u0022\u003E\u003Ci\u003E\u003Cfont SIZE=\u00221\u0022\u003ETag\u003C/font\u003E\u003C/i\u003E \u003C/td\u003E\r\n \u003Ctd BGCOLOR=\u0022#000000\u0022 WIDTH=\u0022336\u0022\u003E\u003Ci\u003E\u003Cfont SIZE=\u00222\u0022\u003EDescription\u003C/font\u003E\u003C/i\u003E \u003C/td\u003E\r\n \u003C/tr\u003E\r\n \u003Ctr\u003E\r\n \u003Ctd WIDTH=\u0022162\u0022\u003E\u003Cfont SIZE=\u00221\u0022\u003E\u0026lt;\u003Cb\u003EOFX\u003C/b\u003E\u0026gt;\u003C/font\u003E\u003C/td\u003E\r\n \u003Ctd WIDTH=\u0022336\u0022\u003E\u003Cfont SIZE=\u00222\u0022\u003EOpening tag\u003C/font\u003E\u003C/td\u003E\r\n \u003C/tr\u003E\r\n \u003Ctr\u003E\r\n \u003Ctd WIDTH=\u0022162\u0022\u003E\u003Cfont SIZE=\u00221\u0022\u003E... Open Financial Exchange requests or responses ...\u003C/font\u003E\r\n \u003C/td\u003E\r\n \u003Ctd WIDTH=\u0022336\u0022\u003E\u003Cfont SIZE=\u00222\u0022\u003E0 or more transaction requests and responses inside\r\n appropriate message set aggregates\u003C/font\u003E \u003C/td\u003E\r\n \u003C/tr\u003E\r\n \u003Ctr\u003E\r\n \u003Ctd WIDTH=\u0022162\u0022\u003E\u003Cfont SIZE=\u00221\u0022\u003E\u0026lt;/\u003Cb\u003EOFX\u003C/b\u003E\u0026gt;\u003C/font\u003E\u003C/td\u003E\r\n \u003Ctd WIDTH=\u0022336\u0022\u003E\u003Cfont SIZE=\u00222\u0022\u003EClosing tag for the Open Financial Exchange record\u003C/font\u003E \u003C/td\u003E\r\n \u003C/tr\u003E\r\n\u003C/table\u003E\r\n\r\n\u003Cp\u003EThis chapter specifies the order of requests and responses. \u003C/p\u003E\r\n\r\n\u003Cp\u003EA single file can contain multiple \u0026lt;OFX\u0026gt; ... \u0026lt;/OFX\u0026gt; blocks. A typical use\r\nof multiple blocks is to request in a single file information associated with different\r\nusers. \r\n\r\n\u003Col\u003E\r\n \u003Cli\u003E\u003Ca NAME=\u0022_Toc380493256\u0022\u003E\u003Cfont SIZE=\u00224\u0022 FACE=\u0022Arial\u0022\u003EMessages\u003C/font\u003E\u003C/a\u003E \u003C/li\u003E\r\n\u003C/ol\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EA message is the unit of work in Open Financial Exchange. It refers to a\r\nrequest and response pair, and the status codes associated with that response. For\r\nexample, the message to download a bank statement consists of the request \u0026lt;STMTRQ\u0026gt;\r\nand the response \u0026lt;STMTRS\u0026gt;. In addition, with the exception of the signon message,\r\neach message includes a \u003Ci\u003Etransaction wrapper\u003C/i\u003E. These aggregates add a transaction\r\nunique ID \u0026lt;TRNUID\u0026gt;, and for responses, a \u0026lt;STATUS\u0026gt; aggregate, to the basic\r\nrequest and response. \u003C/font\u003E\u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EFor messages subject to synchronization (see Chapter 6), a third layer\r\nof aggregates is also part of a message definition: a synchronization request and\r\nresponse. These add a token and, in some cases, other information to the transactions. \u003C/font\u003E\u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EOpen Financial Exchange uses the following naming where the \u003Ci\u003EXXX\u003C/i\u003E\r\nmessage includes:\u003C/font\u003E \r\n\r\n\u003Cul\u003E\r\n \u003Cli\u003E\u003Cfont SIZE=\u00222\u0022\u003EBasic request \u0026lt;\u003Ci\u003EXXX\u003C/i\u003E\u003Cb\u003ERQ\u003C/b\u003E\u0026gt; and response \u0026lt;\u003Ci\u003EXXX\u003C/i\u003E\u003Cb\u003ERS\u003C/b\u003E\u0026gt;\u003C/font\u003E\r\n \u003C/li\u003E\r\n \u003Cli\u003E\u003Cfont SIZE=\u00222\u0022\u003ETransaction wrapper \u0026lt;\u003Ci\u003EXXX\u003C/i\u003E\u003Cb\u003ETRNRQ\u003C/b\u003E\u0026gt; and \u0026lt;\u003Ci\u003EXXX\u003C/i\u003E\u003Cb\u003ETRNRS\u003C/b\u003E\u0026gt;\u003C/font\u003E\r\n \u003C/li\u003E\r\n \u003Cli\u003E\u003Cfont SIZE=\u00222\u0022\u003EIf needed, synchronization wrapper \u0026lt;\u003Ci\u003EXXX\u003C/i\u003E\u003Cb\u003ESYNCRQ\u003C/b\u003E\u0026gt; and\r\n \u0026lt;\u003Ci\u003EXXX\u003C/i\u003E\u003Cb\u003ESYNCRS\u003C/b\u003E\u0026gt;\u003C/font\u003E \u003C/li\u003E\r\n\u003C/ul\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EIn a few cases, a small number of related basic requests and responses\r\nshare a transaction and synchronization wrapper. The term message will still apply to each\r\nrequest and response; only the naming scheme will not hold in those cases.\u003C/font\u003E \r\n\r\n\u003Col\u003E\r\n \u003Cli\u003E\u003Ca NAME=\u0022_Toc380493257\u0022\u003E\u003Cfont SIZE=\u00224\u0022 FACE=\u0022Arial\u0022\u003EMessage Sets and Version Control\u003C/font\u003E\u003C/a\u003E\r\n \u003C/li\u003E\r\n\u003C/ol\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EMessage sets are collections of messages. Generally they form all or\r\npart of what a user would consider a \u003Ci\u003Eservice\u003C/i\u003E, something for which they might have\r\nsigned up, such as \u0026quot;banking.\u0026quot; Message sets are the basis of version control,\r\nrouting, and security. They are also the basis for the required ordering in Open Financial\r\nExchange files.\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EWithin an Open Financial Exchange block, Open Financial Exchange\r\norganizes messages by message set. A message set can appear at most once within an Open\r\nFinancial Exchange block. All messages from a message set must be from the same version of\r\nthat message set.\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EFor each message set of \u003Ci\u003EXXX\u003C/i\u003E and version \u003Ci\u003En\u003C/i\u003E, there exists an\r\naggregate named \u0026lt;\u003Ci\u003EXXX\u003C/i\u003EMSGSV\u003Ci\u003En\u003C/i\u003E\u0026gt;. (Compare with \u0026lt;\u003Ci\u003EXXX\u003C/i\u003EMSGSETV\u003Ci\u003En\u003C/i\u003E\u0026gt;\r\nin Chapter 7.) All of the messages from that message set must be inside the appropriate\r\nmessage set aggregate. In the following example, the Open Financial Exchange block\r\ncontains a signon request inside the signon message set, and two statement requests and a\r\ntransfer request inside the bank message set.\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003C/body\u003E\r\n\u003C/html\u003E\r\n\r\n\u0060;\r\nconst parser = new DOMParser();\r\nconst virtualDom = parser.parseFromString(html, \u0027text/html\u0027);\r\nconst body = virtualDom.querySelector(\u0027body\u0027);","IsDeferred":false},{"Name":"Regex","Code":"const html = \u0060\r\n\u003Chtml\u003E\r\n\r\n\u003Chead\u003E\r\n\u003C!--\u003Cmeta HTTP-EQUIV=\u0022Content-Type\u0022 CONTENT=\u0022text/html; charset=ISO-8859-1\u0022\u003E --\u003E\r\n\r\n\u003Ctitle\u003ELarge HTML page with images\u003C/title\u003E\r\n\r\n\u003C!-- The following link block and style block present methods how to load external CSS documents.\r\n The link tag forces an immediate download of the CSS document whereas the import clause in\r\n the style block has the document downloaded some random time later. --\u003E\r\n\r\n\u003Clink href=\u0022htmlparser/sections.css\u0022 rel=\u0022stylesheet\u0022 type=\u0022text/css\u0022\u003E\r\n\r\n\r\n\u003C!--\r\n\u003Cstyle type=\u0022text/css\u0022\u003E\r\n@import url(htmlparser/sections.css);\r\n\u003C/style\u003E \r\n--\u003E\r\n\r\n\u003C/head\u003E\r\n\r\n\u003Cbody\u003E\r\n\u003Cdiv align=\u0022center\u0022\u003E\u003Ccenter\u003E\r\n\u003Ch1 class=\u0022fore\u0022\u003EWhen to load CSS\u003C/h1\u003E\r\n\r\n\u003Ctable border=\u00220\u0022 cellspacing=\u00225\u0022 width=\u0022100%\u0022 bgcolor=\u0022#F2F2FF\u0022\u003E\r\n \u003Ctr\u003E\r\n \u003Ctd\u003E\u003Cp align=\u0022left\u0022\u003E\u003Cfont color=\u0022#000080\u0022 size=\u00225\u0022 face=\u0022Tahoma\u0022\u003E\u003Cstrong\u003ELarge HTML page\r\n with Images\u003C/strong\u003E\u003C/font\u003E\u003C/td\u003E\r\n \u003C/tr\u003E\r\n\u003C/table\u003E\r\n\u003C/center\u003E\u003C/div\u003E\r\n\r\n\u003Chr\u003E\r\n\r\n\u003Cp\u003E\u003Cstrong\u003E\u003Csmall\u003E\u003Cfont face=\u0022Verdana\u0022\u003EThis page shall test if the recorder generates\r\nscripts with requests in correct order. It includes images in sequential order: stadyn_image1.gif\r\nthrough stadyn_image10.gif\u003C/font\u003E\u003C/small\u003E\u003C/strong\u003E\u003C/p\u003E\r\n\r\n\u003Chr\u003E\r\n\r\n\u003Cp\u003E\u003Cimg src=\u0022stadyn_image1.gif\u0022 width=\u002270\u0022 height=\u002270\u0022 alt=\u0022stadyn_image1.gif (6512 bytes)\u0022\u003E\u003Cbr\u003E\r\nstadyn_image1\u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cimg src=\u0022stadyn_image2.gif\u0022 width=\u002270\u0022 height=\u002270\u0022 alt=\u0022stadyn_image2.gif (5983 bytes)\u0022\u003E\u003Cbr\u003E\r\nstadyn_image2\u003C/p\u003E\r\n\r\n\u003Cp align=\u0022center\u0022\u003E\u003Cb\u003E\u003Cfont SIZE=\u00226\u0022\u003EOpen Financial Exchange\u003Cbr\u003E\r\nSpecification 1.0\u003C/font\u003E\u003C/b\u003E \u003C/p\u003E\r\n\r\n\u003Cp align=\u0022center\u0022\u003E\u003Cb\u003E\u003Cfont SIZE=\u00222\u0022\u003EFebruary 14, 1997\u003Cbr\u003E\r\n\u003C/font\u003E\u003C/b\u003E\u003C/p\u003E\r\n\r\n\u003Cp align=\u0022center\u0022\u003E\u003Cb\u003E\u003Cfont SIZE=\u00222\u0022\u003E\u00A9 1997 CheckFree Corp., Intuit Inc., Microsoft Corp.\r\nAll rights reserved\u003Cbr\u003E\r\n\u003Cbr\u003E\r\n\u003Cbr\u003E\r\n\u003C/font\u003E\u003C/b\u003E\u003C/p\u003E\r\n\r\n\u003Cp align=\u0022center\u0022\u003E\u003Ci\u003E\u003Cb\u003E\u003Cfont SIZE=\u00225\u0022\u003EChapters 1 - 10\u003Cbr\u003E\r\n\u003Cbr\u003E\r\n\u003Cbr\u003E\r\n\u003Cbr\u003E\r\n\u003Cbr\u003E\r\n\u003C/font\u003E\u003C/b\u003E\u003C/i\u003E\u003C/p\u003E\r\n\r\n\u003Ch1\u003E\u003Cimg src=\u0022stadyn_image3.gif\u0022 width=\u002270\u0022 height=\u002270\u0022 alt=\u0022stadyn_image3.gif (6537 bytes)\u0022\u003E\u003Cbr\u003E\r\n\u003Cfont SIZE=\u00225\u0022\u003Estadyn_image3\u003C/font\u003E\u003C/h1\u003E\r\n\r\n\u003Ch1\u003E\u003Cimg src=\u0022stadyn_image4.gif\u0022 width=\u002270\u0022 height=\u002270\u0022 alt=\u0022stadyn_image4.gif (6028 bytes)\u0022\u003E\u003Cbr\u003E\r\nstadyn_image4\u003C/h1\u003E\r\n\r\n\u003Cp\u003E\u003Cimg src=\u0022stadyn_image5.gif\u0022 width=\u002270\u0022 height=\u002270\u0022 alt=\u0022stadyn_image5.gif (4068 bytes)\u0022\u003E\u003Cbr\u003E\r\nstadyn_image5\u003C/p\u003E\r\n\r\n\u003Cp\u003E\u0026nbsp;\u003C/p\u003E\r\n\r\n\u003Cp\u003E\u0026nbsp;\u003C/p\u003E\r\n\r\n\u003Ch1\u003E\u003Ca NAME=\u0022_Toc371408167\u0022\u003E\u003Cfont SIZE=\u00225\u0022\u003EContents\u003C/font\u003E\u003C/a\u003E\u003C/h1\u003E\r\n\r\n\u003Cp\u003E1. Overview 51.1 Introduction 51.1.1 Design Principles 51.2 Open Financial Exchange at\r\na Glance 71.2.1 Data Transport 71.2.2 Request and Response Model 81.3 Conventions 92.\r\nStructure 102.1 HTTP Headers 102.2 Open Financial Exchange Headers 112.2.1 The Meaning of\r\nVersion Numbers 122.3 SGML Details 122.3.1 Compliance 122.3.2 Special Characters 122.4\r\nOpen Financial Exchange SGML Structure 132.4.1 Overview 132.4.2 Top Level 132.4.3 Messages\r\n132.4.4 Message Sets and Version Control 142.4.5 Transactions 152.5 The Signon Message Set\r\n162.5.1 Signon \u0026lt;SONRQ\u0026gt; \u0026lt;SONRS\u0026gt; 162.5.2 PIN Change \u0026lt;PINCHRQ\u0026gt;\r\n\u0026lt;PINCHRS\u0026gt; 192.5.3 Examples 202.6 External Data Support 202.7 Extensions to Open\r\nFinancial Exchange 213. Common Aggregates, Elements, and Data Types 223.1 Common\r\nAggregates 223.1.1 Identifying Financial Institutions and Accounts 223.1.2 Balance Records\r\n\u0026lt;BAL\u0026gt; 223.1.3 Error Reporting \u0026lt;STATUS\u0026gt; 233.2 Common Elements 243.2.1 Financial\r\nInstitution Transaction ID \u0026lt;FITID\u0026gt; 243.2.2 Server-Assigned ID \u0026lt;SRVRTID\u0026gt;\r\n243.2.3 Client-Assigned Transaction UID \u0026lt;TRNUID\u0026gt; 253.2.4 Token \u0026lt;TOKEN\u0026gt; 253.2.5\r\nTransaction Amount \u0026lt;TRNAMT\u0026gt; 253.2.6 Memo \u0026lt;MEMO\u0026gt; 253.2.7 Date Start and Date\r\nEnd \u0026lt;DTSTART\u0026gt; \u0026lt;DTEND\u0026gt; 263.3 Common data types 263.3.1 Dates and Times 263.3.2\r\nAmounts, Prices, and Quantities 283.3.3 Language 283.3.4 Basic data types 284. Security\r\n294.1 Security Solutions 294.1.1 Determining Security Levels \u0026lt;OFXSEC\u0026gt;\r\n\u0026lt;TRANSPSEC\u0026gt; 294.2 Channel-Level Security 304.2.1 Security Requirements 304.2.2 Using\r\nSSL 3.0 in Open Financial Exchange 304.3 Application-Level Security 314.3.1 Requirements\r\nfor Application-Layer Security 314.3.2 Using Application-level Encryption in Open\r\nFinancial Exchange 325. International Support 335.1 Language and Encoding 335.2 Currency\r\n\u0026lt;CURDEF\u0026gt; \u0026lt;CURRENCY\u0026gt; \u0026lt;ORIGCURRENCY\u0026gt; 335.3 Country-Specific Tag Values\r\n346. Data Synchronization 356.1 Overview 356.2 Background 356.3 Data Synchronization\r\nApproach 366.4 Data Synchronization Specifics 376.5 Conflict Detection and Resolution\r\n396.6 Synchronization vs. Refresh 406.7 Typical Server Architecture for Synchronization\r\n416.8 Typical Client Processing of Synchronization Results 436.9 Simultaneous Connections\r\n446.10 Synchronization Alternatives 446.10.1 Lite Synchronization 446.10.2 Relating\r\nSynchronization and Error Recovery 456.11 Examples 467. FI Profile 487.1 Overview 487.1.1\r\nMessage Sets 487.1.2 Version Control 497.1.3 Batching and Routing 497.2 Profile Request\r\n507.3 Profile Response 517.3.1 Message Set 527.3.2 Signon Realms 537.3.3 Status Codes\r\n537.4 Profile Message Set Profile Information 548. Activation \u0026amp; Account Information\r\n558.1 Overview 558.2 Approaches to User Sign-Up with Open Financial Exchange 558.3 Users\r\nand Accounts 568.4 Enrollment and Password Acquisition \u0026lt;ENROLLRQ\u0026gt; \u0026lt;ENROLLRS\u0026gt;\r\n568.4.1 User IDs 578.4.2 Enrollment Request 578.4.3 Enrollment Response 598.4.4 Enrollment\r\nStatus Codes 598.4.5 Examples 608.5 Account Information 608.5.1 Request \u0026lt;ACCTINFORQ\u0026gt;\r\n618.5.2 Response \u0026lt;ACCTINFORS\u0026gt; 618.5.3 Account Information Aggregate \u0026lt;ACCTINFO\u0026gt;\r\n628.5.4 Status Codes 628.5.5 Examples 638.6 Service Activation 638.6.1 Activation Request\r\nand Response 648.6.2 Service Activation Synchronization 668.6.3 Examples 668.7 Name and\r\nAddress Changes \u0026lt;CHGUSERINFORQ\u0026gt; \u0026lt;CHGUSERINFORS\u0026gt; 678.7.1 \u0026lt;CHGUSERINFORQ\u0026gt;\r\n678.7.2 \u0026lt;CHGUSERINFORS\u0026gt; 688.7.3 Status Codes 688.8 Signup Message Set Profile\r\nInformation 699. Customer to FI Communication 709.1 The E-Mail Message Set 709.2 E-Mail\r\nMessages 709.2.1 Regular vs. Specialized E-Mail 719.2.2 Basic \u0026lt;MAIL\u0026gt; Aggregate\r\n719.2.3 E-Mail \u0026lt;MAILRQ\u0026gt; \u0026lt;MAILRS\u0026gt; 719.2.4 E-Mail Synchronization\r\n\u0026lt;MAILSYNCRQ\u0026gt; \u0026lt;MAILSYNCRS\u0026gt; 729.2.5 Example 739.3 Get HTML Page 749.3.1 MIME Get\r\nRequest and Response \u0026lt;GETMIMERQ\u0026gt; \u0026lt;GETMIMERS\u0026gt; 749.3.2 Example 759.4 E-Mail\r\nMessage Set Profile Information 7610. Recurring Transactions 7710.1 Creating a Recurring\r\nModel 7710.2 Recurring Instructions \u0026lt;RECURRINST\u0026gt; 7710.2.1 Values for \u0026lt;FREQ\u0026gt;\r\n7810.2.2 Examples 7910.3 Retrieving Transactions Generated by a Recurring Model 8010.4\r\nModifying and Canceling Individual Transactions 8010.5 Modifying and Canceling Recurring\r\nModels 8010.5.1 Examples 81 \r\n\r\n\u003Col\u003E\r\n \u003Cli\u003E\u003Ca NAME=\u0022_Toc380493239\u0022\u003E\u003Cfont SIZE=\u00226\u0022 FACE=\u0022Arial\u0022\u003EOverview\u003C/font\u003E\u003C/a\u003E \u003C/li\u003E\r\n \u003Cli\u003E\u003Ca NAME=\u0022_Toc380493240\u0022\u003E\u003Cfont SIZE=\u00225\u0022 FACE=\u0022Arial\u0022\u003EIntroduction\u003C/font\u003E\u003C/a\u003E \u003C/li\u003E\r\n\u003C/ol\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EOpen Financial Exchange is a broad-based framework for exchanging\r\nfinancial data and instructions between customers and their financial institutions. It\r\nallows institutions to connect directly to their customers without requiring an\r\nintermediary. \u003Cbr\u003E\r\n\u003Cbr\u003E\r\n\u003C/font\u003E\u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EOpen Financial Exchange is an open specification that anyone can\r\nimplement: any financial institution, transaction processor, software developer or other\r\nparty. It uses widely accepted open standards for data formatting (such as SGML),\r\nconnectivity (such as TCP/IP and HTTP), and security (such as SSL).\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EOpen Financial Exchange defines the request and response messages used\r\nby each financial service as well as the common framework and infrastructure to support\r\nthe communication of those messages. This specification does not describe any specific\r\nproduct implementation.\u003C/font\u003E \r\n\r\n\u003Col\u003E\r\n \u003Cli\u003E\u003Ca NAME=\u0022_Toc380493241\u0022\u003E\u003Cfont SIZE=\u00224\u0022 FACE=\u0022Arial\u0022\u003EDesign Principles\u003C/font\u003E\u003C/a\u003E \u003C/li\u003E\r\n\u003C/ol\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EThe following principles were used in designing Open Financial Exchange:\u003C/font\u003E\r\n\u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00221\u0022 FACE=\u0022Wingdings\u0022\u003El\u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\u003E \u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\r\nFACE=\u0022Arial\u0022\u003E\u003Cb\u003EBroad\u003C/b\u003E \u003Cb\u003ERange of Financial Activities\u003C/b\u003E\u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\u003E -\r\nOpen Financial Exchange provides support for a \u003Ci\u003E\u003Cb\u003Ebroad\u003C/b\u003E\u003C/i\u003E range of financial\r\nactivities. Open Financial Exchange 1.0 specifies the following services:\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00221\u0022 FACE=\u0022Wingdings\u0022\u003En\u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\u003E Bank statement download\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00221\u0022 FACE=\u0022Wingdings\u0022\u003En\u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\u003E Credit card statement download\u003C/font\u003E\r\n\u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00221\u0022 FACE=\u0022Wingdings\u0022\u003En\u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\u003E Funds transfers including\r\nrecurring transfers\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00221\u0022 FACE=\u0022Wingdings\u0022\u003En\u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\u003E Consumer payments, including\r\nrecurring payments\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00221\u0022 FACE=\u0022Wingdings\u0022\u003En\u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\u003E Business payments, including\r\nrecurring payments\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00221\u0022 FACE=\u0022Wingdings\u0022\u003En\u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\u003E Brokerage and mutual fund\r\nstatement download, including transaction history, current holdings and balances\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00221\u0022 FACE=\u0022Wingdings\u0022\u003El\u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\u003E \u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\r\nFACE=\u0022Arial\u0022\u003E\u003Cb\u003EBroad\u003C/b\u003E \u003Cb\u003ERange of Financial Institutions\u003C/b\u003E\u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\u003E -\r\nOpen Financial Exchange supports communication with a \u003Ci\u003E\u003Cb\u003Ebroad\u003C/b\u003E\u003C/i\u003E range of\r\nfinancial institutions (FIs), including:\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00221\u0022 FACE=\u0022Wingdings\u0022\u003En\u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\u003E Banks\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00221\u0022 FACE=\u0022Wingdings\u0022\u003En\u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\u003E Brokerage houses\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00221\u0022 FACE=\u0022Wingdings\u0022\u003En\u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\u003E Merchants\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00221\u0022 FACE=\u0022Wingdings\u0022\u003En\u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\u003E Processors\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00221\u0022 FACE=\u0022Wingdings\u0022\u003En\u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\u003E Financial advisors\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00221\u0022 FACE=\u0022Wingdings\u0022\u003En\u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\u003E Government agencies\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00221\u0022 FACE=\u0022Wingdings\u0022\u003El\u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\u003E \u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\r\nFACE=\u0022Arial\u0022\u003E\u003Cb\u003EBroad\u003C/b\u003E \u003Cb\u003ERange of Front-End applications\u003C/b\u003E\u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\u003E -\r\nOpen Financial Exchange supports a \u003Ci\u003E\u003Cb\u003Ebroad \u003C/b\u003E\u003C/i\u003Erange of front-end applications\r\ncovering all types of financial activities running on all types of platforms, including\r\nWeb-based applications.\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00221\u0022 FACE=\u0022Wingdings\u0022\u003El\u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\u003E \u003C/font\u003E\u003Cb\u003E\u003Cfont SIZE=\u00222\u0022\r\nFACE=\u0022Arial\u0022\u003EExtensible\u003C/font\u003E\u003C/b\u003E\u003Cfont SIZE=\u00222\u0022\u003E - Open Financial Exchange has been\r\ndesigned to allow the easy addition of new services. Future versions will include support\r\nfor many new services.\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00221\u0022 FACE=\u0022Wingdings\u0022\u003El\u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\u003E \u003C/font\u003E\u003Cb\u003E\u003Cfont SIZE=\u00222\u0022\r\nFACE=\u0022Arial\u0022\u003EOpen\u003C/font\u003E\u003C/b\u003E\u003Cfont SIZE=\u00222\u0022\u003E - This specification is publicly available.\r\nYou can build client and server applications using the Open Financial Exchange protocols\r\nindependent of any specific technology, product, or company.\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00221\u0022 FACE=\u0022Wingdings\u0022\u003El\u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\u003E \u003C/font\u003E\u003Cb\u003E\u003Cfont SIZE=\u00222\u0022\r\nFACE=\u0022Arial\u0022\u003EMultiple Client Support\u003C/font\u003E\u003C/b\u003E\u003Cfont SIZE=\u00222\u0022\u003E - Open Financial Exchange\r\nallows a user to use multiple client applications to access the same data at a financial\r\ninstitution. With the popularity of the World Wide Web, customers are increasingly more\r\nlikely to use multiple applications-either desktop-based or Web-based-to perform financial\r\nactivities. For example, a customer can track personal finances at home with a desktop\r\napplication and occasionally pay bills while at work with a Web-based application. The use\r\nof data synchronization to support multiple clients is a key innovation in Open Financial\r\nExchange.\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00221\u0022 FACE=\u0022Wingdings\u0022\u003El\u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\u003E \u003C/font\u003E\u003Cb\u003E\u003Cfont SIZE=\u00222\u0022\r\nFACE=\u0022Arial\u0022\u003ERobust\u003C/font\u003E\u003C/b\u003E\u003Cfont SIZE=\u00222\u0022\u003E - Open Financial Exchange will be used for\r\nexecuting important financial transactions and for communicating important financial\r\ninformation. Assuring users that transactions are executed and information is correct is\r\ncrucial. Open Financial Exchange provides robust protocols for error recovery.\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00221\u0022 FACE=\u0022Wingdings\u0022\u003El\u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\u003E \u003C/font\u003E\u003Cb\u003E\u003Cfont SIZE=\u00222\u0022\r\nFACE=\u0022Arial\u0022\u003ESecure\u003C/font\u003E\u003C/b\u003E\u003Cfont SIZE=\u00222\u0022\u003E - Open Financial Exchange provides a\r\nframework for building secure online financial services. In Open Financial Exchange,\r\nsecurity encompasses authentication of the parties involved, as well as secrecy and\r\nintegrity of the information being exchanged.\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00221\u0022 FACE=\u0022Wingdings\u0022\u003El\u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\u003E \u003C/font\u003E\u003Cb\u003E\u003Cfont SIZE=\u00222\u0022\r\nFACE=\u0022Arial\u0022\u003EBatch \u0026amp; Interactive\u003C/font\u003E\u003C/b\u003E\u003Cfont SIZE=\u00222\u0022\u003E - The design of request and\r\nresponse messages in Open Financial Exchange is for use in either batch or interactive\r\nstyle of communication. Open Financial Exchange provides for applying a single\r\nauthentication context to multiple requests in order to reduce the overhead of user\r\nauthentication.\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00221\u0022 FACE=\u0022Wingdings\u0022\u003El\u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\u003E \u003C/font\u003E\u003Cb\u003E\u003Cfont SIZE=\u00222\u0022\r\nFACE=\u0022Arial\u0022\u003EInternational\u003C/font\u003E\u003C/b\u003E\u003Cfont SIZE=\u00222\u0022\u003E \u003C/font\u003E\u003Cb\u003E\u003Cfont SIZE=\u00222\u0022 FACE=\u0022Arial\u0022\u003ESupport\u003C/font\u003E\u003C/b\u003E\u003Cfont\r\nSIZE=\u00222\u0022\u003E - Open Financial Exchange is designed to supply financial services throughout\r\nthe world. It supports multiple currencies, country-specific extensions, and different\r\nforms of encoding such as UNICODE.\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00221\u0022 FACE=\u0022Wingdings\u0022\u003El\u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\u003E \u003C/font\u003E\u003Cb\u003E\u003Cfont SIZE=\u00222\u0022\r\nFACE=\u0022Arial\u0022\u003EPlatform Independent\u003C/font\u003E\u003C/b\u003E\u003Cfont SIZE=\u00222\u0022\u003E -Open Financial Exchange can\r\nbe implemented on a wide variety of front-end client devices, including those running\r\nWindows 3.1, Windows 95, Windows NT, Macintosh, or UNIX. It also supports a wide variety\r\nof Web-based environments, including those using HTML, Java, JavaScript, or ActiveX.\r\nSimilarly on the back-end, Open Financial Exchange can be implemented on a wide variety of\r\nserver systems, including those running UNIX, Windows NT, or OS/2.\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00221\u0022 FACE=\u0022Wingdings\u0022\u003El\u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\u003E \u003C/font\u003E\u003Cb\u003E\u003Cfont SIZE=\u00222\u0022\r\nFACE=\u0022Arial\u0022\u003ETransport Independent\u003C/font\u003E\u003C/b\u003E\u003Cfont SIZE=\u00222\u0022\u003E - Open Financial Exchange is\r\nindependent of the data communication protocol used to transport the messages between the\r\nclient and server computers. Open Financial Exchange 1.0 will use HTTP.\u003C/font\u003E \r\n\r\n\u003Col\u003E\r\n \u003Cli\u003E\u003Cfont SIZE=\u00225\u0022 FACE=\u0022Arial\u0022\u003E\u003Ca NAME=\u0022_Toc380493242\u0022\u003EOpen Financial Exchange \u003C/a\u003Eat a\r\n Glance\u003C/font\u003E \u003C/li\u003E\r\n\u003C/ol\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EThe design of Open Financial Exchange is as a client and server system.\r\nAn end-user uses a client application to communicate with a server at a financial\r\ninstitution. The form of communication is requests from the client to the server and\r\nresponses from the server back to the client.\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EOpen Financial Exchange uses the Internet Protocol (IP) suite to provide\r\nthe communication channel between a client and a server. IP protocols are the foundation\r\nof the public Internet and a private network can also use them.\u003C/font\u003E \r\n\r\n\u003Col\u003E\r\n \u003Cli\u003E\u003Ca NAME=\u0022_Toc380493243\u0022\u003E\u003Cfont SIZE=\u00224\u0022 FACE=\u0022Arial\u0022\u003EData Transport\u003C/font\u003E\u003C/a\u003E \u003C/li\u003E\r\n\u003C/ol\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EClients use the HyperText Transport Protocol (HTTP) to communicate to an\r\nOpen Financial Exchange server. The World Wide Web throughout uses the same HTTP protocol.\r\nIn principle, a financial institution can use any off-the-shelf web server to implement\r\nits support for Open Financial Exchange.\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003ETo communicate by means of Open Financial Exchange over the Internet,\r\nthe client must establish an Internet connection. This connection can be a dial-up\r\nPoint-to-Point Protocol (PPP) connection to an Internet Service Provider (ISP) or a\r\nconnection over a local area network that has a gateway to the Internet.\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EClients use the HTTP POST command to send a request to the previously\r\nacquired Uniform Resource Locator (URL) for the desired financial institution. The URL\r\npresumably identifies a Common Gateway Interface (CGI) or other process on an FI server\r\nthat can accept Open Financial Exchange requests and produce a response.\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EThe POST identifies the data as being of type application/x-ofx. Use\r\napplication/x-ofx as the return type as well. Fill in other fields per the HTTP 1.0 spec.\r\nHere is a typical request:\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cpre\u003E\r\n\u003Cfont SIZE=\u00221\u0022\u003EPOST http://www.fi.com/ofx.cgi HTTP/1.0\r\nUser-Agent:MyApp 5.0\r\nContent-Type: application/x-ofx\r\nContent-Length: 1032\r\n\r\nOFXHEADER:100\r\n\u003C/font\u003E\u003Cfont\r\nSIZE=\u00222\u0022\u003EDATA:OFXSGML\r\nVERSION:100\r\nSECURITY:1\r\nENCODING:USASCII\r\n\r\n\u0026lt;OFX\u0026gt;\r\n... Open Financial Exchange requests ...\r\n\u0026lt;/OFX\u0026gt;\u003C/font\u003E\r\n\u003C/pre\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EA blank line defines the separation between the HTTP headers and the\r\nstart of the actual Open Financial Exchange data. A blank line also separates the Open\r\nFinancial Exchange headers and the actual response. (See Chapter 2, for more information.)\u003C/font\u003E\r\n\u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EThe structure of a response is similar to the request, with the first\r\nline containing the standard HTTP result, as shown next. The content length is given in\r\nbytes.\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cpre\u003E\r\n\u003Cfont SIZE=\u00221\u0022\u003EHTTP 1.0 200 OK\r\nContent-Type: application/x-ofx\r\nContent-Length: 8732\r\n\r\nOFXHEADER:100\r\n\u003C/font\u003E\u003Cfont\r\nSIZE=\u00222\u0022\u003EDATA:OFXSGML\r\nVERSION:100\r\nSECURITY:1\r\nENCODING:USASCII\r\n\r\n\u0026lt;OFX\u0026gt;\r\n... Open Financial Exchange responses ...\r\n\u0026lt;/OFX\u0026gt;\u003C/font\u003E\r\n\u003C/pre\u003E\r\n\r\n\u003Col\u003E\r\n \u003Cli\u003E\u003Cfont SIZE=\u00224\u0022 FACE=\u0022Arial\u0022\u003E\u003Ca NAME=\u0022_Toc380493244\u0022\u003ERequest and Response\u003C/a\u003E Model\u003C/font\u003E\r\n \u003C/li\u003E\r\n\u003C/ol\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EThe basis for Open Financial Exchange is the request and response model.\r\nOne or more requests can be batched in a single file. This file typically includes a\r\nsignon request and one or more service-specific requests. An FI server will process all of\r\nthe requests and return a single response file. This batch model lends itself to Internet\r\ntransport as well as other off-line transports. Both requests and responses are plain text\r\nfiles, formatted using a grammar based on Standard Generalized Markup Language (SGML).\r\nOpen Financial Exchange is syntactically similar to HyperText Markup Language (HTML),\r\nfeaturing tags to identify and delimit the data. The use of a tagged data format allows\r\nOpen Financial Exchange to evolve over time while continuing to support older clients and\r\nservers.\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EHere is a simplified example of an Open Financial Exchange request file.\r\n(This example does not show the Open Financial Exchange headers and the indentation is\r\nonly for readability.) For complete details, see the more complete examples throughout\r\nthis specification.\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u0026lt;OFX\u0026gt; \u0026lt;!-- Begin request data --\u0026gt; \u0026lt;SIGNONMSGSRQV1\u0026gt; \u0026lt;SONRQ\u0026gt;\r\n\u0026lt;!-- Begin signon --\u0026gt; \u0026lt;DTCLIENT\u0026gt;19961029101000 \u0026lt;!-- Oct. 29, 1996, 10:10:00\r\nam --\u0026gt; \u0026lt;USERID\u0026gt;123-45-6789 \u0026lt;!-- User ID (that is, SSN) --\u0026gt;\r\n\u0026lt;USERPASS\u0026gt;MyPassword \u0026lt;!-- Password (SSL encrypts whole) --\u0026gt;\r\n\u0026lt;LANGUAGE\u0026gt;ENG \u0026lt;!-- Language used for text --\u0026gt; \u0026lt;FI\u0026gt; \u0026lt;!-- ID of\r\nreceiving institution --\u0026gt; \u0026lt;ORG\u0026gt;NCH \u0026lt;!-- Name of ID owner --\u0026gt;\r\n\u0026lt;FID\u0026gt;1001 \u0026lt;!-- Actual ID --\u0026gt; \u0026lt;/FI\u0026gt; \u0026lt;APPID\u0026gt;MyApp \u0026lt;APPVER\u0026gt;0500\r\n\u0026lt;/SONRQ\u0026gt; \u0026lt;!-- End of signon --\u0026gt; \u0026lt;/SIGNONMSGSRQV1\u0026gt; \u0026lt;BANKMSGSRQV1\u0026gt;\r\n\u0026lt;STMTTRNRQ\u0026gt; \u0026lt;!-- First request in file --\u0026gt; \u0026lt;TRNUID\u0026gt;1001 \u0026lt;STMTRQ\u0026gt;\r\n\u0026lt;!-- Begin statement request --\u0026gt; \u0026lt;BANKACCTFROM\u0026gt; \u0026lt;!-- Identify the account\r\n--\u0026gt; \u0026lt;BANKID\u0026gt;121099999 \u0026lt;!-- Routing transit or other FI ID --\u0026gt;\r\n\u0026lt;ACCTID\u0026gt;999988 \u0026lt;!-- Account number --\u0026gt; \u0026lt;ACCTTYPE\u0026gt;CHECKING \u0026lt;!--\r\nAccount type --\u0026gt; \u0026lt;/BANKACCTFROM\u0026gt; \u0026lt;!-- End of account ID --\u0026gt; \u0026lt;INCTRAN\u0026gt;\r\n\u0026lt;!-- Begin include transaction --\u0026gt; \u0026lt;INCLUDE\u0026gt;Y \u0026lt;!-- Include transactions\r\n--\u0026gt; \u0026lt;/INCTRAN\u0026gt; \u0026lt;!-- End of include transaction --\u0026gt; \u0026lt;/STMTRQ\u0026gt; \u0026lt;!--\r\nEnd of statement request --\u0026gt; \u0026lt;/STMTTRNRQ\u0026gt; \u0026lt;!-- End of first request --\u0026gt;\r\n\u0026lt;/BANKMSGSRQV1\u0026gt;\u0026lt;/OFX\u0026gt; \u0026lt;!-- End of request data --\u0026gt;\u003Cfont SIZE=\u00222\u0022\u003EThe\r\nresponse format follows a similar structure. Although a response such as a statement\r\nresponse contains all of the details of each transaction, each element is identified using\r\ntags.\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EThe key rule of Open Financial Exchange syntax is that each tag is\r\neither an element or an aggregate. Data follows its element tag. An aggregate tag begins a\r\ncompound tag sequence, which must end with a matching tag; for example, \u0026lt;AGGREGATE\u0026gt;\r\n... \u0026lt;/AGGREGATE\u0026gt;. \u003C/font\u003E\u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EThe actual file Open Financial Exchange sends is without any extra white\r\nspace between tags.\u003C/font\u003E \r\n\r\n\u003Col\u003E\r\n \u003Cli\u003E\u003Ca NAME=\u0022_Toc380493245\u0022\u003E\u003Cfont SIZE=\u00225\u0022 FACE=\u0022Arial\u0022\u003EConventions\u003C/font\u003E\u003C/a\u003E \u003C/li\u003E\r\n\u003C/ol\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EThe conventions used in the detailed descriptions include: \u003C/font\u003E\r\n\r\n\u003Cul\u003E\r\n \u003Cli\u003E\u003Cfont SIZE=\u00222\u0022\u003ERequired tags are in \u003Cb\u003Ebold\u003C/b\u003E. Regular face indicates tags that are\r\n optional. Required means that a client will always include a tag in a request, and a\r\n server must always include a tag in a response.\u003C/font\u003E \u003C/li\u003E\r\n \u003Cli\u003E\u003Cfont SIZE=\u00222\u0022\u003E\u003Ci\u003EItalic \u003C/i\u003Eshows a required or optional aggregate from a set of\r\n possible aggregates. \u003C/font\u003E\u003C/li\u003E\r\n \u003Cli\u003E\u003Cfont SIZE=\u00222\u0022\u003ERequired tags occur once unless noted as one or more in the description,\r\n in which case the specification allows multiple occurrences. \u003C/font\u003E\u003C/li\u003E\r\n \u003Cli\u003E\u003Cfont SIZE=\u00222\u0022\u003EOptional tags occur once if present unless noted as zero or more in the\r\n description, in which case the specification allows multiple occurrences.\u003C/font\u003E \u003C/li\u003E\r\n \u003Cli\u003E\u003Cfont SIZE=\u00222\u0022\u003EAllowable specific values are listed, where applicable.\u003C/font\u003E \u003C/li\u003E\r\n \u003Cli\u003E\u003Cfont SIZE=\u00222\u0022\u003EA-\u003Ci\u003En\u003C/i\u003E or N-\u003Ci\u003En\u003C/i\u003E, specify those values that take general\r\n alphanumeric or pure numeric type values, where \u003Ci\u003En\u003C/i\u003E indicates the maximum size. \u003C/font\u003E\u003C/li\u003E\r\n \u003Cli\u003E\u003Cfont SIZE=\u00222\u0022\u003EReferences to certain common value types, such as a dollar amount, are by\r\n name. Chapter 3 lists value types that can be referenced by name.\u003C/font\u003E \u003C/li\u003E\r\n\u003C/ul\u003E\r\n\r\n\u003Ctable BORDER=\u00221\u0022\u003E\r\n \u003Ctr\u003E\r\n \u003Ctd BGCOLOR=\u0022#000000\u0022 WIDTH=\u0022162\u0022\u003E\u003Ci\u003E\u003Cfont SIZE=\u00221\u0022\u003ETag\u003C/font\u003E\u003C/i\u003E \u003C/td\u003E\r\n \u003Ctd BGCOLOR=\u0022#000000\u0022 WIDTH=\u0022336\u0022\u003E\u003Ci\u003E\u003Cfont SIZE=\u00222\u0022\u003EDescription\u003C/font\u003E\u003C/i\u003E \u003C/td\u003E\r\n \u003C/tr\u003E\r\n \u003Ctr\u003E\r\n \u003Ctd WIDTH=\u0022162\u0022\u003E\u003Cb\u003E\u003Cfont SIZE=\u00221\u0022\u003E\u0026lt;REQUIREDTAG\u0026gt;\u003C/font\u003E\u003C/b\u003E \u003C/td\u003E\r\n \u003Ctd WIDTH=\u0022336\u0022\u003E\u003Cfont SIZE=\u00222\u0022\u003ERequired tag (1 or more)\u003C/font\u003E \u003C/td\u003E\r\n \u003C/tr\u003E\r\n \u003Ctr\u003E\r\n \u003Ctd WIDTH=\u0022162\u0022\u003E\u003Cb\u003E\u003Cfont SIZE=\u00221\u0022\u003E\u0026lt;REQUIREDTAG2\u0026gt;\u003C/font\u003E\u003C/b\u003E \u003C/td\u003E\r\n \u003Ctd WIDTH=\u0022336\u0022\u003E\u003Cfont SIZE=\u00222\u0022\u003ERequired tag that occurs only once \u003C/font\u003E\u003C/td\u003E\r\n \u003C/tr\u003E\r\n \u003Ctr\u003E\r\n \u003Ctd WIDTH=\u0022162\u0022\u003E\u003Cfont SIZE=\u00221\u0022\u003E\u0026lt;OPTIONALTAG\u0026gt; \u003C/font\u003E\u003C/td\u003E\r\n \u003Ctd WIDTH=\u0022336\u0022\u003E\u003Cfont SIZE=\u00222\u0022\u003EOptional tag; this particular one can occur multiple times\r\n (0 or more) \u003C/font\u003E\u003C/td\u003E\r\n \u003C/tr\u003E\r\n \u003Ctr\u003E\r\n \u003Ctd WIDTH=\u0022162\u0022\u003E\u003Cfont SIZE=\u00221\u0022\u003E\u0026lt;SPECIFIC\u0026gt;\u003C/font\u003E\u003C/td\u003E\r\n \u003Ctd WIDTH=\u0022336\u0022\u003E\u003Cfont SIZE=\u00222\u0022\u003EValues are A, B, and C\u003C/font\u003E \u003C/td\u003E\r\n \u003C/tr\u003E\r\n \u003Ctr\u003E\r\n \u003Ctd WIDTH=\u0022162\u0022\u003E\u003Cfont SIZE=\u00221\u0022\u003E\u0026lt;ALPHAVALUE\u0026gt;\u003C/font\u003E\u003C/td\u003E\r\n \u003Ctd WIDTH=\u0022336\u0022\u003E\u003Cfont SIZE=\u00222\u0022\u003ETakes an alphanumeric value up to 32 characters,\u003Ci\u003E A-32\u003C/i\u003E\u003C/font\u003E\r\n \u003C/td\u003E\r\n \u003C/tr\u003E\r\n\u003C/table\u003E\r\n\r\n\u003Col\u003E\r\n \u003Cli\u003E\u003Ca NAME=\u0022_Toc380493246\u0022\u003E\u003Cfont SIZE=\u00226\u0022 FACE=\u0022Arial\u0022\u003EStructure\u003C/font\u003E\u003C/a\u003E \u003C/li\u003E\r\n\u003C/ol\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EThis chapter describes the basic structure of an Open Financial Exchange\r\nrequest and response. Structure includes headers, basic syntax, and the Signon request and\r\nresponse. This chapter also describes how Open Financial Exchange encodes external data,\r\nsuch as bit maps.\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EOpen Financial Exchange data consists of some headers plus one or more\r\nOpen Financial Exchange data blocks. Each block consists of a signon message and zero or\r\nmore additional messages. When sent over the internet using HTTP, standard HTTP and\r\nmulti-part MIME headers and formats surround the Open Financial Exchange data. A simple\r\nfile that contained only Open Financial Exchange data would have the following form:\u003C/font\u003E\r\n\u003C/p\u003E\r\n\r\n\u003Cpre\u003E\r\n\u003Cfont SIZE=\u00221\u0022\u003EHTTP headers\r\nMIME type application/x-ofx\r\nOpen Financial Exchange headers\r\nOpen Financial Exchange SGML block 1\u003C/font\u003E\r\n\u003C/pre\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EA more complex file that contained multiple Open Financial Exchange data\r\nblocks and additional Open Financial Exchange data would have this form:\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cpre\u003E\r\n\u003Cfont SIZE=\u00221\u0022\u003EHTTP headers\r\nMIME type multipart/x-mixed-replace; boundary =--boundary-\r\n---boundary---\r\nMIME type application/x-ofx\r\n\u003C/font\u003E\u003Cfont\r\nSIZE=\u00222\u0022\u003E\tOpen Financial Exchange headers\r\n\tOpen Financial Exchange SGML block 1\r\n\tOpen Financial Exchange SGML block 2\r\n---boundary---\r\n\tMIME type image/jpeg\r\n\t\tFI logo\u003C/font\u003E\r\n\u003C/pre\u003E\r\n\r\n\u003Col\u003E\r\n \u003Cli\u003E\u003Ca NAME=\u0022_Toc380493247\u0022\u003E\u003Cfont SIZE=\u00225\u0022 FACE=\u0022Arial\u0022\u003EHTTP Headers\u003C/font\u003E\u003C/a\u003E \u003C/li\u003E\r\n\u003C/ol\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EData delivered by way of HTTP places the standard HTTP result code on\r\nthe first line. HTTP defines a number of status codes. Servers can return any standard\r\nHTTP result. However, FIs should expect clients to collapse these codes into the following\r\nthree cases:\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Ctable BORDER=\u00221\u0022\u003E\r\n \u003Ctr\u003E\r\n \u003Ctd BGCOLOR=\u0022#000000\u0022 WIDTH=\u002284\u0022\u003E\u003Ci\u003E\u003Cfont SIZE=\u00221\u0022\u003ECode\u003C/font\u003E\u003C/i\u003E \u003C/td\u003E\r\n \u003Ctd BGCOLOR=\u0022#000000\u0022 WIDTH=\u002296\u0022\u003E\u003Ci\u003E\u003Cfont SIZE=\u00222\u0022\u003EMeaning\u003C/font\u003E\u003C/i\u003E \u003C/td\u003E\r\n \u003Ctd BGCOLOR=\u0022#000000\u0022 WIDTH=\u0022312\u0022\u003E\u003Ci\u003E\u003Cfont SIZE=\u00222\u0022\u003EAction\u003C/font\u003E\u003C/i\u003E \u003C/td\u003E\r\n \u003C/tr\u003E\r\n \u003Ctr\u003E\r\n \u003Ctd WIDTH=\u002284\u0022\u003E\u003Cfont SIZE=\u00221\u0022\u003E200\u003C/font\u003E\u003C/td\u003E\r\n \u003Ctd WIDTH=\u002296\u0022\u003E\u003Cfont SIZE=\u00222\u0022\u003EOK\u003C/font\u003E \u003C/td\u003E\r\n \u003Ctd WIDTH=\u0022312\u0022\u003E\u003Cfont SIZE=\u00222\u0022\u003EThe request was processed and a valid Open Financial\r\n Exchange result is returned.\u003C/font\u003E \u003C/td\u003E\r\n \u003C/tr\u003E\r\n \u003Ctr\u003E\r\n \u003Ctd WIDTH=\u002284\u0022\u003E\u003Cfont SIZE=\u00221\u0022\u003E400s\u003C/font\u003E\u003C/td\u003E\r\n \u003Ctd WIDTH=\u002296\u0022\u003E\u003Cfont SIZE=\u00222\u0022\u003EBad request\u003C/font\u003E \u003C/td\u003E\r\n \u003Ctd WIDTH=\u0022312\u0022\u003E\u003Cfont SIZE=\u00222\u0022\u003EThe request was invalid and was not processed. Clients will\r\n report an internal error to the user.\u003C/font\u003E \u003C/td\u003E\r\n \u003C/tr\u003E\r\n \u003Ctr\u003E\r\n \u003Ctd WIDTH=\u002284\u0022\u003E\u003Cfont SIZE=\u00221\u0022\u003E500s\u003C/font\u003E\u003C/td\u003E\r\n \u003Ctd WIDTH=\u002296\u0022\u003E\u003Cfont SIZE=\u00222\u0022\u003EServer error\u003C/font\u003E \u003C/td\u003E\r\n \u003Ctd WIDTH=\u0022312\u0022\u003E\u003Cfont SIZE=\u00222\u0022\u003EThe server is unavailable. Clients should advise the user\r\n to retry shortly.\u003C/font\u003E \u003C/td\u003E\r\n \u003C/tr\u003E\r\n\u003C/table\u003E\r\n\r\n\u003Cp\u003E\u003Ci\u003E\u003Cb\u003ENOTE:\u003C/b\u003E Open Financial Exchange returns a code 400 only if it cannot parse the\r\nfile. Open Financial Exchange handles content errors such as wrong PIN, or invalid\r\naccount, by returning a valid Open Financial Exchange response along with code 200.\u003C/i\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003EOpen Financial Exchange requires the following HTTP standard headers: \u003C/p\u003E\r\n\r\n\u003Ctable BORDER=\u00221\u0022\u003E\r\n \u003Ctr\u003E\r\n \u003Ctd BGCOLOR=\u0022#000000\u0022 WIDTH=\u002284\u0022\u003E\u003Ci\u003E\u003Cfont SIZE=\u00221\u0022\u003ECode\u003C/font\u003E\u003C/i\u003E \u003C/td\u003E\r\n \u003Ctd BGCOLOR=\u0022#000000\u0022 WIDTH=\u002296\u0022\u003E\u003Ci\u003E\u003Cfont SIZE=\u00222\u0022\u003EValue\u003C/font\u003E\u003C/i\u003E \u003C/td\u003E\r\n \u003Ctd BGCOLOR=\u0022#000000\u0022 WIDTH=\u0022312\u0022\u003E\u003Ci\u003E\u003Cfont SIZE=\u00222\u0022\u003EExplanation\u003C/font\u003E\u003C/i\u003E \u003C/td\u003E\r\n \u003C/tr\u003E\r\n \u003Ctr\u003E\r\n \u003Ctd WIDTH=\u002284\u0022\u003E\u003Cfont SIZE=\u00221\u0022\u003EContent-type\u003C/font\u003E\u003C/td\u003E\r\n \u003Ctd WIDTH=\u002296\u0022\u003E\u003Cfont SIZE=\u00222\u0022\u003Eapplication/x-ofx\u003C/font\u003E \u003C/td\u003E\r\n \u003Ctd WIDTH=\u0022312\u0022\u003E\u003Cfont SIZE=\u00222\u0022\u003EThe MIME type for Open Financial Exchange\u003C/font\u003E \u003C/td\u003E\r\n \u003C/tr\u003E\r\n \u003Ctr\u003E\r\n \u003Ctd WIDTH=\u002284\u0022\u003E\u003Cfont SIZE=\u00221\u0022\u003EContent-length\u003C/font\u003E\u003C/td\u003E\r\n \u003Ctd WIDTH=\u002296\u0022\u003E\u003Cfont SIZE=\u00222\u0022\u003Elength\u003C/font\u003E \u003C/td\u003E\r\n \u003Ctd WIDTH=\u0022312\u0022\u003E\u003Cfont SIZE=\u00222\u0022\u003ELength of the data after removing HTTP headers\u003C/font\u003E \u003C/td\u003E\r\n \u003C/tr\u003E\r\n\u003C/table\u003E\r\n\r\n\u003Cpre\u003E\r\n\r\n\u003C/pre\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EWhen responding with multi-part MIME, the main type will be\r\nmulti-part/x-mixed-replace; \u003Cbr\u003E\r\none of the parts will use application/x-ofx.\u003C/font\u003E \r\n\r\n\u003Col\u003E\r\n \u003Cli\u003E\u003Ca NAME=\u0022_Toc380493248\u0022\u003E\u003Cfont SIZE=\u00225\u0022 FACE=\u0022Arial\u0022\u003EOpen Financial Exchange Headers\u003C/font\u003E\u003C/a\u003E\r\n \u003C/li\u003E\r\n\u003C/ol\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EThe intent of Open Financial Exchange is for use with a variety of\r\ntransports and to provide sufficient version control capabilities for future expansion. To\r\nsupport this goal, the contents of an Open Financial Exchange file consist of a simple set\r\nof headers followed by contents defined by that header. \u0026quot;File format\u0026quot; means the\r\nentire content after removal of any transport headers. The HTTP transport described in\r\nthis document, means without the HTTP and MIME headers.\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EThe Open Financial Exchange headers are in a simple \u003Ci\u003Etag:value\u003C/i\u003E\r\nsyntax and terminated by a blank line. Open Financial Exchange always sends headers\r\nunencrypted, even if there is application-level encryption in use for the remaining\r\ncontents. The first entry will always be OFXHEADER with a version number. This entry will\r\nhelp identify the contents as an Open Financial Exchange file, and provides the version of\r\nthe Open Financial Exchange headers that follow (not of the content itself). For example:\u003C/font\u003E\r\n\u003C/p\u003E\r\n\r\n\u003Cpre\u003E\r\n\u003Cfont SIZE=\u00221\u0022\u003EOFXHEADER:100\u003C/font\u003E\r\n\u003C/pre\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EThis document defines version 1.0 of the headers to contain at least the\r\nfollowing additional tags:\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cpre\u003E\r\n\u003Cfont SIZE=\u00221\u0022\u003EDATA:OFXSGML\r\nVERSION:100\r\nSECURITY: \r\nENCODING:\r\n\u003C/font\u003E\u003Cfont SIZE=\u00222\u0022\u003ECHARSET:\r\nCOMPRESSION:\r\nOLDFILEUID:\r\nNEWFILEUID:\u003C/font\u003E\r\n\u003C/pre\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EThe data tag identifies the contents as being in OFX SGML form. VERSION\r\nidentifies the version type as OFXSGML data. In the case of OFXSGML, it translates to the\r\nversion of the Document Type Definition (DTD) that it uses for parsing. The ENCODING and\r\nCHARSET tags define the interpretation of the character data. See Chapter 5,\r\n\u0026quot;International Support\u0026quot; for more information on these tags. Chapter 4 describes\r\nthe security tag. A future version of this specification will define compression.\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EOpen Financial Exchange uses OLDFILEUID and NEWFILEUID to support error\r\nrecovery. They are not present when clients are not requesting error recovery. (See\r\nChapter 6, \u0026quot;Data Synchronization\u0026quot;)\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EA blank line follows the last tag. Then (for type OFXSGML), the\r\nSGML-readable data begins with the \u0026lt;OFX\u0026gt; tag.\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003E\u003Ci\u003E\u003Cb\u003ENOTE:\u003C/b\u003E Here, VERSION provides the overall version of the DTD.\r\nThe \u0026lt;OFX\u0026gt; block describes the specific message set versions used, shown later in\r\nthis chapter.\u003C/i\u003E\u003C/font\u003E \r\n\r\n\u003Col\u003E\r\n \u003Cli\u003E\u003Ca NAME=\u0022_Toc380493249\u0022\u003E\u003Cfont SIZE=\u00224\u0022 FACE=\u0022Arial\u0022\u003EThe Meaning of Version Numbers\u003C/font\u003E\u003C/a\u003E\r\n \u003C/li\u003E\r\n\u003C/ol\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EThe OFXHEADER value should only change its major number if an existing\r\nclient is unable to process the new header. This can occur because of a complete syntax\r\nchange in a header, or a significant change in the semantics of an existing tag-not the\r\nentire response. You can add new tags as long as clients can function without\r\nunderstanding them.\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EYou should add new values for a data tag only when you introduce an\r\nentirely new syntax. In the case of OFXSGML, a new syntax would have to be non-SGML\r\ncompliant to warrant a new data value. It is possible that there will be more than one\r\nsyntax in use at the same time to meet different needs.\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EThe intent of the header version tag is to identify syntactic changes.\r\nIn the case of OFXSGML, this corresponds to the DTD. Purely for identification purposes,\r\neach change will increment the minor number of the version tag. If you introduce an\r\nincompatible change so that an older DTD can not parse the file, the major number will\r\nchange. See the general discussion of message sets and version control, later in this\r\nchapter.\u003C/font\u003E \r\n\r\n\u003Col\u003E\r\n \u003Cli\u003E\u003Ca NAME=\u0022_Toc380493250\u0022\u003E\u003Cfont SIZE=\u00225\u0022 FACE=\u0022Arial\u0022\u003ESGML Details\u003C/font\u003E\u003C/a\u003E \u003C/li\u003E\r\n \u003Cli\u003E\u003Ca NAME=\u0022_Toc380493251\u0022\u003E\u003Cfont SIZE=\u00224\u0022 FACE=\u0022Arial\u0022\u003ECompliance\u003C/font\u003E\u003C/a\u003E \u003C/li\u003E\r\n\u003C/ol\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003ESGML is the basis for Open Financial Exchange. There is a DTD that\r\nformally defines the SGML wire format. However, Open Financial Exchange is not completely\r\nSGML-\u003Ci\u003Ecompliant\u003C/i\u003E because the specification allows unrecognized tags to be present. It\r\nrequires clients and servers to skip over the unrecognized material. That is, if\r\n\u0026lt;XYZ\u0026gt;qqq\u0026lt;/XYZ\u0026gt; appeared and a client or server cannot recognize \u0026lt;XYZ\u0026gt;,\r\nthe server should ignore that tag and its enclosed data. A fully-compliant SGML parser\r\nwould not \u003Ci\u003Evalidate\u003C/i\u003E an Open Financial Exchange document if it contained any tags\r\nthat the DTD does not define.\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EAlthough SGML is the basis for the specification, and the specification\r\nis largely compliant with SGML, do not assume Open Financial Exchange supports any SGML\r\nfeatures not documented in this specification. The intent is to allow parsing to be as\r\nsimple as possible, while retaining compatibility with the SGML world.\u003C/font\u003E \r\n\r\n\u003Col\u003E\r\n \u003Cli\u003E\u003Ca NAME=\u0022_Toc380493252\u0022\u003E\u003Cfont SIZE=\u00224\u0022 FACE=\u0022Arial\u0022\u003ESpecial Characters\u003C/font\u003E\u003C/a\u003E \u003C/li\u003E\r\n\u003C/ol\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EThe following characters are special to SGML. Use the given alternative\r\nsequence to represent them:\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Ctable BORDER=\u00221\u0022\u003E\r\n \u003Ctr\u003E\r\n \u003Ctd BGCOLOR=\u0022#000000\u0022 WIDTH=\u0022162\u0022\u003E\u003Ci\u003E\u003Cfont SIZE=\u00221\u0022\u003ECharacter\u003C/font\u003E\u003C/i\u003E \u003C/td\u003E\r\n \u003Ctd BGCOLOR=\u0022#000000\u0022 WIDTH=\u0022336\u0022\u003E\u003Ci\u003E\u003Cfont SIZE=\u00222\u0022\u003EEscape sequence\u003C/font\u003E\u003C/i\u003E \u003C/td\u003E\r\n \u003C/tr\u003E\r\n \u003Ctr\u003E\r\n \u003Ctd WIDTH=\u0022162\u0022\u003E\u003Cfont SIZE=\u00221\u0022\u003E\u0026lt; (less than)\u003C/font\u003E\u003C/td\u003E\r\n \u003Ctd WIDTH=\u0022336\u0022\u003E\u003Cfont SIZE=\u00222\u0022\u003E\u0026amp;lt;\u003C/font\u003E \u003C/td\u003E\r\n \u003C/tr\u003E\r\n \u003Ctr\u003E\r\n \u003Ctd WIDTH=\u0022162\u0022\u003E\u003Cfont SIZE=\u00221\u0022\u003E\u0026gt; (greater than)\u003C/font\u003E\u003C/td\u003E\r\n \u003Ctd WIDTH=\u0022336\u0022\u003E\u003Cfont SIZE=\u00222\u0022\u003E\u0026amp;gt;\u003C/font\u003E\u003C/td\u003E\r\n \u003C/tr\u003E\r\n \u003Ctr\u003E\r\n \u003Ctd WIDTH=\u0022162\u0022\u003E\u003Cfont SIZE=\u00221\u0022\u003E\u0026amp; (ampersand)\u003C/font\u003E\u003C/td\u003E\r\n \u003Ctd WIDTH=\u0022336\u0022\u003E\u003Cfont SIZE=\u00222\u0022\u003E\u0026amp;amp;\u003C/font\u003E \u003C/td\u003E\r\n \u003C/tr\u003E\r\n\u003C/table\u003E\r\n\r\n\u003Cp\u003EFor example, the string \u0026quot;AT\u0026amp;amp;T\u0026quot; encodes \u0026quot;AT\u0026amp;T.\u0026quot; \u003C/p\u003E\r\n\r\n\u003Cp\u003EA special case applies in specific tags that can accept HTML-formatted strings, such as\r\ne-mail records. These accept SGML marked section syntax to hide the HTML from the Open\r\nFinancial Exchange parser. You must prefix strings with \u0026quot;\u0026lt;![ CDATA [\u0026quot;and\r\nsuffixed with\u0026quot;]]\u0026gt;.\u0026quot; Within these bounds, treat the above characters literally\r\nwithout an escape. See the Chapter 9 for an example. \r\n\r\n\u003Col\u003E\r\n \u003Cli\u003E\u003Ca NAME=\u0022_Toc380493253\u0022\u003E\u003Cfont SIZE=\u00225\u0022 FACE=\u0022Arial\u0022\u003EOpen Financial Exchange SGML\r\n Structure\u003C/font\u003E\u003C/a\u003E \u003C/li\u003E\r\n \u003Cli\u003E\u003Ca NAME=\u0022_Toc380493254\u0022\u003E\u003Cfont SIZE=\u00224\u0022 FACE=\u0022Arial\u0022\u003EOverview\u003C/font\u003E\u003C/a\u003E \u003C/li\u003E\r\n\u003C/ol\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EOpen Financial Exchange hierarchically organizes request and response\r\nblocks:\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003ETop Level \u0026lt;OFX\u0026gt;\u003Cbr\u003E\r\nMessage Set and Version \u0026lt;\u003Ci\u003EXXX\u003C/i\u003EMSGSVn\u0026gt;\u003Cbr\u003E\r\nSynchronization Wrappers \u0026lt;YYYSYNCRQ\u0026gt;, \u0026lt;YYYSYNCRS\u0026gt; \u003Cbr\u003E\r\nTransaction Wrappers \u0026lt;YYYTRNRQ\u0026gt;, \u0026lt;YYYTRNRS\u0026gt;\u003Cbr\u003E\r\nSpecific requests and responses\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EThe following sections describe each of these levels.\u003C/font\u003E \r\n\r\n\u003Col\u003E\r\n \u003Cli\u003E\u003Ca NAME=\u0022_Toc380493255\u0022\u003E\u003Cfont SIZE=\u00224\u0022 FACE=\u0022Arial\u0022\u003ETop Level\u003C/font\u003E\u003C/a\u003E \u003C/li\u003E\r\n\u003C/ol\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EAn Open Financial Exchange request or response has the following\r\ntop-level form:\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Ctable BORDER=\u00221\u0022\u003E\r\n \u003Ctr\u003E\r\n \u003Ctd BGCOLOR=\u0022#000000\u0022 WIDTH=\u0022162\u0022\u003E\u003Ci\u003E\u003Cfont SIZE=\u00221\u0022\u003ETag\u003C/font\u003E\u003C/i\u003E \u003C/td\u003E\r\n \u003Ctd BGCOLOR=\u0022#000000\u0022 WIDTH=\u0022336\u0022\u003E\u003Ci\u003E\u003Cfont SIZE=\u00222\u0022\u003EDescription\u003C/font\u003E\u003C/i\u003E \u003C/td\u003E\r\n \u003C/tr\u003E\r\n \u003Ctr\u003E\r\n \u003Ctd WIDTH=\u0022162\u0022\u003E\u003Cfont SIZE=\u00221\u0022\u003E\u0026lt;\u003Cb\u003EOFX\u003C/b\u003E\u0026gt;\u003C/font\u003E\u003C/td\u003E\r\n \u003Ctd WIDTH=\u0022336\u0022\u003E\u003Cfont SIZE=\u00222\u0022\u003EOpening tag\u003C/font\u003E\u003C/td\u003E\r\n \u003C/tr\u003E\r\n \u003Ctr\u003E\r\n \u003Ctd WIDTH=\u0022162\u0022\u003E\u003Cfont SIZE=\u00221\u0022\u003E... Open Financial Exchange requests or responses ...\u003C/font\u003E\r\n \u003C/td\u003E\r\n \u003Ctd WIDTH=\u0022336\u0022\u003E\u003Cfont SIZE=\u00222\u0022\u003E0 or more transaction requests and responses inside\r\n appropriate message set aggregates\u003C/font\u003E \u003C/td\u003E\r\n \u003C/tr\u003E\r\n \u003Ctr\u003E\r\n \u003Ctd WIDTH=\u0022162\u0022\u003E\u003Cfont SIZE=\u00221\u0022\u003E\u0026lt;/\u003Cb\u003EOFX\u003C/b\u003E\u0026gt;\u003C/font\u003E\u003C/td\u003E\r\n \u003Ctd WIDTH=\u0022336\u0022\u003E\u003Cfont SIZE=\u00222\u0022\u003EClosing tag for the Open Financial Exchange record\u003C/font\u003E \u003C/td\u003E\r\n \u003C/tr\u003E\r\n\u003C/table\u003E\r\n\r\n\u003Cp\u003EThis chapter specifies the order of requests and responses. \u003C/p\u003E\r\n\r\n\u003Cp\u003EA single file can contain multiple \u0026lt;OFX\u0026gt; ... \u0026lt;/OFX\u0026gt; blocks. A typical use\r\nof multiple blocks is to request in a single file information associated with different\r\nusers. \r\n\r\n\u003Col\u003E\r\n \u003Cli\u003E\u003Ca NAME=\u0022_Toc380493256\u0022\u003E\u003Cfont SIZE=\u00224\u0022 FACE=\u0022Arial\u0022\u003EMessages\u003C/font\u003E\u003C/a\u003E \u003C/li\u003E\r\n\u003C/ol\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EA message is the unit of work in Open Financial Exchange. It refers to a\r\nrequest and response pair, and the status codes associated with that response. For\r\nexample, the message to download a bank statement consists of the request \u0026lt;STMTRQ\u0026gt;\r\nand the response \u0026lt;STMTRS\u0026gt;. In addition, with the exception of the signon message,\r\neach message includes a \u003Ci\u003Etransaction wrapper\u003C/i\u003E. These aggregates add a transaction\r\nunique ID \u0026lt;TRNUID\u0026gt;, and for responses, a \u0026lt;STATUS\u0026gt; aggregate, to the basic\r\nrequest and response. \u003C/font\u003E\u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EFor messages subject to synchronization (see Chapter 6), a third layer\r\nof aggregates is also part of a message definition: a synchronization request and\r\nresponse. These add a token and, in some cases, other information to the transactions. \u003C/font\u003E\u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EOpen Financial Exchange uses the following naming where the \u003Ci\u003EXXX\u003C/i\u003E\r\nmessage includes:\u003C/font\u003E \r\n\r\n\u003Cul\u003E\r\n \u003Cli\u003E\u003Cfont SIZE=\u00222\u0022\u003EBasic request \u0026lt;\u003Ci\u003EXXX\u003C/i\u003E\u003Cb\u003ERQ\u003C/b\u003E\u0026gt; and response \u0026lt;\u003Ci\u003EXXX\u003C/i\u003E\u003Cb\u003ERS\u003C/b\u003E\u0026gt;\u003C/font\u003E\r\n \u003C/li\u003E\r\n \u003Cli\u003E\u003Cfont SIZE=\u00222\u0022\u003ETransaction wrapper \u0026lt;\u003Ci\u003EXXX\u003C/i\u003E\u003Cb\u003ETRNRQ\u003C/b\u003E\u0026gt; and \u0026lt;\u003Ci\u003EXXX\u003C/i\u003E\u003Cb\u003ETRNRS\u003C/b\u003E\u0026gt;\u003C/font\u003E\r\n \u003C/li\u003E\r\n \u003Cli\u003E\u003Cfont SIZE=\u00222\u0022\u003EIf needed, synchronization wrapper \u0026lt;\u003Ci\u003EXXX\u003C/i\u003E\u003Cb\u003ESYNCRQ\u003C/b\u003E\u0026gt; and\r\n \u0026lt;\u003Ci\u003EXXX\u003C/i\u003E\u003Cb\u003ESYNCRS\u003C/b\u003E\u0026gt;\u003C/font\u003E \u003C/li\u003E\r\n\u003C/ul\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EIn a few cases, a small number of related basic requests and responses\r\nshare a transaction and synchronization wrapper. The term message will still apply to each\r\nrequest and response; only the naming scheme will not hold in those cases.\u003C/font\u003E \r\n\r\n\u003Col\u003E\r\n \u003Cli\u003E\u003Ca NAME=\u0022_Toc380493257\u0022\u003E\u003Cfont SIZE=\u00224\u0022 FACE=\u0022Arial\u0022\u003EMessage Sets and Version Control\u003C/font\u003E\u003C/a\u003E\r\n \u003C/li\u003E\r\n\u003C/ol\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EMessage sets are collections of messages. Generally they form all or\r\npart of what a user would consider a \u003Ci\u003Eservice\u003C/i\u003E, something for which they might have\r\nsigned up, such as \u0026quot;banking.\u0026quot; Message sets are the basis of version control,\r\nrouting, and security. They are also the basis for the required ordering in Open Financial\r\nExchange files.\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EWithin an Open Financial Exchange block, Open Financial Exchange\r\norganizes messages by message set. A message set can appear at most once within an Open\r\nFinancial Exchange block. All messages from a message set must be from the same version of\r\nthat message set.\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003Cp\u003E\u003Cfont SIZE=\u00222\u0022\u003EFor each message set of \u003Ci\u003EXXX\u003C/i\u003E and version \u003Ci\u003En\u003C/i\u003E, there exists an\r\naggregate named \u0026lt;\u003Ci\u003EXXX\u003C/i\u003EMSGSV\u003Ci\u003En\u003C/i\u003E\u0026gt;. (Compare with \u0026lt;\u003Ci\u003EXXX\u003C/i\u003EMSGSETV\u003Ci\u003En\u003C/i\u003E\u0026gt;\r\nin Chapter 7.) All of the messages from that message set must be inside the appropriate\r\nmessage set aggregate. In the following example, the Open Financial Exchange block\r\ncontains a signon request inside the signon message set, and two statement requests and a\r\ntransfer request inside the bank message set.\u003C/font\u003E \u003C/p\u003E\r\n\r\n\u003C/body\u003E\r\n\u003C/html\u003E\r\n\u0060;\r\nconst pattern = /\u003Cbody[^\u003E]*\u003E((.|[\\n\\r])*)\u003C\\/body\u003E/im;\r\nconst matches = pattern.exec(html);\r\nconst body = matches[1]","IsDeferred":false}]}