TNZAPI.NET 2.3.0.4

dotnet add package TNZAPI.NET --version 2.3.0.4
NuGet\Install-Package TNZAPI.NET -Version 2.3.0.4
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="TNZAPI.NET" Version="2.3.0.4" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add TNZAPI.NET --version 2.3.0.4
#r "nuget: TNZAPI.NET, 2.3.0.4"
#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 TNZAPI.NET as a Cake Addin
#addin nuget:?package=TNZAPI.NET&version=2.3.0.4

// Install TNZAPI.NET as a Cake Tool
#tool nuget:?package=TNZAPI.NET&version=2.3.0.4

TNZAPI.NET

Documentation

The documentation for the TNZ API can be found here.

Versions

TNZAPI.NET uses a modified version of Semantic Versioning for all changes. See this document for details.

Supported .NET Versions

This library supports the following .NET implementations:

  • .NET6
  • .NET7
  • .NET8

Getting Started

Getting started with the TNZ API couldn't be easier. Create a TNZApiClient and you're ready to go.

API Credentials

The TNZAPI.NET needs your TNZ API credentials (TNZ Auth Tokens). You can either pass these directly to the constructor (see the code below) or via environment variables.

var apiUser = new TNZApiUser()
{
    AuthToken = "[Your Auth Token]"
};

var client = new TNZApiClient(apiUser);

Messaging - Send SMS / Email / TTS / Voice / Fax

Send an SMS

var response = client.Messaging.SMS.SendMessage(
    destinations: new List<string>()
    {
        "+64211111111",                         // Recipient
        "+64222222222"                          // Recipient
    },
    messageText: "Test SMS",                    // SMS Message
    sendMode: Enums.SendModeType.Test           // TEST Mode - Remove this to send live traffic
    );

if (response.Result == Enums.ResultCode.Success)
{
    Console.WriteLine("Success - " + response.MessageID);
}
else
{
    Console.WriteLine("Error occurred while processing...");
    foreach (var error in response.ErrorMessage)
    {
        Console.WriteLine($"- {error}");
    }
}

Send an Email

var response = client.Messaging.Email.SendMessage(
    fromEmail: "from@test.com",             // Optional : Sets From Email Address - leave blank to use your api username as email sender
    emailSubject: "Test Email",             // Email Subject
    messagePlain: "Test Email Body",        // Email Body
    destination: "email.one@test.com",      // Recipient 1
    sendMode: Enums.SendModeType.Test       // TEST Mode - Remove this to send live traffic
);

if (response.Result == Enums.ResultCode.Success)
{
    Console.WriteLine("Success - " + response.MessageID);
}
else
{
    Console.WriteLine("Error - " + response.ErrorMessage);
}

Make a Call - Text-to-Speech (TTS)

var response = client.Messaging.TTS.SendMessage(
    messageToPeople: "Hello, this is a call from test. This is relevant information.", // Message to people
    destinations: new List<string>
    {
        "+64211111111",                     // Recipient
        "+64222222222",                     // Recipient
    },
    ttsVoiceType: TTSVoiceType.EnglishNZFemale1, // TTS Engine
    sendMode: Enums.SendModeType.Test       // TEST Mode - Remove this to send live traffic
);

if (response.Result == Enums.ResultCode.Success)
{
    Console.WriteLine("Success - " + response.MessageID);
}
else
{
    Console.WriteLine("Error occurred while processing...");
    foreach (var error in response.ErrorMessage)
    {
        Console.WriteLine($"- {error}");
    }
}

Make a Call - Upload MP3 / Wav File

var response = client.Messaging.Voice.SendMessage(
    destinations: new List<string>()
    {
        "+64211111111",                     // Recipient
        "+64222222222"                      // Recipient
    },
    messageToPeople: "D:\\File1.wav",       // WAV format, 16-bit, 8000hz
    sendMode: Enums.SendModeType.Test       // TEST Mode - Remove this to send live traffic
);

if (response.Result == Enums.ResultCode.Success)
{
    Console.WriteLine("Success - " + response.MessageID);
}
else
{
    Console.WriteLine("Error occurred while processing...");
    foreach (var error in response.ErrorMessage)
    {
        Console.WriteLine($"- {error}");
    }
}

Send a Fax Document

var client = new TNZApiClient(apiUser);

var response = client.Messaging.Fax.SendMessage(
    destinations: new List<string>()
    {
        "+6491111111",                      // Recipient 1
        "+6491111112"                       // Recipient 2
    },
    file: "D:\\File1.pdf",                  // Attach File
    sendMode: Enums.SendModeType.Test       // TEST Mode - Remove this to send live traffic
);

if (response.Result == Enums.ResultCode.Success)
{
    Console.WriteLine("Success - " + response.MessageID);
}
else
{
    Console.WriteLine("Error occurred while processing...");
    foreach (var error in response.ErrorMessage)
    {
        Console.WriteLine($"- {error}");
    }
}

Reporting

Message Status

var response = client.Reports.Status.Poll("ID123456");

if (response.Result == Enums.ResultCode.Success)
{
    Console.WriteLine($"Status of MessageID '{response.MessageID}':");
    Console.WriteLine($" => Status: '{response.Status}'");
    Console.WriteLine($" => JobNum: '{response.JobNum}'");
    Console.WriteLine($" => Account: '{response.Account}'");
    Console.WriteLine($" => SubAccount: '{response.SubAccount}'");
    Console.WriteLine($" => Department: '{response.Department}'");
    Console.WriteLine($" => Reference: '{response.Reference}'");
    Console.WriteLine($" => Created: '{response.Created}'");
    Console.WriteLine($" => CreatedUTC: '{response.CreatedUTC}'");
    Console.WriteLine($" => Delayed: '{response.Delayed}'");
    Console.WriteLine($" => DelayedUTC: '{response.DelayedUTC}'");
    Console.WriteLine($" => Count: {response.Count}");
    Console.WriteLine($" => Complete: {response.Complete}");
    Console.WriteLine($" => Success: {response.Success}");
    Console.WriteLine($" => Failed: {response.Failed}");
    Console.WriteLine($" => TotalRecords (Recipients): {response.TotalRecords}");
    Console.WriteLine($" => PageCount (Recipients): {response.PageCount}");
    Console.WriteLine($" => RecordsPerPage (Recipients): {response.RecordsPerPage}");
    Console.WriteLine($" => Page (Recipients): {response.Page}");

    foreach (var message in response.Recipients)
    {
        Console.WriteLine($"======================================");
        Console.WriteLine($" => Message Delivered");
        Console.WriteLine($"    -> Type: '{message.Type}'");
        Console.WriteLine($"    -> DestSeq: '{message.DestSeq}'");
        Console.WriteLine($"    -> Destination: '{message.Destination}'");
        Console.WriteLine($"    -> Status: '{message.Status}'");
        Console.WriteLine($"    -> Result: '{message.Result}'");
        Console.WriteLine($"    -> SentDate: '{message.SentDate}'");
        Console.WriteLine($"    -> Attention: '{message.Attention}'");
        Console.WriteLine($"    -> Company: '{message.Company}'");
        Console.WriteLine($"    -> Custom1: '{message.Custom1}'");
        Console.WriteLine($"    -> Custom2: '{message.Custom2}'");
        Console.WriteLine($"    -> Custom3: '{message.Custom3}'");
        Console.WriteLine($"    -> Custom4: '{message.Custom4}'");
        Console.WriteLine($"    -> Custom5: '{message.Custom5}'");
        Console.WriteLine($"    -> Custom6: '{message.Custom6}'");
        Console.WriteLine($"    -> Custom7: '{message.Custom7}'");
        Console.WriteLine($"    -> Custom8: '{message.Custom8}'");
        Console.WriteLine($"    -> Custom9: '{message.Custom9}'");
        Console.WriteLine($"    -> RemoteID: '{message.RemoteID}'");
        Console.WriteLine($"    -> Price: '{message.Price}'");
    }
}

SMS Received

var client = new TNZApiClient(apiUser);

var response = client.Reports.SMSReceived.List(
    timePeriod: 1440,       // No. of minutes
    recordsPerPage: 100,    // x numbers of records to return per request
    page: 1                 // current location
);

if (response.Result == Enums.ResultCode.Success)
{
    foreach (var received in response.Messages)
    {
        Console.WriteLine("======================================");
        Console.WriteLine(" => MessageReceived");
        Console.WriteLine("    -> Date: '" + received.Date.ToString("yyyy-MM-dd hh:mm:ss") + "'");
        Console.WriteLine("    -> From: '" + received.From + "'");
        Console.WriteLine("    -> MessageText: '" + received.MessageText.Replace("'", "\'") + "'");
    }

}

SMSReply

var response = client.Reports.SMSReply.Poll("ID123456");

if (response.Result == Enums.ResultCode.Success)
{
    Console.WriteLine($"SMSReply of MessageID '{response.MessageID}':");
    Console.WriteLine($" => Status: '{response.Status}'");
    Console.WriteLine($" => JobNum: '{response.JobNum}'");
    Console.WriteLine($" => Account: '{response.Account}'");
    Console.WriteLine($" => SubAccount: '{response.SubAccount}'");
    Console.WriteLine($" => Department: '{response.Department}'");
    Console.WriteLine($" => Reference: '{response.Reference}'");
    Console.WriteLine($" => Created: '{response.Created}'");
    Console.WriteLine($" => CreatedUTC: '{response.CreatedUTC}'");
    Console.WriteLine($" => Delayed: '{response.Delayed}'");
    Console.WriteLine($" => DelayedUTC: '{response.DelayedUTC}'");
    Console.WriteLine($" => Count: {response.Count}");
    Console.WriteLine($" => Complete: {response.Complete}");
    Console.WriteLine($" => Success: {response.Success}");
    Console.WriteLine($" => Failed: {response.Failed}");
    Console.WriteLine($" => TotalRecords (Recipients): {response.TotalRecords}");
    Console.WriteLine($" => PageCount (Recipients): {response.PageCount}");
    Console.WriteLine($" => RecordsPerPage (Recipients): {response.RecordsPerPage}");
    Console.WriteLine($" => Page (Recipients): {response.Page}");

    foreach (var message in response.Recipients)
    {
        Console.WriteLine($"======================================");
        Console.WriteLine($" => Message Delivered");
        Console.WriteLine($"    -> Type: '{message.Type}'");
        Console.WriteLine($"    -> DestSeq: '{message.DestSeq}'");
        Console.WriteLine($"    -> Destination: '{message.Destination}'");
        Console.WriteLine($"    -> MessageText: '{message.MessageText}'");
        Console.WriteLine($"    -> Status: '{message.Status}'");
        Console.WriteLine($"    -> Result: '{message.Result}'");
        Console.WriteLine($"    -> SentDate: '{message.SentDate}'");
        Console.WriteLine($"    -> Attention: '{message.Attention}'");
        Console.WriteLine($"    -> Company: '{message.Company}'");
        Console.WriteLine($"    -> Custom1: '{message.Custom1}'");
        Console.WriteLine($"    -> Custom2: '{message.Custom2}'");
        Console.WriteLine($"    -> Custom3: '{message.Custom3}'");
        Console.WriteLine($"    -> Custom4: '{message.Custom4}'");
        Console.WriteLine($"    -> Custom5: '{message.Custom5}'");
        Console.WriteLine($"    -> Custom6: '{message.Custom6}'");
        Console.WriteLine($"    -> Custom7: '{message.Custom7}'");
        Console.WriteLine($"    -> Custom8: '{message.Custom8}'");
        Console.WriteLine($"    -> Custom9: '{message.Custom9}'");
        Console.WriteLine($"    -> RemoteID: '{message.RemoteID}'");
        Console.WriteLine($"    -> Price: '{message.Price}'");

        foreach (var reply in message.SMSReplies)
        {
            Console.WriteLine($"======================================");
            Console.WriteLine($" => SMS Reply");
            Console.WriteLine($"    -> Date: '{reply.Date}'");
            Console.WriteLine($"    -> DateUTC: '{reply.DateUTC}'");
            Console.WriteLine($"    -> From: '{reply.From}'");
            Console.WriteLine($"    -> MessageText: '{reply.MessageText}'");
        }
    }
}

Actions - Resbumit / Reschedule / Abort / Pacing

Resubmit

var response = client.Actions.Resubmit.Submit("ID123456"); // Message ID

if (response.Result == Enums.ResultCode.Success)
{
    Console.WriteLine("Status of MessageID '" + response.MessageID + "':");
    Console.WriteLine(" => Status: '" + response.GetStatusString() + "'");
    Console.WriteLine(" => JobNum: '" + response.JobNum + "'");
    Console.WriteLine(" => Action: '" + response.Action + "'");
}

Reschedule

var response = client.Actions.Reschedule.Submit(
    messageID: "ID123456",                              // MessageID
    sendTime: DateTime.Parse("2023-12-31T12:00:00")     // Set send time
);

if (response.Result == Enums.ResultCode.Success)
{
    Console.WriteLine("Status of MessageID '" + response.MessageID + "':");
    Console.WriteLine(" => Status: '" + response.GetStatusString() + "'");
    Console.WriteLine(" => JobNum: '" + response.JobNum + "'");
    Console.WriteLine(" => Action: '" + response.Action + "'");
}

Abort Job

var response = client.Actions.Abort.Submit("ID123456"); // MessageID

if (response.Result == Enums.ResultCode.Success)
{
    Console.WriteLine("Status of MessageID '" + response.MessageID + "':");
    Console.WriteLine(" => Status: '" + response.GetStatusString() + "'");
    Console.WriteLine(" => JobNum: '" + response.JobNum + "'");
    Console.WriteLine(" => Action: '" + response.Action + "'");
}

Change pacing (TTS/Voice message only)

var response = client.Actions.Pacing.Submit(
    messageID: "ID123456",      // MessageID
    numberOfOperators: 1        // No. of operators
);

if (response.Result == Enums.ResultCode.Success)
{
    Console.WriteLine("Status of MessageID '" + response.MessageID + "':");
    Console.WriteLine(" => Status: '" + response.GetStatusString() + "'");
    Console.WriteLine(" => JobNum: '" + response.JobNum + "'");
    Console.WriteLine(" => Action: '" + response.Action + "'");
}

Addressbook - Contact

Create Contact

var requestResult = request.Addressbook.Contact.Create(
  new ContactBuilder()
    .SetAttention("API Test")
    .SetFirstName("API")
    .SetLastName("Test")
    .SetMobileNumber("+64211231234")
    .SetEmailAddress("test@example.com")
    .SetMainPhone("+6491112222")
    .Build()
);

Get Contact Detail

var response = client.Addressbook.Contact.ReadById(ContactID);

if (response.Result == ResultCode.Success)
{
    Console.WriteLine($"Contact details for ContactID={response.Contact.ID}");
    Console.WriteLine($"    -> Owner: '{response.Contact.Owner}'");
    Console.WriteLine($"    -> Created: '{response.Contact.Created}'");
    Console.WriteLine($"    -> Updated: '{response.Contact.Updated}'");
    Console.WriteLine($"    -> Attention: '{response.Contact.Attention}'");
    Console.WriteLine($"    -> Company: '{response.Contact.Company}'");
    Console.WriteLine($"    -> RecipDepartment: '{response.Contact.CompanyDepartment}'");
    Console.WriteLine($"    -> FirstName: '{response.Contact.FirstName}'");
    Console.WriteLine($"    -> LastName: '{response.Contact.LastName}'");
    Console.WriteLine($"    -> Position: '{response.Contact.Position}'");
    Console.WriteLine($"    -> StreetAddress: '{response.Contact.StreetAddress}'");
    Console.WriteLine($"    -> Suburb: '{response.Contact.Suburb}'");
    Console.WriteLine($"    -> City: '{response.Contact.City}'");
    Console.WriteLine($"    -> State: '{response.Contact.State}'");
    Console.WriteLine($"    -> Country: '{response.Contact.Country}'");
    Console.WriteLine($"    -> Postcode: '{response.Contact.Postcode}'");
    Console.WriteLine($"    -> MainPhone: '{response.Contact.MainPhone}'");
    Console.WriteLine($"    -> AltPhone1: '{response.Contact.AltPhone1}'");
    Console.WriteLine($"    -> AltPhone2: '{response.Contact.AltPhone2}'");
    Console.WriteLine($"    -> DirectPhone: '{response.Contact.DirectPhone}'");
    Console.WriteLine($"    -> MobilePhone: '{response.Contact.MobilePhone}'");
    Console.WriteLine($"    -> FaxNumber: '{response.Contact.FaxNumber}'");
    Console.WriteLine($"    -> EmailAddress: '{response.Contact.EmailAddress}'");
    Console.WriteLine($"    -> WebAddress: '{response.Contact.WebAddress}'");
    Console.WriteLine($"    -> Custom1: '{response.Contact.Custom1}'");
    Console.WriteLine($"    -> Custom2: '{response.Contact.Custom2}'");
    Console.WriteLine($"    -> Custom3: '{response.Contact.Custom3}'");
    Console.WriteLine($"    -> Custom4: '{response.Contact.Custom4}'");
    Console.WriteLine($"-------------------------");
}

Update Contact

var response = client.Addressbook.Contact.Update(contactModel);

if (response.Result == ResultCode.Success)
{
    Console.WriteLine($"Contact details for ContactID={response.Contact.ID}");
    Console.WriteLine($"    -> Owner: '{response.Contact.Owner}'");
    Console.WriteLine($"    -> Created: '{response.Contact.Created}'");
    Console.WriteLine($"    -> Updated: '{response.Contact.Updated}'");
    Console.WriteLine($"    -> Attention: '{response.Contact.Attention}'");
    Console.WriteLine($"    -> Company: '{response.Contact.Company}'");
    Console.WriteLine($"    -> RecipDepartment: '{response.Contact.CompanyDepartment}'");
    Console.WriteLine($"    -> FirstName: '{response.Contact.FirstName}'");
    Console.WriteLine($"    -> LastName: '{response.Contact.LastName}'");
    Console.WriteLine($"    -> Position: '{response.Contact.Position}'");
    Console.WriteLine($"    -> StreetAddress: '{response.Contact.StreetAddress}'");
    Console.WriteLine($"    -> Suburb: '{response.Contact.Suburb}'");
    Console.WriteLine($"    -> City: '{response.Contact.City}'");
    Console.WriteLine($"    -> State: '{response.Contact.State}'");
    Console.WriteLine($"    -> Country: '{response.Contact.Country}'");
    Console.WriteLine($"    -> Postcode: '{response.Contact.Postcode}'");
    Console.WriteLine($"    -> MainPhone: '{response.Contact.MainPhone}'");
    Console.WriteLine($"    -> AltPhone1: '{response.Contact.AltPhone1}'");
    Console.WriteLine($"    -> AltPhone2: '{response.Contact.AltPhone2}'");
    Console.WriteLine($"    -> DirectPhone: '{response.Contact.DirectPhone}'");
    Console.WriteLine($"    -> MobilePhone: '{response.Contact.MobilePhone}'");
    Console.WriteLine($"    -> FaxNumber: '{response.Contact.FaxNumber}'");
    Console.WriteLine($"    -> EmailAddress: '{response.Contact.EmailAddress}'");
    Console.WriteLine($"    -> WebAddress: '{response.Contact.WebAddress}'");
    Console.WriteLine($"    -> Custom1: '{response.Contact.Custom1}'");
    Console.WriteLine($"    -> Custom2: '{response.Contact.Custom2}'");
    Console.WriteLine($"    -> Custom3: '{response.Contact.Custom3}'");
    Console.WriteLine($"    -> Custom4: '{response.Contact.Custom4}'");
    Console.WriteLine($"-------------------------");
}

Delete Contact

var response = request.Addressbook.Contact.DeleteById(contactID);

if (response.Result == ResultCode.Success)
{
    Console.WriteLine($"Contact details for ContactID={response.Contact.ID}");
    Console.WriteLine($"    -> Owner: '{response.Contact.Owner}'");
    Console.WriteLine($"    -> Created: '{response.Contact.Created}'");
    Console.WriteLine($"    -> Updated: '{response.Contact.Updated}'");
    Console.WriteLine($"    -> Attention: '{response.Contact.Attention}'");
    Console.WriteLine($"    -> Company: '{response.Contact.Company}'");
    Console.WriteLine($"    -> RecipDepartment: '{response.Contact.CompanyDepartment}'");
    Console.WriteLine($"    -> FirstName: '{response.Contact.FirstName}'");
    Console.WriteLine($"    -> LastName: '{response.Contact.LastName}'");
    Console.WriteLine($"    -> Position: '{response.Contact.Position}'");
    Console.WriteLine($"    -> StreetAddress: '{response.Contact.StreetAddress}'");
    Console.WriteLine($"    -> Suburb: '{response.Contact.Suburb}'");
    Console.WriteLine($"    -> City: '{response.Contact.City}'");
    Console.WriteLine($"    -> State: '{response.Contact.State}'");
    Console.WriteLine($"    -> Country: '{response.Contact.Country}'");
    Console.WriteLine($"    -> Postcode: '{response.Contact.Postcode}'");
    Console.WriteLine($"    -> MainPhone: '{response.Contact.MainPhone}'");
    Console.WriteLine($"    -> AltPhone1: '{response.Contact.AltPhone1}'");
    Console.WriteLine($"    -> AltPhone2: '{response.Contact.AltPhone2}'");
    Console.WriteLine($"    -> DirectPhone: '{response.Contact.DirectPhone}'");
    Console.WriteLine($"    -> MobilePhone: '{response.Contact.MobilePhone}'");
    Console.WriteLine($"    -> FaxNumber: '{response.Contact.FaxNumber}'");
    Console.WriteLine($"    -> EmailAddress: '{response.Contact.EmailAddress}'");
    Console.WriteLine($"    -> WebAddress: '{response.Contact.WebAddress}'");
    Console.WriteLine($"    -> Custom1: '{response.Contact.Custom1}'");
    Console.WriteLine($"    -> Custom2: '{response.Contact.Custom2}'");
    Console.WriteLine($"    -> Custom3: '{response.Contact.Custom3}'");
    Console.WriteLine($"    -> Custom4: '{response.Contact.Custom4}'");
    Console.WriteLine($"-------------------------");
}

Addressbook - Group

Create Group

var response = client.Addressbook.Group.Create(
  new GroupModel()
  {
      GroupName = "API Test Group"
  }
);

if (response.Result == Enums.ResultCode.Success)
{
    Console.WriteLine($"Group details for GroupCode={response.Group.GroupCode}");
    Console.WriteLine($"    -> GroupCode: '{response.Group.GroupCode}'");
    Console.WriteLine($"    -> GroupName: '{response.Group.GroupName}'");
    Console.WriteLine($"    -> SubAccount: '{response.Group.SubAccount}'");
    Console.WriteLine($"    -> Department: '{response.Group.Department}'");
    Console.WriteLine($"    -> ViewEditBy: '{response.Group.ViewEditBy}'");
    Console.WriteLine($"    -> Owner: '{response.Group.Owner}'");
    Console.WriteLine($"-------------------------");

    return response.Group;
}

Get Group Detail

var response = client.Addressbook.Group.GetByGroupCode(groupCode);

if (response.Result == Enums.ResultCode.Success)
{
    Console.WriteLine($"Group details for GroupCode={response.Group.GroupCode}");
    Console.WriteLine($"    -> GroupName: '{response.Group.GroupName}'");
    Console.WriteLine($"    -> SubAccount: '{response.Group.SubAccount}'");
    Console.WriteLine($"    -> Department: '{response.Group.Department}'");
    Console.WriteLine($"    -> ViewEditBy: '{response.Group.ViewEditBy}'");
    Console.WriteLine($"    -> Owner: '{response.Group.Owner}'");
    Console.WriteLine($"-------------------------");

    return response.Group;
}

Update Group

var response = client.Addressbook.Group.Update(groupModel);

if (response.Result == Enums.ResultCode.Success)
{
    Console.WriteLine($"Group details for GroupCode={response.Group.GroupCode}");
    Console.WriteLine($"    -> GroupCode: '{response.Group.GroupCode}'");
    Console.WriteLine($"    -> GroupName: '{response.Group.GroupName}'");
    Console.WriteLine($"    -> SubAccount: '{response.Group.SubAccount}'");
    Console.WriteLine($"    -> Department: '{response.Group.Department}'");
    Console.WriteLine($"    -> ViewEditBy: '{response.Group.ViewEditBy}'");
    Console.WriteLine($"    -> Owner: '{response.Group.Owner}'");
    Console.WriteLine($"-------------------------");
}

Delete Group

var response = client.Addressbook.Group.Delete(groupModel);

if (response.Result == Enums.ResultCode.Success)
{
    Console.WriteLine($"Group details for GroupCode={response.Group.GroupCode}");
    Console.WriteLine($"    -> GroupCode: '{response.Group.GroupCode}'");
    Console.WriteLine($"    -> GroupName: '{response.Group.GroupName}'");
    Console.WriteLine($"    -> SubAccount: '{response.Group.SubAccount}'");
    Console.WriteLine($"    -> Department: '{response.Group.Department}'");
    Console.WriteLine($"    -> ViewEditBy: '{response.Group.ViewEditBy}'");
    Console.WriteLine($"    -> Owner: '{response.Group.Owner}'");
    Console.WriteLine($"-------------------------");
}

Addressbook - Contact/Group Relationships

List ContactGroup

var response = client.Addressbook.ContactGroupList.List(
    contactModel,           // ContactModel
    recordsPerPage: 10,     // Record per page
    page: 1                 // Page number
);

if (response.Result == Enums.ResultCode.Success)
{
    Console.WriteLine($"Contact list details");
    Console.WriteLine($"    -> Contact ID: {response.Contact.ID}");
    Console.WriteLine($"    -> Total Records: {response.TotalRecords}");
    Console.WriteLine($"    -> Records Per Page: {response.RecordsPerPage}");
    Console.WriteLine($"    -> Page Count: {response.PageCount}");
    Console.WriteLine($"    -> Page: {response.Page}");

    if (response.Groups is not null)
    {
        foreach (var group in response.Groups)
        {
            Console.WriteLine($"Group details for GroupCode={group.GroupCode}");
            Console.WriteLine($"    -> GroupCode: '{group.GroupCode}'");
            Console.WriteLine($"    -> GroupName: '{group.GroupName}'");
            Console.WriteLine($"    -> SubAccount: '{group.SubAccount}'");
            Console.WriteLine($"    -> Department: '{group.Department}'");
            Console.WriteLine($"    -> ViewEditBy: '{group.ViewEditBy}'");
            Console.WriteLine($"    -> Owner: '{group.Owner}'");
            Console.WriteLine($"-------------------------");
        }
    }
}

Add ContactGroup

var response = request.Addressbook.ContactGroup.Add(contactModel, groupModel);

if (response.Result == Enums.ResultCode.Success)
{
    Console.WriteLine($"Contact details for ContactID={response.Contact.ID}");
    Console.WriteLine($"    -> Owner: '{response.Contact.Owner}'");
    Console.WriteLine($"    -> Created: '{response.Contact.Created}'");
    Console.WriteLine($"    -> Updated: '{response.Contact.Updated}'");
    Console.WriteLine($"    -> Attention: '{response.Contact.Attention}'");
    Console.WriteLine($"    -> Company: '{response.Contact.Company}'");
    Console.WriteLine($"    -> RecipDepartment: '{response.Contact.CompanyDepartment}'");
    Console.WriteLine($"    -> FirstName: '{response.Contact.FirstName}'");
    Console.WriteLine($"    -> LastName: '{response.Contact.LastName}'");
    Console.WriteLine($"    -> Position: '{response.Contact.Position}'");
    Console.WriteLine($"    -> StreetAddress: '{response.Contact.StreetAddress}'");
    Console.WriteLine($"    -> Suburb: '{response.Contact.Suburb}'");
    Console.WriteLine($"    -> City: '{response.Contact.City}'");
    Console.WriteLine($"    -> State: '{response.Contact.State}'");
    Console.WriteLine($"    -> Country: '{response.Contact.Country}'");
    Console.WriteLine($"    -> Postcode: '{response.Contact.Postcode}'");
    Console.WriteLine($"    -> MainPhone: '{response.Contact.MainPhone}'");
    Console.WriteLine($"    -> AltPhone1: '{response.Contact.AltPhone1}'");
    Console.WriteLine($"    -> AltPhone2: '{response.Contact.AltPhone2}'");
    Console.WriteLine($"    -> DirectPhone: '{response.Contact.DirectPhone}'");
    Console.WriteLine($"    -> MobilePhone: '{response.Contact.MobilePhone}'");
    Console.WriteLine($"    -> FaxNumber: '{response.Contact.FaxNumber}'");
    Console.WriteLine($"    -> EmailAddress: '{response.Contact.EmailAddress}'");
    Console.WriteLine($"    -> WebAddress: '{response.Contact.WebAddress}'");
    Console.WriteLine($"    -> Custom1: '{response.Contact.Custom1}'");
    Console.WriteLine($"    -> Custom2: '{response.Contact.Custom2}'");
    Console.WriteLine($"    -> Custom3: '{response.Contact.Custom3}'");
    Console.WriteLine($"    -> Custom4: '{response.Contact.Custom4}'");
    Console.WriteLine($"-------------------------");

    if (response.Group is not null)
    {
        Console.WriteLine($"Group details for GroupCode={response.Group.GroupCode}");
        Console.WriteLine($"    -> GroupCode: '{response.Group.GroupCode}'");
        Console.WriteLine($"    -> GroupName: '{response.Group.GroupName}'");
        Console.WriteLine($"    -> SubAccount: '{response.Group.SubAccount}'");
        Console.WriteLine($"    -> Department: '{response.Group.Department}'");
        Console.WriteLine($"    -> ViewEditBy: '{response.Group.ViewEditBy}'");
        Console.WriteLine($"    -> Owner: '{response.Group.Owner}'");
        Console.WriteLine($"-------------------------");
    }

    return response;
}

Remove ContactGroup

var response = client.Addressbook.ContactGroup.Remove(contactModel, groupModel);

if (response.Result == Enums.ResultCode.Success)
{
    Console.WriteLine($"Contact details for ContactID={response.Contact.ID}");
    Console.WriteLine($"    -> Owner: '{response.Contact.Owner}'");
    Console.WriteLine($"    -> Created: '{response.Contact.Created}'");
    Console.WriteLine($"    -> Updated: '{response.Contact.Updated}'");
    Console.WriteLine($"    -> Attention: '{response.Contact.Attention}'");
    Console.WriteLine($"    -> Company: '{response.Contact.Company}'");
    Console.WriteLine($"    -> RecipDepartment: '{response.Contact.CompanyDepartment}'");
    Console.WriteLine($"    -> FirstName: '{response.Contact.FirstName}'");
    Console.WriteLine($"    -> LastName: '{response.Contact.LastName}'");
    Console.WriteLine($"    -> Position: '{response.Contact.Position}'");
    Console.WriteLine($"    -> StreetAddress: '{response.Contact.StreetAddress}'");
    Console.WriteLine($"    -> Suburb: '{response.Contact.Suburb}'");
    Console.WriteLine($"    -> City: '{response.Contact.City}'");
    Console.WriteLine($"    -> State: '{response.Contact.State}'");
    Console.WriteLine($"    -> Country: '{response.Contact.Country}'");
    Console.WriteLine($"    -> Postcode: '{response.Contact.Postcode}'");
    Console.WriteLine($"    -> MainPhone: '{response.Contact.MainPhone}'");
    Console.WriteLine($"    -> AltPhone1: '{response.Contact.AltPhone1}'");
    Console.WriteLine($"    -> AltPhone2: '{response.Contact.AltPhone2}'");
    Console.WriteLine($"    -> DirectPhone: '{response.Contact.DirectPhone}'");
    Console.WriteLine($"    -> MobilePhone: '{response.Contact.MobilePhone}'");
    Console.WriteLine($"    -> FaxNumber: '{response.Contact.FaxNumber}'");
    Console.WriteLine($"    -> EmailAddress: '{response.Contact.EmailAddress}'");
    Console.WriteLine($"    -> WebAddress: '{response.Contact.WebAddress}'");
    Console.WriteLine($"    -> Custom1: '{response.Contact.Custom1}'");
    Console.WriteLine($"    -> Custom2: '{response.Contact.Custom2}'");
    Console.WriteLine($"    -> Custom3: '{response.Contact.Custom3}'");
    Console.WriteLine($"    -> Custom4: '{response.Contact.Custom4}'");
    Console.WriteLine($"-------------------------");

    if (response.Group is not null)
    {
        Console.WriteLine($"Group details for GroupCode={response.Group.GroupCode}");
        Console.WriteLine($"    -> GroupCode: '{response.Group.GroupCode}'");
        Console.WriteLine($"    -> GroupName: '{response.Group.GroupName}'");
        Console.WriteLine($"    -> SubAccount: '{response.Group.SubAccount}'");
        Console.WriteLine($"    -> Department: '{response.Group.Department}'");
        Console.WriteLine($"    -> ViewEditBy: '{response.Group.ViewEditBy}'");
        Console.WriteLine($"    -> Owner: '{response.Group.Owner}'");
        Console.WriteLine($"-------------------------");
    }
}

List GroupContact

var response = client.Addressbook.GroupContactList.List(
    groupModel,             // GroupModel
    recordsPerPage: 10,     // Number of records for this request
    page: 1                 // Current location
);

if (response.Result == Enums.ResultCode.Success)
{
    Console.WriteLine($"Group Contact list details");
    Console.WriteLine($"    -> GroupCode: {response.Group.GroupCode}");
    Console.WriteLine($"    -> Total Records: {response.TotalRecords}");
    Console.WriteLine($"    -> Records Per Page: {response.RecordsPerPage}");
    Console.WriteLine($"    -> Page Count: {response.PageCount}");
    Console.WriteLine($"    -> Page: {response.Page}");

    foreach (var contact in response.Contacts)
    {
        Console.WriteLine($"Contact details for ContactID={contact.ID}");
        Console.WriteLine($"    -> Owner: '{contact.Owner}'");
        Console.WriteLine($"    -> Created: '{contact.Created}'");
        Console.WriteLine($"    -> Updated: '{contact.Updated}'");
        Console.WriteLine($"    -> Attention: '{contact.Attention}'");
        Console.WriteLine($"    -> Company: '{contact.Company}'");
        Console.WriteLine($"    -> RecipDepartment: '{contact.CompanyDepartment}'");
        Console.WriteLine($"    -> FirstName: '{contact.FirstName}'");
        Console.WriteLine($"    -> LastName: '{contact.LastName}'");
        Console.WriteLine($"    -> Position: '{contact.Position}'");
        Console.WriteLine($"    -> StreetAddress: '{contact.StreetAddress}'");
        Console.WriteLine($"    -> Suburb: '{contact.Suburb}'");
        Console.WriteLine($"    -> City: '{contact.City}'");
        Console.WriteLine($"    -> State: '{contact.State}'");
        Console.WriteLine($"    -> Country: '{contact.Country}'");
        Console.WriteLine($"    -> Postcode: '{contact.Postcode}'");
        Console.WriteLine($"    -> MainPhone: '{contact.MainPhone}'");
        Console.WriteLine($"    -> AltPhone1: '{contact.AltPhone1}'");
        Console.WriteLine($"    -> AltPhone2: '{contact.AltPhone2}'");
        Console.WriteLine($"    -> DirectPhone: '{contact.DirectPhone}'");
        Console.WriteLine($"    -> MobilePhone: '{contact.MobilePhone}'");
        Console.WriteLine($"    -> FaxNumber: '{contact.FaxNumber}'");
        Console.WriteLine($"    -> EmailAddress: '{contact.EmailAddress}'");
        Console.WriteLine($"    -> WebAddress: '{contact.WebAddress}'");
        Console.WriteLine($"    -> Custom1: '{contact.Custom1}'");
        Console.WriteLine($"    -> Custom2: '{contact.Custom2}'");
        Console.WriteLine($"    -> Custom3: '{contact.Custom3}'");
        Console.WriteLine($"    -> Custom4: '{contact.Custom4}'");
        Console.WriteLine($"-------------------------");
    }
}

Add GroupContact

var response = client.Addressbook.GroupContact.Add(groupModel, contactModel);

if (response.Result == Enums.ResultCode.Success)
{
    if (response.Group is not null)
    {
        Console.WriteLine($"Group details for GroupCode={response.Group.GroupCode}");
        Console.WriteLine($"    -> GroupCode: '{response.Group.GroupCode}'");
        Console.WriteLine($"    -> GroupName: '{response.Group.GroupName}'");
        Console.WriteLine($"    -> SubAccount: '{response.Group.SubAccount}'");
        Console.WriteLine($"    -> Department: '{response.Group.Department}'");
        Console.WriteLine($"    -> ViewEditBy: '{response.Group.ViewEditBy}'");
        Console.WriteLine($"    -> Owner: '{response.Group.Owner}'");
        Console.WriteLine($"-------------------------");
    }
    if (response.Contact is not null)
    {
        Console.WriteLine($"Contact details for ContactID={response.Contact.ID}");
        Console.WriteLine($"    -> Owner: '{response.Contact.Owner}'");
        Console.WriteLine($"    -> Created: '{response.Contact.Created}'");
        Console.WriteLine($"    -> Updated: '{response.Contact.Updated}'");
        Console.WriteLine($"    -> Attention: '{response.Contact.Attention}'");
        Console.WriteLine($"    -> Company: '{response.Contact.Company}'");
        Console.WriteLine($"    -> RecipDepartment: '{response.Contact.CompanyDepartment}'");
        Console.WriteLine($"    -> FirstName: '{response.Contact.FirstName}'");
        Console.WriteLine($"    -> LastName: '{response.Contact.LastName}'");
        Console.WriteLine($"    -> Position: '{response.Contact.Position}'");
        Console.WriteLine($"    -> StreetAddress: '{response.Contact.StreetAddress}'");
        Console.WriteLine($"    -> Suburb: '{response.Contact.Suburb}'");
        Console.WriteLine($"    -> City: '{response.Contact.City}'");
        Console.WriteLine($"    -> State: '{response.Contact.State}'");
        Console.WriteLine($"    -> Country: '{response.Contact.Country}'");
        Console.WriteLine($"    -> Postcode: '{response.Contact.Postcode}'");
        Console.WriteLine($"    -> MainPhone: '{response.Contact.MainPhone}'");
        Console.WriteLine($"    -> AltPhone1: '{response.Contact.AltPhone1}'");
        Console.WriteLine($"    -> AltPhone2: '{response.Contact.AltPhone2}'");
        Console.WriteLine($"    -> DirectPhone: '{response.Contact.DirectPhone}'");
        Console.WriteLine($"    -> MobilePhone: '{response.Contact.MobilePhone}'");
        Console.WriteLine($"    -> FaxNumber: '{response.Contact.FaxNumber}'");
        Console.WriteLine($"    -> EmailAddress: '{response.Contact.EmailAddress}'");
        Console.WriteLine($"    -> WebAddress: '{response.Contact.WebAddress}'");
        Console.WriteLine($"    -> Custom1: '{response.Contact.Custom1}'");
        Console.WriteLine($"    -> Custom2: '{response.Contact.Custom2}'");
        Console.WriteLine($"    -> Custom3: '{response.Contact.Custom3}'");
        Console.WriteLine($"    -> Custom4: '{response.Contact.Custom4}'");
        Console.WriteLine($"-------------------------");
    }
}

Remove GroupContact

var response = client.Addressbook.GroupContact.Remove(groupModel, contactModel);

if (response.Result == Enums.ResultCode.Success)
{
    if (response.Group is not null)
    {
        Console.WriteLine($"Group details for GroupCode={response.Group.GroupCode}");
        Console.WriteLine($"    -> GroupCode: '{response.Group.GroupCode}'");
        Console.WriteLine($"    -> GroupName: '{response.Group.GroupName}'");
        Console.WriteLine($"    -> SubAccount: '{response.Group.SubAccount}'");
        Console.WriteLine($"    -> Department: '{response.Group.Department}'");
        Console.WriteLine($"    -> ViewEditBy: '{response.Group.ViewEditBy}'");
        Console.WriteLine($"    -> Owner: '{response.Group.Owner}'");
        Console.WriteLine($"-------------------------");
    }
    if (response.Contact is not null)
    {
        Console.WriteLine($"Contact details for ContactID={response.Contact.ID}");
        Console.WriteLine($"    -> Owner: '{response.Contact.Owner}'");
        Console.WriteLine($"    -> Created: '{response.Contact.Created}'");
        Console.WriteLine($"    -> Updated: '{response.Contact.Updated}'");
        Console.WriteLine($"    -> Attention: '{response.Contact.Attention}'");
        Console.WriteLine($"    -> Company: '{response.Contact.Company}'");
        Console.WriteLine($"    -> RecipDepartment: '{response.Contact.CompanyDepartment}'");
        Console.WriteLine($"    -> FirstName: '{response.Contact.FirstName}'");
        Console.WriteLine($"    -> LastName: '{response.Contact.LastName}'");
        Console.WriteLine($"    -> Position: '{response.Contact.Position}'");
        Console.WriteLine($"    -> StreetAddress: '{response.Contact.StreetAddress}'");
        Console.WriteLine($"    -> Suburb: '{response.Contact.Suburb}'");
        Console.WriteLine($"    -> City: '{response.Contact.City}'");
        Console.WriteLine($"    -> State: '{response.Contact.State}'");
        Console.WriteLine($"    -> Country: '{response.Contact.Country}'");
        Console.WriteLine($"    -> Postcode: '{response.Contact.Postcode}'");
        Console.WriteLine($"    -> MainPhone: '{response.Contact.MainPhone}'");
        Console.WriteLine($"    -> AltPhone1: '{response.Contact.AltPhone1}'");
        Console.WriteLine($"    -> AltPhone2: '{response.Contact.AltPhone2}'");
        Console.WriteLine($"    -> DirectPhone: '{response.Contact.DirectPhone}'");
        Console.WriteLine($"    -> MobilePhone: '{response.Contact.MobilePhone}'");
        Console.WriteLine($"    -> FaxNumber: '{response.Contact.FaxNumber}'");
        Console.WriteLine($"    -> EmailAddress: '{response.Contact.EmailAddress}'");
        Console.WriteLine($"    -> WebAddress: '{response.Contact.WebAddress}'");
        Console.WriteLine($"    -> Custom1: '{response.Contact.Custom1}'");
        Console.WriteLine($"    -> Custom2: '{response.Contact.Custom2}'");
        Console.WriteLine($"    -> Custom3: '{response.Contact.Custom3}'");
        Console.WriteLine($"    -> Custom4: '{response.Contact.Custom4}'");
        Console.WriteLine($"-------------------------");
    }
}

Support

Getting help

If you need help installing or using the library, please check the TNZ Contact if you don't find an answer to your question.

Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  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 is compatible.  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 is compatible.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net6.0

    • No dependencies.
  • net7.0

    • No dependencies.
  • net8.0

    • No dependencies.

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.3.0.4 191 12/18/2023
2.3.0.3 121 12/7/2023
2.3.0.2 135 11/6/2023
2.3.0.1 172 8/30/2023
2.3.0 150 7/5/2023