paid-python 1.0.0a0__py3-none-any.whl → 1.0.0a1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. paid/__init__.py +61 -122
  2. paid/client.py +16 -22
  3. paid/contacts/client.py +415 -133
  4. paid/contacts/raw_client.py +1046 -118
  5. paid/core/client_wrapper.py +8 -10
  6. paid/customers/__init__.py +0 -3
  7. paid/customers/client.py +392 -1112
  8. paid/customers/raw_client.py +656 -1054
  9. paid/environment.py +1 -1
  10. paid/errors/bad_request_error.py +2 -2
  11. paid/errors/forbidden_error.py +2 -2
  12. paid/errors/internal_server_error.py +2 -2
  13. paid/errors/not_found_error.py +2 -2
  14. paid/invoices/client.py +369 -0
  15. paid/{plans → invoices}/raw_client.py +310 -201
  16. paid/orders/__init__.py +0 -3
  17. paid/orders/client.py +279 -471
  18. paid/orders/raw_client.py +551 -538
  19. paid/products/__init__.py +0 -3
  20. paid/products/client.py +129 -265
  21. paid/products/raw_client.py +563 -233
  22. paid/signals/client.py +130 -0
  23. paid/signals/raw_client.py +190 -0
  24. paid/tracing/autoinstrumentation.py +12 -6
  25. paid/tracing/context_manager.py +2 -6
  26. paid/tracing/distributed_tracing.py +3 -3
  27. paid/tracing/signal.py +3 -3
  28. paid/tracing/wrappers/openai_agents/openaiAgentsHook.py +1 -1
  29. paid/types/__init__.py +58 -110
  30. paid/types/attribution.py +8 -0
  31. paid/types/{agent_attribute.py → bulk_signals_response.py} +4 -5
  32. paid/types/contact.py +12 -20
  33. paid/types/{address.py → contact_billing_address.py} +6 -7
  34. paid/types/{traces_response.py → contact_list_response.py} +5 -9
  35. paid/types/customer.py +15 -22
  36. paid/types/customer_attribution.py +8 -0
  37. paid/types/customer_billing_address.py +26 -0
  38. paid/types/{usage_summary_order.py → customer_by_external_id.py} +3 -5
  39. paid/types/{usage_summary_order_line.py → customer_by_id.py} +3 -5
  40. paid/types/customer_creation_state.py +5 -0
  41. paid/types/customer_list_response.py +22 -0
  42. paid/types/empty_response.py +17 -0
  43. paid/types/{error.py → error_response.py} +4 -7
  44. paid/types/invoice.py +33 -51
  45. paid/types/invoice_line.py +42 -0
  46. paid/types/invoice_line_payment_status.py +7 -0
  47. paid/types/invoice_lines_response.py +22 -0
  48. paid/types/invoice_list_response.py +22 -0
  49. paid/types/invoice_payment_status.py +5 -0
  50. paid/types/invoice_source.py +5 -0
  51. paid/types/invoice_status.py +3 -1
  52. paid/types/invoice_tax_status.py +7 -0
  53. paid/types/order.py +30 -29
  54. paid/types/order_creation_state.py +5 -0
  55. paid/types/order_line.py +6 -24
  56. paid/types/order_lines_response.py +22 -0
  57. paid/types/order_list_response.py +22 -0
  58. paid/types/pagination.py +24 -0
  59. paid/types/product.py +4 -29
  60. paid/types/{tier.py → product_by_external_id.py} +5 -4
  61. paid/types/{cost_amount.py → product_by_id.py} +5 -12
  62. paid/types/product_list_response.py +22 -0
  63. paid/types/signal.py +8 -34
  64. paid/types/{agent_update.py → update_contact_request.py} +10 -9
  65. paid/types/update_customer_request.py +38 -0
  66. paid/types/{product_update.py → update_product_request.py} +2 -12
  67. {paid_python-1.0.0a0.dist-info → paid_python-1.0.0a1.dist-info}/METADATA +22 -8
  68. paid_python-1.0.0a1.dist-info/RECORD +110 -0
  69. paid/agents/client.py +0 -880
  70. paid/agents/raw_client.py +0 -785
  71. paid/customers/types/__init__.py +0 -8
  72. paid/customers/types/customers_check_entitlement_request_view.py +0 -5
  73. paid/customers/types/customers_check_entitlement_response.py +0 -22
  74. paid/orders/lines/client.py +0 -144
  75. paid/orders/lines/raw_client.py +0 -129
  76. paid/plans/__init__.py +0 -4
  77. paid/plans/client.py +0 -403
  78. paid/products/types/__init__.py +0 -7
  79. paid/products/types/product_create_type.py +0 -5
  80. paid/traces/__init__.py +0 -4
  81. paid/traces/client.py +0 -218
  82. paid/traces/raw_client.py +0 -226
  83. paid/types/agent.py +0 -31
  84. paid/types/agent_price_point.py +0 -27
  85. paid/types/agent_price_point_tiers.py +0 -23
  86. paid/types/api_error.py +0 -29
  87. paid/types/billing_frequency.py +0 -5
  88. paid/types/cancel_renewal_response.py +0 -49
  89. paid/types/charge_type.py +0 -5
  90. paid/types/contact_create_for_customer.py +0 -37
  91. paid/types/cost_trace.py +0 -55
  92. paid/types/cost_traces_response.py +0 -26
  93. paid/types/creation_source.py +0 -5
  94. paid/types/creation_state.py +0 -5
  95. paid/types/customer_update.py +0 -40
  96. paid/types/entitlement_usage.py +0 -48
  97. paid/types/order_line_attribute.py +0 -27
  98. paid/types/order_line_attribute_create_one.py +0 -5
  99. paid/types/order_line_attribute_pricing.py +0 -33
  100. paid/types/order_line_create.py +0 -72
  101. paid/types/pagination_meta.py +0 -84
  102. paid/types/payment_method.py +0 -58
  103. paid/types/payment_method_card.py +0 -49
  104. paid/types/payment_method_type.py +0 -5
  105. paid/types/payment_method_us_bank_account.py +0 -36
  106. paid/types/payment_method_us_bank_account_account_type.py +0 -5
  107. paid/types/plan.py +0 -81
  108. paid/types/plan_group.py +0 -60
  109. paid/types/plan_plan_products_item.py +0 -41
  110. paid/types/plan_plan_products_item_plan_product_attribute_item.py +0 -34
  111. paid/types/plan_with_features.py +0 -69
  112. paid/types/plan_with_features_features_item.py +0 -34
  113. paid/types/price_point.py +0 -25
  114. paid/types/pricing.py +0 -31
  115. paid/types/pricing_model_type.py +0 -7
  116. paid/types/product_type.py +0 -5
  117. paid/types/product_update_type.py +0 -5
  118. paid/types/proration_attribute_update.py +0 -44
  119. paid/types/proration_detail.py +0 -49
  120. paid/types/proration_upgrade_response.py +0 -73
  121. paid/types/salutation.py +0 -5
  122. paid/types/signal_v_2.py +0 -56
  123. paid/types/tax_exempt_status.py +0 -5
  124. paid/types/trace.py +0 -69
  125. paid/types/usage_pagination_meta.py +0 -43
  126. paid/types/usage_summaries_response.py +0 -26
  127. paid/types/usage_summary.py +0 -121
  128. paid/usage/__init__.py +0 -7
  129. paid/usage/client.py +0 -321
  130. paid/usage/raw_client.py +0 -387
  131. paid/usage/types/__init__.py +0 -7
  132. paid/usage/types/usage_check_usage_response.py +0 -53
  133. paid_python-1.0.0a0.dist-info/RECORD +0 -152
  134. /paid/{agents → invoices}/__init__.py +0 -0
  135. /paid/{orders/lines → signals}/__init__.py +0 -0
  136. {paid_python-1.0.0a0.dist-info → paid_python-1.0.0a1.dist-info}/LICENSE +0 -0
  137. {paid_python-1.0.0a0.dist-info → paid_python-1.0.0a1.dist-info}/WHEEL +0 -0
@@ -4,13 +4,12 @@ import typing
4
4
 
5
5
  import pydantic
6
6
  from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
7
- from .pricing import Pricing
8
7
 
9
8
 
10
- class AgentAttribute(UniversalBaseModel):
11
- name: str
12
- active: bool
13
- pricing: Pricing
9
+ class BulkSignalsResponse(UniversalBaseModel):
10
+ ingested: int
11
+ duplicates: int
12
+ failed: int
14
13
 
15
14
  if IS_PYDANTIC_V2:
16
15
  model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
paid/types/contact.py CHANGED
@@ -1,36 +1,28 @@
1
1
  # This file was auto-generated by Fern from our API Definition.
2
2
 
3
+ import datetime as dt
3
4
  import typing
4
5
 
5
6
  import pydantic
6
7
  import typing_extensions
7
8
  from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
8
9
  from ..core.serialization import FieldMetadata
9
- from .salutation import Salutation
10
+ from .contact_billing_address import ContactBillingAddress
10
11
 
11
12
 
12
13
  class Contact(UniversalBaseModel):
13
- id: typing.Optional[str] = None
14
- external_id: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="externalId")] = None
15
- organization_id: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="organizationId")] = None
16
- customer_id: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="customerId")] = None
17
- customer_external_id: typing_extensions.Annotated[
18
- typing.Optional[str], FieldMetadata(alias="customerExternalId")
19
- ] = None
20
- salutation: typing.Optional[Salutation] = None
21
- first_name: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="firstName")] = None
22
- last_name: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="lastName")] = None
23
- email: typing.Optional[str] = None
14
+ id: str
15
+ customer_id: typing_extensions.Annotated[str, FieldMetadata(alias="customerId")]
16
+ first_name: typing_extensions.Annotated[str, FieldMetadata(alias="firstName")]
17
+ last_name: typing_extensions.Annotated[str, FieldMetadata(alias="lastName")]
18
+ email: str
24
19
  phone: typing.Optional[str] = None
25
- billing_street: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="billingStreet")] = None
26
- billing_city: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="billingCity")] = None
27
- billing_state_province: typing_extensions.Annotated[
28
- typing.Optional[str], FieldMetadata(alias="billingStateProvince")
20
+ billing_address: typing_extensions.Annotated[
21
+ typing.Optional[ContactBillingAddress], FieldMetadata(alias="billingAddress")
29
22
  ] = None
30
- billing_country: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="billingCountry")] = None
31
- billing_postal_code: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="billingPostalCode")] = (
32
- None
33
- )
23
+ external_id: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="externalId")] = None
24
+ created_at: typing_extensions.Annotated[dt.datetime, FieldMetadata(alias="createdAt")]
25
+ updated_at: typing_extensions.Annotated[dt.datetime, FieldMetadata(alias="updatedAt")]
34
26
 
35
27
  if IS_PYDANTIC_V2:
36
28
  model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
@@ -8,13 +8,12 @@ from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
8
8
  from ..core.serialization import FieldMetadata
9
9
 
10
10
 
11
- class Address(UniversalBaseModel):
12
- line_1: typing_extensions.Annotated[str, FieldMetadata(alias="line1")]
13
- line_2: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="line2")] = None
14
- city: str
15
- state: str
16
- zip_code: typing_extensions.Annotated[str, FieldMetadata(alias="zipCode")]
17
- country: str
11
+ class ContactBillingAddress(UniversalBaseModel):
12
+ street: typing.Optional[str] = None
13
+ city: typing.Optional[str] = None
14
+ state: typing.Optional[str] = None
15
+ country: typing.Optional[str] = None
16
+ zip_code: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="zipCode")] = None
18
17
 
19
18
  if IS_PYDANTIC_V2:
20
19
  model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
@@ -4,17 +4,13 @@ import typing
4
4
 
5
5
  import pydantic
6
6
  from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
7
- from .pagination_meta import PaginationMeta
8
- from .trace import Trace
7
+ from .contact import Contact
8
+ from .pagination import Pagination
9
9
 
10
10
 
11
- class TracesResponse(UniversalBaseModel):
12
- """
13
- Response containing cost traces and pagination metadata
14
- """
15
-
16
- traces: typing.List[Trace]
17
- meta: PaginationMeta
11
+ class ContactListResponse(UniversalBaseModel):
12
+ data: typing.List[Contact]
13
+ pagination: Pagination
18
14
 
19
15
  if IS_PYDANTIC_V2:
20
16
  model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
paid/types/customer.py CHANGED
@@ -1,40 +1,33 @@
1
1
  # This file was auto-generated by Fern from our API Definition.
2
2
 
3
+ import datetime as dt
3
4
  import typing
4
5
 
5
6
  import pydantic
6
7
  import typing_extensions
7
8
  from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
8
9
  from ..core.serialization import FieldMetadata
9
- from .address import Address
10
- from .creation_source import CreationSource
11
- from .creation_state import CreationState
12
- from .tax_exempt_status import TaxExemptStatus
10
+ from .customer_billing_address import CustomerBillingAddress
11
+ from .customer_creation_state import CustomerCreationState
13
12
 
14
13
 
15
14
  class Customer(UniversalBaseModel):
16
15
  id: str
17
- organization_id: typing_extensions.Annotated[str, FieldMetadata(alias="organizationId")]
18
16
  name: str
17
+ legal_name: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="legalName")] = None
18
+ email: str
19
+ phone: str
20
+ website: str
19
21
  external_id: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="externalId")] = None
20
- phone: typing.Optional[str] = None
21
- employee_count: typing_extensions.Annotated[typing.Optional[float], FieldMetadata(alias="employeeCount")] = None
22
- annual_revenue: typing_extensions.Annotated[typing.Optional[float], FieldMetadata(alias="annualRevenue")] = None
23
- tax_exempt_status: typing_extensions.Annotated[
24
- typing.Optional[TaxExemptStatus], FieldMetadata(alias="taxExemptStatus")
22
+ billing_address: typing_extensions.Annotated[
23
+ typing.Optional[CustomerBillingAddress], FieldMetadata(alias="billingAddress")
25
24
  ] = None
26
- creation_source: typing_extensions.Annotated[
27
- typing.Optional[CreationSource], FieldMetadata(alias="creationSource")
28
- ] = None
29
- creation_state: typing_extensions.Annotated[
30
- typing.Optional[CreationState], FieldMetadata(alias="creationState")
31
- ] = None
32
- website: typing.Optional[str] = None
33
- billing_address: typing_extensions.Annotated[typing.Optional[Address], FieldMetadata(alias="billingAddress")] = None
34
- metadata: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = pydantic.Field(default=None)
35
- """
36
- Flexible JSON field for storing custom metadata about the customer
37
- """
25
+ creation_state: typing_extensions.Annotated[CustomerCreationState, FieldMetadata(alias="creationState")]
26
+ churn_date: typing_extensions.Annotated[typing.Optional[dt.datetime], FieldMetadata(alias="churnDate")] = None
27
+ vat_number: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="vatNumber")] = None
28
+ metadata: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None
29
+ created_at: typing_extensions.Annotated[dt.datetime, FieldMetadata(alias="createdAt")]
30
+ updated_at: typing_extensions.Annotated[dt.datetime, FieldMetadata(alias="updatedAt")]
38
31
 
39
32
  if IS_PYDANTIC_V2:
40
33
  model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
@@ -0,0 +1,8 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ from .customer_by_external_id import CustomerByExternalId
6
+ from .customer_by_id import CustomerById
7
+
8
+ CustomerAttribution = typing.Union[CustomerById, CustomerByExternalId]
@@ -0,0 +1,26 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ import typing_extensions
7
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
8
+ from ..core.serialization import FieldMetadata
9
+
10
+
11
+ class CustomerBillingAddress(UniversalBaseModel):
12
+ line1: typing.Optional[str] = None
13
+ line2: typing.Optional[str] = None
14
+ city: typing.Optional[str] = None
15
+ state: typing.Optional[str] = None
16
+ zip_code: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="zipCode")] = None
17
+ country: typing.Optional[str] = None
18
+
19
+ if IS_PYDANTIC_V2:
20
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
21
+ else:
22
+
23
+ class Config:
24
+ frozen = True
25
+ smart_union = True
26
+ extra = pydantic.Extra.allow
@@ -8,14 +8,12 @@ from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
8
8
  from ..core.serialization import FieldMetadata
9
9
 
10
10
 
11
- class UsageSummaryOrder(UniversalBaseModel):
11
+ class CustomerByExternalId(UniversalBaseModel):
12
+ external_customer_id: typing_extensions.Annotated[str, FieldMetadata(alias="externalCustomerId")] = pydantic.Field()
12
13
  """
13
- Associated order information
14
+ Your external customer ID
14
15
  """
15
16
 
16
- id: typing.Optional[str] = None
17
- display_id: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="displayId")] = None
18
-
19
17
  if IS_PYDANTIC_V2:
20
18
  model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
21
19
  else:
@@ -8,14 +8,12 @@ from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
8
8
  from ..core.serialization import FieldMetadata
9
9
 
10
10
 
11
- class UsageSummaryOrderLine(UniversalBaseModel):
11
+ class CustomerById(UniversalBaseModel):
12
+ customer_id: typing_extensions.Annotated[str, FieldMetadata(alias="customerId")] = pydantic.Field()
12
13
  """
13
- Associated order line information
14
+ The Paid customer ID
14
15
  """
15
16
 
16
- id: typing.Optional[str] = None
17
- display_id: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="displayId")] = None
18
-
19
17
  if IS_PYDANTIC_V2:
20
18
  model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
21
19
  else:
@@ -0,0 +1,5 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ CustomerCreationState = typing.Union[typing.Literal["draft", "active"], typing.Any]
@@ -0,0 +1,22 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
7
+ from .customer import Customer
8
+ from .pagination import Pagination
9
+
10
+
11
+ class CustomerListResponse(UniversalBaseModel):
12
+ data: typing.List[Customer]
13
+ pagination: Pagination
14
+
15
+ if IS_PYDANTIC_V2:
16
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
17
+ else:
18
+
19
+ class Config:
20
+ frozen = True
21
+ smart_union = True
22
+ extra = pydantic.Extra.allow
@@ -0,0 +1,17 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
7
+
8
+
9
+ class EmptyResponse(UniversalBaseModel):
10
+ if IS_PYDANTIC_V2:
11
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
12
+ else:
13
+
14
+ class Config:
15
+ frozen = True
16
+ smart_union = True
17
+ extra = pydantic.Extra.allow
@@ -4,15 +4,12 @@ import typing
4
4
 
5
5
  import pydantic
6
6
  from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
7
- from .api_error import ApiError
8
7
 
9
8
 
10
- class Error(UniversalBaseModel):
11
- """
12
- An error response from the Paid API
13
- """
14
-
15
- error: ApiError
9
+ class ErrorResponse(UniversalBaseModel):
10
+ error: str
11
+ code: typing.Optional[str] = None
12
+ details: typing.Optional[str] = None
16
13
 
17
14
  if IS_PYDANTIC_V2:
18
15
  model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
paid/types/invoice.py CHANGED
@@ -7,63 +7,45 @@ import pydantic
7
7
  import typing_extensions
8
8
  from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
9
9
  from ..core.serialization import FieldMetadata
10
- from .customer import Customer
10
+ from .invoice_payment_status import InvoicePaymentStatus
11
+ from .invoice_source import InvoiceSource
11
12
  from .invoice_status import InvoiceStatus
13
+ from .invoice_tax_status import InvoiceTaxStatus
12
14
 
13
15
 
14
16
  class Invoice(UniversalBaseModel):
15
- """
16
- An invoice for an order
17
- """
18
-
19
- id: typing.Optional[str] = None
20
- display_id: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="displayId")] = pydantic.Field(
21
- default=None
22
- )
23
- """
24
- Human-readable invoice number
25
- """
26
-
27
- organization_id: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="organizationId")] = None
28
- customer_id: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="customerId")] = None
17
+ id: str
18
+ display_number: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="displayNumber")] = None
29
19
  order_id: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="orderId")] = None
30
- status: typing.Optional[InvoiceStatus] = None
31
- currency: typing.Optional[str] = None
32
- subtotal: typing.Optional[float] = pydantic.Field(default=None)
33
- """
34
- Total before tax (in smallest currency unit)
35
- """
36
-
37
- tax: typing.Optional[float] = pydantic.Field(default=None)
38
- """
39
- Tax amount (in smallest currency unit)
40
- """
41
-
42
- total: typing.Optional[float] = pydantic.Field(default=None)
43
- """
44
- Total amount including tax (in smallest currency unit)
45
- """
46
-
47
- amount_paid: typing_extensions.Annotated[typing.Optional[float], FieldMetadata(alias="amountPaid")] = (
48
- pydantic.Field(default=None)
49
- )
50
- """
51
- Amount already paid (in smallest currency unit)
52
- """
53
-
54
- amount_due: typing_extensions.Annotated[typing.Optional[float], FieldMetadata(alias="amountDue")] = pydantic.Field(
55
- default=None
56
- )
57
- """
58
- Amount still due (in smallest currency unit)
59
- """
60
-
20
+ customer_id: typing_extensions.Annotated[str, FieldMetadata(alias="customerId")]
21
+ status: InvoiceStatus
22
+ payment_status: typing_extensions.Annotated[InvoicePaymentStatus, FieldMetadata(alias="paymentStatus")]
23
+ source: InvoiceSource
24
+ start_date: typing_extensions.Annotated[dt.datetime, FieldMetadata(alias="startDate")]
25
+ end_date: typing_extensions.Annotated[typing.Optional[dt.datetime], FieldMetadata(alias="endDate")] = None
26
+ issue_date: typing_extensions.Annotated[dt.datetime, FieldMetadata(alias="issueDate")]
27
+ posted_date: typing_extensions.Annotated[typing.Optional[dt.datetime], FieldMetadata(alias="postedDate")] = None
61
28
  due_date: typing_extensions.Annotated[typing.Optional[dt.datetime], FieldMetadata(alias="dueDate")] = None
62
- paid_at: typing_extensions.Annotated[typing.Optional[dt.datetime], FieldMetadata(alias="paidAt")] = None
63
- voided_at: typing_extensions.Annotated[typing.Optional[dt.datetime], FieldMetadata(alias="voidedAt")] = None
64
- created_at: typing_extensions.Annotated[typing.Optional[dt.datetime], FieldMetadata(alias="createdAt")] = None
65
- updated_at: typing_extensions.Annotated[typing.Optional[dt.datetime], FieldMetadata(alias="updatedAt")] = None
66
- customer: typing.Optional[Customer] = None
29
+ currency: str
30
+ tax_amount: typing_extensions.Annotated[float, FieldMetadata(alias="taxAmount")]
31
+ tax_rate: typing_extensions.Annotated[float, FieldMetadata(alias="taxRate")]
32
+ tax_status: typing_extensions.Annotated[InvoiceTaxStatus, FieldMetadata(alias="taxStatus")]
33
+ invoice_total_excluding_tax: typing_extensions.Annotated[float, FieldMetadata(alias="invoiceTotalExcludingTax")]
34
+ invoice_total: typing_extensions.Annotated[float, FieldMetadata(alias="invoiceTotal")]
35
+ amount_due: typing_extensions.Annotated[float, FieldMetadata(alias="amountDue")]
36
+ amount_paid: typing_extensions.Annotated[float, FieldMetadata(alias="amountPaid")]
37
+ amount_remaining: typing_extensions.Annotated[float, FieldMetadata(alias="amountRemaining")]
38
+ credit_notes_total: typing_extensions.Annotated[float, FieldMetadata(alias="creditNotesTotal")]
39
+ metadata: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None
40
+ created_at: typing_extensions.Annotated[dt.datetime, FieldMetadata(alias="createdAt")]
41
+ updated_at: typing_extensions.Annotated[dt.datetime, FieldMetadata(alias="updatedAt")]
42
+ payment_link: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="paymentLink")] = None
43
+ dispute_link: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="disputeLink")] = None
44
+ public_url_token: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="publicUrlToken")] = None
45
+ tax_exempt: typing_extensions.Annotated[bool, FieldMetadata(alias="taxExempt")]
46
+ billing_contact_id: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="billingContactId")] = (
47
+ None
48
+ )
67
49
 
68
50
  if IS_PYDANTIC_V2:
69
51
  model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
@@ -0,0 +1,42 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import datetime as dt
4
+ import typing
5
+
6
+ import pydantic
7
+ import typing_extensions
8
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
9
+ from ..core.serialization import FieldMetadata
10
+ from .invoice_line_payment_status import InvoiceLinePaymentStatus
11
+
12
+
13
+ class InvoiceLine(UniversalBaseModel):
14
+ id: str
15
+ order_id: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="orderId")] = None
16
+ order_line_id: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="orderLineId")] = None
17
+ order_line_attribute_id: typing_extensions.Annotated[
18
+ typing.Optional[str], FieldMetadata(alias="orderLineAttributeId")
19
+ ] = None
20
+ start_date: typing_extensions.Annotated[dt.datetime, FieldMetadata(alias="startDate")]
21
+ end_date: typing_extensions.Annotated[dt.datetime, FieldMetadata(alias="endDate")]
22
+ payment_status: typing_extensions.Annotated[InvoiceLinePaymentStatus, FieldMetadata(alias="paymentStatus")]
23
+ quantity: int
24
+ total_price_before_tax: typing_extensions.Annotated[float, FieldMetadata(alias="totalPriceBeforeTax")]
25
+ tax: float
26
+ tax_rate: typing_extensions.Annotated[float, FieldMetadata(alias="taxRate")]
27
+ total_price_after_tax: typing_extensions.Annotated[float, FieldMetadata(alias="totalPriceAfterTax")]
28
+ currency: str
29
+ description: str
30
+ balance_amount: typing_extensions.Annotated[float, FieldMetadata(alias="balanceAmount")]
31
+ credited_amount: typing_extensions.Annotated[float, FieldMetadata(alias="creditedAmount")]
32
+ created_at: typing_extensions.Annotated[dt.datetime, FieldMetadata(alias="createdAt")]
33
+ updated_at: typing_extensions.Annotated[dt.datetime, FieldMetadata(alias="updatedAt")]
34
+
35
+ if IS_PYDANTIC_V2:
36
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
37
+ else:
38
+
39
+ class Config:
40
+ frozen = True
41
+ smart_union = True
42
+ extra = pydantic.Extra.allow
@@ -0,0 +1,7 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ InvoiceLinePaymentStatus = typing.Union[
6
+ typing.Literal["pending", "paid", "partiallyPaid", "overdue", "error"], typing.Any
7
+ ]
@@ -0,0 +1,22 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
7
+ from .invoice_line import InvoiceLine
8
+ from .pagination import Pagination
9
+
10
+
11
+ class InvoiceLinesResponse(UniversalBaseModel):
12
+ data: typing.List[InvoiceLine]
13
+ pagination: Pagination
14
+
15
+ if IS_PYDANTIC_V2:
16
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
17
+ else:
18
+
19
+ class Config:
20
+ frozen = True
21
+ smart_union = True
22
+ extra = pydantic.Extra.allow
@@ -0,0 +1,22 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
7
+ from .invoice import Invoice
8
+ from .pagination import Pagination
9
+
10
+
11
+ class InvoiceListResponse(UniversalBaseModel):
12
+ data: typing.List[Invoice]
13
+ pagination: Pagination
14
+
15
+ if IS_PYDANTIC_V2:
16
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
17
+ else:
18
+
19
+ class Config:
20
+ frozen = True
21
+ smart_union = True
22
+ extra = pydantic.Extra.allow
@@ -0,0 +1,5 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ InvoicePaymentStatus = typing.Union[typing.Literal["pending", "paid", "partiallyPaid", "overdue", "error"], typing.Any]
@@ -0,0 +1,5 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ InvoiceSource = typing.Union[typing.Literal["order_based", "manual"], typing.Any]
@@ -2,4 +2,6 @@
2
2
 
3
3
  import typing
4
4
 
5
- InvoiceStatus = typing.Union[typing.Literal["draft", "open", "paid", "void", "uncollectible"], typing.Any]
5
+ InvoiceStatus = typing.Union[
6
+ typing.Literal["building", "draft", "pending", "posted", "voided", "canceled", "error"], typing.Any
7
+ ]
@@ -0,0 +1,7 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ InvoiceTaxStatus = typing.Union[
6
+ typing.Literal["not_applicable", "calculated", "committed", "failed", "voided"], typing.Any
7
+ ]
paid/types/order.py CHANGED
@@ -1,43 +1,44 @@
1
1
  # This file was auto-generated by Fern from our API Definition.
2
2
 
3
+ import datetime as dt
3
4
  import typing
4
5
 
5
6
  import pydantic
6
7
  import typing_extensions
7
8
  from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
8
9
  from ..core.serialization import FieldMetadata
9
- from .creation_state import CreationState
10
- from .customer import Customer
11
- from .order_line import OrderLine
10
+ from .order_creation_state import OrderCreationState
12
11
 
13
12
 
14
13
  class Order(UniversalBaseModel):
15
- id: typing.Optional[str] = None
16
- name: typing.Optional[str] = None
17
- description: typing.Optional[str] = None
18
- customer_id: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="customerId")] = None
19
- organization_id: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="organizationId")] = None
20
- start_date: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="startDate")] = None
21
- end_date: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="endDate")] = None
22
- total_amount: typing_extensions.Annotated[typing.Optional[float], FieldMetadata(alias="totalAmount")] = None
23
- estimated_tax: typing_extensions.Annotated[typing.Optional[float], FieldMetadata(alias="estimatedTax")] = None
24
- billed_amount_no_tax: typing_extensions.Annotated[
25
- typing.Optional[float], FieldMetadata(alias="billedAmountNoTax")
26
- ] = None
27
- billed_tax: typing_extensions.Annotated[typing.Optional[float], FieldMetadata(alias="billedTax")] = None
28
- total_billed_amount: typing_extensions.Annotated[
29
- typing.Optional[float], FieldMetadata(alias="totalBilledAmount")
30
- ] = None
31
- pending_billing_amount: typing_extensions.Annotated[
32
- typing.Optional[float], FieldMetadata(alias="pendingBillingAmount")
33
- ] = None
34
- creation_state: typing_extensions.Annotated[
35
- typing.Optional[CreationState], FieldMetadata(alias="creationState")
36
- ] = None
37
- order_lines: typing_extensions.Annotated[
38
- typing.Optional[typing.List[OrderLine]], FieldMetadata(alias="orderLines")
39
- ] = None
40
- customer: typing.Optional[Customer] = None
14
+ id: str
15
+ customer_id: typing_extensions.Annotated[str, FieldMetadata(alias="customerId")]
16
+ billing_customer_id: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="billingCustomerId")] = (
17
+ None
18
+ )
19
+ billing_contact_ids: typing_extensions.Annotated[typing.List[str], FieldMetadata(alias="billingContactIds")]
20
+ created_at: typing_extensions.Annotated[dt.datetime, FieldMetadata(alias="createdAt")]
21
+ updated_at: typing_extensions.Annotated[dt.datetime, FieldMetadata(alias="updatedAt")]
22
+ end_date: typing_extensions.Annotated[typing.Optional[dt.datetime], FieldMetadata(alias="endDate")] = None
23
+ name: str
24
+ start_date: typing_extensions.Annotated[dt.datetime, FieldMetadata(alias="startDate")]
25
+ subscription_terms: typing_extensions.Annotated[typing.Optional[int], FieldMetadata(alias="subscriptionTerms")] = (
26
+ None
27
+ )
28
+ billed_amount_no_tax: typing_extensions.Annotated[float, FieldMetadata(alias="billedAmountNoTax")]
29
+ billed_tax: typing_extensions.Annotated[float, FieldMetadata(alias="billedTax")]
30
+ estimated_tax: typing_extensions.Annotated[float, FieldMetadata(alias="estimatedTax")]
31
+ order_amount: typing_extensions.Annotated[float, FieldMetadata(alias="orderAmount")]
32
+ pending_billing_amount: typing_extensions.Annotated[float, FieldMetadata(alias="pendingBillingAmount")]
33
+ total_amount: typing_extensions.Annotated[float, FieldMetadata(alias="totalAmount")]
34
+ total_billed_amount: typing_extensions.Annotated[float, FieldMetadata(alias="totalBilledAmount")]
35
+ creation_state: typing_extensions.Annotated[OrderCreationState, FieldMetadata(alias="creationState")]
36
+ payment_terms: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="paymentTerms")] = None
37
+ number: float
38
+ metadata: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None
39
+ show_payment_link: typing_extensions.Annotated[typing.Optional[bool], FieldMetadata(alias="showPaymentLink")] = None
40
+ show_bank_details: typing_extensions.Annotated[typing.Optional[bool], FieldMetadata(alias="showBankDetails")] = None
41
+ version: int
41
42
 
42
43
  if IS_PYDANTIC_V2:
43
44
  model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
@@ -0,0 +1,5 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ OrderCreationState = typing.Union[typing.Literal["draft", "active"], typing.Any]