Billbee.Api.Client 1.0.1

There is a newer version of this package available.
See the version list below for details.
dotnet add package Billbee.Api.Client --version 1.0.1                
NuGet\Install-Package Billbee.Api.Client -Version 1.0.1                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Billbee.Api.Client" Version="1.0.1" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Billbee.Api.Client --version 1.0.1                
#r "nuget: Billbee.Api.Client, 1.0.1"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Billbee.Api.Client as a Cake Addin
#addin nuget:?package=Billbee.Api.Client&version=1.0.1

// Install Billbee.Api.Client as a Cake Tool
#tool nuget:?package=Billbee.Api.Client&version=1.0.1                

Logo

Billbee API

With this package you can implement the official Billbee API in your C# application.

Prerequisites

Install

Just install this package und follow the demo instructions.

Official API Documentation

https://app.billbee.io/swagger/ui/index

Usage

Use the client api package by using the demo statements below. Ich you want further examples, use the demo project from our git repository.

Demo

Initialization

// Creating an individual logger, that implements ILogger
ILogger logger = new Logger();

// Creating new instance of ApiClient           
string configPath = "config.json";

ApiClient client = null;

// from naual given config        
client = new ApiClient(logger: logger);

 / Enter your api key here. If you don't have an api key. Please contact support@billbee.de with a description on what you would like to do, to get one.
client.Configuration.ApiKey = "";
// Enter the username of your main account here.
client.Configuration.Username = "";
// Enter the password of your api here.
client.Configuration.Password = "";

// Test the configuration
if (client.TestConfiguration())
{
    logger.LogMsg("Api test successful", LogSeverity.Info);
}
else
{
    logger.LogMsg("Api test failed. Please control your configuration", LogSeverity.Error);
    Console.WriteLine("Press any key to continue");
    Console.ReadKey();
    return 1;
}

Some Demo Calls

// Calls that can possibly harm your data should be commented out, while testing with a real account.
#region webhooks

// Getting all available webhook filters
var webhookFilters = client.Webhooks.GetFilters();

// Requesting webhooks
var webHooks = client.Webhooks.GetWebhooks();

// Requesting a specific webhook
if (webHooks.Count > 0)
{
    var webhook = client.Webhooks.GetWebhook(webHooks.FirstOrDefault().Id);
}

#endregion

#region custom fields
// Requesting Custom Product fields
var customFields = client.Products.GetCustomFields(1, 50);

if (customFields.Data.Count > 0)
{
    var firstCustomField = client.Products.GetCustomField(customFields.Data.First().Id.Value);
}

#endregion

#region products

var products = client.Products.GetProducts(1, 50);

var patchableFields = client.Products.GetPatchableProductFields();

// Doing some stock manipulations
Console.WriteLine(
    "Please enter one SKU of an article to update it's stock. Be aware, that these changes are permanent, so better use a demo article. Leave blank to skip.");
var sku = Console.ReadLine();
if (!string.IsNullOrWhiteSpace(sku))
{
    var updateStockCodeResult =
        client.Products.UpdateStockCode(
            new UpdateStockCode { Sku = sku, StockCode = "Testlager" });


    var updateStockResult = client.Products.UpdateStock(
        new UpdateStock
        {
            Sku = sku,
            NewQuantity = 15,
            Reason = "Change due to api tests."
        });


    var updateStockMultipleResult = client.Products.UpdateStockMultiple(
        new List<UpdateStock>
        {
            new UpdateStock {Sku = sku, NewQuantity = 15},
            new UpdateStock {Sku = "4712", NewQuantity = 23}
        });
}


#endregion

#region product images

if (products.Data.Count > 0)
{
    var articleId = products.Data.First().Id.Value;

    var articleImages = client.Products.GetArticleImages(articleId);

    var newArticleImage = client.Products.AddArticleImage(new ArticleImage { ArticleId = articleId, Id = 0, IsDefault = false, Url = "http://static.bbc.co.uk/history/img/ic/640/images/resources/histories/titanic.jpg" });

    client.Products.DeleteArticleImage(newArticleImage.Data.Id);
}
#endregion

#region customer
var customers = client.Customer.GetCustomerList(1, 50);

if (customers.Data.Count > 0)
{
    var customer = client.Customer.GetCustomer(customers.Data.First().Id.Value);

    customer.Data.Name = "Tobias Tester";

    var customerOrder = client.Customer.GetOrdersForCustomer(customer.Data.Id.Value, 1, 50);
    var customerAddresses = client.Customer.GetAddressesForCustomer(customer.Data.Id.Value, 1, 50);
}
#endregion

#region search
client.Search.SearchTerm(new Search { Term = "4711", Type = new List<string> { "order", "product", "customer" } });

#endregion

#region events
// Getting events for this account
var events = client.Events.GetEvents();

// Artificial brake to prevent throttling
Thread.Sleep(1000);

#endregion

#region shipping
// Getting my shipping providers
var shippingProvider = client.Shipment.GetShippingProvider();

// Artificial brake to prevent throttling
Thread.Sleep(1000);

#endregion

#region miscellaneous
// Requesting the urls of the terms and conditions for the usage of billbee.
var termsAndConditions = client.AutomaticProvision.TermsInfo();

#endregion 

#region orders

// Getting a list of all orders with order state 'confirmed'
var orders = client.Orders.GetOrderList(page: 1, pageSize: 20,
    orderStateId: new List<OrderStateEnum> { OrderStateEnum.Bestaetigt });

Console.WriteLine(
    "Please enter one order number for further test manipulations. Be aware, that these changes are permanent. Please use an demo order. Leave blank to skip.");
var orderId = Console.ReadLine();
int orderIdInt;
if (!string.IsNullOrWhiteSpace(orderId) && int.TryParse(orderId, out orderIdInt))
{
    // Remove all old tags and add the given ones.
    var updateTagsResult = client.Orders.UpdateTags(new List<string>() { "Test C", "Test D" }, orderIdInt);

    // Add new tags.
    var addTagsResult = client.Orders.AddTags(new List<string>() { "Test A", "Test B" }, orderIdInt);
    // client.Orders.AddShipment(new OrderShipment { Comment = "Test", OrderId = orderIdInt, ShippingId = shippingId, ShippingProviderId = providerId, ShippingProviderProductId = productId });

    // Getting documents
    var deliveryNoteResult = client.Orders.CreateDeliveryNote(orderIdInt, true);
    var invoiceResult = client.Orders.CreateInvoice(orderIdInt, true);
}

#endregion

Contributing

Feel free to fork the repository and create pull-requests

Product Compatible and additional computed target framework versions.
.NET Framework net461 is compatible.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
2.4.2 2,380 4/14/2023
2.4.1 2,497 10/13/2022
2.4.0 1,052 8/12/2022
2.3.0 451 7/25/2022
2.2.1 728 1/17/2022
2.1.0 319 12/13/2021
2.0.1 383 10/25/2021
2.0.0 533 11/2/2020
1.0.1.2 836 10/24/2018
1.0.1.1 729 10/23/2018
1.0.1 773 10/16/2018
1.0.0.1 1,021 1/10/2018