Link Search Menu Expand Document

C#

In this article we discuss some examples for API interaction. It should be noted that these are indeed examples and not production-grade code.

Add a service reference

Visual Studio can generate classes to interact with WCF services. Follow the following steps in Visual Studio to generate the code.

  1. Go to: Project -> Add Service Reference…
  2. Enter the following information:
    Address: https://api.cloudbilling.nl/V1_3_2.svc
    Namespace: CB
  3. Click OK

Example: upload a customer, get all customers and upload a purchase

The code sample below shows a complete C# console application that retrieves all customers. It expects the service reference as shown above.

using System.ServiceModel;
using System.ServiceModel.Channels;
using DemoClient.CB;

var client = new APIServiceEndpointClient();

// Add the API token to outbound message headers.
var token = "...";
client.Endpoint.EndpointBehaviors.Add(new CloudBillingTokenHeaderBehaviour(token));

// Upload a customer to CloudBilling.
var uploadCustomerResult = await client.UploadCustomersAsync([
    new()
    {
        CustomerCode = "100000",
        CustomerName = "Foo Bar ltd",
        ImportTagName = "Your Customer Name Here",
        TimezoneId = "W. Europe Standard Time",
        InvoicePeriodSize = 1,
        InvoicePeriodUOM = BillingEnumsUOM.Month,
        InvoicePeriodAlignToUOM = true,
    }
]);
if (uploadCustomerResult.ResultCode != ResultCodeEnum.Success)
    throw new Exception(uploadCustomerResult.ResultMessage);

Console.WriteLine($"Uploaded customer to CloudBilling");

// Get all customers.
var getCustomerResult = await client.CustomersGetAllAsync();
if (getCustomerResult.ResultCode != ResultCodeEnum.Success)
    throw new Exception(getCustomerResult.ResultMessage);

Console.WriteLine($"There are {getCustomerResult.Result.Length} customers in CloudBilling");

// Upload a purchase to CloudBilling.
var uploadPurchaseResult = await client.UploadPurchasesAsync([
    new()
    {
        PurchaseReference = "100000-0001",
        CustomerCode = "100000",
        ProductLabel = "Your Product Name Here",
        Quantity = 1,
        PurchaseDate = DateTime.Now.ToString("O"),
    }
]);
if (uploadPurchaseResult.ResultCode != ResultCodeEnum.Success)
    throw new Exception(uploadPurchaseResult.ResultMessage);

Console.WriteLine($"Uploaded purchase to CloudBilling");

public class CloudBillingTokenHeaderBehaviour(string token) : IEndpointBehavior, IClientMessageInspector
{
    #region IEndpointBehavior

    public void AddBindingParameters(ServiceEndpoint endpoint, BindingParameterCollection bindingParameters)
    {
    }

    public void ApplyClientBehavior(ServiceEndpoint endpoint, ClientRuntime clientRuntime)
    {
        clientRuntime.ClientMessageInspectors.Add(this);
    }

    public void ApplyDispatchBehavior(ServiceEndpoint endpoint, EndpointDispatcher endpointDispatcher)
    {
        throw new NotImplementedException();
    }

    public void Validate(ServiceEndpoint endpoint)
    {
    }

    #endregion IEndpointBehavior

    #region IClientMessageInspector

    public void AfterReceiveReply(ref Message reply, object correlationState)
    {
    }

    public object? BeforeSendRequest(ref Message request, IClientChannel channel)
    {
        request.Headers.Add(MessageHeader.CreateHeader("ApiToken",
            "http://api.cloudbilling.nl/2018/11/auth/token", token));
        return null;
    }

    #endregion IClientMessageInspector
}

Back to top

Copyright Ⓒ 2011-2025 CloudBilling B.V.