FishbowlConnector.Net.Json
1.1.0
dotnet add package FishbowlConnector.Net.Json --version 1.1.0
NuGet\Install-Package FishbowlConnector.Net.Json -Version 1.1.0
<PackageReference Include="FishbowlConnector.Net.Json" Version="1.1.0" />
paket add FishbowlConnector.Net.Json --version 1.1.0
#r "nuget: FishbowlConnector.Net.Json, 1.1.0"
// Install FishbowlConnector.Net.Json as a Cake Addin #addin nuget:?package=FishbowlConnector.Net.Json&version=1.1.0 // Install FishbowlConnector.Net.Json as a Cake Tool #tool nuget:?package=FishbowlConnector.Net.Json&version=1.1.0
⚠️ This API is now classified as "legacy" and has been replaced by a REST API. As such, this library has been retired. ⚠️
Fishbowl API Connector
Source code for accessing the Fishbowl API. Fishbowl's own source code examples are outdated and mostly irrelevant.
This API is ugly. For importing sales orders, you have to include the order details as well as any items (including shipping as an item) in the same CSV but only specify columns for the order. Do not include column names for items. It's a bizarre combination of JSON and CSV. Be sure to include empty value placeholders (consecutive commas) for fields that are not being imported. All columns are required and must match CSV specifications.
Check https://www.fishbowlinventory.com/wiki/Fishbowl_API for full command documentation. I would also recommend downloading their Fishhook application for testing new commands.
Dependent on:
Example Usage
Execute Query and Return Results
string codes = "'CODE123','CODE2345'";
using (Fishbowl fishbowl = new Fishbowl("hostname.myfishbowl.com", 28192, "username", "password"))
{
fishbowl.Connect();
// No access to a db driver library so no parameterized queries allowed
// BE VERY CAREFUL WHAT YOU PASS HERE
DataTable product = fishbowl.ExecuteQuery(query: String.Format("SELECT p.id, p.num, p.price, p.partId, qi.qtyonhand, p.sku FROM product p JOIN qtyinventory qi ON p.partId = qi.partid WHERE p.sku IN ({0})", codes));
DataTable product = fishbowl.ExecuteQuery(name: "ListProducts"); // Use saved query by name
}
Import Order
List<string> order = new List<string>();
order.Add(@"""Flag"",""SONum"",""Status"",""CustomerName"",""CustomerContact"",""BillToName"",""BillToAddress"",""BillToCity"",""BillToState"",""BillToZip"",""BillToCountry"",""ShipToName"",""ShipToAddress"",""ShipToCity"",""ShipToState"",""ShipToZip"",""ShipToCountry"",""ShipToResidential"",""CarrierName"",""TaxRateName"",""PriorityId"",""PONum"",""VendorPONum"",""Date"",""Salesman"",""ShippingTerms"",""PaymentTerms"",""FOB"",""Note"",""QuickBooksClassName"",""LocationGroupName"",""FulfillmentDate"",""URL"",""CarrierService"",""DateExpired"",""Phone"",""Email""");
order.Add(@"""SO"",orderId,20...,,,");
// add items
order.Add(@"""Item"",10,""ProductSKU""...,,");
using (Fishbowl fishbowl = new Fishbowl("hostname.myfishbowl.com", 28192, "username", "password"))
{
fishbowl.Connect();
fish.Import("ImportSalesOrder", order);
}
Known Issues
- Not all commands are implemented. Pull requests welcome!
- It's slow. It has to
Thread.Sleep()
for a minimum of 1 second between sending the request and receiving a response or the response will always be empty. - You cannot use parameterized queries. So you have to control what gets sent or write your own SQL injection filter (or use one that someone else has already written).
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 is compatible. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETFramework 4.7.2
- LumenWorksCsvReader2 (>= 4.3.0)
- Newtonsoft.Json (>= 12.0.2)
-
.NETStandard 2.0
- LumenWorksCsvReader2 (>= 4.3.0)
- Microsoft.CSharp (>= 4.6.0)
- Newtonsoft.Json (>= 12.0.2)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Fixed issue with authentication since Fishbowl's system broke it, updated frameworks and dependency