Skip to content

Commit e8f4afc

Browse files
authored
chore: Do not expose origin for entitlements rest api (#1143)
1 parent ee4fa16 commit e8f4afc

3 files changed

Lines changed: 4 additions & 222 deletions

File tree

modules/meteroid/src/api_rest/entitlements/mapping.rs

Lines changed: 1 addition & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
use common_domain::ids::EntitlementEntityId;
2-
use meteroid_store::domain::entitlements::{self as domain, ResolvedOrigin};
1+
use meteroid_store::domain::entitlements::{self as domain};
32

43
use super::model::*;
54

@@ -48,32 +47,6 @@ pub fn entitlement_to_rest(e: domain::Entitlement) -> Entitlement {
4847
}
4948
}
5049

51-
/// Convert a domain `ResolvedOrigin` to the REST `ResolvedOrigin` model.
52-
pub fn resolved_origin_to_rest(o: ResolvedOrigin) -> super::model::ResolvedOrigin {
53-
super::model::ResolvedOrigin {
54-
entity: entity_id_to_rest(o.entity),
55-
name: o.name,
56-
}
57-
}
58-
59-
/// Convert a domain `EntitlementEntityId` to the REST `EntitlementEntity` enum.
60-
pub fn entity_id_to_rest(entity: EntitlementEntityId) -> EntitlementEntity {
61-
match entity {
62-
EntitlementEntityId::Feature(id) => {
63-
EntitlementEntity::Feature(FeatureEntitlementEntity { id })
64-
}
65-
EntitlementEntityId::Plan(id) => EntitlementEntity::Plan(PlanEntitlementEntity { id }),
66-
EntitlementEntityId::PlanVersion(id) => {
67-
EntitlementEntity::PlanVersion(PlanVersionEntitlementEntity { id })
68-
}
69-
EntitlementEntityId::AddOn(id) => EntitlementEntity::AddOn(AddOnEntitlementEntity { id }),
70-
EntitlementEntityId::Subscription(id) => {
71-
EntitlementEntity::Subscription(SubscriptionEntitlementEntity { id })
72-
}
73-
EntitlementEntityId::Quote(id) => EntitlementEntity::Quote(QuoteEntitlementEntity { id }),
74-
}
75-
}
76-
7750
pub fn resolved_entitlement_to_rest(r: domain::ResolvedEntitlement) -> ResolvedEntitlement {
7851
use domain::ResolvedEntitlementValue as DomVal;
7952
let value = match r.value {
@@ -104,7 +77,6 @@ pub fn resolved_entitlement_to_rest(r: domain::ResolvedEntitlement) -> ResolvedE
10477
}),
10578
},
10679
value,
107-
origin: resolved_origin_to_rest(r.origin),
10880
}
10981
}
11082

@@ -145,6 +117,5 @@ pub fn effective_entitlement_to_rest(r: domain::EffectiveEntitlement) -> Effecti
145117
}),
146118
},
147119
value,
148-
origin: resolved_origin_to_rest(r.origin),
149120
}
150121
}

modules/meteroid/src/api_rest/entitlements/model.rs

Lines changed: 1 addition & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
use crate::api_rest::model::{PaginatedRequest, PaginationResponse};
22
use chrono::{DateTime, Utc};
3-
use common_domain::ids::{
4-
AddOnId, BillableMetricId, EntitlementId, FeatureId, PlanId, PlanVersionId, ProductId, QuoteId,
5-
SubscriptionId, string_serde,
6-
};
3+
use common_domain::ids::{BillableMetricId, EntitlementId, FeatureId, ProductId, string_serde};
74
use o2o::o2o;
85
use rust_decimal::Decimal;
96
use serde::{Deserialize, Serialize};
@@ -263,53 +260,6 @@ pub enum ResolvedEntitlementValue {
263260
Metered(MeteredResolvedEntitlementValue),
264261
}
265262

266-
#[derive(Serialize, Deserialize, Debug, Clone, ToSchema)]
267-
pub struct FeatureEntitlementEntity {
268-
#[serde(with = "common_domain::ids::string_serde")]
269-
pub id: FeatureId,
270-
}
271-
272-
#[derive(Serialize, Deserialize, Debug, Clone, ToSchema)]
273-
pub struct PlanEntitlementEntity {
274-
#[serde(with = "common_domain::ids::string_serde")]
275-
pub id: PlanId,
276-
}
277-
278-
#[derive(Serialize, Deserialize, Debug, Clone, ToSchema)]
279-
pub struct PlanVersionEntitlementEntity {
280-
#[serde(with = "common_domain::ids::string_serde")]
281-
pub id: PlanVersionId,
282-
}
283-
284-
#[derive(Serialize, Deserialize, Debug, Clone, ToSchema)]
285-
pub struct AddOnEntitlementEntity {
286-
#[serde(with = "common_domain::ids::string_serde")]
287-
pub id: AddOnId,
288-
}
289-
290-
#[derive(Serialize, Deserialize, Debug, Clone, ToSchema)]
291-
pub struct SubscriptionEntitlementEntity {
292-
#[serde(with = "common_domain::ids::string_serde")]
293-
pub id: SubscriptionId,
294-
}
295-
296-
#[derive(Serialize, Deserialize, Debug, Clone, ToSchema)]
297-
pub struct QuoteEntitlementEntity {
298-
#[serde(with = "common_domain::ids::string_serde")]
299-
pub id: QuoteId,
300-
}
301-
302-
#[derive(Serialize, Deserialize, Debug, Clone, ToSchema)]
303-
#[serde(tag = "type", rename_all = "SCREAMING_SNAKE_CASE")]
304-
pub enum EntitlementEntity {
305-
Feature(FeatureEntitlementEntity),
306-
Plan(PlanEntitlementEntity),
307-
PlanVersion(PlanVersionEntitlementEntity),
308-
AddOn(AddOnEntitlementEntity),
309-
Subscription(SubscriptionEntitlementEntity),
310-
Quote(QuoteEntitlementEntity),
311-
}
312-
313263
#[derive(Serialize, Debug, Clone, ToSchema)]
314264
pub struct Feature {
315265
#[serde(serialize_with = "string_serde::serialize")]
@@ -367,30 +317,18 @@ pub struct FeatureRef {
367317
pub struct EffectiveEntitlement {
368318
pub feature: FeatureRef,
369319
pub value: EffectiveEntitlementValue,
370-
/// Highest-priority entity that contributed to the final value, with its human-readable name.
371-
pub origin: ResolvedOrigin,
372320
}
373321

374322
#[derive(Serialize, Debug, Clone, ToSchema)]
375323
pub struct EffectiveEntitlementListResponse {
376324
pub data: Vec<EffectiveEntitlement>,
377325
}
378326

379-
/// Resolved entity that contributed the winning entitlement value, with a human-readable label.
380-
#[derive(Serialize, Debug, Clone, ToSchema)]
381-
pub struct ResolvedOrigin {
382-
pub entity: EntitlementEntity,
383-
#[serde(skip_serializing_if = "Option::is_none")]
384-
pub name: Option<String>,
385-
}
386-
387327
/// Merged entitlement value for a feature across the priority hierarchy, without usage data.
388328
#[derive(Serialize, Debug, Clone, ToSchema)]
389329
pub struct ResolvedEntitlement {
390330
pub feature: FeatureRef,
391331
pub value: ResolvedEntitlementValue,
392-
/// Highest-priority entity that contributed to the final value, with its human-readable name.
393-
pub origin: ResolvedOrigin,
394332
}
395333

396334
#[derive(Serialize, Debug, Clone, ToSchema)]

spec/api/v1/openapi.json

Lines changed: 2 additions & 129 deletions
Original file line numberDiff line numberDiff line change
@@ -5894,17 +5894,6 @@
58945894
}
58955895
}
58965896
},
5897-
"AddOnEntitlementEntity": {
5898-
"type": "object",
5899-
"required": [
5900-
"id"
5901-
],
5902-
"properties": {
5903-
"id": {
5904-
"$ref": "#/components/schemas/AddOnId"
5905-
}
5906-
}
5907-
},
59085897
"AddOnEvent": {
59095898
"allOf": [
59105899
{
@@ -8421,17 +8410,12 @@
84218410
"description": "Merged entitlement value for a feature for a specific customer, enriched with live usage data.",
84228411
"required": [
84238412
"feature",
8424-
"value",
8425-
"origin"
8413+
"value"
84268414
],
84278415
"properties": {
84288416
"feature": {
84298417
"$ref": "#/components/schemas/FeatureRef"
84308418
},
8431-
"origin": {
8432-
"$ref": "#/components/schemas/ResolvedOrigin",
8433-
"description": "Highest-priority entity that contributed to the final value, with its human-readable name."
8434-
},
84358419
"value": {
84368420
"$ref": "#/components/schemas/EffectiveEntitlementValue"
84378421
}
@@ -8498,39 +8482,6 @@
84988482
}
84998483
}
85008484
},
8501-
"EntitlementEntity": {
8502-
"oneOf": [
8503-
{
8504-
"$ref": "#/components/schemas/FeatureEntitlementEntity"
8505-
},
8506-
{
8507-
"$ref": "#/components/schemas/PlanEntitlementEntity"
8508-
},
8509-
{
8510-
"$ref": "#/components/schemas/PlanVersionEntitlementEntity"
8511-
},
8512-
{
8513-
"$ref": "#/components/schemas/AddOnEntitlementEntity"
8514-
},
8515-
{
8516-
"$ref": "#/components/schemas/SubscriptionEntitlementEntity"
8517-
},
8518-
{
8519-
"$ref": "#/components/schemas/QuoteEntitlementEntity"
8520-
}
8521-
],
8522-
"discriminator": {
8523-
"propertyName": "type",
8524-
"mapping": {
8525-
"ADD_ON": "#/components/schemas/AddOnEntitlementEntity",
8526-
"FEATURE": "#/components/schemas/FeatureEntitlementEntity",
8527-
"PLAN": "#/components/schemas/PlanEntitlementEntity",
8528-
"PLAN_VERSION": "#/components/schemas/PlanVersionEntitlementEntity",
8529-
"QUOTE": "#/components/schemas/QuoteEntitlementEntity",
8530-
"SUBSCRIPTION": "#/components/schemas/SubscriptionEntitlementEntity"
8531-
}
8532-
}
8533-
},
85348485
"EntitlementId": {
85358486
"type": "string",
85368487
"format": "MeteroidId",
@@ -8810,17 +8761,6 @@
88108761
}
88118762
}
88128763
},
8813-
"FeatureEntitlementEntity": {
8814-
"type": "object",
8815-
"required": [
8816-
"id"
8817-
],
8818-
"properties": {
8819-
"id": {
8820-
"$ref": "#/components/schemas/FeatureId"
8821-
}
8822-
}
8823-
},
88248764
"FeatureId": {
88258765
"type": "string",
88268766
"format": "MeteroidId",
@@ -10460,17 +10400,6 @@
1046010400
}
1046110401
}
1046210402
},
10463-
"PlanEntitlementEntity": {
10464-
"type": "object",
10465-
"required": [
10466-
"id"
10467-
],
10468-
"properties": {
10469-
"id": {
10470-
"$ref": "#/components/schemas/PlanId"
10471-
}
10472-
}
10473-
},
1047410403
"PlanEvent": {
1047510404
"allOf": [
1047610405
{
@@ -10614,17 +10543,6 @@
1061410543
}
1061510544
}
1061610545
},
10617-
"PlanVersionEntitlementEntity": {
10618-
"type": "object",
10619-
"required": [
10620-
"id"
10621-
],
10622-
"properties": {
10623-
"id": {
10624-
"$ref": "#/components/schemas/PlanVersionId"
10625-
}
10626-
}
10627-
},
1062810546
"PlanVersionId": {
1062910547
"type": "string",
1063010548
"format": "MeteroidId",
@@ -11069,17 +10987,6 @@
1106910987
}
1107010988
}
1107110989
},
11072-
"QuoteEntitlementEntity": {
11073-
"type": "object",
11074-
"required": [
11075-
"id"
11076-
],
11077-
"properties": {
11078-
"id": {
11079-
"$ref": "#/components/schemas/QuoteId"
11080-
}
11081-
}
11082-
},
1108310990
"QuoteEvent": {
1108410991
"allOf": [
1108510992
{
@@ -11306,17 +11213,12 @@
1130611213
"description": "Merged entitlement value for a feature across the priority hierarchy, without usage data.",
1130711214
"required": [
1130811215
"feature",
11309-
"value",
11310-
"origin"
11216+
"value"
1131111217
],
1131211218
"properties": {
1131311219
"feature": {
1131411220
"$ref": "#/components/schemas/FeatureRef"
1131511221
},
11316-
"origin": {
11317-
"$ref": "#/components/schemas/ResolvedOrigin",
11318-
"description": "Highest-priority entity that contributed to the final value, with its human-readable name."
11319-
},
1132011222
"value": {
1132111223
"$ref": "#/components/schemas/ResolvedEntitlementValue"
1132211224
}
@@ -11353,24 +11255,6 @@
1135311255
}
1135411256
}
1135511257
},
11356-
"ResolvedOrigin": {
11357-
"type": "object",
11358-
"description": "Resolved entity that contributed the winning entitlement value, with a human-readable label.",
11359-
"required": [
11360-
"entity"
11361-
],
11362-
"properties": {
11363-
"entity": {
11364-
"$ref": "#/components/schemas/EntitlementEntity"
11365-
},
11366-
"name": {
11367-
"type": [
11368-
"string",
11369-
"null"
11370-
]
11371-
}
11372-
}
11373-
},
1137411258
"RestErrorResponse": {
1137511259
"type": "object",
1137611260
"required": [
@@ -12205,17 +12089,6 @@
1220512089
}
1220612090
}
1220712091
},
12208-
"SubscriptionEntitlementEntity": {
12209-
"type": "object",
12210-
"required": [
12211-
"id"
12212-
],
12213-
"properties": {
12214-
"id": {
12215-
"$ref": "#/components/schemas/SubscriptionId"
12216-
}
12217-
}
12218-
},
1221912092
"SubscriptionEvent": {
1222012093
"allOf": [
1222112094
{

0 commit comments

Comments
 (0)