{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"8ea9adec-b07a-4c95-938a-edb0047e43c6","name":"Vision API","description":"Welcome to the documentation for the Sybiz Vision Web API. Here you'll find information you'll need to get started with and consume the API. Please read it carefully as some elements may be different to the typical standards.\n\n# 3.30 Release Notes\n\n**New**\n\n- Added 'ProjectId' to service request endpoints\n    \n- Added extended property support for sales picks\n    \n- Added extended property support for sales pick lines\n    \n\n**Fixes**\n\n- Fixed extended properties on job endpoints\n    \n\n**Breaking Changes**\n\n- Removed 'ForceProject' and 'ProjectLevel' from job default info and service default info endpoints\n    \n- Removed 'ProjectId' from service quote and service action data\n    \n- Removed the following fields from service quote line and service action line data\n    \n    - Tax\n        \n    - BaseTax\n        \n    - TaxCodeId\n        \n    - CurrencyId\n        \n    - ExchangeRate\n        \n    - ExchangeRateIsFixed\n        \n    - SystemExchangeRate\n        \n    - UseForeignExchange\n        \n    - TransactionNumber\n        \n\n**Planned Obsolescence Extensions (Removal in Vision.NET V27.00)**\n\n- GET on 'Version' will change in behaviour to return a JSON object\n    \n- GET on 'Databases' will change in behaviour to return a JSON object\n    \n- 'Location' on GET/POST 'SalesPick' will be replaced with 'LocationId'\n    \n- GET on 'DefaultInfo' (DR) will have the following fields replaced with their equivalent id versions (e.g. 'PriceScale' will be replaced with 'PriceScaleId'):\n    \n    - PriceScale\n        \n    - TradingTerm\n        \n    - ExportTaxCode\n        \n    - TaxableTaxCode\n        \n    - NonTaxableTaxCode\n        \n    - BackToBackOrderingProject\n        \n    - BackToBackOrderingAnalysisCode\n        \n- 'LabourQuantityPrecisionId' will be replaced with 'LabourQuantityPrecision' for GET 'DefaultInfo' (JC)\n    \n- 'ProjectDescription' will be replaced with 'ProjectName' for GET 'PurchaseDelivery' and 'PurchaseOrder' info lists\n    \n- The following endpoints will have 'IsActive' replaced with 'Active':\n    \n    - GET 'Supplier'\n        \n    - GET 'SupplierInfoList'\n        \n    - GET 'SupplierLookupInfoList'\n        \n    - GET 'Customer'\n        \n    - GET 'CustomerInfoList'\n        \n    - GET 'CustomerLookupInfoList'\n        \n    - GET 'Product'\n        \n    - GET 'ProductInfoList'\n        \n    - GET 'ProductLookupInfoList'\n        \n    - GET 'SpecialPriceInfoList' (DR)\n        \n    - GET 'PriceScaleLookupInfoList'\n        \n    - GET 'UnitOfMeasureLookupInfoList'\n        \n- The following fields will be clearly marked as 'Id' fields by adding the suffix of 'Id'\n    \n    - 'Currency' will be replaced with 'CurrencyId' for GET 'CompanyInfo'\n        \n    - 'RetentionPolicy' will be replaced with 'RetentionPolicyId' for GET/POST 'Job'\n        \n    - 'AfterInvoiceStatus' will be replaced with 'AfterInvoiceStatusId' for GET 'DefaultInfo' (SV)\n        \n    - 'ProcessableInvoiceStatus' will be replaced with 'ProcessableInvoiceStatusId' for GET 'DefaultInfo' (SV)\n        \n\n# Documentation History\n\n[Vision Web API 1.00](https://documenter.getpostman.com/view/8312536/SzmmWFax)  \n[Vision Web API 1.10](https://documenter.getpostman.com/view/8312536/TVmMecHX)  \n[Vision Web API 1.20](https://documenter.getpostman.com/view/8312536/TzCTXjkU)  \n[Vision Web API 1.30](https://documenter.getpostman.com/view/8312536/TzJpj1DS)  \n[Vision Web API 1.40](https://documenter.getpostman.com/view/8312536/TzeWH8oY)  \n[Vision Web API 1.50](https://documenter.getpostman.com/view/8312536/2s8YmF1SPR)  \n[Vision Web API 2.00](https://documenter.getpostman.com/view/8312536/UUxwBoUG)  \n[Vision Web API 2.10](https://documenter.getpostman.com/view/8312536/Uz5MGEaC)  \n[Vision Web Api 2.20](https://documenter.getpostman.com/view/8312536/2s8YmF1STh)  \n[Vision Web Api 2.30<br>](https://documenter.getpostman.com/view/8312536/2s93ebSVtK)[Vision Web Api 2.40<br>](https://documenter.getpostman.com/view/8312536/2s9YXh423c)[Vision Web Api 3.00<br>](https://documenter.getpostman.com/view/8312536/2sA3Qs8qyk)[Vision Web Api 3.10<br>](https://documenter.getpostman.com/view/8312536/2sAYdkH8wD)[Vision Web Api 3.20](https://documenter.getpostman.com/view/8312536/2sB3QQH6y5)\n\n# Documentation Limitations\n\nDue to the scope of Sybiz Vision there are limitations on what the documentation covers in the examples. If in doubt, compare and recreate the situation in Sybiz Vision for insight on a particular situation and then GET that resource through the API to analyze values.\n\n- POST requests only cover the required fields to create or modify resources. Note that various settings can change the required fields.\n    \n- POST requests that deal with transactions only cover the basic line type. Differences exist between line types.\n    \n- POST requests have fields that can be in a read-only state depending on various factors. These will be ignored if they're supplied and in a read-only state.\n    \n- Documentation, especially examples, may be out of date and may not reflect the fields available (e.g. new fields). Always trust live response data over examples for fields.\n    \n\n# Setup\n\nSetup information can be found in the pdf 'Web API Install Guide' included with the API download. The API requires Sybiz Vision databases to be defined in the config file 'databases.config' which can be found in the 'config' folder. Within this XML config file databases are defined with the following properties:\n\n- Name - Name that will be used within the API\n    \n- CommonConnectionString - Reference to common database\n    \n- VisionConnectionString - Reference to the Sybiz Vision database\n    \n- Key - Secret to restrict visibility and authentication\n    \n\nAn example of this config file can be found below:\n\n``` xml\n<configuration>\n  <configSections>\n    <section class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; class=&#x27;preserveHtml&#x27; name=\"Databases\" type=\"System.Configuration.IgnoreSectionHandler\" allowLocation=\"false\"/>\n  </configSections>\n  <Databases>\n    <Database Name=\"Database\" CommonCS=\"server=SqlServer;database=CommonDatabase;MultipleActiveResultSets=True;uid=SqlUser;pwd=password\" CompanyCS=\"server=SqlServer;database=SybizVision1;MultipleActiveResultSets=True;uid=SqlUser;pwd=password\" Key=\"\"/>\n  </Databases>\n</configuration>\n\n ```\n\nIn addition, there are two properties that can be modified in the config file 'web.config' which can be found in the root directory. These properties allow the bearer token and refresh token expiry time to be customized and are expressed in minutes. By default the bearer token is set to 1 day and the refresh token is set to 7 days. An example of these properties can be found below:\n\n``` xml\n<appSettings>\n  <add key=\"BearerExpiry\" value=\"1440\"/>\n  <add key=\"RefreshExpiry\" value=\"10080\"/>\n</appSettings>\n\n ```\n\nLastly, the web service will need to have support for HTTPS. Any request that does not use HTTPS will be rejected by the API for security reasons.\n\n# Authentication\n\nAuthentication with the API is handled through the use of bearer and refresh tokens. These tokens contain the identity of the user, are valid for the database they were generated against and must be provided with subsequent requests. Consult the documentation for the 'Bearer' and 'Refresh' endpoints for more information on generating these tokens.\n\n# Authorization\n\nAuthorization with the API is handled through the same mechanisms as Sybiz Vision. Role based authentication will be checked against requests and when the user does not have the required action right the forbidden response will be returned. Endpoints generally have the equivalent Sybiz Vision action right and a list of these action rights for the authenticated user can be retrieved from the 'ActionRight' endpoint.\n\n<img src=\"https://content.pstmn.io/c2885d06-6233-48d2-be20-09cf20903e5a/aW1hZ2UucG5n\" alt=\"An%20example%20of%20some%20action%20rights%20available%20in%20Sybiz%20Vision\" width=\"616\" height=\"397\">\n\n# Structure - Overview\n\nThe API is structured around the Sybiz Vision platform (which will be refered to as 'platform') which ties in closely from a 3rd party development perspective. Resources have a set of requests which may include a request for an editable object, an info list and a lookup info list. Each type of request usually has the same basic functionality and structure across the API.\n\n# Structure - Editable Objects\n\nEditable objects are representations of the edit level forms within Sybiz Vision. Editable objects contain the most amount of information on the resource including fields, sub-objects and sub-lists and allow CRUD (create, read, update, delete) operations. Multiple action rights are tied to the access and CRUD operations of editable objects.\n\n<img src=\"https://content.pstmn.io/09a6bf24-dfea-4666-987b-54729a273313/aW1hZ2UucG5n\" alt=\"An%20example%20of%20editing%20a%20'Customer'%20in%20Sybiz%20Vision\" width=\"616\" height=\"619\">\n\n```\nAPI/DR/Customer/12\nAPI/DR/AnalysisCode/14\n\n ```\n\n# Structure - Info Lists\n\nInfo lists are representations of the read-only lists within Sybiz Vision. They contain a limited set of key fields that allow for meaningful sorting and filtering. An action right is usually required to access info lists.\n\n<img src=\"https://content.pstmn.io/3e7f65ec-e358-4a39-8322-4cb75783c288/aW1hZ2UucG5n\" alt=\"An%20example%20of%20the%20'Customer'%20info%20list%20in%20Sybiz%20Vision\" width=\"1196\" height=\"326\">\n\n```\nAPI/DR/CustomerInfoList\nAPI/CM/AnalysisCodeInfoList\n\n ```\n\n# Structure - Lookup Info Lists\n\nLookup info lists are representations of the drop-down lists within Sybiz Vison. Lookup info lists contain a very limited set of fields (often code, description and active) for selection purposes. No action rights are required to access lookup info lists.\n\n<img src=\"https://content.pstmn.io/f0c92f48-8ac9-4e07-b7b6-782db81f8707/aW1hZ2UucG5n\" width=\"616\" height=\"154\">\n\n```\nAPI/DR/CustomerLookupInfoList\nAPI/CM/AnalysisCodeLookupInfoList\n\n ```\n\n# Platform - Create & Update\n\nCreating and updating resources is performed through a POST request to the relevant endpoint. These requests require the request body to contain the field 'Id' which determines whether the resource is created (when the id is 0) or updated (when the id matches an existing resource). Note that sub-list resources (e.g. transaction lines) also follow this logic. After the operation, platform will create or update the resource and send back a full representation of the resource.\n\nNote that only the fields supplied will be updated and therefore leaving fields or sub-objects blank will have no effect (e.g, supplying an empty list of transaction lines in an attempt to delete the transaction lines).\n\nIn addition, there are multiple business rules and settings that can be configured in Sybiz Vision which may change or overwrite values. If any of these business rules are broken, through any means, and the operation cannot complete, a representation of the problem will be returned as shown below:\n\n``` json\n[\n    {\n        \"ObjectLevel\": \"Product\",\n        \"PropertyName\": \"Code\",\n        \"Description\": \"A value is required\",\n        \"LineNo\": null\n    }\n]\n\n ```\n\n# Platform - Delete\n\nDeleting a resource is performed through a DELETE request to the relevant endpoint using the following syntax:\n\n```\nAPI/DR/Customer/1\n\n ```\n\nAs noted in the above section, sub-list resources cannot be deleted through an update. In order to delete a sub-list resource the same DELETE request is used but contains parameters, consisting of a comma separated list of the ids to delete, for the sub-list resources. Refer to the documentation for what sub-list resources exist on a resource. As an example, deleting contacts of id 1, 2 and 3 and contracts of id 1, 2 and 3 is done by using the following syntax:\n\n```\nAPI/DR/Customer/1?Contact=1,2,3&Contract=1,2,3\n\n ```\n\n# Platform - Pictures\n\nResources that that have support for pictures can have them retrieved and updated through the API. The format, shown below, is the same for each resource and is accessed through a list called 'Pictures'. Note that no picture data will be returned for editable objects due to size and speed reasons. Pictures can always be deleted as a sub-list resource through the 'Pictures' parameter. Refer to the 'Picture' endpoints for more operations on pictures.\n\n<img src=\"https://content.pstmn.io/55293d35-1152-4fb5-bb2b-031c97d1df64/aW1hZ2UucG5n\" alt=\"An%20example%20of%20'Pictures'%20in%20Sybiz%20Vision\" width=\"614\" height=\"586\">\n\n``` json\n\"Pictures\":\n[\n    {\n        \"Id\": 0,\n        \"SortOrder\": \"0\",\n        \"Description\": \"Cute Cat\",\n        \"Picture\": \"\",\n        \"Thumbnail\": \"\"\n    }\n]\n\n ```\n\n# Platform - Document Store\n\nResources that have support for documents can be retrieved through the API. Note that no document data will be returned for editable objects due to size and speed reasons. Documents can always be deleted as a sub-list resource through the 'Documents' parameter. Refer to the 'Document' endpoints for more operations on documents.\n\n<img src=\"https://content.pstmn.io/f06dace3-0a08-4e1c-a150-9beb1c76009b/aW1hZ2UucG5n\" alt=\"An%20example%20of%20'Document%20Store'%20in%20Sybiz%20Vision\" width=\"617\" height=\"145\">\n\n``` json\n\"Documents\":   \n[\n    {\n        \"FileName\": \"Comparison.pptx\",\n        \"FileType\": \"\",\n        \"FileExtension\": \".pptx\",\n        \"Description\": \"\",\n        \"FileSize\": 8947,\n        \"DocumentCategoryId\": 0,\n        \"FileWriteTime\": \"2024-04-16T13:37:44.493+09:30\",\n        \"Icon\": null,\n        \"Document\": null,\n        \"CreatedBy\": \"Administrator\",\n        \"CreationDateTime\": \"2024-05-27T16:41:46.487\",\n        \"LastModifiedBy\": \"Administrator\",\n        \"LastModifiedDateTime\": \"2024-05-27T16:41:46.487\",\n        \"Id\": 4\n    }\n]\n\n ```\n\n# Platform - Activities & Casefiles\n\nResources that have support for activities and casefiles can be retrieved through the API. Note that no document data will be returned for editable objects due to size and speed reasons. Activities and casefiles can always be deleted as a sub-list resource through the 'Activities' and 'CaseFiles' parameters.\n\n<img src=\"https://content.pstmn.io/192f47d9-a530-4494-b86d-3ba76cb0154b/aW1hZ2UucG5n\" alt=\"An%20example%20of%20'Activities'%20in%20Sybiz%20Vision\" width=\"616\" height=\"263\">\n\n<img src=\"https://content.pstmn.io/35ba4136-b223-4822-952e-fe726fa75cf4/aW1hZ2UucG5n\" alt=\"An%20example%20of%20'Casefiles'%20in%20Sybiz%20Vision\" width=\"617\" height=\"146\">\n\n``` json\n\"Activities\": \n[\n    {\n        \"ActivityId\": 7,\n        \"ActivityNumber\": \"RK00004\",\n        \"Subject\": \"this is a remark\",\n        \"Status\": \"NS1\",\n        \"Priority\": \"L\",\n        \"Type\": 1,\n        \"StartedOn\": null,\n        \"CompletedOn\": null,\n        \"UserName\": \"Administrator\",\n        \"CreatedBy\": \"Administrator\",\n        \"CreationDateTime\": \"2024-05-27T16:53:50.033\",\n        \"LastModifiedBy\": \"Administrator\",\n        \"LastModifiedDateTime\": \"2024-05-27T16:53:50.033\",\n        \"Id\": 1\n    }\n],\n\"CaseFiles\": \n[\n    {\n        \"CaseFileId\": 2,\n        \"CaseFileNumber\": \"CF00002\",\n        \"Subject\": \"we have a situation\",\n        \"Status\": \"NS1\",\n        \"Priority\": \"H\",\n        \"Category\": \"A\",\n        \"StartedOn\": null,\n        \"CompletedOn\": null,\n        \"UserName\": \"Administrator\",\n        \"CreatedBy\": \"Administrator\",\n        \"CreationDateTime\": \"2022-11-16T11:21:25.92\",\n        \"LastModifiedBy\": \"Administrator\",\n        \"LastModifiedDateTime\": \"2024-05-27T16:51:52.133\",\n        \"Id\": 1\n    }\n]\n\n ```\n\n# Platform - Extended Properties\n\nResources that have support for extended properties (also known as 'Custom Fields' in Sybiz Vision) can retrieve and update these fields through the API. The format, shown below, is the same for each resource and is accessed through a list called 'ExtendedProperties' with fields 'Name' and 'ObjectValue'. Extended property definitions containing more details about particular extended properties can be retrieved from the 'ExtendedPropertyDefinition' endpoint.\n\n<img src=\"https://content.pstmn.io/ff30e3e2-1011-4bca-b4eb-3fc04ef313fd/aW1hZ2UucG5n\" alt=\"An%20example%20of%20extended%20properties%20on%20a%20'Customer'\" width=\"872\" height=\"147\">\n\n``` json\n\"ExtendedProperties\": \n[\n    {\n        \"Name\": \"Interest Rate\",\n        \"ObjectValue\": \"5.95\"\n    },\n    {\n        \"Name\": \"Favourite Food\",\n        \"ObjectValue\": \"Pizza\"\n    }\n]\n\n ```\n\n# Platform - Serial and Lot Tracking\n\nResources that have support for serial and lot tracking can return tracking details through GET requests and send tracking details through POST requests. Note that only serial or only lot tracking (not the combination) is currently supported for updating. Below is an example and explanation of the fields used:\n\n- SerialNumber - the serial number returned or to update\n    \n- LotNumber - the lot number returned or to update\n    \n- Quantity - the quantity of the lot number or serial number returned or to update\n    \n- UseByDate - the use by date of the lot number returned or to update\n    \n- Generate - determines whether the numbers provided are being generated or the numbers provided are being searched for\n    \n- Id - the id of the record returned\n    \n\nSerial and lot tracking is available on:\n\n- Job Costs\n    \n- Stock Transfers\n    \n- Service Actions\n    \n- Sales Transactions (Credit, Delivery, Invoice & Return)\n    \n- Purchase Transactions (Credit, Delivery, Invoice & Return)\n    \n\n``` json\n\"Tracking\": \n[\n    {\n        \"SerialNumber\": \"Cereal1\",\n        \"LotNumber\": null,\n        \"Quantity\": null,\n        \"UseByDate\": null,\n        \"Generate\": false,\n        \"Id\": 1\n    }\n]\n\n ```\n\n# API - Modified After\n\nModified after allows requests to only return resources that were modified after the specified date time which significantly reduces the size and improves the speed of the response. Modified after is available on info lists and lookup info lists and uses the optional parameter 'ModifiedAfter' with the following syntax:\n\n```\n?ModifiedAfter=2021/03/18 12:37:18\n\n ```\n\nIn addition, the response will contain the header 'ModifiedAfter' which contains a comma separated list of resource ids that were modified after the specified date time. Note that this header will include resources that have been deleted.\n\n# API - Field Filtering\n\nField filtering allows requests to only return the fields requested which can significantly reduce the size of the response. Field filtering is available on most requests and uses the optional parameter 'Fields' by using the following syntax:\n\n```\n?fields=field1,field2\n\n ```\n\n```\nAPI/DR/Customer/1?fields=Code,Name\n\n ```\n\nField filtering can also be applied to fields on sub-objects and sub-lists. This is done by referencing the sub-object or sub-list and then optionally a period separator with the field. Refer to the following syntax:\n\n```\n?fields=list2,list1.field1,list1.field2\n\n ```\n\n```\nAPI/DR/SalesOrder/1?fields=ExtendedProperties,Lines.Id,Lines.Notes\n\n ```\n\nIn the event that an exception is raised due to field filtering the 400 (Bad Request) response code will be returned with a FieldFilteringException.\n\n# API - Sorting\n\nSorting allows for the results of a request to be sorted in ascending or descending order based on a field or set of fields. Sorting is available on info lists and lookup info lists and uses the optional parameter named 'Sort' by using the following syntax:\n\n``` plaintext\n?sort=field1,-field2\n\n ```\n\n``` plaintext\nAPI/DR/CustomerInfoList?sort=Group,-Code\n\n ```\n\nNote that to sort in descending order the - symbol is placed before the field. In the event that an exception is raised due to sorting the 400 (Bad Request) response code will be returned with a FiedSortingException.\n\n# API - Paging\n\nPaging alows for the separation of a request into seperate smaller responses. Paging is available on info lists and lookup info lists and uses the optional parameters 'Page' and 'PageSize' which respectively determine the page to return and the amount of resources per page. Note that when one of the parameters is missing 'Page' will default to 1 and 'PageSize' will default to 10. Paging uses the following syntax:\n\n``` plaintext\n?page=1&pagesize=5\n\n ```\n\n``` plaintext\nAPI/DR/CustomerInfoList?page=2&pageSize=5\n\n ```\n\nIn addition, the response will contain the header 'Paging' containing information about the paging applied including references to the URI for the previous and next page.\n\n```\n{\"page\":1,\"pageSize\":5,\"totalObjects\":71,\"totalPages\":15,\"linkPrev\":\"API/DR/CustomerInfoList?page=3&pageSize=5\",\"linkNext\":\"API/DR/CustomerInfoList?page=3&pageSize=5\"}\n\n ```\n\nNote that values of 0 for either paging parameter are not valid and the 400 (Bad Request) response code will be returned with a PagingException.\n\n# API - Server Date\n\nAPI endpoints return the header 'ServerDate' that contains the current date time value (e.g. Thu, 8 Apr 2021 17:24:36) through the execution of SQLGETDATE() on the database.\n\n# Response Codes\n\n200 (Ok)\n\n- Returned when a request completes successfully\n    \n\n201 (Created)\n\n- Returned when a request creates a new resource\n    \n\n204 (No Content)\n\n- Returned when a request deletes an existing resource\n    \n- Returned when a request does not need to return data\n    \n\n400 (Bad Request)\n\n- Returned when multiple exceptions are thrown (see exceptions section)\n    \n\n401 (Unauthorized)\n\n- Returned when a request does not contain bearer token authorization\n    \n- Returned when an issue with the bearer token occurs\n    \n\n403 (Forbidden)\n\n- Returned when the user count has been exceeded\n    \n- Returned when a user does not have add, edit, delete, access or process rights\n    \n\n404 (Not Found)\n\n- Returned when the request endpoint could not be found\n    \n- Returned when the request resource could not be found\n    \n\n405 (Method Not Allowed)\n\n- Returned when the request endpoint does not allow that method\n    \n\n409 (Conflict)\n\n- Returned when attempting to modify a resource that is locked\n    \n- Returned when attempting to delete or deactivate a resource that has references\n    \n\n415 (Unsupported Media Type)\n\n- Returned when a serializer is used other than JSON\n    \n\n500 (Internal Server Error)\n\n- Returned when an unspecified error occurs within the API\n    \n\n# Exceptions\n\nWhen a request returns a response code in the 4XX and 5XX range a JSON object containing fields 'Type' and 'Message' which references the type of exception and reason.\n\n``` json\n{\n    \"Type\": \"ValidationException\",\n    \"Message\": \"Object is not valid and can not be processed\"\n}\n\n ```\n\nIn addition, the following exception types can be reasonably assumed to be thrown from either platform or the API. Any other exception types will return a 500 (Internal Server Error). Note that this list is not exhaustive due to the size and scope of platform. Please lodge a support ticket in the event that the response code or categorization does not seem right under the given circumstances as circumstances can vary greatly.\n\n| **Exception** | **Response** | **Reason** |\n| --- | --- | --- |\n| ArgumentException | 400 | Value supplied could not be parsed or resulted in a failure |\n| ArgumentOutOfRangeException | 400 | Value supplied was outside valid bounds |\n| DoesNotExistException | 404 | Resource or endpoint could not be found |\n| FieldFilteringException | 400 | Value supplied for the 'Fields' parameter is not valid |\n| FieldSortingException | 400 | Value supplied for the 'Sort' parameter is not valid |\n| InvalidOperationException | 400 | Operation being performed is not valid on the target resource |\n| JsonSerializationException | 400 | Request body could not be converted to JSON |\n| LicenseException | 403 | No license for the Sybiz Vison Web API |\n| MissingFieldException | 400 | Request body is missing a required field |\n| NotSupportedException | 400 | Operation being performed is not valid on the target resource |\n| PagingException | 400 | Values supplied for the 'Page' and 'PageSize' parameters are not valid |\n| SecurityException | 400 | HTTPS was not used for the request |\n| SecurityException | 403 | User does not have the required action rights |\n| SqlException (Custom Query Only) | 400 | Custom query encountered a sql error |\n| ValidationException | 400 | Broken rules on the target resource |","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"8312536","team":455318,"collectionId":"8ea9adec-b07a-4c95-938a-edb0047e43c6","publishedId":"2sA3JM61oW","public":true,"publicUrl":"https://documenter-api.postman.tech/view/8312536/2sA3JM61oW","privateUrl":"https://go.postman.co/documentation/8312536-8ea9adec-b07a-4c95-938a-edb0047e43c6","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"3C97CC"},"documentationLayout":"classic-double-column","customisation":{"metaTags":[{"name":"description","value":""},{"name":"title","value":""}],"appearance":{"default":"dark","themes":[{"name":"dark","logo":null,"colors":{"top-bar":"212121","right-sidebar":"303030","highlight":"3C97CC"}},{"name":"light","logo":null,"colors":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"3C97CC"}}]}},"version":"8.12.8","publishDate":"2024-11-25T06:49:53.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{"title":"","description":""},"logos":{"logoLight":null,"logoDark":null}},"statusCode":200},"environments":[{"name":"Documentation","id":"0a067647-5ade-448f-88fc-9b86c05b9c62","owner":"17342763","values":[{"key":"TOKEN","value":"F559BF7230D34B7698CECB51667AD8B4","enabled":true},{"key":"REFRESH","value":"970BFFB5","enabled":true,"type":"default"},{"key":"ADDRESS","value":"https://api.company.com","enabled":true},{"key":"DATABASE","value":"Database","enabled":true},{"key":"USERNAME","value":"Username","enabled":true},{"key":"PASSWORD","value":"Password","enabled":true},{"key":"KEYS","value":"key1, key2, key3","enabled":true}],"published":true}],"user":{"authenticated":false,"permissions":{"publish":false}},"run":{"button":{"js":"https://run.pstmn.io/button.js","css":"https://run.pstmn.io/button.css"}},"web":"https://www.getpostman.com/","team":{"logo":"https://res.cloudinary.com/postman/image/upload/t_team_logo_pubdoc/v1/team/1b8512e26615b1cb0c293a65a0ec0d22cc7cab5843b1dbd29d2583dd1d24c2fb","favicon":"https://res.cloudinary.com/postman/image/upload/v1623719536/team/xxvwp0zytamgfvcksdba.ico"},"isEnvFetchError":false,"languages":"[{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"HttpClient\"},{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"RestSharp\"},{\"key\":\"curl\",\"label\":\"cURL\",\"variant\":\"cURL\"},{\"key\":\"dart\",\"label\":\"Dart\",\"variant\":\"http\"},{\"key\":\"go\",\"label\":\"Go\",\"variant\":\"Native\"},{\"key\":\"http\",\"label\":\"HTTP\",\"variant\":\"HTTP\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"OkHttp\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"Unirest\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"Fetch\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"jQuery\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"XHR\"},{\"key\":\"c\",\"label\":\"C\",\"variant\":\"libcurl\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Axios\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Native\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Request\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Unirest\"},{\"key\":\"objective-c\",\"label\":\"Objective-C\",\"variant\":\"NSURLSession\"},{\"key\":\"ocaml\",\"label\":\"OCaml\",\"variant\":\"Cohttp\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"cURL\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"Guzzle\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"HTTP_Request2\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"pecl_http\"},{\"key\":\"powershell\",\"label\":\"PowerShell\",\"variant\":\"RestMethod\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"http.client\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"Requests\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"httr\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"RCurl\"},{\"key\":\"ruby\",\"label\":\"Ruby\",\"variant\":\"Net::HTTP\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"Httpie\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"wget\"},{\"key\":\"swift\",\"label\":\"Swift\",\"variant\":\"URLSession\"}]","languageSettings":[{"key":"csharp","label":"C#","variant":"HttpClient"},{"key":"csharp","label":"C#","variant":"RestSharp"},{"key":"curl","label":"cURL","variant":"cURL"},{"key":"dart","label":"Dart","variant":"http"},{"key":"go","label":"Go","variant":"Native"},{"key":"http","label":"HTTP","variant":"HTTP"},{"key":"java","label":"Java","variant":"OkHttp"},{"key":"java","label":"Java","variant":"Unirest"},{"key":"javascript","label":"JavaScript","variant":"Fetch"},{"key":"javascript","label":"JavaScript","variant":"jQuery"},{"key":"javascript","label":"JavaScript","variant":"XHR"},{"key":"c","label":"C","variant":"libcurl"},{"key":"nodejs","label":"NodeJs","variant":"Axios"},{"key":"nodejs","label":"NodeJs","variant":"Native"},{"key":"nodejs","label":"NodeJs","variant":"Request"},{"key":"nodejs","label":"NodeJs","variant":"Unirest"},{"key":"objective-c","label":"Objective-C","variant":"NSURLSession"},{"key":"ocaml","label":"OCaml","variant":"Cohttp"},{"key":"php","label":"PHP","variant":"cURL"},{"key":"php","label":"PHP","variant":"Guzzle"},{"key":"php","label":"PHP","variant":"HTTP_Request2"},{"key":"php","label":"PHP","variant":"pecl_http"},{"key":"powershell","label":"PowerShell","variant":"RestMethod"},{"key":"python","label":"Python","variant":"http.client"},{"key":"python","label":"Python","variant":"Requests"},{"key":"r","label":"R","variant":"httr"},{"key":"r","label":"R","variant":"RCurl"},{"key":"ruby","label":"Ruby","variant":"Net::HTTP"},{"key":"shell","label":"Shell","variant":"Httpie"},{"key":"shell","label":"Shell","variant":"wget"},{"key":"swift","label":"Swift","variant":"URLSession"}],"languageOptions":[{"label":"C# - HttpClient","value":"csharp - HttpClient - C#"},{"label":"C# - RestSharp","value":"csharp - RestSharp - C#"},{"label":"cURL - cURL","value":"curl - cURL - cURL"},{"label":"Dart - http","value":"dart - http - Dart"},{"label":"Go - Native","value":"go - Native - Go"},{"label":"HTTP - HTTP","value":"http - HTTP - HTTP"},{"label":"Java - OkHttp","value":"java - OkHttp - Java"},{"label":"Java - Unirest","value":"java - Unirest - Java"},{"label":"JavaScript - Fetch","value":"javascript - Fetch - JavaScript"},{"label":"JavaScript - jQuery","value":"javascript - jQuery - JavaScript"},{"label":"JavaScript - XHR","value":"javascript - XHR - JavaScript"},{"label":"C - libcurl","value":"c - libcurl - C"},{"label":"NodeJs - Axios","value":"nodejs - Axios - NodeJs"},{"label":"NodeJs - Native","value":"nodejs - Native - NodeJs"},{"label":"NodeJs - Request","value":"nodejs - Request - NodeJs"},{"label":"NodeJs - Unirest","value":"nodejs - Unirest - NodeJs"},{"label":"Objective-C - NSURLSession","value":"objective-c - NSURLSession - Objective-C"},{"label":"OCaml - Cohttp","value":"ocaml - Cohttp - OCaml"},{"label":"PHP - cURL","value":"php - cURL - PHP"},{"label":"PHP - Guzzle","value":"php - Guzzle - PHP"},{"label":"PHP - HTTP_Request2","value":"php - HTTP_Request2 - PHP"},{"label":"PHP - pecl_http","value":"php - pecl_http - PHP"},{"label":"PowerShell - RestMethod","value":"powershell - RestMethod - PowerShell"},{"label":"Python - http.client","value":"python - http.client - Python"},{"label":"Python - Requests","value":"python - Requests - Python"},{"label":"R - httr","value":"r - httr - R"},{"label":"R - RCurl","value":"r - RCurl - R"},{"label":"Ruby - Net::HTTP","value":"ruby - Net::HTTP - Ruby"},{"label":"Shell - Httpie","value":"shell - Httpie - Shell"},{"label":"Shell - wget","value":"shell - wget - Shell"},{"label":"Swift - URLSession","value":"swift - URLSession - Swift"}],"layoutOptions":[{"value":"classic-single-column","label":"Single Column"},{"value":"classic-double-column","label":"Double Column"}],"versionOptions":[],"environmentOptions":[{"value":"0","label":"No Environment"},{"label":"Documentation","value":"17342763-0a067647-5ade-448f-88fc-9b86c05b9c62"}],"canonicalUrl":"https://documenter.gw.postman.com/view/metadata/2sA3JM61oW"}