Coverage for polar/benefit/strategies/license_keys/schemas.py: 100%
22 statements
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-07 12:42 +0000
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-07 12:42 +0000
1from typing import Literal
3from pydantic import Field
5from polar.kit.schemas import EmptyStrToNone, Schema
6from polar.models.benefit import BenefitType
8from ..base.schemas import (
9 BenefitBase,
10 BenefitCreateBase,
11 BenefitSubscriberBase,
12 BenefitUpdateBase,
13)
16class BenefitLicenseKeyExpirationProperties(Schema):
17 ttl: int = Field(gt=0)
18 timeframe: Literal["year", "month", "day"]
21class BenefitLicenseKeyActivationCreateProperties(Schema):
22 limit: int = Field(gt=0, le=50)
23 enable_customer_admin: bool
26class BenefitLicenseKeyActivationProperties(Schema):
27 limit: int
28 enable_customer_admin: bool
31class BenefitLicenseKeysCreateProperties(Schema):
32 prefix: EmptyStrToNone | None = None
33 expires: BenefitLicenseKeyExpirationProperties | None = None
34 activations: BenefitLicenseKeyActivationCreateProperties | None = None
35 limit_usage: int | None = Field(gt=0, default=None)
38class BenefitLicenseKeysProperties(Schema):
39 prefix: str | None
40 expires: BenefitLicenseKeyExpirationProperties | None
41 activations: BenefitLicenseKeyActivationProperties | None
42 limit_usage: int | None
45class BenefitLicenseKeysSubscriberProperties(Schema):
46 prefix: str | None
47 expires: BenefitLicenseKeyExpirationProperties | None
48 activations: BenefitLicenseKeyActivationProperties | None
49 limit_usage: int | None
52class BenefitLicenseKeysCreate(BenefitCreateBase):
53 type: Literal[BenefitType.license_keys]
54 properties: BenefitLicenseKeysCreateProperties
57class BenefitLicenseKeysUpdate(BenefitUpdateBase):
58 type: Literal[BenefitType.license_keys]
59 properties: BenefitLicenseKeysCreateProperties | None = None
62class BenefitLicenseKeys(BenefitBase):
63 type: Literal[BenefitType.license_keys]
64 properties: BenefitLicenseKeysProperties
67class BenefitLicenseKeysSubscriber(BenefitSubscriberBase):
68 type: Literal[BenefitType.license_keys]
69 properties: BenefitLicenseKeysSubscriberProperties