Skip to content

Commit b058623

Browse files
feat: UTC-447: Contributed projects fields in membership detail endpoint (#709)
Co-authored-by: fern-api[bot] <115122769+fern-api[bot]@users.noreply.github.com> Co-authored-by: robot-ci-heartex <robot-ci-heartex@users.noreply.github.com>
1 parent 04ae192 commit b058623

13 files changed

Lines changed: 216 additions & 6 deletions

reference.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29192,6 +29192,14 @@ client.organizations.members.list(
2919229192
<dl>
2919329193
<dd>
2919429194

29195+
**contributed_to_projects:** `typing.Optional[bool]` — Whether to include projects created and contributed to by the members.
29196+
29197+
</dd>
29198+
</dl>
29199+
29200+
<dl>
29201+
<dd>
29202+
2919529203
**exclude_project_id:** `typing.Optional[int]` — Project ID to exclude users who are already associated with this project (direct members, workspace members, or implicit admin/owner access).
2919629204

2919729205
</dd>
@@ -29447,6 +29455,14 @@ client.organizations.members.get(
2944729455
<dl>
2944829456
<dd>
2944929457

29458+
**contributed_to_projects:** `typing.Optional[bool]` — Whether to include projects created and contributed to by the member.
29459+
29460+
</dd>
29461+
</dl>
29462+
29463+
<dl>
29464+
<dd>
29465+
2945029466
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
2945129467

2945229468
</dd>

src/label_studio_sdk/__init__.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,8 @@
7171
LseKeyIndicatorValue,
7272
LseOrganization,
7373
LseOrganizationMemberList,
74+
LseOrganizationMemberListContributedToProjectsItem,
75+
LseOrganizationMemberListCreatedProjectsItem,
7476
LseProject,
7577
LseProjectCounts,
7678
LseProjectCreate,
@@ -94,6 +96,8 @@
9496
LseUser,
9597
LseUserApi,
9698
LseUserOrganizationMemberList,
99+
LseUserOrganizationMemberListContributedToProjectsItem,
100+
LseUserOrganizationMemberListCreatedProjectsItem,
97101
LseapiTokenCreate,
98102
LseapiTokenList,
99103
LsejwtSettings,
@@ -114,6 +118,8 @@
114118
OrganizationId,
115119
OrganizationInvite,
116120
OrganizationMember,
121+
OrganizationMemberContributedToProjectsItem,
122+
OrganizationMemberCreatedProjectsItem,
117123
OrganizationMembership,
118124
OrganizationPermission,
119125
OrganizationPermissionRequest,
@@ -435,6 +441,8 @@
435441
"LseKeyIndicatorValue",
436442
"LseOrganization",
437443
"LseOrganizationMemberList",
444+
"LseOrganizationMemberListContributedToProjectsItem",
445+
"LseOrganizationMemberListCreatedProjectsItem",
438446
"LseProject",
439447
"LseProjectCounts",
440448
"LseProjectCreate",
@@ -458,6 +466,8 @@
458466
"LseUser",
459467
"LseUserApi",
460468
"LseUserOrganizationMemberList",
469+
"LseUserOrganizationMemberListContributedToProjectsItem",
470+
"LseUserOrganizationMemberListCreatedProjectsItem",
461471
"LseapiTokenCreate",
462472
"LseapiTokenList",
463473
"LsejwtSettings",
@@ -480,6 +490,8 @@
480490
"OrganizationId",
481491
"OrganizationInvite",
482492
"OrganizationMember",
493+
"OrganizationMemberContributedToProjectsItem",
494+
"OrganizationMemberCreatedProjectsItem",
483495
"OrganizationMembership",
484496
"OrganizationPermission",
485497
"OrganizationPermissionRequest",

src/label_studio_sdk/organizations/members/client.py

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ def list(
2828
self,
2929
id: int,
3030
*,
31+
contributed_to_projects: typing.Optional[bool] = None,
3132
exclude_project_id: typing.Optional[int] = None,
3233
exclude_workspace_id: typing.Optional[int] = None,
3334
ordering: typing.Optional[str] = None,
@@ -51,6 +52,9 @@ def list(
5152
id : int
5253
A unique integer value identifying this organization.
5354
55+
contributed_to_projects : typing.Optional[bool]
56+
Whether to include projects created and contributed to by the members.
57+
5458
exclude_project_id : typing.Optional[int]
5559
Project ID to exclude users who are already associated with this project (direct members, workspace members, or implicit admin/owner access).
5660
@@ -108,6 +112,7 @@ def list(
108112
f"api/organizations/{jsonable_encoder(id)}/memberships",
109113
method="GET",
110114
params={
115+
"contributed_to_projects": contributed_to_projects,
111116
"exclude_project_id": exclude_project_id,
112117
"exclude_workspace_id": exclude_workspace_id,
113118
"ordering": ordering,
@@ -217,7 +222,12 @@ def update(
217222
raise ApiError(status_code=_response.status_code, body=_response_json)
218223

219224
def get(
220-
self, id: int, user_pk: int, *, request_options: typing.Optional[RequestOptions] = None
225+
self,
226+
id: int,
227+
user_pk: int,
228+
*,
229+
contributed_to_projects: typing.Optional[bool] = None,
230+
request_options: typing.Optional[RequestOptions] = None,
221231
) -> OrganizationMember:
222232
"""
223233
Get organization member details by user ID.
@@ -229,6 +239,9 @@ def get(
229239
user_pk : int
230240
A unique integer value identifying the user to get organization details for.
231241
242+
contributed_to_projects : typing.Optional[bool]
243+
Whether to include projects created and contributed to by the member.
244+
232245
request_options : typing.Optional[RequestOptions]
233246
Request-specific configuration.
234247
@@ -252,6 +265,9 @@ def get(
252265
_response = self._client_wrapper.httpx_client.request(
253266
f"api/organizations/{jsonable_encoder(id)}/memberships/{jsonable_encoder(user_pk)}/",
254267
method="GET",
268+
params={
269+
"contributed_to_projects": contributed_to_projects,
270+
},
255271
request_options=request_options,
256272
)
257273
try:
@@ -350,6 +366,7 @@ async def list(
350366
self,
351367
id: int,
352368
*,
369+
contributed_to_projects: typing.Optional[bool] = None,
353370
exclude_project_id: typing.Optional[int] = None,
354371
exclude_workspace_id: typing.Optional[int] = None,
355372
ordering: typing.Optional[str] = None,
@@ -373,6 +390,9 @@ async def list(
373390
id : int
374391
A unique integer value identifying this organization.
375392
393+
contributed_to_projects : typing.Optional[bool]
394+
Whether to include projects created and contributed to by the members.
395+
376396
exclude_project_id : typing.Optional[int]
377397
Project ID to exclude users who are already associated with this project (direct members, workspace members, or implicit admin/owner access).
378398
@@ -438,6 +458,7 @@ async def main() -> None:
438458
f"api/organizations/{jsonable_encoder(id)}/memberships",
439459
method="GET",
440460
params={
461+
"contributed_to_projects": contributed_to_projects,
441462
"exclude_project_id": exclude_project_id,
442463
"exclude_workspace_id": exclude_workspace_id,
443464
"ordering": ordering,
@@ -555,7 +576,12 @@ async def main() -> None:
555576
raise ApiError(status_code=_response.status_code, body=_response_json)
556577

557578
async def get(
558-
self, id: int, user_pk: int, *, request_options: typing.Optional[RequestOptions] = None
579+
self,
580+
id: int,
581+
user_pk: int,
582+
*,
583+
contributed_to_projects: typing.Optional[bool] = None,
584+
request_options: typing.Optional[RequestOptions] = None,
559585
) -> OrganizationMember:
560586
"""
561587
Get organization member details by user ID.
@@ -567,6 +593,9 @@ async def get(
567593
user_pk : int
568594
A unique integer value identifying the user to get organization details for.
569595
596+
contributed_to_projects : typing.Optional[bool]
597+
Whether to include projects created and contributed to by the member.
598+
570599
request_options : typing.Optional[RequestOptions]
571600
Request-specific configuration.
572601
@@ -598,6 +627,9 @@ async def main() -> None:
598627
_response = await self._client_wrapper.httpx_client.request(
599628
f"api/organizations/{jsonable_encoder(id)}/memberships/{jsonable_encoder(user_pk)}/",
600629
method="GET",
630+
params={
631+
"contributed_to_projects": contributed_to_projects,
632+
},
601633
request_options=request_options,
602634
)
603635
try:

src/label_studio_sdk/types/__init__.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,10 @@
7070
from .lse_key_indicator_value import LseKeyIndicatorValue
7171
from .lse_organization import LseOrganization
7272
from .lse_organization_member_list import LseOrganizationMemberList
73+
from .lse_organization_member_list_contributed_to_projects_item import (
74+
LseOrganizationMemberListContributedToProjectsItem,
75+
)
76+
from .lse_organization_member_list_created_projects_item import LseOrganizationMemberListCreatedProjectsItem
7377
from .lse_project import LseProject
7478
from .lse_project_counts import LseProjectCounts
7579
from .lse_project_create import LseProjectCreate
@@ -93,6 +97,10 @@
9397
from .lse_user import LseUser
9498
from .lse_user_api import LseUserApi
9599
from .lse_user_organization_member_list import LseUserOrganizationMemberList
100+
from .lse_user_organization_member_list_contributed_to_projects_item import (
101+
LseUserOrganizationMemberListContributedToProjectsItem,
102+
)
103+
from .lse_user_organization_member_list_created_projects_item import LseUserOrganizationMemberListCreatedProjectsItem
96104
from .lseapi_token_create import LseapiTokenCreate
97105
from .lseapi_token_list import LseapiTokenList
98106
from .lsejwt_settings import LsejwtSettings
@@ -113,6 +121,8 @@
113121
from .organization_id import OrganizationId
114122
from .organization_invite import OrganizationInvite
115123
from .organization_member import OrganizationMember
124+
from .organization_member_contributed_to_projects_item import OrganizationMemberContributedToProjectsItem
125+
from .organization_member_created_projects_item import OrganizationMemberCreatedProjectsItem
116126
from .organization_membership import OrganizationMembership
117127
from .organization_permission import OrganizationPermission
118128
from .organization_permission_request import OrganizationPermissionRequest
@@ -270,6 +280,8 @@
270280
"LseKeyIndicatorValue",
271281
"LseOrganization",
272282
"LseOrganizationMemberList",
283+
"LseOrganizationMemberListContributedToProjectsItem",
284+
"LseOrganizationMemberListCreatedProjectsItem",
273285
"LseProject",
274286
"LseProjectCounts",
275287
"LseProjectCreate",
@@ -293,6 +305,8 @@
293305
"LseUser",
294306
"LseUserApi",
295307
"LseUserOrganizationMemberList",
308+
"LseUserOrganizationMemberListContributedToProjectsItem",
309+
"LseUserOrganizationMemberListCreatedProjectsItem",
296310
"LseapiTokenCreate",
297311
"LseapiTokenList",
298312
"LsejwtSettings",
@@ -313,6 +327,8 @@
313327
"OrganizationId",
314328
"OrganizationInvite",
315329
"OrganizationMember",
330+
"OrganizationMemberContributedToProjectsItem",
331+
"OrganizationMemberCreatedProjectsItem",
316332
"OrganizationMembership",
317333
"OrganizationPermission",
318334
"OrganizationPermissionRequest",

src/label_studio_sdk/types/lse_organization_member_list.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22

33
from ..core.unchecked_base_model import UncheckedBaseModel
44
import typing
5+
from .lse_organization_member_list_contributed_to_projects_item import (
6+
LseOrganizationMemberListContributedToProjectsItem,
7+
)
8+
from .lse_organization_member_list_created_projects_item import LseOrganizationMemberListCreatedProjectsItem
59
import pydantic
610
from .lse_user_organization_member_list import LseUserOrganizationMemberList
711
from ..core.pydantic_utilities import IS_PYDANTIC_V2
@@ -14,6 +18,8 @@ class LseOrganizationMemberList(UncheckedBaseModel):
1418
"""
1519

1620
concurrency: typing.Optional[str] = None
21+
contributed_to_projects: typing.Optional[typing.List[LseOrganizationMemberListContributedToProjectsItem]] = None
22+
created_projects: typing.Optional[typing.List[LseOrganizationMemberListCreatedProjectsItem]] = None
1723
id: typing.Optional[int] = None
1824
organization: int = pydantic.Field()
1925
"""
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# This file was auto-generated by Fern from our API Definition.
2+
3+
from ..core.unchecked_base_model import UncheckedBaseModel
4+
from ..core.pydantic_utilities import IS_PYDANTIC_V2
5+
import typing
6+
import pydantic
7+
8+
9+
class LseOrganizationMemberListContributedToProjectsItem(UncheckedBaseModel):
10+
id: int
11+
title: str
12+
13+
if IS_PYDANTIC_V2:
14+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
15+
else:
16+
17+
class Config:
18+
frozen = True
19+
smart_union = True
20+
extra = pydantic.Extra.allow
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# This file was auto-generated by Fern from our API Definition.
2+
3+
from ..core.unchecked_base_model import UncheckedBaseModel
4+
from ..core.pydantic_utilities import IS_PYDANTIC_V2
5+
import typing
6+
import pydantic
7+
8+
9+
class LseOrganizationMemberListCreatedProjectsItem(UncheckedBaseModel):
10+
id: int
11+
title: str
12+
13+
if IS_PYDANTIC_V2:
14+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
15+
else:
16+
17+
class Config:
18+
frozen = True
19+
smart_union = True
20+
extra = pydantic.Extra.allow

src/label_studio_sdk/types/lse_user_organization_member_list.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@
33
from ..core.unchecked_base_model import UncheckedBaseModel
44
import typing
55
import pydantic
6+
from .lse_user_organization_member_list_contributed_to_projects_item import (
7+
LseUserOrganizationMemberListContributedToProjectsItem,
8+
)
9+
from .lse_user_organization_member_list_created_projects_item import LseUserOrganizationMemberListCreatedProjectsItem
610
import datetime as dt
711
from .lse_fields import LseFields
812
from ..core.pydantic_utilities import IS_PYDANTIC_V2
@@ -23,8 +27,8 @@ class LseUserOrganizationMemberList(UncheckedBaseModel):
2327
"""
2428

2529
avatar: typing.Optional[str] = None
26-
contributed_to_projects: typing.Optional[str] = None
27-
created_projects: typing.Optional[str] = None
30+
contributed_to_projects: typing.Optional[typing.List[LseUserOrganizationMemberListContributedToProjectsItem]] = None
31+
created_projects: typing.Optional[typing.List[LseUserOrganizationMemberListCreatedProjectsItem]] = None
2832
custom_hotkeys: typing.Optional[typing.Optional[typing.Any]] = pydantic.Field(default=None)
2933
"""
3034
Custom keyboard shortcuts configuration for the user interface
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# This file was auto-generated by Fern from our API Definition.
2+
3+
from ..core.unchecked_base_model import UncheckedBaseModel
4+
from ..core.pydantic_utilities import IS_PYDANTIC_V2
5+
import typing
6+
import pydantic
7+
8+
9+
class LseUserOrganizationMemberListContributedToProjectsItem(UncheckedBaseModel):
10+
id: int
11+
title: str
12+
13+
if IS_PYDANTIC_V2:
14+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
15+
else:
16+
17+
class Config:
18+
frozen = True
19+
smart_union = True
20+
extra = pydantic.Extra.allow
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# This file was auto-generated by Fern from our API Definition.
2+
3+
from ..core.unchecked_base_model import UncheckedBaseModel
4+
from ..core.pydantic_utilities import IS_PYDANTIC_V2
5+
import typing
6+
import pydantic
7+
8+
9+
class LseUserOrganizationMemberListCreatedProjectsItem(UncheckedBaseModel):
10+
id: int
11+
title: str
12+
13+
if IS_PYDANTIC_V2:
14+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
15+
else:
16+
17+
class Config:
18+
frozen = True
19+
smart_union = True
20+
extra = pydantic.Extra.allow

0 commit comments

Comments
 (0)