QBO Webhooks Listener

<back to all web services

QboWebhooksRequest

The following routes are available for this service:
POST/qbowebhook
import 'package:servicestack/servicestack.dart';

enum QBOEntityName
{
    Customer,
    Department,
    Vendor,
    Deposit,
    Invoice,
    Bill,
    Item,
    JournalCode,
    PurchaseOrder,
    JournalEntry,
    Estimate,
    RefundReceipt,
    Employee,
    SalesReceipt,
    TaxAgency,
    Term,
    TimeActivity,
    Account,
    Transfer,
    VendorCredit,
    CreditMemo,
    Purchase,
    Currency,
    Payment,
    PaymentMethod,
    BillPayment,
    Preferences,
    Budget,
    Class,
}

enum QBOOperation
{
    Update,
    Create,
    Merge,
    Delete,
    Emailed,
    Void,
}

class QBOEntity implements IConvertible
{
    // @DataMember(Name="name")
    QBOEntityName? name;

    // @DataMember(Name="id")
    String? id;

    // @DataMember(Name="operation")
    QBOOperation? operation;

    // @DataMember(Name="lastUpdated")
    DateTime? lastUpdated;

    // @DataMember(Name="deletedId")
    String? deletedId;

    QBOEntity({this.name,this.id,this.operation,this.lastUpdated,this.deletedId});
    QBOEntity.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        name = JsonConverters.fromJson(json['Name'],'QBOEntityName',context!);
        id = json['Id'];
        operation = JsonConverters.fromJson(json['Operation'],'QBOOperation',context!);
        lastUpdated = JsonConverters.fromJson(json['LastUpdated'],'DateTime',context!);
        deletedId = json['DeletedId'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'name': JsonConverters.toJson(name,'QBOEntityName',context!),
        'id': id,
        'operation': JsonConverters.toJson(operation,'QBOOperation',context!),
        'lastUpdated': JsonConverters.toJson(lastUpdated,'DateTime',context!),
        'deletedId': deletedId
    };

    getTypeName() => "QBOEntity";
    TypeContext? context = _ctx;
}

class QBODataChangeEvent implements IConvertible
{
    // @DataMember(Name="entities")
    List<QBOEntity>? entities;

    QBODataChangeEvent({this.entities});
    QBODataChangeEvent.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        entities = JsonConverters.fromJson(json['Entities'],'List<QBOEntity>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'entities': JsonConverters.toJson(entities,'List<QBOEntity>',context!)
    };

    getTypeName() => "QBODataChangeEvent";
    TypeContext? context = _ctx;
}

class QBOEventNotification implements IConvertible
{
    // @DataMember(Name="realmId")
    String? realmId;

    // @DataMember(Name="dataChangeEvent")
    QBODataChangeEvent? dataChangeEvent;

    QBOEventNotification({this.realmId,this.dataChangeEvent});
    QBOEventNotification.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        realmId = json['RealmId'];
        dataChangeEvent = JsonConverters.fromJson(json['DataChangeEvent'],'QBODataChangeEvent',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'realmId': realmId,
        'dataChangeEvent': JsonConverters.toJson(dataChangeEvent,'QBODataChangeEvent',context!)
    };

    getTypeName() => "QBOEventNotification";
    TypeContext? context = _ctx;
}

// @DataContract
class QboWebhooksRequest implements IConvertible
{
    // @DataMember(Name="eventNotifications")
    List<QBOEventNotification>? eventNotifications;

    QboWebhooksRequest({this.eventNotifications});
    QboWebhooksRequest.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        eventNotifications = JsonConverters.fromJson(json['EventNotifications'],'List<QBOEventNotification>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'eventNotifications': JsonConverters.toJson(eventNotifications,'List<QBOEventNotification>',context!)
    };

    getTypeName() => "QboWebhooksRequest";
    TypeContext? context = _ctx;
}

TypeContext _ctx = TypeContext(library: 'wh.entersecurity.com', types: <String, TypeInfo> {
    'QBOEntityName': TypeInfo(TypeOf.Enum, enumValues:QBOEntityName.values),
    'QBOOperation': TypeInfo(TypeOf.Enum, enumValues:QBOOperation.values),
    'QBOEntity': TypeInfo(TypeOf.Class, create:() => QBOEntity()),
    'QBODataChangeEvent': TypeInfo(TypeOf.Class, create:() => QBODataChangeEvent()),
    'List<QBOEntity>': TypeInfo(TypeOf.Class, create:() => <QBOEntity>[]),
    'QBOEventNotification': TypeInfo(TypeOf.Class, create:() => QBOEventNotification()),
    'QboWebhooksRequest': TypeInfo(TypeOf.Class, create:() => QboWebhooksRequest()),
    'List<QBOEventNotification>': TypeInfo(TypeOf.Class, create:() => <QBOEventNotification>[]),
});

Dart QboWebhooksRequest DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .json suffix or ?format=json

To embed the response in a jsonp callback, append ?callback=myCallback

HTTP + JSON

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

POST /qbowebhook HTTP/1.1 
Host: wh.entersecurity.com 
Accept: application/json
Content-Type: application/json
Content-Length: length

{"eventNotifications":[{"realmId":"String","dataChangeEvent":{"entities":[{"name":"Customer","id":"String","operation":"Update","lastUpdated":"\/Date(-62135596800000-0000)\/","deletedId":"String"}]}}]}
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: length

(string)