Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions lago_python_client/customers/clients.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ def current_usage(
filter_by_charge_id: Optional[str] = None,
filter_by_charge_code: Optional[str] = None,
filter_by_group: Optional[dict] = None,
filter_by_presentation: Optional[Union[str, list[str]]] = None,
full_usage: Optional[bool] = None,
charge_id: Optional[str] = None,
charge_code: Optional[str] = None,
Expand Down Expand Up @@ -76,6 +77,12 @@ def current_usage(
if filter_by_group is not None:
warnings.warn("filter_by_group is deprecated, use group instead", DeprecationWarning, stacklevel=2)
query_params["filter_by_group"] = json.dumps(filter_by_group)
if filter_by_presentation is not None:
query_params["filter_by_presentation"] = (
filter_by_presentation
if isinstance(filter_by_presentation, str)
else json.dumps(filter_by_presentation)
)
if full_usage is not None:
query_params["full_usage"] = str(full_usage).lower()

Expand Down
6 changes: 6 additions & 0 deletions lago_python_client/models/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,12 @@
from .customer_usage import (
Metric as Metric,
)
from .customer_usage import (
PresentationBreakdown as PresentationBreakdown,
)
from .customer_usage import (
PresentationBreakdowns as PresentationBreakdowns,
)
from .event import BatchEvent as BatchEvent
from .event import Event as Event
from .fee import Fee as Fee
Expand Down
7 changes: 7 additions & 0 deletions lago_python_client/models/customer_projected_usage.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
from lago_python_client.base_model import BaseModel

from ..base_model import BaseResponseModel
from .customer_usage import PresentationBreakdowns


class Metric(BaseModel):
Expand All @@ -27,6 +28,8 @@ class ProjectedChargeFilterUsage(BaseModel):
projected_amount_cents: int
events_count: int
pricing_unit_details: Optional[PricingUnitDetails]
presentation_breakdowns: Optional[PresentationBreakdowns]
projected_presentation_breakdowns: Optional[PresentationBreakdowns]


class ChargeObject(BaseModel):
Expand All @@ -44,6 +47,8 @@ class ProjectedGroupedUsage(BaseModel):
grouped_by: Dict[str, Optional[str]]
filters: List[ProjectedChargeFilterUsage]
pricing_unit_details: Optional[PricingUnitDetails]
presentation_breakdowns: Optional[PresentationBreakdowns]
projected_presentation_breakdowns: Optional[PresentationBreakdowns]


class ProjectedChargeUsage(BaseModel):
Expand All @@ -58,6 +63,8 @@ class ProjectedChargeUsage(BaseModel):
filters: List[ProjectedChargeFilterUsage]
grouped_usage: Optional[List[ProjectedGroupedUsage]]
pricing_unit_details: Optional[PricingUnitDetails]
presentation_breakdowns: Optional[PresentationBreakdowns]
projected_presentation_breakdowns: Optional[PresentationBreakdowns]


class CustomerProjectedUsageResponse(BaseResponseModel):
Expand Down
12 changes: 12 additions & 0 deletions lago_python_client/models/customer_usage.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,15 @@ class PricingUnitDetails(BaseModel):
conversion_rate: float


class PresentationBreakdown(BaseModel):
presentation_by: Dict[str, str]
units: str


class PresentationBreakdowns(BaseModel):
__root__: List[PresentationBreakdown]


class ChargeFilterUsage(BaseModel):
invoice_display_name: Optional[str]
values: Optional[Dict[str, List[str]]]
Expand All @@ -26,6 +35,7 @@ class ChargeFilterUsage(BaseModel):
amount_cents: int
events_count: int
pricing_unit_details: Optional[PricingUnitDetails]
presentation_breakdowns: Optional[PresentationBreakdowns]


class ChargeObject(BaseModel):
Expand All @@ -42,6 +52,7 @@ class GroupedUsage(BaseModel):
grouped_by: Dict[str, Optional[str]]
filters: List[ChargeFilterUsage]
pricing_unit_details: Optional[PricingUnitDetails]
presentation_breakdowns: Optional[PresentationBreakdowns]


class ChargeUsage(BaseModel):
Expand All @@ -55,6 +66,7 @@ class ChargeUsage(BaseModel):
filters: List[ChargeFilterUsage]
grouped_usage: Optional[List[GroupedUsage]]
pricing_unit_details: Optional[PricingUnitDetails]
presentation_breakdowns: Optional[PresentationBreakdowns]


class CustomerUsageResponse(BaseResponseModel):
Expand Down
2 changes: 2 additions & 0 deletions lago_python_client/models/fee.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from typing import Any, Dict, List, Optional

from ..base_model import BaseModel, BaseResponseModel
from .customer_usage import PresentationBreakdowns
from .invoice_item import InvoiceItemResponse


Expand Down Expand Up @@ -75,6 +76,7 @@ class FeeResponse(BaseResponseModel):
to_date: Optional[str]
amount_details: Optional[Dict[str, Any]]
pricing_unit_details: Optional[PricingUnitDetails]
presentation_breakdowns: Optional[PresentationBreakdowns]
billing_entity_code: Optional[str]

item: Optional[InvoiceItemResponse]
Expand Down
10 changes: 9 additions & 1 deletion tests/fixtures/charge.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,15 @@
"min_amount_cents": 0,
"prorated": false,
"properties": {
"amount": "0.22"
"amount": "0.22",
"presentation_group_keys": [
{
"value": "region",
"options": {
"display_in_invoice": true
}
}
]
},
"filters": [],
"taxes": [],
Expand Down
18 changes: 17 additions & 1 deletion tests/fixtures/customer_past_usage.json
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,23 @@
"amount_cents": 123,
"short_name": "CR",
"conversion_rate": 1.0
}
},
"presentation_breakdowns": [
{
"presentation_by": {
"team": "engineering"
},
"units": "2.0"
}
]
}
],
"presentation_breakdowns": [
{
"presentation_by": {
"team": "engineering"
},
"units": "3.0"
}
]
}
Expand Down
68 changes: 66 additions & 2 deletions tests/fixtures/customer_projected_usage.json
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,23 @@
"amount_cents": 123,
"short_name": "CR",
"conversion_rate": 1.0
}
},
"presentation_breakdowns": [
{
"presentation_by": {
"team": "engineering"
},
"units": "2.0"
}
],
"projected_presentation_breakdowns": [
{
"presentation_by": {
"team": "engineering"
},
"units": "4.0"
}
]
}
],
"grouped_usage": [
Expand All @@ -67,6 +83,22 @@
"short_name": "CR",
"conversion_rate": 1.2
},
"presentation_breakdowns": [
{
"presentation_by": {
"team": "operations"
},
"units": "1.0"
}
],
"projected_presentation_breakdowns": [
{
"presentation_by": {
"team": "operations"
},
"units": "2.0"
}
],
"filters": [
{
"units": "3.0",
Expand All @@ -79,10 +111,42 @@
"france"
]
},
"pricing_unit_details": null
"pricing_unit_details": null,
"presentation_breakdowns": [
{
"presentation_by": {
"team": "support"
},
"units": "1.0"
}
],
"projected_presentation_breakdowns": [
{
"presentation_by": {
"team": "support"
},
"units": "2.0"
}
]
}
]
}
],
"presentation_breakdowns": [
{
"presentation_by": {
"team": "engineering"
},
"units": "3.0"
}
],
"projected_presentation_breakdowns": [
{
"presentation_by": {
"team": "engineering"
},
"units": "6.0"
}
]
}
]
Expand Down
36 changes: 34 additions & 2 deletions tests/fixtures/customer_usage.json
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,15 @@
"amount_cents": 123,
"short_name": "CR",
"conversion_rate": 1.0
}
},
"presentation_breakdowns": [
{
"presentation_by": {
"team": "engineering"
},
"units": "2.0"
}
]
}
],
"grouped_usage": [
Expand All @@ -63,6 +71,14 @@
"short_name": "CR",
"conversion_rate": 1.2
},
"presentation_breakdowns": [
{
"presentation_by": {
"team": "operations"
},
"units": "1.0"
}
],
"filters": [
{
"units": "3.0",
Expand All @@ -74,10 +90,26 @@
"france"
]
},
"pricing_unit_details": null
"pricing_unit_details": null,
"presentation_breakdowns": [
{
"presentation_by": {
"team": "support"
},
"units": "1.0"
}
]
}
]
}
],
"presentation_breakdowns": [
{
"presentation_by": {
"team": "engineering"
},
"units": "3.0"
}
]
}
]
Expand Down
8 changes: 8 additions & 0 deletions tests/fixtures/fee.json
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,14 @@
"precise_unit_amount": "12.00",
"conversion_rate": 1.0
},
"presentation_breakdowns": [
{
"presentation_by": {
"team": "engineering"
},
"units": "10.0"
}
],
"applied_taxes": [
{
"lago_id": "1a901a90-1a90-1a90-1a90-1a901a901a90",
Expand Down
8 changes: 8 additions & 0 deletions tests/fixtures/fees.json
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,14 @@
"precise_unit_amount": "120.00",
"conversion_rate": 1.0
},
"presentation_breakdowns": [
{
"presentation_by": {
"team": "engineering"
},
"units": "1.0"
}
],
"applied_taxes": [
{
"lago_id": "1a901a90-1a90-1a90-1a90-1a901a901a90",
Expand Down
10 changes: 9 additions & 1 deletion tests/fixtures/plan.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,15 @@
"min_amount_cents": 0,
"properties": {
"amount": "0.22",
"pricing_group_keys": ["agent_name"]
"pricing_group_keys": ["agent_name"],
"presentation_group_keys": [
{
"value": "region",
"options": {
"display_in_invoice": true
}
}
]
},
"filters": [
{
Expand Down
10 changes: 10 additions & 0 deletions tests/fixtures/plan_index.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,16 @@
"charge_model": "standard",
"pay_in_advance": true,
"invoiceable": true,
"properties": {
"presentation_group_keys": [
{
"value": "region",
"options": {
"display_in_invoice": true
}
}
]
},
"filters": [
{
"properties": {
Expand Down
Loading
Loading