Skip to content

Commit 0bbd4e3

Browse files
rgambeegithub-actions[bot]
authored andcommitted
Return user's accounts from /whoami endpoint (#5854)
The `/whoami` endpoint now returns the accounts that the user belongs to. This will be useful for membership gates in the app's agent service in the near future. This PR includes some unrelated SDK changes regarding `extra_notification_text`. Sourced from commit 6e8e7266a0f90bd7bfbdb67c10d35cabf9aed744
1 parent e89174d commit 0bbd4e3

6 files changed

Lines changed: 109 additions & 49 deletions

File tree

src/futuresearch/generated/api/default/whoami_whoami_get.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ def sync_detailed(
4545
) -> Response[WhoamiResponse]:
4646
"""Whoami
4747
48-
Return the authenticated user's information.
48+
Return the authenticated user's information and account memberships.
4949
5050
Raises:
5151
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
@@ -70,7 +70,7 @@ def sync(
7070
) -> WhoamiResponse | None:
7171
"""Whoami
7272
73-
Return the authenticated user's information.
73+
Return the authenticated user's information and account memberships.
7474
7575
Raises:
7676
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
@@ -91,7 +91,7 @@ async def asyncio_detailed(
9191
) -> Response[WhoamiResponse]:
9292
"""Whoami
9393
94-
Return the authenticated user's information.
94+
Return the authenticated user's information and account memberships.
9595
9696
Raises:
9797
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
@@ -114,7 +114,7 @@ async def asyncio(
114114
) -> WhoamiResponse | None:
115115
"""Whoami
116116
117-
Return the authenticated user's information.
117+
Return the authenticated user's information and account memberships.
118118
119119
Raises:
120120
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.

src/futuresearch/generated/models/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
"""Contains all the data models used in inputs/outputs"""
22

3+
from .account_info import AccountInfo
34
from .agent_map_operation import AgentMapOperation
45
from .agent_map_operation_input_type_1_item import AgentMapOperationInputType1Item
56
from .agent_map_operation_input_type_2 import AgentMapOperationInputType2
@@ -92,6 +93,7 @@
9293
from .whoami_response import WhoamiResponse
9394

9495
__all__ = (
96+
"AccountInfo",
9597
"AgentMapOperation",
9698
"AgentMapOperationInputType1Item",
9799
"AgentMapOperationInputType2",
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
from __future__ import annotations
2+
3+
from collections.abc import Mapping
4+
from typing import Any, TypeVar
5+
6+
from attrs import define as _attrs_define
7+
from attrs import field as _attrs_field
8+
9+
T = TypeVar("T", bound="AccountInfo")
10+
11+
12+
@_attrs_define
13+
class AccountInfo:
14+
"""Account info from accounts_for_user RPC.
15+
16+
Attributes:
17+
account_id (str):
18+
personal_account (bool):
19+
"""
20+
21+
account_id: str
22+
personal_account: bool
23+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
24+
25+
def to_dict(self) -> dict[str, Any]:
26+
account_id = self.account_id
27+
28+
personal_account = self.personal_account
29+
30+
field_dict: dict[str, Any] = {}
31+
field_dict.update(self.additional_properties)
32+
field_dict.update(
33+
{
34+
"account_id": account_id,
35+
"personal_account": personal_account,
36+
}
37+
)
38+
39+
return field_dict
40+
41+
@classmethod
42+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
43+
d = dict(src_dict)
44+
account_id = d.pop("account_id")
45+
46+
personal_account = d.pop("personal_account")
47+
48+
account_info = cls(
49+
account_id=account_id,
50+
personal_account=personal_account,
51+
)
52+
53+
account_info.additional_properties = d
54+
return account_info
55+
56+
@property
57+
def additional_keys(self) -> list[str]:
58+
return list(self.additional_properties.keys())
59+
60+
def __getitem__(self, key: str) -> Any:
61+
return self.additional_properties[key]
62+
63+
def __setitem__(self, key: str, value: Any) -> None:
64+
self.additional_properties[key] = value
65+
66+
def __delitem__(self, key: str) -> None:
67+
del self.additional_properties[key]
68+
69+
def __contains__(self, key: str) -> bool:
70+
return key in self.additional_properties

src/futuresearch/generated/models/agent_map_operation.py

Lines changed: 7 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,9 @@
1212
from ..types import UNSET, Unset
1313

1414
if TYPE_CHECKING:
15-
from ..models.agent_map_operation_input_type_1_item import (
16-
AgentMapOperationInputType1Item,
17-
)
15+
from ..models.agent_map_operation_input_type_1_item import AgentMapOperationInputType1Item
1816
from ..models.agent_map_operation_input_type_2 import AgentMapOperationInputType2
19-
from ..models.agent_map_operation_response_schema_type_0 import (
20-
AgentMapOperationResponseSchemaType0,
21-
)
17+
from ..models.agent_map_operation_response_schema_type_0 import AgentMapOperationResponseSchemaType0
2218

2319

2420
T = TypeVar("T", bound="AgentMapOperation")
@@ -81,9 +77,7 @@ class AgentMapOperation:
8177
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
8278

8379
def to_dict(self) -> dict[str, Any]:
84-
from ..models.agent_map_operation_response_schema_type_0 import (
85-
AgentMapOperationResponseSchemaType0,
86-
)
80+
from ..models.agent_map_operation_response_schema_type_0 import AgentMapOperationResponseSchemaType0
8781

8882
input_: dict[str, Any] | list[dict[str, Any]] | str
8983
if isinstance(self.input_, UUID):
@@ -214,15 +208,9 @@ def to_dict(self) -> dict[str, Any]:
214208

215209
@classmethod
216210
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
217-
from ..models.agent_map_operation_input_type_1_item import (
218-
AgentMapOperationInputType1Item,
219-
)
220-
from ..models.agent_map_operation_input_type_2 import (
221-
AgentMapOperationInputType2,
222-
)
223-
from ..models.agent_map_operation_response_schema_type_0 import (
224-
AgentMapOperationResponseSchemaType0,
225-
)
211+
from ..models.agent_map_operation_input_type_1_item import AgentMapOperationInputType1Item
212+
from ..models.agent_map_operation_input_type_2 import AgentMapOperationInputType2
213+
from ..models.agent_map_operation_response_schema_type_0 import AgentMapOperationResponseSchemaType0
226214

227215
d = dict(src_dict)
228216

@@ -392,9 +380,7 @@ def _parse_extra_notification_text(data: object) -> None | str | Unset:
392380
return data
393381
return cast(None | str | Unset, data)
394382

395-
extra_notification_text = _parse_extra_notification_text(
396-
d.pop("extra_notification_text", UNSET)
397-
)
383+
extra_notification_text = _parse_extra_notification_text(d.pop("extra_notification_text", UNSET))
398384

399385
agent_map_operation = cls(
400386
input_=input_,

src/futuresearch/generated/models/single_agent_operation.py

Lines changed: 8 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,9 @@
1212
from ..types import UNSET, Unset
1313

1414
if TYPE_CHECKING:
15-
from ..models.single_agent_operation_input_type_1_item import (
16-
SingleAgentOperationInputType1Item,
17-
)
18-
from ..models.single_agent_operation_input_type_2 import (
19-
SingleAgentOperationInputType2,
20-
)
21-
from ..models.single_agent_operation_response_schema_type_0 import (
22-
SingleAgentOperationResponseSchemaType0,
23-
)
15+
from ..models.single_agent_operation_input_type_1_item import SingleAgentOperationInputType1Item
16+
from ..models.single_agent_operation_input_type_2 import SingleAgentOperationInputType2
17+
from ..models.single_agent_operation_response_schema_type_0 import SingleAgentOperationResponseSchemaType0
2418

2519

2620
T = TypeVar("T", bound="SingleAgentOperation")
@@ -70,9 +64,7 @@ class SingleAgentOperation:
7064
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
7165

7266
def to_dict(self) -> dict[str, Any]:
73-
from ..models.single_agent_operation_response_schema_type_0 import (
74-
SingleAgentOperationResponseSchemaType0,
75-
)
67+
from ..models.single_agent_operation_response_schema_type_0 import SingleAgentOperationResponseSchemaType0
7668

7769
input_: dict[str, Any] | list[dict[str, Any]] | str
7870
if isinstance(self.input_, UUID):
@@ -185,15 +177,9 @@ def to_dict(self) -> dict[str, Any]:
185177

186178
@classmethod
187179
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
188-
from ..models.single_agent_operation_input_type_1_item import (
189-
SingleAgentOperationInputType1Item,
190-
)
191-
from ..models.single_agent_operation_input_type_2 import (
192-
SingleAgentOperationInputType2,
193-
)
194-
from ..models.single_agent_operation_response_schema_type_0 import (
195-
SingleAgentOperationResponseSchemaType0,
196-
)
180+
from ..models.single_agent_operation_input_type_1_item import SingleAgentOperationInputType1Item
181+
from ..models.single_agent_operation_input_type_2 import SingleAgentOperationInputType2
182+
from ..models.single_agent_operation_response_schema_type_0 import SingleAgentOperationResponseSchemaType0
197183

198184
d = dict(src_dict)
199185

@@ -344,9 +330,7 @@ def _parse_extra_notification_text(data: object) -> None | str | Unset:
344330
return data
345331
return cast(None | str | Unset, data)
346332

347-
extra_notification_text = _parse_extra_notification_text(
348-
d.pop("extra_notification_text", UNSET)
349-
)
333+
extra_notification_text = _parse_extra_notification_text(d.pop("extra_notification_text", UNSET))
350334

351335
single_agent_operation = cls(
352336
input_=input_,

src/futuresearch/generated/models/whoami_response.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
from attrs import field as _attrs_field
88

99
if TYPE_CHECKING:
10+
from ..models.account_info import AccountInfo
1011
from ..models.user_base import UserBase
1112

1213

@@ -18,33 +19,50 @@ class WhoamiResponse:
1819
"""
1920
Attributes:
2021
user (UserBase): Base user model with essential user information.
22+
accounts (list[AccountInfo]):
2123
"""
2224

2325
user: UserBase
26+
accounts: list[AccountInfo]
2427
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
2528

2629
def to_dict(self) -> dict[str, Any]:
2730
user = self.user.to_dict()
2831

32+
accounts = []
33+
for accounts_item_data in self.accounts:
34+
accounts_item = accounts_item_data.to_dict()
35+
accounts.append(accounts_item)
36+
2937
field_dict: dict[str, Any] = {}
3038
field_dict.update(self.additional_properties)
3139
field_dict.update(
3240
{
3341
"user": user,
42+
"accounts": accounts,
3443
}
3544
)
3645

3746
return field_dict
3847

3948
@classmethod
4049
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
50+
from ..models.account_info import AccountInfo
4151
from ..models.user_base import UserBase
4252

4353
d = dict(src_dict)
4454
user = UserBase.from_dict(d.pop("user"))
4555

56+
accounts = []
57+
_accounts = d.pop("accounts")
58+
for accounts_item_data in _accounts:
59+
accounts_item = AccountInfo.from_dict(accounts_item_data)
60+
61+
accounts.append(accounts_item)
62+
4663
whoami_response = cls(
4764
user=user,
65+
accounts=accounts,
4866
)
4967

5068
whoami_response.additional_properties = d

0 commit comments

Comments
 (0)