For a more in depth and other programming language samples, download the Sample Client Install

C# Copy imageCopy
using FaxWSConsoleApplication.FaxWSReference;
using System;
using System.Net;

namespace FaxWSConsoleApplication
{
    public static class GetFaxBroadcastStatusClass
    {
        const string oauthUrl = "https://login.concord.net/v1/connect/token";
        const string faxWSUrl = "https://ws.concordfax.com/fax/v5";

        public static void GetFaxBroadcastStatus()
        {
            string username = "mbxXXXXXXXX"; // Fax Broadcast Account Id
            string password = "XXXX";
            WSError wsError = null;

            ///////////////////////////////////////////////////////////
            ///OAuth 2.0 Authentication Start, 
            ///Comment this block out if you are using username and password authentication
            // Get an access token from Concord Identity Server
            string grantType = "password";
            string scope = "FaxWS";
            string faxWSClientId = "A9F528F9-0000-4B70-0000-078C23030424-ConcordApiFaxWS";
            string faxWSClientSecret = "";

            AccessTokenRequest accessTokenRequest = null;
            AccessTokenResponse accessTokenResponse = null;
            TokenManager tokenManager = new TokenManager(oauthUrl);

            accessTokenRequest = new AccessTokenRequest(
                clientId: faxWSClientId,
                clientSecret: faxWSClientSecret,
                username: username,
                password: password,
                grantType: grantType,
                scope: scope,
                redirectUri: null,
                code: null,
                refreshToken: null,
                state: null);

            ///OAuth 2.0 Authentication End
            ///////////////////////////////////////////////////////////

            using(FaxWSAuthWrapper ws = new FaxWSAuthWrapper())
            {
                ws.Url = faxWSUrl;

                FaxBroadcastStatusRequest request = new FaxBroadcastStatusRequest();
                request.JobId = "brxxxxxxx";
                request.StartRecipientId = -1; // Return all recipients
                request.EndRecipientId = -1;
                request.RecipientStatus = -1;

                RecipientStatus[] RecipientStatusList = null;

                try
                {
                    // Get an access token from Cache OR request one from the Identity Server
                    accessTokenResponse = tokenManager.GetAccessToken(accessTokenRequest);

                    if(accessTokenResponse == null)
                    {
                        Console.WriteLine("Failed to get an AccessToken, returned null");

                        return;
                    }

                    // Check to see if we failed to get an Access token via a Refresh token that has expired or been revoked, if so we need to re-authenticate
                    if(accessTokenResponse.HttpStatusCode == HttpStatusCode.BadRequest && accessTokenResponse.Error == "invalid_grant")
                    {
                        Console.WriteLine("Refresh token expired, attempting to get a new Access Token");
                        accessTokenResponse = tokenManager.GetAccessToken(accessTokenRequest, ignoreCache: true);
                    }

                    if(accessTokenResponse.HttpStatusCode != HttpStatusCode.OK)
                    {
                        Console.WriteLine("AccessToken not valid, Error Code: {0}, Error Description: {1}", accessTokenResponse.Error, accessTokenResponse.ErrorDescription);

                        return;
                    }

                    // User Name and Password authentication
                    //if (ws.GetFaxBroadcastStatus(username, password, request, out RecipientStatusList, out wsError))

                    // OAuth 2.0 Authentication requires that you pass in an access token as part of the Authorization: header 
                    // (No Password required)

                    ws.AccessToken = accessTokenResponse.AccessToken;

                    if(!ws.GetFaxBroadcastStatus(UserID: username, strPIN: "", request: request, RecipientStatusList: out RecipientStatusList, WSError: out wsError))
                    {
                        Console.WriteLine("GetFaxBroadcastStatus Failed");

                        Console.WriteLine("Error Code: {0} Error Description: {1}", wsError.ErrorCode, wsError.ErrorString);

                        // Check to see if response indicates access token has expired, if so attempt to Refresh or Get New OAuth access token and try method call again
                        if(wsError.ErrorCode == -5059)
                        {
                            Console.WriteLine("AccessToken is not valid");

                            // Attempt to get a new access token or use a refresh token, if we fail we should stop
                            accessTokenResponse = tokenManager.GetAccessToken(accessTokenRequest);

                            if(accessTokenResponse == null)
                            {
                                Console.WriteLine("Failed to get an AccessToken, returned null");

                                return;
                            }

                            if(accessTokenResponse.HttpStatusCode != HttpStatusCode.OK)
                            {
                                Console.WriteLine("AccessToken not valid, Error Code: {0}, Error Description: {1}", accessTokenResponse.Error, accessTokenResponse.ErrorDescription);

                                return;
                            }
                        }

                        return;

                    }

                    Console.WriteLine("GetFaxBroadcastStatus succeeded");

                    Console.WriteLine("Looping over recipient status list");

                    foreach(RecipientStatus recipientStatus in RecipientStatusList)
                    {
                        Console.WriteLine("Recipient Information");
                        Console.WriteLine("Delivery Attempts: " + recipientStatus.DeliveryAttempts);
                        Console.WriteLine("Delivery Duration: " + recipientStatus.DeliveryDuration);
                        Console.WriteLine("Delivery Speed: " + recipientStatus.DeliverySpeed);
                        Console.WriteLine("End Date: " + recipientStatus.EndDate);
                        Console.WriteLine("Fax Job Id: " + recipientStatus.FaxJobId);
                        Console.WriteLine("Fax Number: " + recipientStatus.FaxNumber);
                        Console.WriteLine("Page Count: " + recipientStatus.PageCount);
                        Console.WriteLine("Receive CSID: " + recipientStatus.ReceiveCSID);
                        Console.WriteLine("Recipient Company Name: " + recipientStatus.RecipientCompanyName);
                        Console.WriteLine("Recipient Id: " + recipientStatus.RecipientId);
                        Console.WriteLine("Recipient Name: " + recipientStatus.RecipientName);
                        Console.WriteLine("Recipient Status Description: " + recipientStatus.RecipientStatusDescription);
                        Console.WriteLine("Recipient Status Id: " + recipientStatus.RecipientStatusId);
                        Console.WriteLine("Start Date: " + recipientStatus.StartDate);

                    }


                }
                catch(Exception ex)
                {
                    Console.WriteLine("Error while calling GetFaxBroadcastStatus : " + ex.Message);
                }

            }
        }
    }
}
Visual Basic Copy imageCopy
Imports System.Net
Imports FaxWSVBConsoleApplication.FaxWSReference

Namespace FaxWSVBConsoleApplication
    Friend Class GetFaxBroadcastStatusClass
        Public Shared Sub GetFaxBroadcastStatus()
            Dim username As String = "mbxXXXXXXXX" ' Fax Broadcast Account Id
            Dim password As String = "XXXX"
            Dim wsError As WSError = Nothing

            ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
            '' OAuth 2.0 Authentication Start, 
            '' Comment this block out if you are using username and password authentication
            ' Get an access token from Concord Identity Server

            Dim oauthUrl As String = "https://login.concord.net/v1/connect/token"
            Dim grantType As String = "password"
            Dim scope As String = "FaxWS"
            Dim faxWSClientId As String = "A9F528F9-0000-4B70-0000-078C23030424-ConcordApiFaxWS"
            Dim faxWSClientSecret As String = ""
            Dim accessTokenRequest As AccessTokenRequest = Nothing
            Dim accessTokenResponse As AccessTokenResponse = Nothing
            Dim tokenManager As TokenManager = New TokenManager(oauthUrl)
            accessTokenRequest = New AccessTokenRequest(clientId:=faxWSClientId, clientSecret:=faxWSClientSecret, username:=username, password:=password, grantType:=grantType, scope:=scope, redirectUri:=Nothing, code:=Nothing, refreshToken:=Nothing, state:=Nothing)


            '' OAuth 2.0 Authentication End
            ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

            Using ws As FaxWSAuthWrapper = New FaxWSAuthWrapper()
                Dim request As FaxBroadcastStatusRequest = New FaxBroadcastStatusRequest()
                request.JobId = "brxxxxxxx"
                request.StartRecipientId = -1 ' Return all recipients
                request.EndRecipientId = -1
                request.RecipientStatus = -1
                Dim RecipientStatusList As RecipientStatus() = Nothing

                Try
                    ' Get an access token from Cache OR request one from the Identity Server
                    accessTokenResponse = tokenManager.GetAccessToken(accessTokenRequest)

                    If accessTokenResponse Is Nothing Then
                        Console.WriteLine("Failed to get an AccessToken, returned null")
                        Return
                    End If


                    ' Check to see if we failed to get an Access token via a Refresh token that has expired or been revoked, if so we need to re-authenticate
                    If accessTokenResponse.HttpStatusCode = HttpStatusCode.BadRequest AndAlso Equals(accessTokenResponse.Error, "invalid_grant") Then
                        Console.WriteLine("Refresh token expired, attempting to get a new Access Token")
                        accessTokenResponse = tokenManager.GetAccessToken(accessTokenRequest, ignoreCache:=True)
                    End If

                    If accessTokenResponse.HttpStatusCode <> HttpStatusCode.OK Then
                        Console.WriteLine("AccessToken not valid, Error Code: {0}, Error Description: {1}", accessTokenResponse.Error, accessTokenResponse.ErrorDescription)
                        Return
                    End If


                    ' User Name and Password authentication
                    'if (ws.GetFaxBroadcastStatus(username, password, request, out RecipientStatusList, out wsError))

                    ' OAuth 2.0 Authentication requires that you pass in an access token as part of the Authorization: header 
                    ' (No Password required)

                    ws.AccessToken = accessTokenResponse.AccessToken

                    If Not ws.GetFaxBroadcastStatus(UserID:=username, strPIN:="", request:=request, RecipientStatusList:=RecipientStatusList, WSError:=wsError) Then
                        Console.WriteLine("GetFaxBroadcastStatus Failed")
                        Console.WriteLine("Error Code: {0} Error Description: {1}", wsError.ErrorCode, wsError.ErrorString)


                        ' Check to see if response indicates access token has expired, if so attempt to Refresh or Get New OAuth access token and try method call again
                        If wsError.ErrorCode = -5059 Then
                            Console.WriteLine("AccessToken is not valid")

                            ' Attempt to get a new access token or use a refresh token, if we fail we should stop
                            accessTokenResponse = tokenManager.GetAccessToken(accessTokenRequest)

                            If accessTokenResponse Is Nothing Then
                                Console.WriteLine("Failed to get an AccessToken, returned null")
                                Return
                            End If

                            If accessTokenResponse.HttpStatusCode <> HttpStatusCode.OK Then
                                Console.WriteLine("AccessToken not valid, Error Code: {0}, Error Description: {1}", accessTokenResponse.Error, accessTokenResponse.ErrorDescription)
                                Return
                            End If
                        End If

                        Return
                    End If

                    Console.WriteLine("GetFaxBroadcastStatus succeeded")
                    Console.WriteLine("Looping over recipient status list")

                    For Each recipientStatus As RecipientStatus In RecipientStatusList
                        Console.WriteLine("Recipient Information")
                        Console.WriteLine("Delivery Attempts: " & recipientStatus.DeliveryAttempts)
                        Console.WriteLine("Delivery Duration: " & recipientStatus.DeliveryDuration)
                        Console.WriteLine("Delivery Speed: " & recipientStatus.DeliverySpeed)
                        Console.WriteLine("End Date: " & recipientStatus.EndDate)
                        Console.WriteLine("Fax Job Id: " & recipientStatus.FaxJobId)
                        Console.WriteLine("Fax Number: " & recipientStatus.FaxNumber)
                        Console.WriteLine("Page Count: " & recipientStatus.PageCount)
                        Console.WriteLine("Receive CSID: " & recipientStatus.ReceiveCSID)
                        Console.WriteLine("Recipient Company Name: " & recipientStatus.RecipientCompanyName)
                        Console.WriteLine("Recipient Id: " & recipientStatus.RecipientId)
                        Console.WriteLine("Recipient Name: " & recipientStatus.RecipientName)
                        Console.WriteLine("Recipient Status Description: " & recipientStatus.RecipientStatusDescription)
                        Console.WriteLine("Recipient Status Id: " & recipientStatus.RecipientStatusId)
                        Console.WriteLine("Start Date: " & recipientStatus.StartDate)
                    Next

                Catch ex As Exception
                    Console.WriteLine("Error while calling GetFaxBroadcastStatus : " & ex.Message)
                    Return
                End Try
            End Using
        End Sub
    End Class
End Namespace

See Also