growsurf-python 1.17.0__py3-none-any.whl → 1.19.0__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.
growsurf/_client.py CHANGED
@@ -36,9 +36,8 @@ from ._base_client import (
36
36
  )
37
37
 
38
38
  if TYPE_CHECKING:
39
- from .resources import team, account, campaign
39
+ from .resources import team, campaign
40
40
  from .resources.team import TeamResource, AsyncTeamResource
41
- from .resources.account import AccountResource, AsyncAccountResource
42
41
  from .resources.campaign.campaign import CampaignResource, AsyncCampaignResource
43
42
 
44
43
  __all__ = [
@@ -116,12 +115,6 @@ class Growsurf(SyncAPIClient):
116
115
  )
117
116
  self._idempotency_header = "Idempotency-Key"
118
117
 
119
- @cached_property
120
- def account(self) -> AccountResource:
121
- from .resources.account import AccountResource
122
-
123
- return AccountResource(self)
124
-
125
118
  @cached_property
126
119
  def team(self) -> TeamResource:
127
120
  from .resources.team import TeamResource
@@ -319,12 +312,6 @@ class AsyncGrowsurf(AsyncAPIClient):
319
312
  )
320
313
  self._idempotency_header = "Idempotency-Key"
321
314
 
322
- @cached_property
323
- def account(self) -> AsyncAccountResource:
324
- from .resources.account import AsyncAccountResource
325
-
326
- return AsyncAccountResource(self)
327
-
328
315
  @cached_property
329
316
  def team(self) -> AsyncTeamResource:
330
317
  from .resources.team import AsyncTeamResource
@@ -465,12 +452,6 @@ class GrowsurfWithRawResponse:
465
452
  def __init__(self, client: Growsurf) -> None:
466
453
  self._client = client
467
454
 
468
- @cached_property
469
- def account(self) -> account.AccountResourceWithRawResponse:
470
- from .resources.account import AccountResourceWithRawResponse
471
-
472
- return AccountResourceWithRawResponse(self._client.account)
473
-
474
455
  @cached_property
475
456
  def team(self) -> team.TeamResourceWithRawResponse:
476
457
  from .resources.team import TeamResourceWithRawResponse
@@ -490,12 +471,6 @@ class AsyncGrowsurfWithRawResponse:
490
471
  def __init__(self, client: AsyncGrowsurf) -> None:
491
472
  self._client = client
492
473
 
493
- @cached_property
494
- def account(self) -> account.AsyncAccountResourceWithRawResponse:
495
- from .resources.account import AsyncAccountResourceWithRawResponse
496
-
497
- return AsyncAccountResourceWithRawResponse(self._client.account)
498
-
499
474
  @cached_property
500
475
  def team(self) -> team.AsyncTeamResourceWithRawResponse:
501
476
  from .resources.team import AsyncTeamResourceWithRawResponse
@@ -515,12 +490,6 @@ class GrowsurfWithStreamedResponse:
515
490
  def __init__(self, client: Growsurf) -> None:
516
491
  self._client = client
517
492
 
518
- @cached_property
519
- def account(self) -> account.AccountResourceWithStreamingResponse:
520
- from .resources.account import AccountResourceWithStreamingResponse
521
-
522
- return AccountResourceWithStreamingResponse(self._client.account)
523
-
524
493
  @cached_property
525
494
  def team(self) -> team.TeamResourceWithStreamingResponse:
526
495
  from .resources.team import TeamResourceWithStreamingResponse
@@ -540,12 +509,6 @@ class AsyncGrowsurfWithStreamedResponse:
540
509
  def __init__(self, client: AsyncGrowsurf) -> None:
541
510
  self._client = client
542
511
 
543
- @cached_property
544
- def account(self) -> account.AsyncAccountResourceWithStreamingResponse:
545
- from .resources.account import AsyncAccountResourceWithStreamingResponse
546
-
547
- return AsyncAccountResourceWithStreamingResponse(self._client.account)
548
-
549
512
  @cached_property
550
513
  def team(self) -> team.AsyncTeamResourceWithStreamingResponse:
551
514
  from .resources.team import AsyncTeamResourceWithStreamingResponse
growsurf/_version.py CHANGED
@@ -1,4 +1,4 @@
1
1
  # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
3
  __title__ = "growsurf"
4
- __version__ = "1.17.0" # x-release-please-version
4
+ __version__ = "1.19.0" # x-release-please-version
@@ -8,14 +8,6 @@ from .team import (
8
8
  TeamResourceWithStreamingResponse,
9
9
  AsyncTeamResourceWithStreamingResponse,
10
10
  )
11
- from .account import (
12
- AccountResource,
13
- AsyncAccountResource,
14
- AccountResourceWithRawResponse,
15
- AsyncAccountResourceWithRawResponse,
16
- AccountResourceWithStreamingResponse,
17
- AsyncAccountResourceWithStreamingResponse,
18
- )
19
11
  from .campaign import (
20
12
  CampaignResource,
21
13
  AsyncCampaignResource,
@@ -26,12 +18,6 @@ from .campaign import (
26
18
  )
27
19
 
28
20
  __all__ = [
29
- "AccountResource",
30
- "AsyncAccountResource",
31
- "AccountResourceWithRawResponse",
32
- "AsyncAccountResourceWithRawResponse",
33
- "AccountResourceWithStreamingResponse",
34
- "AsyncAccountResourceWithStreamingResponse",
35
21
  "TeamResource",
36
22
  "AsyncTeamResource",
37
23
  "TeamResourceWithRawResponse",
@@ -487,8 +487,8 @@ class CampaignResource(SyncAPIResource):
487
487
  is_affiliate: Affiliate programs only. Controls affiliate enrollment for a new participant.
488
488
 
489
489
  language: The language of the participant's portal and program emails. Stored when it is one of
490
- the program's languages. A regional tag maps to its language (for example, `es-MX` is
491
- stored as `es`). Any other value is ignored and the program's base language applies.
490
+ the program's languages. A regional tag maps to its language (for example, `fr-BE` is
491
+ stored as `fr`). Any other value is ignored and the program's base language applies.
492
492
  Applied only when this request creates the participant.
493
493
 
494
494
  referred_at: When the participant was referred, in Unix milliseconds. Used only with a valid
@@ -1732,8 +1732,8 @@ class AsyncCampaignResource(AsyncAPIResource):
1732
1732
  is_affiliate: Affiliate programs only. Controls affiliate enrollment for a new participant.
1733
1733
 
1734
1734
  language: The language of the participant's portal and program emails. Stored when it is one of
1735
- the program's languages. A regional tag maps to its language (for example, `es-MX` is
1736
- stored as `es`). Any other value is ignored and the program's base language applies.
1735
+ the program's languages. A regional tag maps to its language (for example, `fr-BE` is
1736
+ stored as `fr`). Any other value is ignored and the program's base language applies.
1737
1737
  Applied only when this request creates the participant.
1738
1738
 
1739
1739
  referred_at: When the participant was referred, in Unix milliseconds. Used only with a valid
@@ -337,8 +337,8 @@ class ParticipantResource(SyncAPIResource):
337
337
  unchanged.
338
338
 
339
339
  language: The language of the participant's portal and program emails. Stored when it is one of
340
- the program's languages. A regional tag maps to its language (for example, `es-MX` is
341
- stored as `es`). Any other value is ignored and the program's base language applies.
340
+ the program's languages. A regional tag maps to its language (for example, `fr-BE` is
341
+ stored as `fr`). Any other value is ignored and the program's base language applies.
342
342
  Applied only when this request creates the participant.
343
343
 
344
344
  metadata: Shallow custom metadata object.
@@ -1624,8 +1624,8 @@ class AsyncParticipantResource(AsyncAPIResource):
1624
1624
  unchanged.
1625
1625
 
1626
1626
  language: The language of the participant's portal and program emails. Stored when it is one of
1627
- the program's languages. A regional tag maps to its language (for example, `es-MX` is
1628
- stored as `es`). Any other value is ignored and the program's base language applies.
1627
+ the program's languages. A regional tag maps to its language (for example, `fr-BE` is
1628
+ stored as `fr`). Any other value is ignored and the program's base language applies.
1629
1629
  Applied only when this request creates the participant.
1630
1630
 
1631
1631
  metadata: Shallow custom metadata object.
@@ -14,13 +14,11 @@ from .affiliate_invite import AffiliateInvite as AffiliateInvite
14
14
  from .participant_list import ParticipantList as ParticipantList
15
15
  from .team_update_params import TeamUpdateParams as TeamUpdateParams
16
16
  from .commission_structure import CommissionStructure as CommissionStructure
17
- from .account_create_params import AccountCreateParams as AccountCreateParams
18
17
  from .affiliate_application import AffiliateApplication as AffiliateApplication
19
18
  from .analytics_availability import AnalyticsAvailability as AnalyticsAvailability
20
19
  from .campaign_create_params import CampaignCreateParams as CampaignCreateParams
21
20
  from .campaign_list_response import CampaignListResponse as CampaignListResponse
22
21
  from .campaign_update_params import CampaignUpdateParams as CampaignUpdateParams
23
- from .create_account_response import CreateAccountResponse as CreateAccountResponse
24
22
  from .participant_payout_list import ParticipantPayoutList as ParticipantPayoutList
25
23
  from .rotate_api_key_response import RotateApiKeyResponse as RotateApiKeyResponse
26
24
  from .referral_flow_screenshot import ReferralFlowScreenshot as ReferralFlowScreenshot
@@ -46,4 +46,6 @@ Language: TypeAlias = Literal[
46
46
  "fil",
47
47
  "af",
48
48
  "sw",
49
+ "zh-TW",
50
+ "es-419",
49
51
  ]
@@ -32,7 +32,7 @@ class ParticipantAddParams(TypedDict, total=False):
32
32
  """The language of the participant's portal and program emails.
33
33
 
34
34
  Stored when it is one of the program's languages. A regional tag maps to its
35
- language (for example, `es-MX` is stored as `es`). Any other value is ignored and
35
+ language (for example, `fr-BE` is stored as `fr`). Any other value is ignored and
36
36
  the program's base language applies. Applied only when this request creates the
37
37
  participant.
38
38
  """
@@ -23,6 +23,29 @@ class ParticipantReward(BaseModel):
23
23
  approved_at: Optional[int] = FieldInfo(alias="approvedAt", default=None)
24
24
 
25
25
  amount: Optional[float] = None
26
+ """What the reward is worth in major units of `currency_iso`.
27
+
28
+ `None` for a percent-off coupon or when no amount is available.
29
+ """
30
+
31
+ amount_source: Optional[
32
+ Literal[
33
+ "STRIPE",
34
+ "CHARGEBEE",
35
+ "RECURLY",
36
+ "CHARGIFY",
37
+ "PAYPAL",
38
+ "VENMO",
39
+ "TANGO_CARD",
40
+ "TREMENDOUS",
41
+ "XTRM",
42
+ "METADATA",
43
+ ]
44
+ ] = FieldInfo(alias="amountSource", default=None)
45
+ """Where `amount` or `percent_off` comes from.
46
+
47
+ `METADATA` means the amount saved when the reward was earned.
48
+ """
26
49
 
27
50
  commission_structure: Optional[CommissionStructure] = FieldInfo(alias="commissionStructure", default=None)
28
51
 
@@ -36,6 +59,9 @@ class ParticipantReward(BaseModel):
36
59
 
37
60
  is_referrer: Optional[bool] = FieldInfo(alias="isReferrer", default=None)
38
61
 
62
+ percent_off: Optional[float] = FieldInfo(alias="percentOff", default=None)
63
+ """Discount of a percent-off coupon (`20` = 20% off); `None` for every other reward."""
64
+
39
65
  referred_id: Optional[str] = FieldInfo(alias="referredId", default=None)
40
66
 
41
67
  referrer_id: Optional[str] = FieldInfo(alias="referrerId", default=None)
@@ -32,7 +32,7 @@ class CampaignCreateMobileParticipantTokenParams(TypedDict, total=False):
32
32
  """The language of the participant's portal and program emails.
33
33
 
34
34
  Stored when it is one of the program's languages. A regional tag maps to its
35
- language (for example, `es-MX` is stored as `es`). Any other value is ignored and
35
+ language (for example, `fr-BE` is stored as `fr`). Any other value is ignored and
36
36
  the program's base language applies. Applied only when this request creates the
37
37
  participant.
38
38
  """
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: growsurf-python
3
- Version: 1.17.0
3
+ Version: 1.19.0
4
4
  Summary: The official Python library for the growsurf API
5
5
  Project-URL: Homepage, https://growsurf.com/
6
6
  Project-URL: Repository, https://github.com/growsurf/growsurf-python
@@ -1,6 +1,6 @@
1
1
  growsurf/__init__.py,sha256=PVU29rH3G7u2LvpyJd5G00W8Saj2Cp_BNzw7JIg8068,2683
2
2
  growsurf/_base_client.py,sha256=pn7oQo0b1sJEsNVbtqQzo75QdDLJX9bsIk8E5wChfNo,75534
3
- growsurf/_client.py,sha256=hrl6UKIUtUzBwZR-vaQRrZglj5sFz8px-jJ6KVQ7y-0,20315
3
+ growsurf/_client.py,sha256=i9iyfjJ5YjZ5CzwdY0B9bSKlB9jEPtcvh1jhX4QsPNE,18934
4
4
  growsurf/_compat.py,sha256=_9guQfzYnL3DNtudX5W7T2cdSskx89B5AFfhPQDxMUk,6811
5
5
  growsurf/_constants.py,sha256=S14PFzyN9-I31wiV7SmIlL5Ga0MLHxdvegInGdXH7tM,462
6
6
  growsurf/_exceptions.py,sha256=rIPcBhrWW4SREwiQpaVc3Jqrg97_CrC4uic1zViAHJ8,6662
@@ -11,7 +11,7 @@ growsurf/_resource.py,sha256=oeDA0FL2ottIchoUi86M_8eUqmtrGQLYTgfKYEzrsWg,1112
11
11
  growsurf/_response.py,sha256=RTZ8t27W4S6ExkCjzCg4HbcDUTCdOMgiheiMAuAxgu4,28937
12
12
  growsurf/_streaming.py,sha256=9aJ_V6JtddntWCon2Cq_MOLMnySnhc7wuqeZx7sUtKU,10558
13
13
  growsurf/_types.py,sha256=r8hAVihrutiLUToaJhSDys9T9sMc8BMy2qUrr3W_8Wo,7751
14
- growsurf/_version.py,sha256=ORowq4D_LEYoDNYK6Utnxajoh7zDElouXsk-Ruqk8Xw,161
14
+ growsurf/_version.py,sha256=0HPtKfQXDoKoFhJk2AVJKlowcGv1X6j_GxsOEnS070k,161
15
15
  growsurf/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
16
  growsurf/_utils/__init__.py,sha256=nQq-iFa5YxTaWySaLigatew5rHgTR0M75FNYm4mrO1s,2313
17
17
  growsurf/_utils/_compat.py,sha256=33246eDcl3pwL6kWsEhVuT4Akrd8gZEW9LPTm465ohk,1231
@@ -28,11 +28,10 @@ growsurf/_utils/_transform.py,sha256=vEWK1Rqad8CCays6Tr8OF-zgpjCA-ksLFo4omfLBBOU
28
28
  growsurf/_utils/_typing.py,sha256=N_5PPuFNsaygbtA_npZd98SVN1LQQvFTKL6bkWPBZGU,4786
29
29
  growsurf/_utils/_utils.py,sha256=2nPOzDrPe2GADpLCRM4bNQS8Mu7LjEiCG_LJ2AAL6jg,13111
30
30
  growsurf/lib/.keep,sha256=wuNrz-5SXo3jJaJOJgz4vFHM41YH_g20F5cRQo0vLes,224
31
- growsurf/resources/__init__.py,sha256=RYj6vjnPpErdBftiCuJtbwqGAnll4jXw6sg4qh6o988,1465
32
- growsurf/resources/account.py,sha256=C07rN77026gPHHb0U8y8qlvvluK2ZljUfygztbxxO0A,10173
31
+ growsurf/resources/__init__.py,sha256=MMpB55-oMmzcTRlAiP8CDC1VIJ4vG84ImWZHfvfvrmE,1002
33
32
  growsurf/resources/team.py,sha256=t0QN7d9BplF6N2Np0sHcmIcPNjJXs7OcZ1OvUN1g1c8,15801
34
33
  growsurf/resources/campaign/__init__.py,sha256=Rj89RbcI0Aexw0ZgEUvbsQ4FexYhrlBAFppZRTRSuI0,6513
35
- growsurf/resources/campaign/campaign.py,sha256=uerXO3NziqrAIgSgWdUqS47zgxzA6UWp1essY8IQmzY,133995
34
+ growsurf/resources/campaign/campaign.py,sha256=MGy0C1HNn-qIK11M69krtRBB2P5aNMITIDtnuUDAKP8,133995
36
35
  growsurf/resources/campaign/commission.py,sha256=Li8L2l8xRh4EXa_oD7R9RJ6m4xaA4pmt9gXTxib2Fkk,10426
37
36
  growsurf/resources/campaign/custom_domain.py,sha256=5O5DDRAXSX_eFVqGEgj_Vt9rjyoiBwuxwNo0JxUNPB8,18923
38
37
  growsurf/resources/campaign/design.py,sha256=rNfRc4PfDAz1-6w4cAp_4kDo389RnMidEA6zBxnbkyQ,12902
@@ -40,13 +39,12 @@ growsurf/resources/campaign/emails.py,sha256=X6DHJok1qWSxoH0F2bfFPnUoSiRYxbcQeVc
40
39
  growsurf/resources/campaign/installation.py,sha256=9gcxGpvc1aZXj5Sbwxnv6LGr3T9USyfhWdAB8gSXmdM,11616
41
40
  growsurf/resources/campaign/integrations.py,sha256=Hm88oAzXF7sM4111rfiojH-Tqye4I9yLxcQQnUF4ssI,7649
42
41
  growsurf/resources/campaign/options.py,sha256=ROQNy7kxPfKAKxEOgOkVLZB7__ZVBaGXhcm7GWxkjQA,12054
43
- growsurf/resources/campaign/participant.py,sha256=HxdDOWVP4W8bJzGepfdyA2ms-WhvCk5crixMVEV9bpc,129278
42
+ growsurf/resources/campaign/participant.py,sha256=Ylm_Hv5Z2ZVapwlT0sZkj9LINfkM-7Y6CjSDvybocpE,129278
44
43
  growsurf/resources/campaign/program_resources.py,sha256=e6ANK-_kuU5YTMQwKCCt35iOtooYwYPFR8AvJFDsTNA,17521
45
44
  growsurf/resources/campaign/reward.py,sha256=XM-kRIpFi_ofXoMfq20iDc_3Pyp-B1wiMXlbcukknec,14322
46
45
  growsurf/resources/campaign/rewards.py,sha256=YFORkFU4S4DR4-hUJA56a--WDSQjuAewS-fAH7Ya0AI,47075
47
46
  growsurf/resources/campaign/webhooks.py,sha256=swJ_ZwYEghI3tboyBl_8sDIqr8x1oVPQJSsdJhkGxAY,25322
48
- growsurf/types/__init__.py,sha256=8MnE5xKMTKwLgZ3kMTHzsJoKhUFsBp3DTJoJ-cY_UK4,4302
49
- growsurf/types/account_create_params.py,sha256=BXaWsGsiiSbYvVy6ftPNwu7nA2m1xI4PvE1xGEoGeCo,602
47
+ growsurf/types/__init__.py,sha256=ENFLt_SbnDYP0TRbkye-9XvzooVLxQUy42zsBJzfLS0,4140
50
48
  growsurf/types/affiliate_application.py,sha256=ilpjKfA53jQf-gRiO9u6TkHDI-gBWijQiEKAe6rr0Oc,2488
51
49
  growsurf/types/affiliate_application_answer.py,sha256=9AgNAiFl_UiPTn3241LQXXdLXt16nXMeUg0enDJbWVU,914
52
50
  growsurf/types/affiliate_application_list_response.py,sha256=ed36cERLIda7Q5XHicpbMZfsTPfFrdnjwXeTTZeigEs,636
@@ -56,7 +54,7 @@ growsurf/types/analytics_availability.py,sha256=WAwYl-B-UuI4s1pHs3dmL-yOe2eYPquk
56
54
  growsurf/types/analytics_unavailable_reason.py,sha256=AjYjGjaeod3M8xvqwk_BU_q42dFDh8SSoTNzK3_lgpc,416
57
55
  growsurf/types/campaign_activation_analytics_response.py,sha256=xQWzx1qIzJtN6Ai6zCiGScCLJXaRDhCIBzBC4sIrRnU,5334
58
56
  growsurf/types/campaign_create_affiliate_invite_params.py,sha256=_LO57fk6qNxMSt5mfmLOZLbEqBUxJYIQlMsEZYreDTY,690
59
- growsurf/types/campaign_create_mobile_participant_token_params.py,sha256=fUxJ7DCYfwoN4T2d6uT1JM5jBVDGpzAUZtk43U_2ifU,2360
57
+ growsurf/types/campaign_create_mobile_participant_token_params.py,sha256=e4ow4ukQoZ7qWu1rols-cirkuNON4D08hd7YR6f8KwM,2360
60
58
  growsurf/types/campaign_create_mobile_participant_token_response.py,sha256=IvIgtizBufLI-p9pk7MnyJj3XydHjLvdoAw-PWpPqdI,769
61
59
  growsurf/types/campaign_create_params.py,sha256=4S_TcS3ayucppF3dwlEUxDfKelPwJsziZLTks8ijZrA,3375
62
60
  growsurf/types/campaign_engagement_analytics.py,sha256=64WQ6cmdwvNE8I-a8rMCjEe_umEHV5puOcHQy_MsjH8,6399
@@ -74,7 +72,6 @@ growsurf/types/campaign_retrieve_analytics_response.py,sha256=nQkNvKitdXgFEYdF_q
74
72
  growsurf/types/campaign_review_affiliate_application_params.py,sha256=rCC_xlc47W56vm1sr5yDk1HhnEBZzfIoygQK9H4seEw,1653
75
73
  growsurf/types/campaign_update_params.py,sha256=qgxFGAPMx3y84I1SjfXx9bYzgfckC7rzDkzroW8P2Xo,729
76
74
  growsurf/types/commission_structure.py,sha256=l35rGsUOCus2bnPoDb_wi7Dv_zGsIms4Zyi46Lm5iEw,2918
77
- growsurf/types/create_account_response.py,sha256=AZA3B4EXvBtBGHyqNSrQ-S9DAStc3xfcm_m6gVayKU0,985
78
75
  growsurf/types/email_analytics.py,sha256=7nypZsSLmyd-_inLzBfB8Vpbu4z0j-2TAU6Np9PA1BA,1241
79
76
  growsurf/types/participant_commission_list.py,sha256=2xPLCwjcswv0K_1upzSrRNvY3kiuMX422gXpBuL3eqc,2033
80
77
  growsurf/types/participant_list.py,sha256=hdV0rzEwdx7trXyKmQ3aDq7Fy1KI8grL-t7SphGFP7M,429
@@ -105,11 +102,11 @@ growsurf/types/campaign/email_participant_response.py,sha256=A6i_s-YZnS8zYcKbMlZ
105
102
  growsurf/types/campaign/fraud_risk_level.py,sha256=e14xAEYtKH6gGnkJ9-sr81GZ2UY-zDQ6TZKCkBJLagw,228
106
103
  growsurf/types/campaign/integration.py,sha256=MIBG_M_zQJ_KHd-w_nCgCvP62o8eY0Q-IKwP-rzJ_oM,1223
107
104
  growsurf/types/campaign/integration_list_response.py,sha256=w09nrHrwarPJsDmNDxcDgMFsesAAF5H6leueoET6wNU,417
108
- growsurf/types/campaign/language.py,sha256=qGzy1qPBhszcibeipvauSeCJ7rn0v5FCb_zGP61R_e4,705
105
+ growsurf/types/campaign/language.py,sha256=5IIY8Ku7Tf7kGIRAhzS4pOUZ_2GiEHj5YZlEkckon3M,732
109
106
  growsurf/types/campaign/participant.py,sha256=XNetw_GU3GOVzsmldNs9S3rLyPeT_AvHzHwD9RQ-Zcw,6540
110
107
  growsurf/types/campaign/participant_activation_analytics.py,sha256=AB5Bdy60t-nc3_INVw03TKpp63lllutw8mSNPLZro7w,2686
111
108
  growsurf/types/campaign/participant_activity_logs_response.py,sha256=W-inUKJZimgwGlL6FqGlyQxG-XC9H7fnYMHtVi__uAQ,783
112
- growsurf/types/campaign/participant_add_params.py,sha256=cV8NruFX6V9fSZsTSH7NQed3RSzACEzjijDAD_PfxXo,2578
109
+ growsurf/types/campaign/participant_add_params.py,sha256=qiGcnbHR-eCJrTKFIC9EgBqWD6DH4ebc-zzQ5Ll7gcM,2578
113
110
  growsurf/types/campaign/participant_analytics_params.py,sha256=ZIBCKhL6vRw2EfmxOItWgDPVI7XFg7LsMaD_mU-Kckg,1839
114
111
  growsurf/types/campaign/participant_analytics_response.py,sha256=3cV3vqwt-k-L-C5CQpTXQhGDm1bbi5oCiviNnBpLr5Y,6782
115
112
  growsurf/types/campaign/participant_bulk_delete_params.py,sha256=U2tI2cUSardUuWXLxa4dWCuJGvcN5PmBxC53iqDgf-g,469
@@ -129,7 +126,7 @@ growsurf/types/campaign/participant_refund_transaction_params.py,sha256=z8G2swRh
129
126
  growsurf/types/campaign/participant_refund_transaction_response.py,sha256=0rrtiALlVTN7JpkBNQx9oiwd_JXC_jdCQJf2HzLG50I,699
130
127
  growsurf/types/campaign/participant_request_payout_destination_confirmation_params.py,sha256=9D-af7KC5-PDslnV9XrvBe7-WrjPEcGcAc18Ksb719I,503
131
128
  growsurf/types/campaign/participant_request_payout_destination_confirmation_response.py,sha256=sI6wlsyNvsx7yv7T4vXuA2jINqDNjNY5ekmqyP12Vbo,843
132
- growsurf/types/campaign/participant_reward.py,sha256=L4fN1LeAfVdR3qAoF0zhzNypP8BjFOywoe79QVDxCmU,1329
129
+ growsurf/types/campaign/participant_reward.py,sha256=kR6MQk6OZrwKND4fbCrqWzKQOlXdWcHmfsDxMbKKxGU,2114
133
130
  growsurf/types/campaign/participant_send_invites_params.py,sha256=Jr21i0OvqSCYVnWsmy5xVu2g7BhGahF-5ompc5Hm9hk,644
134
131
  growsurf/types/campaign/participant_send_invites_response.py,sha256=kxqP0EhbFN6dC0P7na7fWYkxhSRD5vhQ-INgGxTr9n8,388
135
132
  growsurf/types/campaign/participant_trigger_referral_params.py,sha256=CsjLpiwuBLBa7zpObaKXMV8uLfNtjd0A0K63Ev5Nrpw,778
@@ -157,7 +154,7 @@ growsurf/types/campaign/webhook_list_response.py,sha256=tSk9nTbcsj5Y-j4RjQwu9SZc
157
154
  growsurf/types/campaign/webhook_test_params.py,sha256=X1Osg9-4KGJbZauG_7rDqTE7cKCypeSzgumIhnxj9dk,468
158
155
  growsurf/types/campaign/webhook_test_response.py,sha256=AahcckKSLUeIgpwlosOOmbkioF62xREXgLbieHAPAdI,576
159
156
  growsurf/types/campaign/webhook_update_params.py,sha256=SavKhws8pfybC7O40ovtCreEmOwihEGPOCEX9Iua9cE,598
160
- growsurf_python-1.17.0.dist-info/METADATA,sha256=ihtv2BSFyytUO0_tK8UGhwRCyaJtIr3L1Xsfeo5QR8Y,13950
161
- growsurf_python-1.17.0.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
162
- growsurf_python-1.17.0.dist-info/licenses/LICENSE,sha256=kTHLVE-ra1gtTxcn395uFqcOzcErebE-mDdPNW7b8OU,11338
163
- growsurf_python-1.17.0.dist-info/RECORD,,
157
+ growsurf_python-1.19.0.dist-info/METADATA,sha256=j26ELhp7c2sgn93a8So-1JNw5P9Iqco1KBTcl81RuaM,13950
158
+ growsurf_python-1.19.0.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
159
+ growsurf_python-1.19.0.dist-info/licenses/LICENSE,sha256=kTHLVE-ra1gtTxcn395uFqcOzcErebE-mDdPNW7b8OU,11338
160
+ growsurf_python-1.19.0.dist-info/RECORD,,
@@ -1,219 +0,0 @@
1
- # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
-
3
- from __future__ import annotations
4
-
5
- import httpx
6
-
7
- from ..types import account_create_params
8
- from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given
9
- from .._utils import maybe_transform, async_maybe_transform
10
- from .._compat import cached_property
11
- from .._resource import SyncAPIResource, AsyncAPIResource
12
- from .._response import (
13
- to_raw_response_wrapper,
14
- to_streamed_response_wrapper,
15
- async_to_raw_response_wrapper,
16
- async_to_streamed_response_wrapper,
17
- )
18
- from .._base_client import make_request_options
19
- from ..types.create_account_response import CreateAccountResponse
20
-
21
- __all__ = ["AccountResource", "AsyncAccountResource"]
22
-
23
-
24
- class AccountResource(SyncAPIResource):
25
- """Create a GrowSurf account and its initial API key."""
26
-
27
- @cached_property
28
- def with_raw_response(self) -> AccountResourceWithRawResponse:
29
- """Return the raw response object instead of parsed content."""
30
- return AccountResourceWithRawResponse(self)
31
-
32
- @cached_property
33
- def with_streaming_response(self) -> AccountResourceWithStreamingResponse:
34
- """Stream the response instead of reading it eagerly."""
35
- return AccountResourceWithStreamingResponse(self)
36
-
37
- def create(
38
- self,
39
- *,
40
- email: str,
41
- company: str | Omit = omit,
42
- first_name: str | Omit = omit,
43
- last_name: str | Omit = omit,
44
- extra_headers: Headers | None = None,
45
- extra_query: Query | None = None,
46
- extra_body: Body | None = None,
47
- timeout: float | httpx.Timeout | None | NotGiven = not_given,
48
- ) -> CreateAccountResponse:
49
- """
50
- Creates a new GrowSurf account. This is the only endpoint that does not require an API key.
51
- Before calling it, an authorized account owner must review and approve GrowSurf's [Terms of
52
- Service](https://growsurf.com/terms) and [Privacy Policy](https://growsurf.com/privacy). The
53
- account starts a 14-day Business trial without a credit card. The response includes an API
54
- key for the new account, shown once in the response. The key is a secret: store it in a
55
- secret manager and do not put it in logs, screenshots, URLs, model context, analytics, or
56
- generated output. A lost key cannot be recovered through this API, so do not create an
57
- account here unless you can store the key somewhere that outlives the current conversation.
58
- If you cannot, ask the account owner to connect GrowSurf's hosted MCP server at
59
- `https://mcp.growsurf.com` instead, which keeps the credential with your tool rather than in
60
- chat. The key is locked until the team owner's email address is verified: authenticated
61
- program and resource endpoints return a `403` with error code `EMAIL_NOT_VERIFIED_ERROR`
62
- until then (resend the email via `POST /team/owner/verification-email`, then retry).
63
- Verification unlocks this same key - keep it and retry rather than requesting a replacement.
64
- A welcome email is sent to the address with the verification link and a set-password link
65
- for dashboard access. Accounts whose email is never verified are deleted automatically after
66
- 7 days. Separately, for security, the API key is replaced the first time the account owner
67
- signs in to the GrowSurf dashboard; email verification does not trigger that, and the
68
- previous key then returns a `403` with error code `NOT_AUTHORIZED_ERROR`. Some actions (such
69
- as emailing participants) additionally require GrowSurf to verify the team first. Calling
70
- this endpoint accepts those policies on the account holder's behalf.
71
-
72
- Args:
73
- email: The email address for the new GrowSurf account. Personal emails and disposable email addresses are not accepted.
74
-
75
- company: Company name for the new account.
76
-
77
- first_name: First name for the new account owner.
78
-
79
- last_name: Last name for the new account owner.
80
-
81
- extra_headers: Send extra headers
82
-
83
- extra_query: Add additional query parameters to the request
84
-
85
- extra_body: Add additional JSON properties to the request
86
-
87
- timeout: Override the client-level default timeout for this request, in seconds
88
- """
89
- return self._post(
90
- "/accounts",
91
- body=maybe_transform(
92
- {
93
- "email": email,
94
- "company": company,
95
- "first_name": first_name,
96
- "last_name": last_name,
97
- },
98
- account_create_params.AccountCreateParams,
99
- ),
100
- options=make_request_options(
101
- extra_headers=extra_headers,
102
- extra_query=extra_query,
103
- extra_body=extra_body,
104
- timeout=timeout,
105
- security={"api_key_auth": False},
106
- ),
107
- cast_to=CreateAccountResponse,
108
- )
109
-
110
-
111
- class AsyncAccountResource(AsyncAPIResource):
112
- """Create a GrowSurf account and its initial API key."""
113
-
114
- @cached_property
115
- def with_raw_response(self) -> AsyncAccountResourceWithRawResponse:
116
- """Return the raw response object instead of parsed content."""
117
- return AsyncAccountResourceWithRawResponse(self)
118
-
119
- @cached_property
120
- def with_streaming_response(self) -> AsyncAccountResourceWithStreamingResponse:
121
- """Stream the response instead of reading it eagerly."""
122
- return AsyncAccountResourceWithStreamingResponse(self)
123
-
124
- async def create(
125
- self,
126
- *,
127
- email: str,
128
- company: str | Omit = omit,
129
- first_name: str | Omit = omit,
130
- last_name: str | Omit = omit,
131
- extra_headers: Headers | None = None,
132
- extra_query: Query | None = None,
133
- extra_body: Body | None = None,
134
- timeout: float | httpx.Timeout | None | NotGiven = not_given,
135
- ) -> CreateAccountResponse:
136
- """
137
- Creates a new GrowSurf account. This is the only endpoint that does not require an API key.
138
- Before calling it, an authorized account owner must review and approve GrowSurf's [Terms of
139
- Service](https://growsurf.com/terms) and [Privacy Policy](https://growsurf.com/privacy). The
140
- account starts a 14-day Business trial without a credit card. The response includes an API
141
- key for the new account, shown once in the response. The key is a secret: store it in a
142
- secret manager and do not put it in logs, screenshots, URLs, model context, analytics, or
143
- generated output. A lost key cannot be recovered through this API, so do not create an
144
- account here unless you can store the key somewhere that outlives the current conversation.
145
- If you cannot, ask the account owner to connect GrowSurf's hosted MCP server at
146
- `https://mcp.growsurf.com` instead, which keeps the credential with your tool rather than in
147
- chat. The key is locked until the team owner's email address is verified: authenticated
148
- program and resource endpoints return a `403` with error code `EMAIL_NOT_VERIFIED_ERROR`
149
- until then (resend the email via `POST /team/owner/verification-email`, then retry).
150
- Verification unlocks this same key - keep it and retry rather than requesting a replacement.
151
- A welcome email is sent to the address with the verification link and a set-password link
152
- for dashboard access. Accounts whose email is never verified are deleted automatically after
153
- 7 days. Separately, for security, the API key is replaced the first time the account owner
154
- signs in to the GrowSurf dashboard; email verification does not trigger that, and the
155
- previous key then returns a `403` with error code `NOT_AUTHORIZED_ERROR`. Some actions (such
156
- as emailing participants) additionally require GrowSurf to verify the team first. Calling
157
- this endpoint accepts those policies on the account holder's behalf.
158
-
159
- Args:
160
- email: The email address for the new GrowSurf account. Personal emails and disposable email addresses are not accepted.
161
-
162
- company: Company name for the new account.
163
-
164
- first_name: First name for the new account owner.
165
-
166
- last_name: Last name for the new account owner.
167
-
168
- extra_headers: Send extra headers
169
-
170
- extra_query: Add additional query parameters to the request
171
-
172
- extra_body: Add additional JSON properties to the request
173
-
174
- timeout: Override the client-level default timeout for this request, in seconds
175
- """
176
- return await self._post(
177
- "/accounts",
178
- body=await async_maybe_transform(
179
- {
180
- "email": email,
181
- "company": company,
182
- "first_name": first_name,
183
- "last_name": last_name,
184
- },
185
- account_create_params.AccountCreateParams,
186
- ),
187
- options=make_request_options(
188
- extra_headers=extra_headers,
189
- extra_query=extra_query,
190
- extra_body=extra_body,
191
- timeout=timeout,
192
- security={"api_key_auth": False},
193
- ),
194
- cast_to=CreateAccountResponse,
195
- )
196
-
197
-
198
- class AccountResourceWithRawResponse:
199
- def __init__(self, account: AccountResource) -> None:
200
- self._account = account
201
- self.create = to_raw_response_wrapper(account.create)
202
-
203
-
204
- class AsyncAccountResourceWithRawResponse:
205
- def __init__(self, account: AsyncAccountResource) -> None:
206
- self._account = account
207
- self.create = async_to_raw_response_wrapper(account.create)
208
-
209
-
210
- class AccountResourceWithStreamingResponse:
211
- def __init__(self, account: AccountResource) -> None:
212
- self._account = account
213
- self.create = to_streamed_response_wrapper(account.create)
214
-
215
-
216
- class AsyncAccountResourceWithStreamingResponse:
217
- def __init__(self, account: AsyncAccountResource) -> None:
218
- self._account = account
219
- self.create = async_to_streamed_response_wrapper(account.create)
@@ -1,23 +0,0 @@
1
- # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
-
3
- from __future__ import annotations
4
-
5
- from typing_extensions import Required, Annotated, TypedDict
6
-
7
- from .._utils import PropertyInfo
8
-
9
- __all__ = ["AccountCreateParams"]
10
-
11
-
12
- class AccountCreateParams(TypedDict, total=False):
13
- email: Required[str]
14
- """The email address for the new account.
15
-
16
- Personal emails and disposable email addresses are not accepted.
17
- """
18
-
19
- company: str
20
-
21
- first_name: Annotated[str, PropertyInfo(alias="firstName")]
22
-
23
- last_name: Annotated[str, PropertyInfo(alias="lastName")]
@@ -1,29 +0,0 @@
1
- # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
-
3
- from typing_extensions import Literal
4
-
5
- from pydantic import Field as FieldInfo
6
-
7
- from .._models import BaseModel
8
-
9
- __all__ = ["CreateAccountResponse"]
10
-
11
-
12
- class CreateAccountResponse(BaseModel):
13
- email: str
14
- """Email address for the new account."""
15
-
16
- api_key: str = FieldInfo(alias="apiKey")
17
- """An API key for the new account.
18
-
19
- Use it as the `Bearer` token on subsequent requests. It is shown once and locked
20
- (`403` `EMAIL_NOT_VERIFIED_ERROR`) until the account's email is verified;
21
- verification unlocks this same key, so keep it and retry. It is replaced only when
22
- the account owner first signs in to the GrowSurf dashboard.
23
- """
24
-
25
- verification_status: Literal["NOT_REQUESTED", "REQUESTED", "VERIFIED"] = FieldInfo(alias="verificationStatus")
26
- """GrowSurf team verification state.
27
-
28
- `VERIFIED` is required before a program can send participant emails.
29
- """