@@ -26,6 +26,8 @@ public interface IUserInviteClient
2626
2727 Task < RestApiResponse < UserInvite > > GetUserInviteAsync ( string accessToken , Guid userInviteID ) ;
2828
29+ Task < RestApiResponse < UserInvite > > GetUserInviteDetailsAsync ( string accessToken , Guid userInviteID ) ;
30+
2931 Task < RestApiResponse < UserInvite > > SendInviteAsync ( string userAccessToken , Guid merchantID ,
3032 string inviteeEmailAddress ,
3133 string inviteRegistrationUrl ,
@@ -39,6 +41,8 @@ Task<RestApiResponse<UserInvite>> SendInviteAsync(string userAccessToken, Guid m
3941 Task < RestApiResponse > ResendUserInviteAsync ( string accessToken , Guid userInviteID ) ;
4042
4143 Task < RestApiResponse > DeleteUserInviteAsync ( string accessToken , Guid inviteID ) ;
44+
45+ Task < RestApiResponse > AuthoriseUserInviteAsync ( string strongUserAccessToken , Guid inviteID ) ;
4246}
4347
4448public class UserInviteClient : IUserInviteClient
@@ -102,6 +106,25 @@ public Task<RestApiResponse<UserInvite>> GetUserInviteAsync(string accessToken,
102106 } ;
103107 }
104108
109+ /// <summary>
110+ /// Calls the MoneyMoov Merchant get user invite details endpoint to get a single user invite by ID.
111+ /// </summary>
112+ /// <param name="accessToken">A User scoped JWT access token.</param>
113+ /// <param name="userInviteID">The ID of the user invite to retrieve.</param>
114+ /// <returns>If successful, a user invite object.</returns>
115+ public Task < RestApiResponse < UserInvite > > GetUserInviteDetailsAsync ( string accessToken , Guid userInviteID )
116+ {
117+ var url = MoneyMoovUrlBuilder . UserInvitesApi . UserInviteDetailsUrl ( _apiClient . GetBaseUri ( ) . ToString ( ) , userInviteID ) ;
118+
119+ var prob = _apiClient . CheckAccessToken ( accessToken , nameof ( GetUserInviteDetailsAsync ) ) ;
120+
121+ return prob switch
122+ {
123+ var p when p . IsEmpty => _apiClient . GetAsync < UserInvite > ( url , accessToken ) ,
124+ _ => Task . FromResult ( new RestApiResponse < UserInvite > ( HttpStatusCode . PreconditionFailed , new Uri ( url ) , prob ) )
125+ } ;
126+ }
127+
105128 /// <summary>
106129 /// Calls the MoneyMoov account endpoint to create and send an email invite to register
107130 /// and join a merchant account.
@@ -192,4 +215,25 @@ public Task<RestApiResponse> DeleteUserInviteAsync(string accessToken, Guid invi
192215 _ => Task . FromResult ( new RestApiResponse ( HttpStatusCode . PreconditionFailed , new Uri ( url ) , prob ) )
193216 } ;
194217 }
218+
219+ /// <summary>
220+ /// Calls the MoneyMoov user invites endpoint to authorise a user invite.
221+ /// </summary>
222+ /// <param name="strongUserAccessToken">The strong user access token acquired to authorise the user invite. Strong
223+ /// tokens can only be acquired from a strong customer authentication flow, are short lived (typically 5 minute expiry)
224+ /// and are specific to the user invite.</param>
225+ /// <param name="inviteID">The ID of the user invite to authorise.</param>
226+ /// <returns>An API response indicating the result of the authorise attempt.</returns>
227+ public Task < RestApiResponse > AuthoriseUserInviteAsync ( string strongUserAccessToken , Guid inviteID )
228+ {
229+ var url = MoneyMoovUrlBuilder . UserInvitesApi . AuthoriseUserInviteUrl ( _apiClient . GetBaseUri ( ) . ToString ( ) , inviteID ) ;
230+
231+ var prob = _apiClient . CheckAccessToken ( strongUserAccessToken , nameof ( AuthoriseUserInviteAsync ) ) ;
232+
233+ return prob switch
234+ {
235+ var p when p . IsEmpty => _apiClient . PostAsync ( url , strongUserAccessToken ) ,
236+ _ => Task . FromResult ( new RestApiResponse ( HttpStatusCode . PreconditionFailed , new Uri ( url ) , prob ) )
237+ } ;
238+ }
195239}
0 commit comments