Skip to content

Commit 1da19a8

Browse files
committed
feat: Adds rate plan support to subscriptions
Enables specifying rate plans when creating subscriptions. This allows for more granular control over the data being pushed to external systems, filtering by specific rate plans per property. Adds RatePlanCodeMapping record to associate property IDs with rate plan codes.
1 parent 1eabdd0 commit 1da19a8

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

libs/HyperGuestSDK/Api/Pdm/Subscriptions/Subscription.cs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,7 @@ public enum SubscriptionStatus
132132
/// <param name="PropertyIds">The set of property IDs.</param>
133133
/// <param name="EnvelopeSubUrls">The set of envelop sub-urls (URLs that are called by the subscription).</param>
134134
/// <param name="Envelope">The envelope type (HyperGuest vs OTA)</param>
135+
/// <param name="RatePlans">The set of rate plans per property ID.</param>
135136
/// <param name="Emails">The set of emails used for notification of status changes.</param>
136137
/// <param name="Authentication">Any custom authentication values passed to the sub-urls.</param>
137138
/// <param name="Version">The version of static-data / ARI</param>
@@ -140,9 +141,8 @@ public record CreateSubscriptionRequest(
140141
[property: JsonPropertyName("method")] SubscriptionMethod Method,
141142
[property: JsonPropertyName("propertyIds")] int[] PropertyIds,
142143
[property: JsonPropertyName("envelopeSubUrls")] IDictionary<CallbackUrls, string> EnvelopeSubUrls,
143-
144-
145144
[property: JsonPropertyName("envelope")] SubscriptionEnvelope Envelope = SubscriptionEnvelope.HyperGuest,
145+
[property: JsonPropertyName("ratePlans")] RatePlanCodeMapping[]? RatePlans = null,
146146
[property: JsonPropertyName("email")] string[]? Emails = null,
147147
[property: JsonPropertyName("authentication")] IDictionary<string, string>? Authentication = null,
148148
[property: JsonPropertyName("version")] int Version = 1,
@@ -164,6 +164,7 @@ public record CreateHyperGuestSubscriptionRequest(
164164
int[] PropertyIds,
165165
string CallbackUrl,
166166

167+
RatePlanCodeMapping[]? RatePlans = null,
167168
string[]? Emails = null,
168169
IDictionary<string, string>? Authentication = null,
169170
int Version = 1,
@@ -173,6 +174,7 @@ public record CreateHyperGuestSubscriptionRequest(
173174
PropertyIds,
174175
new Dictionary<CallbackUrls, string> { { CallbackUrls.Callback, CallbackUrl } },
175176
SubscriptionEnvelope.HyperGuest,
177+
RatePlans,
176178
Emails,
177179
Authentication,
178180
Version,
@@ -195,6 +197,7 @@ public record CreateOTASubscriptionRequest(
195197
string? HotelNotificationUrl,
196198
string? HotelRateNotificationUrl,
197199

200+
RatePlanCodeMapping[]? RatePlans = null,
198201
string[]? Emails = null,
199202
IDictionary<string, string>? Authentication = null,
200203
int Version = 1,
@@ -204,6 +207,7 @@ public record CreateOTASubscriptionRequest(
204207
PropertyIds,
205208
MapUrls(HotelNotificationUrl, HotelRateNotificationUrl),
206209
SubscriptionEnvelope.HyperGuest,
210+
RatePlans,
207211
Emails,
208212
Authentication,
209213
Version,
@@ -239,4 +243,8 @@ public enum CallbackUrls
239243
OTA_HotelAvailNotifRS,
240244
OTA_HotelRateAmountNotifRS
241245
}
246+
247+
public record RatePlanCodeMapping(
248+
[property: JsonPropertyName("propertyId")] int PropertyId,
249+
[property: JsonPropertyName("ratePlanCodes")] string[] RatePlanCodes);
242250
#endregion

0 commit comments

Comments
 (0)