/// <summary> /// View the details of all the outcomes associated with your app /// </summary> /// <param name="outcomeNames">List of names and the value (sum/count) for the returned outcome data. For out-of-the-box OneSignal outcomes such as click and session duration, please use the “os” prefix with two underscores. For other outcomes, please use the name specified by the user.</param> /// <param name="outcomeTimeRange">Time range for the returned data. The values can be 1h (for the last 1 hour data), 1d (for the last 1 day data), or 1mo (for the last 1 month data).</param> /// <param name="outcomePlatforms">Default is data from all platforms if the parameter is omitted.</param> /// <param name="outcomeAttribution">Attribution type for the outcomes. The values can be direct or influenced.</param> /// <param name="appId">Optional app id if you want an app id different than what is defined in OneSignalConfiguration</param> /// <returns>App outcomes</returns> public NotificationOutcomeResponse ViewOutcomes(List <string> outcomeNames, OutcomeTimeRange outcomeTimeRange = OutcomeTimeRange.OneHour, List <DeviceType> outcomePlatforms = null, OutcomeAttribution outcomeAttribution = OutcomeAttribution.Total, string appId = null) { var url = $"apps/{appId ?? OneSignalConfiguration.GetAppId()}/outcomes{BuildOutcomes(true, outcomeNames, outcomeTimeRange, outcomePlatforms, outcomeAttribution)}"; return(Get <NotificationOutcomeResponse>(url)); }
private static string BuildOutcomes(bool includeUrlStart, List <string> outcomeNames, OutcomeTimeRange outcomeTimeRange = OutcomeTimeRange.OneHour, List <DeviceType> outcomePlatforms = null, OutcomeAttribution outcomeAttribution = OutcomeAttribution.Total) { var url = string.Empty; var urlStart = includeUrlStart ? "?" : ""; var rawOutcomeNames = string.Join("&outcome_names[]=", outcomeNames); var outcomeNamesFormatted = includeUrlStart ? rawOutcomeNames : rawOutcomeNames.Trim('&'); url += $"{urlStart}{outcomeNamesFormatted}"; url += $"&outcome_time_range={outcomeTimeRange.ToEnumMemberAttrValue()}"; if (outcomePlatforms != null && outcomePlatforms.Any()) { url += $"&outcome_platforms={string.Join(",", outcomePlatforms)}"; } url += $"&outcome_attribution={outcomeAttribution.ToString().ToLower()}"; return(url); }
/// <summary> /// View the details of a single notification and outcomes associated with it /// </summary> /// <param name="notificationId">The id of the notification</param> /// <param name="outcomeNames">List of names and the value (sum/count) for the returned outcome data. For out-of-the-box OneSignal outcomes such as click and session duration, please use the “os” prefix with two underscores. For other outcomes, please use the name specified by the user.</param> /// <param name="outcomeTimeRange">Time range for the returned data. The values can be 1h (for the last 1 hour data), 1d (for the last 1 day data), or 1mo (for the last 1 month data).</param> /// <param name="outcomePlatforms">Default is data from all platforms if the parameter is omitted.</param> /// <param name="outcomeAttribution">Attribution type for the outcomes. The values can be direct or influenced.</param> /// <param name="appId">Optional app id if you want an app id different than what is defined in OneSignalConfiguration</param> /// <returns>Notification details</returns> public NotificationResponse ViewNotification(string notificationId, List <string> outcomeNames = null, OutcomeTimeRange outcomeTimeRange = OutcomeTimeRange.OneHour, List <DeviceType> outcomePlatforms = null, OutcomeAttribution outcomeAttribution = OutcomeAttribution.Total, string appId = null) { var url = $"notifications/{notificationId}?app_id={appId ?? OneSignalConfiguration.GetAppId()}"; if (outcomeNames != null && outcomeNames.Any()) { url += BuildOutcomes(false, outcomeNames, outcomeTimeRange, outcomePlatforms, outcomeAttribution); } return(Get <NotificationResponse>(url)); }