{"id":37041572,"url":"https://github.com/squizzdotcom/squizz-platform-api-dotnet-library","last_synced_at":"2026-01-14T04:54:56.753Z","repository":{"id":37927017,"uuid":"100695583","full_name":"squizzdotcom/squizz-platform-api-dotnet-library","owner":"squizzdotcom","description":"The library can be used by .NET applications to access the SQUIZZ.com platform's Application Programming Interface (API) to push and pull data from the API's endpoints.","archived":false,"fork":false,"pushed_at":"2024-09-16T19:52:12.000Z","size":209,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-09-23T10:57:35.834Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/squizzdotcom.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-08-18T09:21:45.000Z","updated_at":"2024-09-16T19:35:27.000Z","dependencies_parsed_at":"2022-08-25T21:10:41.288Z","dependency_job_id":null,"html_url":"https://github.com/squizzdotcom/squizz-platform-api-dotnet-library","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/squizzdotcom/squizz-platform-api-dotnet-library","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/squizzdotcom%2Fsquizz-platform-api-dotnet-library","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/squizzdotcom%2Fsquizz-platform-api-dotnet-library/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/squizzdotcom%2Fsquizz-platform-api-dotnet-library/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/squizzdotcom%2Fsquizz-platform-api-dotnet-library/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/squizzdotcom","download_url":"https://codeload.github.com/squizzdotcom/squizz-platform-api-dotnet-library/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/squizzdotcom%2Fsquizz-platform-api-dotnet-library/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28409894,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T01:52:23.358Z","status":"online","status_checked_at":"2026-01-14T02:00:06.678Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-14T04:54:55.714Z","updated_at":"2026-01-14T04:54:56.740Z","avatar_url":"https://github.com/squizzdotcom.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"![alt tag](https://www.squizz.com/ui/resources/images/logos/squizz_logo_mdpi.png)\n\n# SQUIZZ.com Platform API .NET Library\n\nThe [SQUIZZ.com](https://www.squizz.com) Platform API .NET Library can be used by .NET applications to access the SQUIZZ.com platform's Application Programming Interface (API), allowing data to be pushed and pulled from the API's endpoints in a clean and elegant way. The kinds of data pushed and pulled from the API using the library can include organisational data such as products, sales orders, purchase orders, customer accounts, supplier accounts, notifications, and other data that the platform supports.\n\nThis library removes the need for .NET software developers to write boilerplate code for connecting and accessing the platform's API, allowing .NET software using the platform's API to be writen faster and simpler. The library provides classes and objects that can be directly referenced within a .NET application, making it easy to manipulate data retreived from the platform, or create and send data to platform.\n\nIf you are a software developer writing a .NET application then we recommend that you use this library instead of directly calling the platform's APIs, since it will simplify your development times and allow you to easily incorporate new functionality from the API by simplying updating this library.\n\n- You can find more information about the SQUIZZ.com platform by visiting [https://www.squizz.com/docs/squizz](https://www.squizz.com/docs/squizz)\n- To find more information about developing software for the SQUIZZ.com visit [https://www.squizz.com/docs/squizz/Integrate-Software-Into-SQUIZZ.com-Platform.html](https://www.squizz.com/docs/squizz/Integrate-Software-Into-SQUIZZ.com-Platform.html)\n- To find more information about the platform's API visit [https://www.squizz.com/docs/squizz/Platform-API.html](https://www.squizz.com/docs/squizz/Platform-API.html)\n\n## Contents\n\n  * [Getting Started](#getting-started)\n  * [Example Usages](#example-usages)\n    * [Create Organisation API Session Endpoint](#create-organisation-api-session-endpoint)\n\t* [Send and Procure Purchase Order From Supplier Endpoint](#send-and-procure-purchase-order-from-supplier-endpoint)\n\t* [Send Customer Invoices to Customer Endpoint](#send-customer-invoices-to-customer-endpoint)\n\t* [Send Delivery Notice to Customer Endpoint](#send-delivery-notice-to-customer-endpoint)\n    * [Retrieve Organisation Data Endpoint](#retrieve-organisation-data-endpoint)\n\t* [Import Organisation Data Endpoint](#import-organisation-data-endpoint)\n\t* [Import Organisation Sales Order Endpoint](#import-organisation-sales-order-endpoint)\n    * [Search Customer Account Records Endpoint](#search-customer-account-records-endpoint)\n\t* [Retrieve Customer Account Record Endpoint](#retrieve-customer-account-record-endpoint)\n    * [Create Organisation Notification Endpoint](#create-organisation-notification-endpoint)\n    * [Validate Organisation API Session Endpoint](#validate-organisation-api-session-endpoint)\n    * [Validate/Create Organisation API Session Endpoint](#validatecreate-organisation-api-session-endpoint)\n    * [Destroy Organisation API Session Endpoint](#destroy-organisation-api-session-endpoint)\n\n## Getting Started\n\nTo get started using the library within .NET applications, you can download the API library and its dependent libraries into your Visual Studio solution from [NuGET](https://www.nuget.org/) package manager. The library is hosted at [NuGet Squizz.Platform.API](https://www.nuget.org/packages/Squizz.Platform.API/) package. You can install the NuGET hosted package with the command line below, or visually find and install the package using [Visual Studio NuGET Package Manager](https://marketplace.visualstudio.com/items?itemName=NuGetTeam.NuGetPackageManager) plugin.\n```\nInstall-Package Squizz.Platform.API -Version 1.5.0\n```\nAlternatively you can download and add the required files direct from the [Release page](https://github.com/squizzdotcom/squizz-platform-api-dotnet-library/releases). Once done then add references to the DLL files in your visual studio solution.\nThe library contains dependencies on [Newtonsoft's Json.NET Library](https://www.newtonsoft.com/json) as well as the [Ecommerce Standards Documents .NET Library](https://github.com/squizzdotcom/ecommerce-standards-documents-dotnet-library)\nOnce this library is referenced within your .NET application then to use it within a .NET class you can use the following \"using\" syntax:\n\n```\nusing Squizz.Platform.API.v1;\nusing Squizz.Platform.API.v1.endpoint;\n```\n\n## Example Usages\n### Create Organisation API Session Endpoint\nTo start using the SQUIZZ.com platform's API a session must first be created. A session can only be created after credentials for a specified organisation have been given to the API and have been verified.\nOnce the session has been created then all other endpoints in the API can be called.\nRead [https://www.squizz.com/docs/squizz/Platform-API.html#section840](https://www.squizz.com/docs/squizz/Platform-API.html#section840) for more documentation about the endpoint.\n\n```csharp\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Squizz.Platform.API.v1;\nusing Squizz.Platform.API.v1.endpoint;\n\nnamespace Squizz.Platform.API.Examples.APIv1\n{\n    /// \u003csummary\u003eClass runs a console application that shows an example on how create a session in the platform's API\u003c/summary\u003e\n    public class APIv1ExampleRunnerCreateSession\n    {\n        public static void runAPIv1ExampleRunnerCreateSession()\n        {\n            Console.WriteLine(\"Example - Creating An Organisation API Session\");\n            Console.WriteLine(\"\");\n\n            //obtain or load in an organisation's API credentials, in this example from the user in the console\n            Console.WriteLine(\"Enter Organisation ID:\");\n            string orgID = Console.ReadLine();\n            Console.WriteLine(\"Enter Organisation API Key:\");\n            string orgAPIKey = Console.ReadLine();\n            Console.WriteLine(\"Enter Organisation API Password:\");\n            string orgAPIPass = Console.ReadLine();\n            \n            //create an API session instance\n            int sessionTimeoutMilliseconds = 20000;\n            APIv1OrgSession apiOrgSession = new APIv1OrgSession(orgID, orgAPIKey, orgAPIPass, sessionTimeoutMilliseconds, APIv1Constants.SUPPORTED_LOCALES_EN_AU);\n\n            //call the platform's API to request that a session is created\n            APIv1EndpointResponse endpointResponse = apiOrgSession.createOrgSession();\n\n            //check if the organisation's credentials were correct and that a session was created in the platform's API\n            if (endpointResponse.result.ToUpper() == APIv1EndpointResponse.ENDPOINT_RESULT_SUCCESS)\n            {\n                //session has been created so now can call other API endpoints\n                Console.WriteLine(\"SUCCESS - API session has successfully been created.\");\n            }\n            else\n            {\n                //session failed to be created\n                Console.WriteLine(\"FAIL - API session failed to be created. Reason: \" + endpointResponse.result_message + \" Error Code: \" + endpointResponse.result_code);\n            }\n\n            //next steps\n            //call API endpoints...\n            //destroy API session when done...\n\n            Console.WriteLine(\"Example Finished.\");\n        }\n    }\n}\n```\n\n### Send and Procure Purchase Order From Supplier Endpoint\n\nThe SQUIZZ.com platform's API has an endpoint that allows an orgnisation to import a purchase order. and have it procured/converted into a sales order of a designated supplier organisation. \nThis endpoint allows a customer organisation to commit to buy goods and services of an organisation, and have the order processed, and delivered by the supplier organisation.\n- The endpoint relies upon a connection first being setup between organisations within the SQUIZZ.com platform.\n- The endpoint relies upon being able to find matching supplier products as with what has been ordered.\n- The endpoint has a number of other requirements. See the endpoint documentation for more details on these requirements.\n\nEach purchase order needs to be imported within a \"Ecommerce Standards Document\" that contains a record for each purchase order. Use the Ecommerce Standards library to easily create these documents and records.\nIt is recommended to only import one purchase order at a time, since if an array of purchase orders is imported and one order failed to be procured, then no other orders in the list will be attempted to import.\nRead [https://www.squizz.com/docs/squizz/Platform-API.html#section961](https://www.squizz.com/docs/squizz/Platform-API.html#section961) for more documentation about the endpoint and its requirements.\nSee the example below on how the call the Send and Procure Purchase order From Supplier endpoint. Note that a session must first be created in the API before calling the endpoint.\n\n![alt tag](https://attach.squizz.com/doc_centre/1/files/images/masters/SQUIZZ-Customer-Purchase-Order-Procurement-Supplier[124].png)\n\n```csharp\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Squizz.Platform.API.v1;\nusing Squizz.Platform.API.v1.endpoint;\nusing EcommerceStandardsDocuments;\n\nnamespace Squizz.Platform.API.Examples.APIv1\n{\n    /**\n     * Shows an example of creating a organisation session with the SQUIZZ.com platform's API, then sends a organisation's purchase order data to supplier\n     */\n    public class APIv1ExampleRunnerProcurePurchaseOrderFromSupplier\n    {\n        public static void runAPIv1ExampleRunnerProcurePurchaseOrderFromSupplier()\n        {\n            Console.WriteLine(\"Example - Procure Purchase Order From Supplier API Session\");\n            Console.WriteLine(\"\");\n\n            //obtain or load in an organisation's API credentials, in this example from the user in the console\n            Console.WriteLine(\"Enter Organisation ID:\");\n            string orgID = Console.ReadLine();\n            Console.WriteLine(\"Enter Organisation API Key:\");\n            string orgAPIKey = Console.ReadLine();\n            Console.WriteLine(\"Enter Organisation API Password:\");\n            string orgAPIPass = Console.ReadLine();\n            Console.WriteLine(\"Enter Supplier Organisation ID:\");\n            string supplierOrgID = Console.ReadLine();\n            Console.WriteLine(\"(optional) Enter Supplier's Customer Account Code:\");\n            string customerAccountCode = Console.ReadLine();\n\n            //create an API session instance\n            int sessionTimeoutMilliseconds = 20000;\n            APIv1OrgSession apiOrgSession = new APIv1OrgSession(orgID, orgAPIKey, orgAPIPass, sessionTimeoutMilliseconds, APIv1Constants.SUPPORTED_LOCALES_EN_AU);\n\n            //call the platform's API to request that a session is created\n            APIv1EndpointResponse endpointResponse = apiOrgSession.createOrgSession();\n\n            //check if the organisation's credentials were correct and that a session was created in the platform's API\n            if (endpointResponse.result.ToUpper() == APIv1EndpointResponse.ENDPOINT_RESULT_SUCCESS)\n            {\n                //session has been created so now can call other API endpoints\n                Console.WriteLine(\"SUCCESS - API session has successfully been created.\");\n            }\n            else\n            {\n                //session failed to be created\n                Console.WriteLine(\"FAIL - API session failed to be created. Reason: \" + endpointResponse.result_message + \" Error Code: \" + endpointResponse.result_code);\n            }\n\n            //sand and procure purchsae order if the API was successfully created\n            if (apiOrgSession.doesSessionExist())\n            {\n                //create purchase order record to import\n                ESDRecordOrderPurchase purchaseOrderRecord = new ESDRecordOrderPurchase();\n\n                //set data within the purchase order\n                purchaseOrderRecord.keyPurchaseOrderID = \"111\";\n                purchaseOrderRecord.purchaseOrderCode = \"POEXAMPLE-345\";\n                purchaseOrderRecord.purchaseOrderNumber = \"345\";\n                purchaseOrderRecord.purchaseOrderNumber = \"345\";\n                purchaseOrderRecord.instructions = \"Leave goods at the back entrance\";\n                purchaseOrderRecord.keySupplierAccountID = \"2\";\n                purchaseOrderRecord.supplierAccountCode = \"ACM-002\";\n\n                //set delivery address that ordered goods will be delivered to\n                purchaseOrderRecord.deliveryAddress1 = \"32\";\n                purchaseOrderRecord.deliveryAddress2 = \"Main Street\";\n                purchaseOrderRecord.deliveryAddress3 = \"Melbourne\";\n                purchaseOrderRecord.deliveryRegionName = \"Victoria\";\n                purchaseOrderRecord.deliveryCountryName = \"Australia\";\n                purchaseOrderRecord.deliveryPostcode = \"3000\";\n                purchaseOrderRecord.deliveryOrgName = \"Acme Industries\";\n                purchaseOrderRecord.deliveryContact = \"Jane Doe\";\n\n                //set billing address that the order will be billed to for payment\n                purchaseOrderRecord.billingAddress1 = \"43\";\n                purchaseOrderRecord.billingAddress2 = \" High Street\";\n                purchaseOrderRecord.billingAddress3 = \"Melbourne\";\n                purchaseOrderRecord.billingRegionName = \"Victoria\";\n                purchaseOrderRecord.billingCountryName = \"Australia\";\n                purchaseOrderRecord.billingPostcode = \"3000\";\n                purchaseOrderRecord.billingOrgName = \"Acme Industries International\";\n                purchaseOrderRecord.billingContact = \"John Citizen\";\n\n                //create an array of purchase order lines\n                List\u003cESDRecordOrderPurchaseLine\u003e orderLines = new List\u003cESDRecordOrderPurchaseLine\u003e();\n\n                //create purchase order line record 1\n                ESDRecordOrderPurchaseLine orderProduct = new ESDRecordOrderPurchaseLine();\n                orderProduct.lineType = ESDocumentConstants.ORDER_LINE_TYPE_PRODUCT;\n                orderProduct.productCode = \"TEA-TOWEL-GREEN\";\n                orderProduct.productName = \"Green tea towel - 30 x 6 centimetres\";\n                orderProduct.keySellUnitID = \"2\";\n                orderProduct.unitName = \"EACH\";\n                orderProduct.quantity = 4;\n                orderProduct.sellUnitBaseQuantity = 4;\n                orderProduct.priceExTax = (decimal)5.00;\n                orderProduct.priceIncTax = (decimal)5.50;\n                orderProduct.priceTax = (decimal)0.50;\n                orderProduct.priceTotalIncTax = (decimal)22.00;\n                orderProduct.priceTotalExTax = (decimal)20.00;\n                orderProduct.priceTotalTax = (decimal)2.00;\n                //specify supplier's product code in salesOrderProductCode if it is different to the line's productCode field\n                orderProduct.salesOrderProductCode = \"ACME-SUPPLIER-TTGREEN\";\n\n                //add 1st order line to lines list\n                orderLines.Add(orderProduct);\n\n                //create purchase order line record 2\n                orderProduct = new ESDRecordOrderPurchaseLine();\n                orderProduct.lineType = ESDocumentConstants.ORDER_LINE_TYPE_PRODUCT;\n                orderProduct.productCode = \"TEA-TOWEL-BLUE\";\n                orderProduct.quantity = 10;\n                orderProduct.salesOrderProductCode = \"ACME-TTBLUE\";\n\n                //add 2nd order line to lines list\n                orderLines.Add(orderProduct);\n\n                //add order lines to the order\n                purchaseOrderRecord.lines = orderLines;\n\n                //create purchase order records list and add purchase order to it\n                List\u003cESDRecordOrderPurchase\u003e purchaseOrderRecords = new List\u003cESDRecordOrderPurchase\u003e();\n                purchaseOrderRecords.Add(purchaseOrderRecord);\n\n                //after 60 seconds give up on waiting for a response from the API when creating the notification\n                int timeoutMilliseconds = 60000;\n\n                //create purchase order Ecommerce Standards document and add purchse order records to the document\n                ESDocumentOrderPurchase orderPurchaseESD = new ESDocumentOrderPurchase(ESDocumentConstants.RESULT_SUCCESS, \"successfully obtained data\", purchaseOrderRecords.ToArray(), new Dictionary\u003cstring, string\u003e());\n\n                //send purchase order document to the API for procurement by the supplier organisation\n                APIv1EndpointResponseESD\u003cESDocumentOrderSale\u003e endpointResponseESD = APIv1EndpointOrgProcurePurchaseOrderFromSupplier.call(apiOrgSession, timeoutMilliseconds, supplierOrgID, customerAccountCode, orderPurchaseESD);\n                ESDocumentOrderSale esDocumentOrderSale = endpointResponseESD.esDocument;\n\n                //check the result of procuring the purchase orders\n                if (endpointResponseESD.result.ToUpper() == APIv1EndpointResponse.ENDPOINT_RESULT_SUCCESS) {\n                    Console.WriteLine(\"SUCCESS - organisation purchase orders have successfully been sent to supplier organisation.\");\n\n                    //iterate through each of the returned sales orders and output the details of the sales orders\n                    if (esDocumentOrderSale.dataRecords != null) {\n                        foreach(ESDRecordOrderSale salesOrderRecord in esDocumentOrderSale.dataRecords) {\n                            Console.WriteLine(\"\\nSales Order Returned, Order Details: \");\n                            Console.WriteLine(\"Sales Order Code: \" + salesOrderRecord.salesOrderCode);\n                            Console.WriteLine(\"Sales Order Total Cost: \" + salesOrderRecord.totalPriceIncTax + \" (\" + salesOrderRecord.currencyISOCode + \")\");\n                            Console.WriteLine(\"Sales Order Total Taxes: \" + salesOrderRecord.totalTax + \" (\" + salesOrderRecord.currencyISOCode + \")\");\n                            Console.WriteLine(\"Sales Order Customer Account: \" + salesOrderRecord.customerAccountCode);\n                            Console.WriteLine(\"Sales Order Total Lines: \" + salesOrderRecord.totalLines);\n                        }\n                    }\n                } else {\n                    Console.WriteLine(\"FAIL - organisation purchase orders failed to be processed. Reason: \" + endpointResponseESD.result_message + \" Error Code: \" + endpointResponseESD.result_code);\n\n                    //check that a Ecommerce standards document was returned\n                    if (esDocumentOrderSale != null \u0026\u0026 esDocumentOrderSale.configs != null)\n                    {\n                        //if one or more products in the purchase order could not match a product for the supplier organisation then find out the order lines caused the problem\n                        if (esDocumentOrderSale.configs.ContainsKey(APIv1EndpointResponseESD\u003cESDocumentOrderSale\u003e.ESD_CONFIG_ORDERS_WITH_UNMAPPED_LINES))\n                        {\n                            //get a list of order lines that could not be mapped\n                            List\u003cKeyValuePair\u003cint, int\u003e\u003e unmappedLines = APIv1EndpointOrgProcurePurchaseOrderFromSupplier.getUnmappedOrderLines(esDocumentOrderSale);\n\n                            //iterate through each unmapped order line\n                            foreach (KeyValuePair\u003cint, int\u003e unmappedLine in unmappedLines)\n                            {\n                                //get the index of the purchase order and line that contained the unmapped product\n                                int orderIndex = unmappedLine.Key;\n                                int lineIndex = unmappedLine.Value;\n\n                                //check that the order can be found that contains the problematic line\n                                if (orderIndex \u003c orderPurchaseESD.dataRecords.Length \u0026\u0026 lineIndex \u003c orderPurchaseESD.dataRecords[orderIndex].lines.Count)\n                                {\n                                    Console.WriteLine(\"For purchase order: \" + orderPurchaseESD.dataRecords[orderIndex].purchaseOrderCode + \" a matching supplier product for line number: \" + (lineIndex + 1) + \" could not be found.\");\n                                }\n                            }\n                        }\n\n                        //if one or more supplier organisation's products in the purchase order are not stock then find the order lines that caused the problem\n                        if (esDocumentOrderSale.configs.ContainsKey(APIv1EndpointResponseESD\u003cESDocumentOrderSale\u003e.ESD_CONFIG_ORDERS_WITH_UNSTOCKED_LINES))\n                        {\n                            //get a list of order lines that are not stocked by the supplier\n                            List\u003cKeyValuePair\u003cint, int\u003e\u003e unstockedLines = APIv1EndpointOrgProcurePurchaseOrderFromSupplier.getOutOfStockOrderLines(esDocumentOrderSale);\n\n                            //iterate through each unstocked order line\n                            foreach (KeyValuePair\u003cint, int\u003e unstockedLine in unstockedLines)\n                            {\n                                //get the index of the purchase order and line that contained the unstocked product\n                                int orderIndex = unstockedLine.Key;\n                                int lineIndex = unstockedLine.Value;\n\n                                //check that the order can be found that contains the problematic line\n                                if (orderIndex \u003c orderPurchaseESD.dataRecords.Length \u0026\u0026 lineIndex \u003c orderPurchaseESD.dataRecords[orderIndex].lines.Count)\n                                {\n                                    Console.WriteLine(\"For purchase order: \" + orderPurchaseESD.dataRecords[orderIndex].purchaseOrderCode + \" the supplier has no products in stock for line number: \" + (lineIndex + 1));\n                                }\n                            }\n                        }\n\n                        //if one or more products in the purchase order could not be priced by the supplier organisation then find the order line that caused the problem\n                        if (esDocumentOrderSale.configs.ContainsKey(APIv1EndpointResponseESD\u003cESDocumentOrderSale\u003e.ESD_CONFIG_ORDERS_WITH_UNPRICED_LINES))\n                        {\n                            //get a list of order lines that could not be priced\n                            List\u003cKeyValuePair\u003cint, int\u003e\u003e unpricedLines = APIv1EndpointOrgProcurePurchaseOrderFromSupplier.getUnpricedOrderLines(esDocumentOrderSale);\n\n                            //iterate through each unpriced order line\n                            foreach (KeyValuePair\u003cint, int\u003e unpricedLine in unpricedLines) {\n                                //get the index of the purchase order and line that contained the unpriced product\n                                int orderIndex = unpricedLine.Key;\n                                int lineIndex = unpricedLine.Value;\n\n                                //check that the order can be found that contains the problematic line\n                                if (orderIndex \u003c orderPurchaseESD.dataRecords.Length \u0026\u0026 lineIndex \u003c orderPurchaseESD.dataRecords[orderIndex].lines.Count) {\n                                    Console.WriteLine(\"For purchase order: \" + orderPurchaseESD.dataRecords[orderIndex].purchaseOrderCode + \" the supplier has not set pricing for line number: \" + (lineIndex + 1));\n                                }\n                            }\n                        }\n                    }\n                }\n\n                //next steps\n                //call other API endpoints...\n                //destroy API session when done...\n                apiOrgSession.destroyOrgSession();\n            }\n            \n            Console.WriteLine(\"Example Finished.\");\n        }\n    }\n}\n```\n\n\n### Send Customer Invoices To Customer Endpoint\n\nThe SQUIZZ.com platform's API has an endpoint that allows an orgnisation to send invoices it has raised against a customer account (A.K.A debtor) to the designated customer organisation, allowing the invoice to be imported into the customer's system as a supplier invoice (A.K.A bill). \nThis endpoint allows a supplier organisation to automate the sending out of invoices to its customers, and it allows the customer organisations to automate the receiving of invoices and importing them back into their own systems.\n- The endpoint relies upon a connection first being setup between the supplier and customer organisations within the SQUIZZ.com platform.\n- The endpoint optionally relies upon being able to match up products, surcharges and taxcodes from the customer invoice to the customer organisation, or such matching is ignored if the customer organisation does not require it.\n- The endpoint has a number of other requirements. See the endpoint documentation for more details on these requirements.\n\nEach customer invoice needs to be imported within a \"Ecommerce Standards Document\" that contains a record for each customer invoice. Use the Ecommerce Standards library to easily create these documents and records.\nIt is recommended to only import one customer invoice at a time, since if an array of customer invoices is imported and one invoice failed to import, then no other invoices in the list will be attempted to import.\nRead [https://www.squizz.com/docs/squizz/Platform-API.html#section1154](https://www.squizz.com/docs/squizz/Platform-API.html#section1154) for more documentation about the endpoint and its requirements.\nSee the example below on how the call the Send Customer Invoices To Customer endpoint. Note that a session must first be created in the API before calling the endpoint.\n\n```csharp\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Squizz.Platform.API.v1;\nusing Squizz.Platform.API.v1.endpoint;\nusing EcommerceStandardsDocuments;\n\nnamespace Squizz.Platform.API.Examples.APIv1\n{\n    /**\n     * Shows an example of creating a organisation session with the SQUIZZ.com platform's API, then sends an organisation's customer invoice to a customer organisation\n     */\n    public class APIv1ExampleRunnerSendCustomerInvoiceToCustomer\n    {\n        public static void runAPIv1ExampleRunnerSendCustomerInvoiceToCustomer()\n        {\n            Console.WriteLine(\"Example - Send Customer Invoice To Customer API Session\");\n            Console.WriteLine(\"\");\n\n            //obtain or load in an organisation's API credentials, in this example from the user in the console\n            Console.WriteLine(\"Enter Organisation ID:\");\n            string orgID = Console.ReadLine();\n            Console.WriteLine(\"Enter Organisation API Key:\");\n            string orgAPIKey = Console.ReadLine();\n            Console.WriteLine(\"Enter Organisation API Password:\");\n            string orgAPIPass = Console.ReadLine();\n            Console.WriteLine(\"Enter Customer Organisation ID:\");\n            string customerOrgID = Console.ReadLine();\n            Console.WriteLine(\"(optional) Enter Customer's Supplier Account Code:\");\n            string supplierAccountCode = Console.ReadLine();\n\n            //create an API session instance\n            int sessionTimeoutMilliseconds = 20000;\n            APIv1OrgSession apiOrgSession = new APIv1OrgSession(orgID, orgAPIKey, orgAPIPass, sessionTimeoutMilliseconds, APIv1Constants.SUPPORTED_LOCALES_EN_AU);\n\n            //call the platform's API to request that a session is created\n            APIv1EndpointResponse endpointResponse = apiOrgSession.createOrgSession();\n\n            //check if the organisation's credentials were correct and that a session was created in the platform's API\n            if (endpointResponse.result.ToUpper() == APIv1EndpointResponse.ENDPOINT_RESULT_SUCCESS)\n            {\n                //session has been created so now can call other API endpoints\n                Console.WriteLine(\"SUCCESS - API session has successfully been created.\");\n            }\n            else\n            {\n                //session failed to be created\n                Console.WriteLine(\"FAIL - API session failed to be created. Reason: \" + endpointResponse.result_message + \" Error Code: \" + endpointResponse.result_code);\n            }\n\n            //create and send customer invoice if the API was successfully created\n            if (apiOrgSession.doesSessionExist())\n            {\n                //create customer invoice record to import\n                ESDRecordCustomerInvoice customerInvoiceRecord = new ESDRecordCustomerInvoice();\n\n                //set data within the customer invoice\n                customerInvoiceRecord.keyCustomerInvoiceID = \"111\";\n                customerInvoiceRecord.customerInvoiceCode = \"CINV-22\";\n                customerInvoiceRecord.customerInvoiceNumber = \"22\";\n                customerInvoiceRecord.salesOrderCode = \"SO-332\";\n                customerInvoiceRecord.purchaseOrderNumber = \"PO-345\";\n                customerInvoiceRecord.instructions = \"Please pay within 30 days\";\n                customerInvoiceRecord.keyCustomerAccountID = \"2\";\n                customerInvoiceRecord.customerAccountCode = \"ACM-002\";\n\n                //set dates within the invoice, in unix time, milliseconds since the 01/01/1970 12AM UTC epoch\n                DateTime epochDateTime = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);\n                customerInvoiceRecord.paymentDueDate = (long)(DateTime.UtcNow.AddDays(30) - epochDateTime).TotalMilliseconds;\n                customerInvoiceRecord.createdDate = (long)(DateTime.UtcNow - epochDateTime).TotalMilliseconds;\n                customerInvoiceRecord.dispatchedDate = (long)(DateTime.UtcNow.AddDays(-2) - epochDateTime).TotalMilliseconds;\n\n                //set delivery address that invoice goods were delivered to\n                customerInvoiceRecord.deliveryAddress1 = \"32\";\n                customerInvoiceRecord.deliveryAddress2 = \"Main Street\";\n                customerInvoiceRecord.deliveryAddress3 = \"Melbourne\";\n                customerInvoiceRecord.deliveryRegionName = \"Victoria\";\n                customerInvoiceRecord.deliveryCountryName = \"Australia\";\n                customerInvoiceRecord.deliveryPostcode = \"3000\";\n                customerInvoiceRecord.deliveryOrgName = \"Acme Industries\";\n                customerInvoiceRecord.deliveryContact = \"Jane Doe\";\n\n                //set billing address that the invoice is billed to for payment\n                customerInvoiceRecord.billingAddress1 = \"43\";\n                customerInvoiceRecord.billingAddress2 = \" Smith Street\";\n                customerInvoiceRecord.billingAddress3 = \"Melbourne\";\n                customerInvoiceRecord.billingRegionName = \"Victoria\";\n                customerInvoiceRecord.billingCountryName = \"Australia\";\n                customerInvoiceRecord.billingPostcode = \"3000\";\n                customerInvoiceRecord.billingOrgName = \"Supplier Industries International\";\n                customerInvoiceRecord.billingContact = \"Lee Lang\";\n\n                //create an array of customer invoice lines\n                List\u003cESDRecordCustomerInvoiceLine\u003e invoiceLines = new List\u003cESDRecordCustomerInvoiceLine\u003e();\n\n                //create invoice line record 1\n                ESDRecordCustomerInvoiceLine invoicedProduct = new ESDRecordCustomerInvoiceLine();\n                invoicedProduct.lineType = ESDocumentConstants.INVOICE_LINE_TYPE_PRODUCT;\n                invoicedProduct.productCode = \"ACME-SUPPLIER-TTGREEN\";\n                invoicedProduct.productName = \"Green tea towel - 30 x 6 centimetres\";\n                invoicedProduct.keySellUnitID = \"2\";\n                invoicedProduct.unitName = \"EACH\";\n                invoicedProduct.quantityInvoiced = 4;\n                invoicedProduct.sellUnitBaseQuantity = 4;\n                invoicedProduct.priceExTax = (decimal)5.00;\n                invoicedProduct.priceIncTax = (decimal)5.50;\n                invoicedProduct.priceTax = (decimal)0.50;\n                invoicedProduct.priceTotalIncTax = (decimal)22.00;\n                invoicedProduct.priceTotalExTax = (decimal)20.00;\n                invoicedProduct.priceTotalTax = (decimal)2.00;\n                //optionally specify customer's product code in purchaseOrderProductCode if it is different to the line's productCode field and the supplier org. knows the customer's codes\n                invoicedProduct.purchaseOrderProductCode = \"TEA-TOWEL-GREEN\";\n\n                //add tax details to the product invoice line\n                ESDRecordInvoiceLineTax productTax = new ESDRecordInvoiceLineTax();\n                productTax.priceTax = invoicedProduct.priceTax;\n                productTax.priceTotalTax = invoicedProduct.priceTotalTax;\n                productTax.quantity = invoicedProduct.quantityInvoiced;\n                productTax.taxRate = (decimal)10.00;\n                productTax.taxcode = \"GST\";\n                productTax.taxcodeLabel = \"Goods And Services Tax\";\n                invoicedProduct.taxes = new List\u003cESDRecordInvoiceLineTax\u003e(){productTax};\n\n                //add 1st invoice line to lines list\n                invoiceLines.Add(invoicedProduct);\n\n                //add a 2nd invoice line record that is a text line\n                invoicedProduct = new ESDRecordCustomerInvoiceLine();\n                invoicedProduct.lineType = ESDocumentConstants.INVOICE_LINE_TYPE_TEXT;\n                invoicedProduct.textDescription = \"Please bundle tea towels into a box\";\n                invoiceLines.Add(invoicedProduct);\n\n                //add a 3rd invoice line product record to the invoice\n                invoicedProduct = new ESDRecordCustomerInvoiceLine();\n                invoicedProduct.lineType = ESDocumentConstants.INVOICE_LINE_TYPE_PRODUCT;\n                invoicedProduct.productCode = \"ACME-TTBLUE\";\n                invoicedProduct.quantityInvoiced = 10;\n                invoicedProduct.priceExTax = (decimal)10.00;\n                invoicedProduct.priceIncTax = (decimal)1.10;\n                invoicedProduct.priceTax = (decimal)1.00;\n                invoicedProduct.priceTotalIncTax = (decimal)110.00;\n                invoicedProduct.priceTotalExTax = (decimal)100.00;\n                invoicedProduct.priceTotalTax = (decimal)10.00;\n                invoiceLines.Add(invoicedProduct);\n\n                //add lines to the invoice\n                customerInvoiceRecord.lines = invoiceLines;\n\n                //set invoice totals\n                customerInvoiceRecord.totalPriceIncTax = (decimal)132.00;\n                customerInvoiceRecord.totalPriceExTax = (decimal)120.00;\n                customerInvoiceRecord.totalTax = (decimal)12.00;\n                customerInvoiceRecord.totalLines = invoiceLines.Count;\n                customerInvoiceRecord.totalProducts = 2;\n\n                //create customer invoices records list and add customer invoice to it\n                List\u003cESDRecordCustomerInvoice\u003e customerInvoiceRecords = new List\u003cESDRecordCustomerInvoice\u003e();\n                customerInvoiceRecords.Add(customerInvoiceRecord);\n\n                //after 60 seconds give up on waiting for a response from the API when creating the notification\n                int timeoutMilliseconds = 60000;\n\n                //create customer invoice Ecommerce Standards document and add customer invoice records to the document\n                ESDocumentCustomerInvoice customerInvoiceESD = new ESDocumentCustomerInvoice(ESDocumentConstants.RESULT_SUCCESS, \"successfully obtained data\", customerInvoiceRecords.ToArray(), new Dictionary\u003cstring, string\u003e());\n\n                //send customer invoice document to the API and onto the customer organisation\n                APIv1EndpointResponseESD\u003cESDocumentSupplierInvoice\u003e endpointResponseESD = APIv1EndpointOrgSendCustomerInvoiceToCustomer.call(apiOrgSession, timeoutMilliseconds, customerOrgID, supplierAccountCode, customerInvoiceESD);\n                ESDocumentSupplierInvoice esDocumentSupplierInvoice = endpointResponseESD.esDocument;\n\n                //check the result of sending the supplier invoice\n                if (endpointResponseESD.result.ToUpper() == APIv1EndpointResponse.ENDPOINT_RESULT_SUCCESS)\n                {\n                    Console.WriteLine(\"SUCCESS - organisation customer invoice(s) have successfully been sent to customer organisation.\");\n\n                    //iterate through each of the returned supplier invoice(s) that the customer invoice(s) were converted from and output the details of the supplier invoices\n                    if (esDocumentSupplierInvoice.dataRecords != null)\n                    {\n                        foreach (ESDRecordSupplierInvoice supplierInvoiceRecord in esDocumentSupplierInvoice.dataRecords)\n                        {\n                            Console.WriteLine(\"\\nCustomer Invoice Returned, Invoice Details: \");\n                            Console.WriteLine(\"Supplier Invoice Code: \" + supplierInvoiceRecord.supplierInvoiceCode);\n                            Console.WriteLine(\"Supplier Invoice Total Cost: \" + supplierInvoiceRecord.totalPriceIncTax + \" (\" + supplierInvoiceRecord.currencyISOCode + \")\");\n                            Console.WriteLine(\"Supplier Invoice Total Taxes: \" + supplierInvoiceRecord.totalTax + \" (\" + supplierInvoiceRecord.currencyISOCode + \")\");\n                            Console.WriteLine(\"Supplier Invoice Supplier Account: \" + supplierInvoiceRecord.supplierAccountCode);\n                            Console.WriteLine(\"Supplier Invoice Total Lines: \" + supplierInvoiceRecord.totalLines);\n                        }\n                    }\n                }\n                else {\n                    Console.WriteLine(\"FAIL - organisation customer invoice(s) failed to be processed. Reason: \" + endpointResponseESD.result_message + \" Error Code: \" + endpointResponseESD.result_code);\n\n                    //check that a Ecommerce standards document was returned\n                    if (esDocumentSupplierInvoice != null \u0026\u0026 esDocumentSupplierInvoice.configs != null)\n                    {\n                        //if one or more products in the customer invoice could not match a product to the customer organisation then find out the invoice lines that caused the problem\n                        if (esDocumentSupplierInvoice.configs.ContainsKey(APIv1EndpointResponseESD\u003cESDocumentSupplierInvoice\u003e.ESD_CONFIG_INVOICES_WITH_UNMAPPED_LINES))\n                        {\n                            //get a list of invoice lines that could not be mapped\n                            List\u003cKeyValuePair\u003cint, int\u003e\u003e unmappedLines = APIv1EndpointOrgSendCustomerInvoiceToCustomer.getUnmappedInvoiceLines(esDocumentSupplierInvoice);\n\n                            //iterate through each unmapped invoice line\n                            foreach (KeyValuePair\u003cint, int\u003e unmappedLine in unmappedLines)\n                            {\n                                //get the index of the customer invoice and line that contained the unmapped product\n                                int invoiceIndex = unmappedLine.Key;\n                                int lineIndex = unmappedLine.Value;\n\n                                //check that the invoice can be found that contains the problematic line\n                                if (invoiceIndex \u003c customerInvoiceESD.dataRecords.Length \u0026\u0026 lineIndex \u003c customerInvoiceESD.dataRecords[invoiceIndex].lines.Count)\n                                {\n                                    Console.WriteLine(\"For customer invoice: \" + customerInvoiceESD.dataRecords[invoiceIndex].customerInvoiceCode + \" a matching customer product for line number: \" + (lineIndex + 1) + \" could not be matched up or handled.\");\n                                }\n                            }\n                        }\n                    }\n                }\n\n                //next steps\n                //call other API endpoints...\n                //destroy API session when done...\n                apiOrgSession.destroyOrgSession();\n            }\n\n            Console.WriteLine(\"Example Finished.\");\n        }\n    }\n}\n```\n\n### Send Delivery Notice to Customer Endpoint\n\nThe SQUIZZ.com platform's API has an endpoint that allows an orgnisation to send delivery notices (also known as shipping notices, freight notices, advanced shipping notices) for goods it having delivered to a customer, notifying where the ordered goods are being handled in the dispatch and delivery/shipping process. \nThis endpoint allows a supplier organisation to automate the sending out of delivery notices to its customers, allowing either individuals ordering in squizz to receive these notices, as well as allow customer organisations to automate the receiving of delivery notices and importing them back into their own systems.\nMany delivery notices may be sent for the same delivery of ordered goods, containing a status and message outlining where the goods are currently located. This can allow customers to receive many notifications as it progresses. It's up to you to determine how often the customer should be aware of delivery progression.\n- The endpoint relies upon a supplier organisations first importing customer accounts within the SQUIZZ.com platform that the delivery notices are associated to.\n- If the delivery notices needs to be forwarded onto customer organisations, then endpoint either relies upon a connection first being setup between the supplier and customer organisations within the SQUIZZ.com platform, or the supplying organisation setting up a data adaptor to export the customer delivery notices to the customers external system. The first option is preferred since the supplying org then doesn't need to know what system the customer organisation is running.\n- The endpoint has a number of other requirements. See the endpoint documentation for more details on these requirements.\n\nEach delivery notice needs to be imported within a \"Ecommerce Standards Document\" that contains a record for each delivery notice. Use the Ecommerce Standards library to easily create these documents and records.\nIt is recommended to only import one delivery notice at a time, since if an array of delivery notice is imported and one notice failed to import, then no other notices in the list will be attempted to import.\nRead [https://www.squizz.com/docs/squizz/Platform-API.html#section1550](https://www.squizz.com/docs/squizz/Platform-API.html#section1550) for more documentation about the endpoint and its requirements.\nSee the example below on how the call the Send Delivery Notice To Customer endpoint. Note that a session must first be created in the API before calling the endpoint.\n\n```csharp\nusing System;\nusing System.Collections.Generic;\nusing Squizz.Platform.API.v1;\nusing Squizz.Platform.API.v1.endpoint;\nusing EcommerceStandardsDocuments;\n\nnamespace Squizz.Platform.API.Examples.APIv1\n{\n    /**\n     * Shows an example of creating a organisation session with the SQUIZZ.com platform's API, then sends an organisation's delivery notice to a customer to advise of the delivery of goods\n     */\n    public class APIv1ExampleRunnerSendDeliveryNoticeToCustomer\n    {\n        public static void runAPIv1ExampleRunnerSendDeliveryNoticeToCustomer()\n        {\n            Console.WriteLine(\"Example - Send Delivery Notice To Customer API Session\");\n            Console.WriteLine(\"\");\n\n            //obtain or load in an organisation's API credentials, in this example from the user in the console\n            Console.WriteLine(\"Enter Organisation ID:\");\n            string orgID = Console.ReadLine();\n            Console.WriteLine(\"Enter Organisation API Key:\");\n            string orgAPIKey = Console.ReadLine();\n            Console.WriteLine(\"Enter Organisation API Password:\");\n            string orgAPIPass = Console.ReadLine();\n            Console.WriteLine(\"(optional) Enter Customer Organisation ID:\");\n            string customerOrgID = Console.ReadLine();\n            Console.WriteLine(\"(optional) Enter Customer's Supplier Account Code:\");\n            string supplierAccountCode = Console.ReadLine();\n            Console.WriteLine(\"(optional) Should Notice Be Exported Using Data Adaptor (\"+ ESDocumentConstants.ESD_VALUE_YES + \" or \"+ ESDocumentConstants.ESD_VALUE_NO + \"):\");\n            bool useDeliveryNoticeExport = Console.ReadLine().Trim().ToUpper() == ESDocumentConstants.ESD_VALUE_YES;\n\n            //create an API session instance\n            int sessionTimeoutMilliseconds = 20000;\n            APIv1OrgSession apiOrgSession = new APIv1OrgSession(orgID, orgAPIKey, orgAPIPass, sessionTimeoutMilliseconds, APIv1Constants.SUPPORTED_LOCALES_EN_AU);\n\n            //call the platform's API to request that a session is created\n            APIv1EndpointResponse endpointResponse = apiOrgSession.createOrgSession();\n\n            //check if the organisation's credentials were correct and that a session was created in the platform's API\n            if (endpointResponse.result.ToUpper() == APIv1EndpointResponse.ENDPOINT_RESULT_SUCCESS)\n            {\n                //session has been created so now can call other API endpoints\n                Console.WriteLine(\"SUCCESS - API session has successfully been created.\");\n            }\n            else\n            {\n                //session failed to be created\n                Console.WriteLine(\"FAIL - API session failed to be created. Reason: \" + endpointResponse.result_message + \" Error Code: \" + endpointResponse.result_code);\n            }\n\n            //create and send delivery notice if the API was successfully created\n            if (apiOrgSession.doesSessionExist())\n            {\n                //create delivery notice record to import\n                ESDRecordDeliveryNotice deliveryNoticeRecord = new ESDRecordDeliveryNotice();\n\n                //set data within the delivery notice\n                deliveryNoticeRecord.keyDeliveryNoticeID = \"DN123\";\n                deliveryNoticeRecord.deliveryNoticeCode = \"CUSDELNUM-123-A\";\n                deliveryNoticeRecord.deliveryStatus = ESDocumentConstants.DELIVERY_STATUS_IN_TRANSIT;\n                deliveryNoticeRecord.deliveryStatusMessage = \"Currently en-route to receiver.\";\n\n                //set information about the freight carrier currently performing the delivery\n                deliveryNoticeRecord.freightCarrierName = \"ACME Freight Logistics Inc.\";\n                deliveryNoticeRecord.freightCarrierCode = \"ACFLI\";\n                deliveryNoticeRecord.freightCarrierTrackingCode = \"34320-ACFLI-34324-234\";\n                deliveryNoticeRecord.freightCarrierAccountCode = \"VIP00012\";\n                deliveryNoticeRecord.freightCarrierConsignCode = \"42343-242344\";\n                deliveryNoticeRecord.freightCarrierServiceCode = \"SUPER-SMART-FREIGHT-FACILITATOR\";\n                deliveryNoticeRecord.freightSystemRefCode = \"SSFF-3421\";\n\n                // add references to other records (sales order, customer invoice, purchase order, customer account) that this delivery is associated to\n                deliveryNoticeRecord.keyCustomerInvoiceID = \"111\";\n                deliveryNoticeRecord.customerInvoiceCode = \"CINV-22\";\n                deliveryNoticeRecord.customerInvoiceNumber = \"22\";\n                deliveryNoticeRecord.keySalesOrderID = \"332\";\n                deliveryNoticeRecord.salesOrderCode = \"SO-332\";\n                deliveryNoticeRecord.salesOrderNumber = \"SO-332\";\n                deliveryNoticeRecord.purchaseOrderCode = \"PO-345\";\n                deliveryNoticeRecord.purchaseOrderNumber = \"345\";\n                deliveryNoticeRecord.instructions = \"Please leave goods via the back driveway\";\n                deliveryNoticeRecord.keyCustomerAccountID = \"2\";\n\n                // set where the delivery is currently located geographically\n                deliveryNoticeRecord.atGeographicLocation = ESDocumentConstants.ESD_VALUE_YES;\n                deliveryNoticeRecord.locationLatitude = (decimal)-37.8277324706811;\n                deliveryNoticeRecord.locationLongitude = (decimal)144.92382897158126;\n\n                //set dates within the invoice, in unix time, milliseconds since the 01/01/1970 12AM UTC epoch\n                DateTime epochDateTime = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);\n                deliveryNoticeRecord.deliveryDate = (long)(DateTime.UtcNow - epochDateTime).TotalMilliseconds;\n                deliveryNoticeRecord.dispatchedDate = (long)(DateTime.UtcNow.AddDays(-2) - epochDateTime).TotalMilliseconds;\n\n                //create delivery notice records list and add the delivery notice to it\n                List\u003cESDRecordDeliveryNotice\u003e deliveryNoticeRecords = new List\u003cESDRecordDeliveryNotice\u003e();\n                deliveryNoticeRecords.Add(deliveryNoticeRecord);\n\n                //after 60 seconds give up on waiting for a response from the API when creating the delivery notice\n                int timeoutMilliseconds = 60000;\n\n                //create delivery notice Ecommerce Standards document and add delivery notice records to the document\n                ESDocumentDeliveryNotice deliveryNoticeESD = new ESDocumentDeliveryNotice(ESDocumentConstants.RESULT_SUCCESS, \"successfully obtained data\", deliveryNoticeRecords.ToArray(), new Dictionary\u003cstring, string\u003e());\n\n                //send delivery notice document to the API and onto the customer\n                APIv1EndpointResponseESD\u003cESDocument\u003e endpointResponseESD = APIv1EndpointOrgSendDeliveryNoticeToCustomer.call(apiOrgSession, timeoutMilliseconds, customerOrgID, supplierAccountCode, useDeliveryNoticeExport, deliveryNoticeESD);\n                ESDocument esDocumentResult = endpointResponseESD.esDocument;\n\n                //check the result of sending the supplier invoice\n                if (endpointResponseESD.result.ToUpper() == APIv1EndpointResponse.ENDPOINT_RESULT_SUCCESS)\n                {\n                    Console.WriteLine(\"SUCCESS - organisation delivery notice(s) have successfully been sent to customer.\");\n\n                    \n                }\n                else\n                {\n                    Console.WriteLine(\"FAIL - organisation delivery notice(s) failed to be processed. Reason: \" + endpointResponseESD.result_message + \" Error Code: \" + endpointResponseESD.result_code);\n                }\n\n                //next steps\n                //call other API endpoints...\n                //destroy API session when done...\n                apiOrgSession.destroyOrgSession();\n            }\n\n            Console.WriteLine(\"Example Finished.\");\n        }\n    }\n}\n```\n\n### Retrieve Organisation Data Endpoint\nThe SQUIZZ.com platform's API has an endpoint that allows a variety of different types of data to be retrieved from another organisation stored on the platform.\nThe organisational data that can be retrieved includes products, product stock quantities, product pricing, categories, attributes, makers, maker models and maker model mappings.\nThe data retrieved can be used to allow an organisation to set additional information about products being bought or sold, as well as being used in many other ways.\nEach kind of data retrieved from endpoint is formatted as JSON data conforming to the \"Ecommerce Standards Document\" standards, with each document containing an array of zero or more records. Use the Ecommerce Standards library to easily read through these documents and records, to find data natively using Java classes.\nRead [https://www.squizz.com/docs/squizz/Platform-API-Endpoint:-Retrieve-Organisation-Data.html](https://www.squizz.com/docs/squizz/Platform-API-Endpoint:-Retrieve-Organisation-Data.html) for more documentation about the endpoint and its requirements.\nSee the example below on how the call the Retrieve Organisation ESD Data endpoint. Note that a session must first be created in the API before calling the endpoint.\n\nOther examples exist in this repository's examples folder on how to retrieve serveral different types of data. Note that some of these examples show how to different types of data can be retrieved and combined together, showing the interconnected nature of several data types:\n - Retrieve Products [APIv1ExampleRunnerRetrieveOrgESDDataProduct.cs](https://github.com/squizzdotcom/squizz-platform-api-dotnet-library/blob/master/Source/Examples/APIv1/APIv1ExampleRunnerRetrieveOrgESDDataProduct.cs)\n - Retrieve Product Stock Quantities [APIv1ExampleRunnerRetrieveOrgESDDataProductStock.cs](https://github.com/squizzdotcom/squizz-platform-api-dotnet-library/blob/master/Source/Examples/APIv1/APIv1ExampleRunnerRetrieveOrgESDDataProductStock.cs)\n - Retrieve Product Pricing [APIv1ExampleRunnerRetrieveOrgESDDataPrice.cs](https://github.com/squizzdotcom/squizz-platform-api-dotnet-library/blob/master/Source/Examples/APIv1/APIv1ExampleRunnerRetrieveOrgESDDataPrice.cs)\n - Retrieve Categories [APIv1ExampleRunnerRetrieveOrgESDDataCategories.cs](https://github.com/squizzdotcom/squizz-platform-api-dotnet-library/blob/master/Source/Examples/APIv1/APIv1ExampleRunnerRetrieveOrgESDDataCategories.cs)\n - Retrieve Attributes [APIv1ExampleRunnerRetrieveOrgESDDataAttributes.cs](https://github.com/squizzdotcom/squizz-platform-api-dotnet-library/blob/master/Source/Examples/APIv1/APIv1ExampleRunnerRetrieveOrgESDDataAttributes.cs)\n - Retrieve Makers [APIv1ExampleRunnerRetrieveOrgESDDataMakers.cs](https://github.com/squizzdotcom/squizz-platform-api-dotnet-library/blob/master/Source/Examples/APIv1/APIv1ExampleRunnerRetrieveOrgESDDataMakers.cs)\n - Retrieve Maker Models [APIv1ExampleRunnerRetrieveOrgESDDataMakerModels.cs](https://github.com/squizzdotcom/squizz-platform-api-dotnet-library/blob/master/Source/Examples/APIv1/APIv1ExampleRunnerRetrieveOrgESDDataMakerModels.cs)\n - Retrieve Maker Model Mappings [APIv1ExampleRunnerRetrieveOrgESDDataMakerModelMappings.cs](https://github.com/squizzdotcom/squizz-platform-api-dotnet-library/blob/master/Source/Examples/APIv1/APIv1ExampleRunnerRetrieveOrgESDDataMakerModelMappings.cs)\n\n```csharp\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Squizz.Platform.API.v1;\nusing Squizz.Platform.API.v1.endpoint;\nusing EcommerceStandardsDocuments;\n\nnamespace Squizz.Platform.API.Examples.APIv1\n{\n    /// \u003csummary\u003eShows an example of creating a organisation session with the SQUIZZ.com platform's API, then retrieves Ecommerce data from a conencted organisation in the platform\u003c/summary\u003e\n    public class APIv1ExampleRunnerRetrieveOrgESDDataProduct\n    {\n        public static void runAPIv1ExampleRunnerRetrieveOrgESDDataProduct()\n        {\n            Console.WriteLine(\"Example - Retrieve Supplier Organisation Product Data\");\n            Console.WriteLine(\"\");\n\n            //obtain or load in an organisation's API credentials, in this example from the user in the console\n            Console.WriteLine(\"Enter Organisation ID:\");\n            string orgID = Console.ReadLine();\n            Console.WriteLine(\"Enter Organisation API Key:\");\n            string orgAPIKey = Console.ReadLine();\n            Console.WriteLine(\"Enter Organisation API Password:\");\n            string orgAPIPass = Console.ReadLine();\n            Console.WriteLine(\"Enter Supplier Organisation ID:\");\n            string supplierOrgID = Console.ReadLine();\n\n            //create an API session instance\n            int sessionTimeoutMilliseconds = 20000;\n            APIv1OrgSession apiOrgSession = new APIv1OrgSession(orgID, orgAPIKey, orgAPIPass, sessionTimeoutMilliseconds, APIv1Constants.SUPPORTED_LOCALES_EN_AU);\n\n            //call the platform's API to request that a session is created\n            APIv1EndpointResponse endpointResponse = apiOrgSession.createOrgSession();\n\n            //check if the organisation's credentials were correct and that a session was created in the platform's API\n            if (endpointResponse.result.ToUpper() == APIv1EndpointResponse.ENDPOINT_RESULT_SUCCESS)\n            {\n                //session has been created so now can call other API endpoints\n                Console.WriteLine(\"SUCCESS - API session has successfully been created.\");\n            }\n            else\n            {\n                //session failed to be created\n                Console.WriteLine(\"FAIL - API session failed to be created. Reason: \" + endpointResponse.result_message + \" Error Code: \" + endpointResponse.result_code);\n            }\n\n            //import organisation data if the API was successfully created\n            if (apiOrgSession.doesSessionExist())\n            {\n                //after 60 seconds give up on waiting for a response from the API when creating the notification\n                int timeoutMilliseconds = 60000;\n\n                //loop through retrieving pages of records from the API\n                bool hasMoreRecordsToRetrieve = true;\n                int recordStartIndex = 0;\n                while(hasMoreRecordsToRetrieve)\n                {\n                    //call the platform's API to get the supplier organisation's product data\n                    APIv1EndpointResponseESD\u003cESDocumentProduct\u003e endpointResponseESD = APIv1EndpointOrgRetrieveESDocument.callRetrieveProducts(apiOrgSession, timeoutMilliseconds, supplierOrgID, APIv1EndpointOrgRetrieveESDocument.MAX_RECORDS_PER_REQUEST, recordStartIndex, \"\");\n                    ESDocumentProduct esDocumentProduct = (ESDocumentProduct)endpointResponseESD.esDocument;\n\n                    //check that the data successfully retrieved\n                    if (endpointResponseESD.result.ToUpper()==APIv1EndpointResponse.ENDPOINT_RESULT_SUCCESS)\n                    {\n                        Console.WriteLine(\"SUCCESS - organisation data successfully obtained from the platform\");\n                        Console.WriteLine(\"\\nProduct Records Returned: \" + esDocumentProduct.totalDataRecords);\n\n                        //check that records have been placed into the standards document\n                        if (esDocumentProduct.dataRecords != null) {\n                            Console.WriteLine(\"Product Records:\");\n\n                            //iterate through each product record stored within the standards document\n                            int i = 0;\n                            foreach(ESDRecordProduct productRecord in esDocumentProduct.dataRecords)\n                            {\n                                //output details of the product record\n                                Console.WriteLine(APIv1ExampleRunner.CONSOLE_LINE);\n                                Console.WriteLine(\"  Product Record #: \" + i);\n                                Console.WriteLine(\"  Key Product ID: \" + productRecord.keyProductID);\n                                Console.WriteLine(\"    Product Code: \" + productRecord.productCode);\n                                Console.WriteLine(\"            Name: \" + productRecord.name);\n                                Console.WriteLine(\"         Barcode: \" + productRecord.barcode);\n                                Console.WriteLine(\" Stock Available: \" + productRecord.stockQuantity);\n                                Console.WriteLine(\"           Brand: \" + productRecord.brand);\n                                Console.WriteLine(APIv1ExampleRunner.CONSOLE_LINE);\n\n                                i++;\n                            }\n                        }\n\n                        //check to see if a full page of records were retrieved and if there is more records to get\n                        if (esDocumentProduct.totalDataRecords \u003e= APIv1EndpointOrgRetrieveESDocument.MAX_RECORDS_PER_REQUEST) {\n                            recordStartIndex += APIv1EndpointOrgRetrieveESDocument.MAX_RECORDS_PER_REQUEST;\n                        }else{\n                            hasMoreRecordsToRetrieve = false;\n                        }\n                    } else {\n                        Console.WriteLine(\"FAIL - organisation data failed to be obtained from the platform. Reason: \" + endpointResponseESD.result_message + \" Error Code: \" + endpointResponseESD.result_code);\n                        break;\n                    }\n                }\n\n                //next steps\n                //call other API endpoints...\n                //destroy API session when done...\n                apiOrgSession.destroyOrgSession();\n            }\n        }\n    }\n}\n```\n\n### Import Organisation Data Endpoint\nThe SQUIZZ.com platform's API has an endpoint that allows a wide variety of different types of data to be imported into the platform against an organisation. \nThis organisational data includes taxcodes, products, customer accounts, supplier accounts. pricing, price levels, locations, categories, makers, models, and many other kinds of data.\nThis data is used to allow the organisation to buy and sell products, as well manage customers, suppliers, employees, and other people.\nEach type of data needs to be imported as an \"Ecommerce Standards Document\" that contains one or more records. Use the Ecommerce Standards library to easily create these documents and records.\nWhen importing one type of organisational data, it is important to import the full data set, otherwise the platform will deactivate un-imported data.\nFor example if 3 products are imported, then another products import is run that only imports 2 records, then 1 product will become deactivated and no longer be able to be sold.\nRead [https://www.squizz.com/docs/squizz/Platform-API-Endpoint:-Import-Organisation-Data.html](https://www.squizz.com/docs/squizz/Platform-API-Endpoint:-Import-Organisation-Data.html) for more documentation about the endpoint and its requirements.\nSee the example below on how the call the Import Organisation ESD Data endpoint. Note that a session must first be created in the API before calling the endpoint.\n\nOther examples exist in this repository's examples folder on how to import serveral different types of data:\n - Import Products [APIv1ExampleRunnerImportOrgESDDataProducts.cs](https://github.com/squizzdotcom/squizz-platform-api-dotnet-library/blob/master/Source/Examples/APIv1/APIv1ExampleRunnerImportOrgESDDataProducts.cs)\n - Import Taxcodes [APIv1ExampleRunnerImportOrgESDDataTaxcodes.cs](https://github.com/squizzdotcom/squizz-platform-api-dotnet-library/blob/master/Source/Examples/APIv1/APIv1ExampleRunnerImportOrgESDDataTaxcodes.cs)\n - Import Categories [APIv1ExampleRunnerImportOrgESDDataCategories.cs](https://github.com/squizzdotcom/squizz-platform-api-dotnet-library/blob/master/Source/Examples/APIv1/APIv1ExampleRunnerImportOrgESDDataCategories.cs)\n - Import Attributes [APIv1ExampleRunnerImportOrgESDDataAttributes.cs](https://github.com/squizzdotcom/squizz-platform-api-dotnet-library/blob/master/Source/Examples/APIv1/APIv1ExampleRunnerImportOrgESDDataAttributes.cs)\n - Import Makers [APIv1ExampleRunnerImportOrgESDDataMakers.cs](https://github.com/squizzdotcom/squizz-platform-api-dotnet-library/blob/master/Source/Examples/APIv1/APIv1ExampleRunnerImportOrgESDDataMakers.cs)\n - Import Maker Models [APIv1ExampleRunnerImportOrgESDDataMakerModels.cs](https://github.com/squizzdotcom/squizz-platform-api-dotnet-library/blob/master/Source/Examples/APIv1/APIv1ExampleRunnerImportOrgESDDataMakerModels.cs)\n - Import Maker Model Mappings [APIv1ExampleRunnerImportOrgESDDataMakerModelMappings.cs](https://github.com/squizzdotcom/squizz-platform-api-dotnet-library/blob/master/Source/Examples/APIv1/APIv1ExampleRunnerImportOrgESDDataMakerModelMappings.cs)\n\n```csharp\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Squizz.Platform.API.v1;\nusing Squizz.Platform.API.v1.endpoint;\nusing EcommerceStandardsDocuments;\n\nnamespace Squizz.Platform.API.Examples.APIv1\n{\n    /// \u003csummary\u003eShows an example of creating a organisation session with the SQUIZZ.com platform's API, then imports organisation data into the platform\u003c/summary\u003e\n    public class APIv1ExampleRunnerImportOrgESDData\n    {\n        public static void runAPIv1ExampleRunnerImportOrgESDData()\n        {\n            Console.WriteLine(\"Example - Import Organisation Taxcode Data\");\n            Console.WriteLine(\"\");\n\n            //obtain or load in an organisation's API credentials, in this example from the user in the console\n            Console.WriteLine(\"Enter Organisation ID:\");\n            string orgID = Console.ReadLine();\n            Console.WriteLine(\"Enter Organisation API Key:\");\n            string orgAPIKey = Console.ReadLine();\n            Console.WriteLine(\"Enter Organisation API Password:\");\n            string orgAPIPass = Console.ReadLine();\n            int sessionTimeoutMilliseconds = 20000;\n\n            //create an API session instance\n            APIv1OrgSession apiOrgSession = new APIv1OrgSession(orgID, orgAPIKey, orgAPIPass, sessionTimeoutMilliseconds, APIv1Constants.SUPPORTED_LOCALES_EN_AU);\n\n            //call the platform's API to request that a session is created\n            APIv1EndpointResponse endpointResponse = apiOrgSession.createOrgSession();\n\n            //check if the organisation's credentials were correct and that a session was created in the platform's API\n            if (endpointResponse.result.ToUpper() == APIv1EndpointResponse.ENDPOINT_RESULT_SUCCESS)\n            {\n                //session has been created so now can call other API endpoints\n                Console.WriteLine(\"SUCCESS - API session has successfully been created.\");\n            }\n            else\n            {\n                //session failed to be created\n                Console.WriteLine(\"FAIL - API session failed to be created. Reason: \" + endpointResponse.result_message + \" Error Code: \" + endpointResponse.result_code);\n            }\n\n            //import organisation data if the API was successfully created\n            if (apiOrgSession.doesSessionExist())\n            {\n                //create taxcode records\n                List\u003cESDRecordTaxcode\u003e taxcodeRecords = new List\u003cESDRecordTaxcode\u003e();\n                ESDRecordTaxcode taxcodeRecord = new ESDRecordTaxcode();\n                taxcodeRecord.keyTaxcodeID = \"1\";\n                taxcodeRecord.taxcode = \"GST\";\n                taxcodeRecord.taxcodeLabel = \"GST\";\n                taxcodeRecord.description = \"Goods And Services Tax\";\n                taxcodeRecord.taxcodePercentageRate = 10;\n                taxcodeRecords.Add(taxcodeRecord);\n\n                taxcodeRecord = new ESDRecordTaxcode();\n                taxcodeRecord.keyTaxcodeID = \"2\";\n                taxcodeRecord.taxcode = \"FREE\";\n                taxcodeRecord.taxcodeLabel = \"Tax Free\";\n                taxcodeRecord.description = \"Free from Any Taxes\";\n                taxcodeRecord.taxcodePercentageRate = 0;\n                taxcodeRecords.Add(taxcodeRecord);\n\n                taxcodeRecord = new ESDRecordTaxcode();\n                taxcodeRecord.keyTaxcodeID = \"3\";\n                taxcodeRecord.taxcode = \"NZGST\";\n                taxcodeRecord.taxcodeLabel = \"New Zealand GST Tax\";\n                taxcodeRecord.description = \"New Zealand Goods and Services Tax\";\n                taxcodeRecord.taxcodePercentageRate = 15;\n                taxcodeRecords.Add(taxcodeRecord);\n\n                //create a hashmap containing configurations of the organisation taxcode data\n                Dictionary\u003cstring, string\u003e configs = new Dictionary\u003cstring, string\u003e();\n\n                //add a dataFields attribute that contains a comma delimited list of taxcode record fields that the API is allowed to insert, update in the platform\n                configs.Add(\"dataFields\", \"keyTaxcodeID,taxcode,taxcodeLabel,description,taxcodePercentageRate\");\n\n                //create a Ecommerce Standards Document that stores an array of taxcode records\n                ESDocumentTaxcode taxcodeESD = new ESDocumentTaxcode(ESDocumentConstants.RESULT_SUCCESS, \"successfully obtained data\", taxcodeRecords.ToArray(), configs);\n\n                //after 30 seconds give up on waiting for a response from the API when creating the notification\n                int timeoutMilliseconds = 30000;\n\n                //call the platform's API to import in the organisation's data\n                APIv1EndpointResponseESD\u003cESDocument\u003e endpointResponseESD = APIv1EndpointOrgImportESDocument.call(apiOrgSession, timeoutMilliseconds, APIv1EndpointOrgImportESDocument.IMPORT_TYPE_ID_TAXCODES, taxcodeESD);\n\n                //check that the data successfully imported\n                if (endpointResponseESD.result.ToUpper() == APIv1EndpointResponse.ENDPOINT_RESULT_SUCCESS) {\n                    Console.WriteLine(\"SUCCESS - organisation data successfully imported into the platform\");\n                } else {\n                    Console.WriteLine(\"FAIL - organisation data failed to be imported into the platform. Reason: \" + endpointResponseESD.result_message + \" Error Code: \" + endpointResponseESD.result_code);\n                }\n\n                //next steps\n                //call other API endpoints...\n                //destroy API session when done...\n                apiOrgSession.destroyOrgSession();\n            }\n        }\n    }\n}\n```\n\n### Import Organisation Sales Order Endpoint\nThe SQUIZZ.com platform's API has an endpoint that allows an organisation to import a sales order into the SQUIZZ.com platform, against its own organisation.\nThis endpoint is typically used by an organisation to import sales orders from any systems, websites or services it uses to capture sales orders from, including Ecommerce websites, online marketplaces, Customer Relationship Management (CRM) systems, quoting software tools, or any other business systems and software. \nNote that this endpoint should not be used by customer organisations to send orders to supplying organisations. For that use case the [Send and Procure Purchase Order From Supplier Endpoint](#send-and-procure-purchase-order-from-supplier-endpoint) should be called instead.\nWhen calling the endpoint there is an parameter that can optionally allow the order to be re-priced or not. This allows the most up-to-date pricing to be set in the sales order when imported.\nEach sales order needs to be imported as an \"Ecommerce Standards Document\" that contains one or more records. Use the Ecommerce Standards library to easily create the Sales Order documents and Sales Order records.\nRead [https://www.squizz.com/docs/squizz/Platform-API-Endpoint:-Import-Organisation-Sales-Order.html](https://www.squizz.com/docs/squizz/Platform-API-Endpoint:-Import-Organisation-Sales-Order.html) for more documentation about the endpoint and its requirements.\nSee the example below on how the call the Import Organisation Sales Order ESD Data endpoint. Note that a session must first be created in the API before calling the endpoint.\n\n![alt tag](https://attach.squizz.com/doc_centre/1/files/images/masters/squizz-platform-api-import-sales-order-diagram[130].png)\n\n```csharp\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Squizz.Platform.API.v1;\nusing Squizz.Platform.API.v1.endpoint;\nusing EcommerceStandardsDocuments;\n\nnamespace Squizz.Platform.API.Examples.APIv1\n{\n    /**\n     * Shows an example of creating a organisation session with the SQUIZZ.com platform's API, then sends a organisation's purchase order data to supplier\n     */\n    public class APIv1ExampleRunnerImportOrgESDDataOrderSales\n    {\n        public static void runAPIv1ExampleRunnerImportOrgESDDataOrderSales()\n        {\n            Console.WriteLine(\"Example - Import Organisation's Sales Order\");\n            Console.WriteLine(\"\");\n\n            //obtain or load in an organisation's API credentials, in this example from the user in the console\n            Console.WriteLine(\"Enter Organisation ID:\");\n            string orgID = Console.ReadLine();\n            Console.WriteLine(\"Enter Organisation API Key:\");\n            string orgAPIKey = Console.ReadLine();\n            Console.WriteLine(\"Enter Organisation API Password:\");\n            string orgAPIPass = Console.ReadLine();\n            Console.WriteLine(\"Enter Reprice Order (set Y, or N):\");\n            string repriceOrder = Console.ReadLine();\n\n            //create an API session instance\n            int sessionTimeoutMilliseconds = 20000;\n            APIv1OrgSession apiOrgSession = new APIv1OrgSession(orgID, orgAPIKey, orgAPIPass, sessionTimeoutMilliseconds, APIv1Constants.SUPPORTED_LOCALES_EN_AU);\n\n            //call the platform's API to request that a session is created\n            APIv1EndpointResponse endpointResponse = apiOrgSession.createOrgSession();\n\n            //check if the organisation's credentials were correct and that a session was created in the platform's API\n            if (endpointResponse.result.ToUpper() == APIv1EndpointResponse.ENDPOINT_RESULT_SUCCESS)\n            {\n                //session has been created so now can call other API endpoints\n                Console.WriteLine(\"SUCCESS - API session has successfully been created.\");\n            }\n            else\n            {\n                //session failed to be created\n                Console.WriteLine(\"FAIL - API session failed to be created. Reason: \" + endpointResponse.result_message + \" Error Code: \" + endpointResponse.result_code);\n            }\n\n            //import sales order if the API session was successfully created\n            if (apiOrgSession.doesSessionExist())\n            {\n                //create sales order record to import\n                ESDRecordOrderSale salesOrderRecord = new ESDRecordOrderSale();\n\n                //set data within the sales order\n                salesOrderRecord.keySalesOrderID = \"111\";\n                salesOrderRecord.salesOrderCode = \"SOEXAMPLE-678\";\n                salesOrderRecord.salesOrderNumber = \"678\";\n                salesOrderRecord.salesOrderNumber = \"678\";\n                salesOrderRecord.instructions = \"Leave goods at the back entrance\";\n                salesOrderRecord.keyCustomerAccountID = \"3\";\n                salesOrderRecord.customerAccountCode = \"CUS-003\";\n                salesOrderRecord.customerAccountName = \"Acme Industries\";\n                salesOrderRecord.customerEntity = ESDocumentConstants.ENTITY_TYPE_ORG;\n                salesOrderRecord.customerOrgName = \"Acme Industries Pty Ltd\";\n\n                //set delivery address that ordered goods will be delivered to\n                salesOrderRecord.deliveryAddress1 = \"32\";\n                salesOrderRecord.deliveryAddress2 = \"Main Street\";\n                salesOrderRecord.deliveryAddress3 = \"Melbourne\";\n                salesOrderRecord.deliveryRegionName = \"Victoria\";\n                salesOrderRecord.deliveryCountryName = \"Australia\";\n                salesOrderRecord.deliveryPostcode = \"3000\";\n                salesOrderRecord.deliveryOrgName = \"Acme Industries\";\n                salesOrderRecord.deliveryContact = \"Jane Doe\";\n\n                //set billing address that the order will be billed to for payment\n                salesOrderRecord.billingAddress1 = \"43\";\n                salesOrderRecord.billingAddress2 = \" High Street\";\n                salesOrderRecord.billingAddress3 = \"Melbourne\";\n                salesOrderRecord.billingRegionName = \"Victoria\";\n                salesOrderRecord.billingCountryName = \"Australia\";\n                salesOrderRecord.billingPostcode = \"3000\";\n                salesOrderRecord.billingOrgName = \"Acme Industries International\";\n                salesOrderRecord.billingContact = \"John Citizen\";\n\n                //create an array of sales order lines\n                List\u003cESDRecordOrderSaleLine\u003e orderLines = new List\u003cESDRecordOrderSaleLine\u003e();\n\n                //create sales order line record\n                ESDRecordOrderSaleLine orderProduct = new ESDRecordOrderSaleLine();\n                orderProduct.lineType = ESDocumentConstants.ORDER_LINE_TYPE_PRODUCT;\n                orderProduct.productCode = \"TEA-TOWEL-GREEN\";\n                orderProduct.productName = \"Green tea towel - 30 x 6 centimetres\";\n                orderProduct.unitName = \"EACH\";\n                orderProduct.keySellUnitID = \"EA\";\n                orderProduct.quantity = 4;\n                orderProduct.sellUnitBaseQuantity = 4;\n                //pricing data only needs to be set if the order isn't being repriced\n                orderProduct.priceExTax = (decimal)5.00;\n                orderProduct.priceIncTax = (decimal)5.50;\n                orderProduct.priceTax = (decimal)0.50;\n                orderProduct.priceTotalIncTax = (decimal)22.00;\n                orderProduct.priceTotalExTax = (decimal)20.00;\n                orderProduct.priceTotalTax = (decimal)2.00;\n                orderLines.Add(orderProduct);\n\n                //add taxes to the line\n                orderProduct.taxes = new List\u003cESDRecordOrderLineTax\u003e();\n                ESDRecordOrderLineTax orderProductTax = new ESDRecordOrderLineTax();\n                orderProductTax.keyTaxcodeID = \"TAXCODE-1\";\n                orderProductTax.taxcode = \"GST\";\n                orderProductTax.taxcodeLabel = \"Goods And Services Tax\";\n                //pricing data only needs to be set if the order isn't being repriced\n                orderProductTax.priceTax = (decimal)0.50;\n                orderProductTax.taxRate = (decimal)10;\n                orderProductTax.quantity = (decimal)4;\n                orderProductTax.priceTotalTax = (decimal)2.00;\n                orderProduct.taxes.Add(orderProductTax);\n\n                //add a 2nd sales order line record that is a text line\n                orderProduct = new ESDRecordOrderSaleLine();\n                orderProduct.lineType = ESDocumentConstants.ORDER_LINE_TYPE_TEXT;\n                orderProduct.productCode = \"TEA-TOWEL-BLUE\";\n                orderProduct.textDescription = \"Please bundle tea towels into a box\";\n                orderLines.Add(orderProduct);\n\n                //add a 3rd sales order line record\n                orderProduct = new ESDRecordOrderSaleLine();\n                orderProduct.lineType = ESDocumentConstants.ORDER_LINE_TYPE_PRODUCT;\n                orderProduct.productCode = \"TEA-TOWEL-BLUE\";\n                orderProduct.productName = \"Blue tea towel - 30 x 6 centimetres\";\n                orderProduct.unitName = \"BOX\";\n                orderProduct.keySellUnitID = \"BOX-OF-10\";\n                orderProduct.quantity = 2;\n                orderProduct.sellUnitBaseQuantity = 20;\n                //pricing data only needs to be set if the order isn't being repriced\n                orderProduct.priceExTax = (decimal)10.00;\n                orderProduct.priceIncTax = (decimal)11.00;\n                orderProduct.priceTax = (decimal)1.00;\n                orderProduct.priceTotalIncTax = (decimal)22.00;\n                orderProduct.priceTotalExTax = (decimal)20.00;\n                orderProduct.priceTotalTax = (decimal)2.00;\n                orderLines.Add(orderProduct);\n\n                //add taxes to the line\n                orderProduct.taxes = new List\u003cESDRecordOrderLineTax\u003e();\n                orderProductTax = new ESDRecordOrderLineTax();\n                orderProductTax.keyTaxcodeID = \"TAXCODE-1\";\n                orderProductTax.taxcode = \"GST\";\n                orderProductTax.taxcodeLabel = \"Goods And Services Tax\";\n                orderProductTax.quantity = 2;\n                //pricing data only needs to be set if the order isn't being repriced\n                orderProductTax.priceTax = (decimal)1.00;\n                orderProductTax.taxRate = (decimal)10;\n                orderProductTax.priceTotalTax = (decimal)2.00;\n                orderProduct.taxes.Add(orderProductTax);\n\n                //add order lines to the order\n                salesOrderRecord.lines = orderLines;\n\n                //create an array of sales order surcharges\n                List\u003cESDRecordOrderSurcharge\u003e orderSurcharges = new List\u003cESDRecordOrderSurcharge\u003e();\n\n                //create sales order surcharge record\n                ESDRecordOrderSurcharge orderSurcharge = new ESDRecordOrderSurcharge();\n                orderSurcharge.surchargeCode = \"FREIGHT-FEE\";\n                orderSurcharge.surchargeLabel = \"Freight Surcharge\";\n                orderSurcharge.surchargeDescription = \"Cost of freight delivery\";\n                orderSurcharge.keySurchargeID = \"SURCHARGE-1\";\n                //pricing data only needs to be set if the order isn't being repriced\n                orderSurcharge.priceExTax = (decimal)3.00;\n                orderSurcharge.priceIncTax = (decimal)3.30;\n                orderSurcharge.priceTax = (decimal)0.30;\n                orderSurcharges.Add(orderSurcharge);\n\n                //add taxes to the surcharge\n                orderSurcharge.taxes = new List\u003cESDRecordOrderLineTax\u003e();\n                ESDRecordOrderLineTax orderSurchargeTax = new ESDRecordOrderLineTax();\n                orderSurchargeTax.keyTaxcodeID = \"TAXCODE-1\";\n                orderSurchargeTax.taxcode = \"GST\";\n                orderSurchargeTax.taxcodeLabel = \"Goods And Services Tax\";\n                orderSurchargeTax.quantity = 1;\n                //pricing data only needs to be set if the order isn't being repriced\n                orderSurchargeTax.priceTax = (decimal)0.30;\n                orderSurchargeTax.taxRate = (decimal)10;\n                orderSurchargeTax.priceTotalTax = (decimal)0.30;\n                orderSurcharge.taxes.Add(orderSurchargeTax);\n\n                //create 2nd sales order surcharge record\n                orderSurcharge = new ESDRecordOrderSurcharge();\n                orderSurcharge.surchargeCode = \"PAYMENT-FEE\";\n                orderSurcharge.surchargeLabel = \"Credit Card Surcharge\";\n                orderSurcharge.surchargeDescription = \"Cost of Credit Card Payment\";\n                orderSurcharge.keySurchargeID = \"SURCHARGE-2\";\n                //pricing data only needs to be set if the order isn't being repriced\n                orderSurcharge.priceExTax = (decimal)5.00;\n                orderSurcharge.priceIncTax = (decimal)5.50;\n                orderSurcharge.priceTax = (decimal)0.50;\n                orderSurcharges.Add(orderSurcharge);\n\n                //add taxes to the 2nd surcharge\n                orderSurcharge.taxes = new List\u003cESDRecordOrderLineTax\u003e();\n                orderSurchargeTax = new ESDRecordOrderLineTax();\n                orderSurchargeTax.keyTaxcodeID = \"TAXCODE-1\";\n                orderSurchargeTax.taxcode = \"GST\";\n                orderSurchargeTax.taxcodeLabel = \"Goods And Services Tax\";\n                //pricing data only needs to be set if the order isn't being repriced\n                orderSurchargeTax.priceTax = (decimal)0.50;\n                orderSurchargeTax.taxRate = (decimal)10;\n                orderSurchargeTax.quantity = (decimal)1;\n                orderSurchargeTax.priceTotalTax = (decimal)5.00;\n                orderSurcharge.taxes.Add(orderSurchargeTax);\n\n                //add surcharges to the order\n                salesOrderRecord.surcharges = orderSurcharges;\n\n                //create an array of sales order payments\n                List\u003cESDRecordOrderPayment\u003e orderPayments = new List\u003cESDRecordOrderPayment\u003e();\n\n                //create sales order payment record\n                ESDRecordOrderPayment orderPayment = new ESDRecordOrderPayment();\n                orderPayment.paymentMethod = ESDocumentConstants.PAYMENT_METHOD_CREDIT;\n                orderPayment.paymentProprietaryCode = \"Freight Surcharge\";\n                orderPayment.paymentReceipt = \"3422ads2342233\";\n                orderPayment.keyPaymentTypeID = \"VISA-CREDIT-CARD\";\n                orderPayment.paymentAmount = (decimal)22.80;\n                orderPayments.Add(orderPayment);\n\n                //create 2nd sales order payment record\n                orderPayment = new ESDRecordOrderPayment();\n                orderPayment.paymentMethod = ESDocumentConstants.PAYMENT_METHOD_PROPRIETARY;\n                orderPayment.paymentProprietaryCode = \"PAYPAL\";\n                orderPayment.paymentReceipt = \"2323432341231\";\n                orderPayment.keyPaymentTypeID = \"PP\";\n                orderPayment.paymentAmount = (decimal)30.00;\n                orderPayments.Add(orderPayment);\n\n                //add payments to the order and set overall payment details\n                salesOrderRecord.payments = orderPayments;\n                salesOrderRecord.paymentAmount = (decimal)41.00;\n                salesOrderRecord.paymentStatus = ESDocumentConstants.PAYMENT_STATUS_PAID;\n\n                //set order totals, pricing data only needs to be set if the order isn't being repriced\n                salesOrderRecord.totalPriceIncTax = (decimal)52.80;\n                salesOrderRecord.totalPriceExTax = (decimal)48.00;\n                salesOrderRecord.totalTax = (decimal)4.80;\n                salesOrderRecord.totalSurchargeExTax = (decimal)8.00;\n                salesOrderRecord.totalSurchargeIncTax = (decimal)8.80;\n                salesOrderRecord.totalSurchargeTax = (decimal)8.00;\n\n                //create sales order records list and add the sales order record to it\n                List\u003cESDRecordOrderSale\u003e salesOrderRecords = new List\u003cESDRecordOrderSale\u003e();\n                salesOrderRecords.Add(salesOrderRecord);\n\n                //after 120 seconds give up on waiting for a response from the API when importing a sales order\n                int timeoutMilliseconds = 120000;\n\n                //create purchase order Ecommerce Standards document and add purchse order records to the document\n                ESDocumentOrderSale orderSaleESD = new ESDocumentOrderSale(ESDocumentConstants.RESULT_SUCCESS, \"successfully obtained data\", salesOrderRecords.ToArray(), new Dictionary\u003cstring, string\u003e());\n\n                //send purchase order document to the API for procurement by the supplier organisation\n                APIv1EndpointResponseESD\u003cESDocumentOrderSale\u003e endpointResponseESD = APIv1EndpointOrgImportSalesOrder.call(apiOrgSession, timeoutMilliseconds, orderSaleESD, repriceOrder.ToUpper() == ESDocumentConstants.ESD_VALUE_YES);\n                ESDocumentOrderSale esDocumentOrderSale = endpointResponseESD.esDocument;\n\n                //check the result of procuring the purchase orders\n                if (endpointResponseESD.result.ToUpper() == APIv1EndpointResponse.ENDPOINT_RESULT_SUCCESS)\n                {\n                    Console.WriteLine(\"SUCCESS - organisation purchase orders have successfully been sent to supplier organisation.\");\n\n                    //iterate through each of the returned sales orders and output the details of the sales orders\n                    if (esDocumentOrderSale.dataRecords != null)\n                    {\n                        foreach (ESDRecordOrderSale salesOrderRecordResponse in esDocumentOrderSale.dataRecords)\n                        {\n                            Console.WriteLine(\"\\nSales Order Returned, Order Details: \");\n                            Console.WriteLine(\"Sales Order Code: \" + salesOrderRecordResponse.salesOrderCode);\n                            Console.WriteLine(\"Sales Order Total Cost: \" + salesOrderRecordResponse.totalPriceIncTax + \" (\" + salesOrderRecordResponse.currencyISOCode + \")\");\n                            Console.WriteLine(\"Sales Order Total Taxes: \" + salesOrderRecordResponse.totalTax + \" (\" + salesOrderRecordResponse.currencyISOCode + \")\");\n                            Console.WriteLine(\"Sales Order Customer Account: \" + salesOrderRecordResponse.customerAccountCode);\n                            Console.WriteLine(\"Sales Order Total Lines: \" + salesOrderRecordResponse.totalLines);\n                        }\n                    }\n                }\n                else\n                {\n                    Console.WriteLine(\"FAIL - organisation purchase orders failed to be processed. Reason: \" + endpointResponseESD.result_message + \" Error Code: \" + endpointResponseESD.result_code);\n\n\n                    //check if the server response returned back a Ecommerce Standards Document\n                    if (esDocumentOrderSale != null)\n                    {\n                        switch (endpointResponseESD.result_code)\n                        {\n                            //if one or more products in the sales order could not match the organisation's products then find out the order lines caused the problem\n                            case APIv1EndpointResponse.ENDPOINT_RESULT_CODE_ERROR_ORDER_PRODUCT_NOT_MATCHED:\n                                //get a list of order lines that could not be mapped\n                                List\u003cKeyValuePair\u003cint, int\u003e\u003e unmatchedLines = APIv1EndpointOrgImportSalesOrder.getUnmatchedOrderLines(esDocumentOrderSale);\n\n                                //iterate through each unmatched order line\n                                foreach (KeyValuePair\u003cint, int\u003e unmatchedLine in unmatchedLines)\n                                {\n                                    //get the index of the sales order and line that contained the unmatched product\n                                    int orderIndex = unmatchedLine.Key;\n                                    int lineIndex = unmatchedLine.Value;\n\n                                    //check that the order can be found that contains the problematic line\n                                    if (orderIndex \u003c orderSaleESD.dataRecords.Length \u0026\u0026 lineIndex \u003c orderSaleESD.dataRecords[orderIndex].lines.Count)\n                                    {\n                                        Console.WriteLine(\"For sales order: \" + orderSaleESD.dataRecords[orderIndex].salesOrderCode + \" a matching product for line number: \" + (lineIndex + 1) + \" could not be found.\");\n                                    }\n                                }\n\n                                break;\n\n                            //if one or more products in the sales order could not be priced then find the order line that caused the problem\n                            case APIv1EndpointResponse.ENDPOINT_RESULT_CODE_ERROR_ORDER_LINE_PRICING_MISSING:\n                                //get a list of order lines that could not be priced\n                                List\u003cKeyValuePair\u003cint, int\u003e\u003e unpricedLines = APIv1EndpointOrgImportSalesOrder.getUnpricedOrderLines(esDocumentOrderSale);\n\n                                //iterate through each unpriced order line\n                                foreach (KeyValuePair\u003cint, int\u003e unmappedLine in unpricedLines)\n                                {\n                                    //get the index of the sales order and line that contained the unpriced product\n                                    int orderIndex = unmappedLine.Key;\n                                    int lineIndex = unmappedLine.Value;\n\n                                    //check that the order can be found that contains the problematic line\n                                    if (orderIndex \u003c orderSaleESD.dataRecords.Length \u0026\u0026 lineIndex \u003c orderSaleESD.dataRecords[orderIndex].lines.Count)\n                                    {\n                                        Console.WriteLine(\"For sales order: \" + orderSaleESD.dataRecords[orderIndex].salesOrderCode + \" has not set pricing for line number: \" + (lineIndex + 1));\n                                    }\n                                }\n\n                                break;\n\n                            case APIv1EndpointResponse.ENDPOINT_RESULT_CODE_ERROR_ORDER_SURCHARGE_NOT_FOUND:\n                                //get a list of order surcharges that could not be matched\n                                List\u003cKeyValuePair\u003cint, int\u003e\u003e unmappedSurcharges = APIv1EndpointOrgImportSalesOrder.getUnmatchedOrderSurcharges(esDocumentOrderSale);\n\n                                //iterate through each unmatched order surcharge\n                                foreach (KeyValuePair\u003cint, int\u003e unmappedSurcharge in unmappedSurcharges)\n                                {\n                                    //get the index of the sales order and surcharge that contained the unmapped surcharge\n                                    int orderIndex = unmappedSurcharge.Key;\n                                    int surchargeIndex = unmappedSurcharge.Value;\n\n                                    //check that the order can be found that contains the problematic surcharge\n                                    if (orderIndex \u003c orderSaleESD.dataRecords.Length \u0026\u0026 surchargeIndex \u003c orderSaleESD.dataRecords[orderIndex].surcharges.Count)\n                                    {\n                                        Console.WriteLine(\"For sales order: \" + orderSaleESD.dataRecords[orderIndex].salesOrderCode + \" a matching surcharge for surcharge number: \" + (surchargeIndex + 1) + \" could not be found.\");\n                                    }\n                                }\n\n                                break;\n\n                            //if one or more surcharges in the sales order could not be priced then find the order surcharge that caused the problem\n                            case APIv1EndpointResponse.ENDPOINT_RESULT_CODE_ERROR_ORDER_SURCHARGE_PRICING_MISSING:\n\n                                //get a list of order surcharges that could not be priced\n                                List\u003cKeyValuePair\u003cint, int\u003e\u003e unpricedSurcharges = APIv1EndpointOrgImportSalesOrder.getUnpricedOrderSurcharges(esDocumentOrderSale);\n\n                                //iterate through each unpriced order surcharge\n                                foreach (KeyValuePair\u003cint, int\u003e unmappedSurcharge in unpricedSurcharges)\n                                {\n                                    //get the index of the purchase order and surcharge that contained the unpriced surcharge\n                                    int orderIndex = unmappedSurcharge.Key;\n                                    int surchargeIndex = unmappedSurcharge.Value;\n\n                                    //check that the order can be found that contains the problematic surcharge\n                                    if (orderIndex \u003c orderSaleESD.dataRecords.Length \u0026\u0026 surchargeIndex \u003c orderSaleESD.dataRecords[orderIndex].surcharges.Count)\n                                    {\n                                        Console.WriteLine(\"For sales order: \" + orderSaleESD.dataRecords[orderIndex].salesOrderCode + \" has not set pricing for surcharge number: \" + (surchargeIndex + 1));\n                                    }\n                                }\n\n                                break;\n\n                            case APIv1EndpointResponse.ENDPOINT_RESULT_CODE_ERROR_ORDER_PAYMENT_NOT_MATCHED:\n                                //get a list of order payments that could not be mapped\n                                List\u003cKeyValuePair\u003cint, int\u003e\u003e unmappedPayments = APIv1EndpointOrgImportSalesOrder.getUnmatchedOrderPayments(esDocumentOrderSale);\n\n                                //iterate through each unmapped order payment\n                                foreach (KeyValuePair\u003cint, int\u003e unmappedPayment in unmappedPayments)\n                                {\n                                    //get the index of the purchase order and payment that contained the unmapped payment\n                                    int orderIndex = unmappedPayment.Key;\n                                    int paymentIndex = unmappedPayment.Value;\n\n                                    //check that the order can be found that contains the problematic payment\n                                    if (orderIndex \u003c orderSaleESD.dataRecords.Length \u0026\u0026 paymentIndex \u003c orderSaleESD.dataRecords[orderIndex].payments.Count)\n                                    {\n                                        Console.WriteLine(\"For sales order: \" + orderSaleESD.dataRecords[orderIndex].salesOrderCode + \" a matching payment for payment number: \" + (paymentIndex + 1) + \" could not be found.\");\n                                    }\n                                }\n\n                                break;\n                        }\n                    }\n                }\n\n                //next steps\n                //call other API endpoints...\n                //destroy API session when done...\n                apiOrgSession.destroyOrgSession();\n            }\n\n            Console.WriteLine(\"Example Finished.\");\n        }\n    }\n}\n```\n\n### Search Customer Account Records Endpoint\nThe SQUIZZ.com platform's API has an endpoint that allows an organisation to search for records within another connected organisation's business sytem, based on records associated to an assigned customer account.\nThis endpoint allows an organisation to securely search for invoice, sales order, back order, transactions. credit and payment records, retrieved in realtime from a supplier organisation's connected business system. \nThe endpoint also makes it easier to search for records across multiple suppliers and systems, without having to do complete one-on-one integrations.\nThe records returned from endpoint is formatted as JSON data conforming to the \"Ecommerce Standards Document\" standards, with each document containing an array of zero or more records. Use the Ecommerce Standards library to easily read through these documents and records, to find data natively using .NET classes.\nRead [https://www.squizz.com/docs/squizz/Platform-API.html#section1473](https://www.squizz.com/docs/squizz/Platform-API.html#section1473) for more documentation about the endpoint and its requirements.\nSee the example below on how the call the Search Customer Account Records endpoint. Note that a session must first be created in the API before calling the endpoint.\n\n![alt tag](https://attach.squizz.com/doc_centre/1/files/images/masters/SQUIZZ-Customer-Account-Record-Search[127].png)\n\n```csharp\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Squizz.Platform.API.v1;\nusing Squizz.Platform.API.v1.endpoint;\nusing EcommerceStandardsDocuments;\n\nnamespace Squizz.Platform.API.Examples.APIv1\n{\n    /// \u003csummary\u003eShows an example of creating a organisation session with the SQUIZZ.com platform's API, then search for records from a conencted organisation's customer account in the platform\u003c/summary\u003e\n    public class APIv1ExampleRunnerSearchCustomerAccountRecords\n    {\n        public static DateTime EPOCH_DATE_TIME = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);\n        public static string RECORD_DATE_FORMAT = \"dd-MM-yyyy\";\n\n        public static void runAPIv1ExampleRunnerSearchCustomerAccountRecords()\n        {\n            Console.WriteLine(\"Example - Search Supplier Organisation Customer Account Records\");\n            Console.WriteLine(\"\");\n\n            //obtain or load in an organisation's API credentials, in this example from the user in the console\n            Console.WriteLine(\"Enter Organisation ID:\");\n            string orgID = Console.ReadLine();\n            Console.WriteLine(\"Enter Organisation API Key:\");\n            string orgAPIKey = Console.ReadLine();\n            Console.WriteLine(\"Enter Organisation API Password:\");\n            string orgAPIPass = Console.ReadLine();\n            Console.WriteLine(\"Enter Supplier Organisation ID:\");\n            string supplierOrgID = Console.ReadLine();\n            Console.WriteLine(\"(Optioanal) Enter Supplier's Customer Account Code:\");\n            string customerAccountCode = Console.ReadLine();\n            Console.WriteLine(\"Enter number for type of records to search for:\");\n            Console.WriteLine(\"1 - Invoices\");\n            Console.WriteLine(\"2 - Sales Orders\");\n            Console.WriteLine(\"3 - Back Orders\");\n            Console.WriteLine(\"4 - Transactions\");\n            Console.WriteLine(\"5 - Credits\");\n            Console.WriteLine(\"6 - Payments\");\n\n            //validate the type of record to obtain\n            int recordTypeNumber = ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsquizzdotcom%2Fsquizz-platform-api-dotnet-library","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsquizzdotcom%2Fsquizz-platform-api-dotnet-library","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsquizzdotcom%2Fsquizz-platform-api-dotnet-library/lists"}