Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
edd98a6
Sync Follow Merge dependencies
robot-ci-heartex Aug 7, 2025
30a406b
Sync Follow Merge dependencies
robot-ci-heartex Aug 11, 2025
8b90b68
Merge branch 'develop' into 'fb-ROOT-68/fixes'
robot-ci-heartex Aug 11, 2025
2a3eb7e
actions response
jombooth Aug 11, 2025
6ec8a6f
Sync Follow Merge dependencies
robot-ci-heartex Aug 11, 2025
9c0d120
more accurate response shape
jombooth Aug 11, 2025
a7ee6cf
Merge branch 'fb-ROOT-68/fixes' of github.com:heartexlabs/label-studi…
jombooth Aug 11, 2025
2e9af2b
Sync Follow Merge dependencies
robot-ci-heartex Aug 11, 2025
720a927
allow passing project id via query params instead
jombooth Aug 12, 2025
21611b9
Sync Follow Merge dependencies
robot-ci-heartex Aug 12, 2025
4e24ebe
Merge branch 'develop' into 'fb-ROOT-68/fixes'
robot-ci-heartex Aug 12, 2025
d3bc7a5
Sync Follow Merge dependencies
robot-ci-heartex Aug 12, 2025
4de28bc
Merge branch 'fb-ROOT-68/fixes' of github.com:heartexlabs/label-studi…
jombooth Aug 12, 2025
3ddd719
Sync Follow Merge dependencies
robot-ci-heartex Aug 12, 2025
e678e47
Sync Follow Merge dependencies
robot-ci-heartex Aug 12, 2025
b331487
Merge branch 'develop' into 'fb-ROOT-68/fixes'
robot-ci-heartex Aug 12, 2025
aa8d0c0
Sync Follow Merge dependencies
robot-ci-heartex Aug 12, 2025
da10ae5
Merge branch 'develop' into 'fb-ROOT-68/fixes'
robot-ci-heartex Aug 12, 2025
93c7874
Sync Follow Merge dependencies
robot-ci-heartex Aug 12, 2025
e640cad
Sync Follow Merge dependencies
robot-ci-heartex Aug 12, 2025
dea2604
Merge branch 'develop' into 'fb-ROOT-68/fixes'
jombooth Aug 13, 2025
ceca170
Sync Follow Merge dependencies
robot-ci-heartex Aug 13, 2025
3f9622e
Merge branch 'develop' into 'fb-ROOT-68/fixes'
robot-ci-heartex Aug 13, 2025
0e8c8e5
Sync Follow Merge dependencies
robot-ci-heartex Aug 13, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
87 changes: 83 additions & 4 deletions label_studio/data_manager/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -165,9 +165,16 @@ def perform_create(self, serializer):
@extend_schema(
tags=['Data Manager'],
summary='Delete all project views',
description='Delete all views for a specific project. Request body example: `{"project": 1}`.',
# Note: OpenAPI3 does not support request body for DELETE requests
# see https://github.com/tfranzel/drf-spectacular/issues/431#issuecomment-862738643
description='Delete all views for a specific project.',
parameters=[
OpenApiParameter(
name='project',
type=OpenApiTypes.INT,
location='query',
description='Project ID',
required=True,
),
],
extensions={
'x-fern-sdk-group-name': 'views',
'x-fern-sdk-method-name': 'delete_all',
Expand All @@ -176,7 +183,12 @@ def perform_create(self, serializer):
)
@action(detail=False, methods=['delete'])
def reset(self, request):
serializer = ViewResetSerializer(data=request.data)
# Note: OpenAPI 3.0 does not support request body for DELETE requests
# see https://github.com/tfranzel/drf-spectacular/issues/431#issuecomment-862738643
# as a hack for the SDK, fallback to query params if request body is empty
serializer = ViewResetSerializer(
data=request.data if 'project' in request.data else {'project': request.query_params.get('project')}
)
serializer.is_valid(raise_exception=True)
project = generics.get_object_or_404(
Project.objects.for_user(request.user), pk=serializer.validated_data['project'].id
Expand All @@ -190,6 +202,7 @@ def reset(self, request):
summary='Update order of views',
description='Update the order field of views based on the provided list of view IDs',
request=ViewOrderSerializer,
responses={200: OpenApiResponse(description='View order updated successfully')},
extensions={
'x-fern-sdk-group-name': 'views',
'x-fern-sdk-method-name': 'update_order',
Expand Down Expand Up @@ -514,6 +527,72 @@ def get(self, request):
tags=['Data Manager'],
summary='Get actions',
description='Retrieve all the registered actions with descriptions that data manager can use.',
parameters=[
OpenApiParameter(
name='project',
type=OpenApiTypes.INT,
location='query',
description='Project ID',
required=True,
),
],
responses={
200: OpenApiResponse(
description='Actions retrieved successfully',
response={
'type': 'array',
'title': 'Action list',
'description': 'List of available actions',
'items': {
'type': 'object',
'title': 'Action',
'properties': {
'id': {'type': 'string', 'title': 'Action ID'},
'title': {'type': 'string', 'title': 'Title'},
'order': {'type': 'integer', 'title': 'Order'},
'permission': {'type': 'string', 'title': 'Permission'},
'experimental': {'type': 'boolean', 'title': 'Experimental'},
'dialog': {
'type': 'object',
'title': 'Dialog',
'properties': {
'title': {'type': 'string', 'title': 'Title', 'nullable': True},
'text': {'type': 'string', 'title': 'Text', 'nullable': True},
'type': {'type': 'string', 'title': 'Type', 'nullable': True},
'form': {
'type': 'array',
'title': 'Form',
'items': {'type': 'object'},
'nullable': True,
},
},
},
},
},
},
examples=[
OpenApiExample(
name='response',
value=[
{
'id': 'predictions_to_annotations',
'title': 'Create Annotations From Predictions',
'order': 91,
'permission': 'tasks.change',
'experimental': False,
'dialog': {
'title': 'Create Annotations From Predictions',
'text': 'Create annotations from predictions using selected predictions set for each selected task. Your account will be assigned as an owner to those annotations.',
'type': 'confirm',
'form': None,
},
}
],
media_type='application/json',
),
],
)
},
extensions={
'x-fern-sdk-group-name': 'actions',
'x-fern-sdk-method-name': 'list',
Expand Down
6 changes: 3 additions & 3 deletions poetry.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ dependencies = [
"djangorestframework-simplejwt[crypto] (>=5.4.0,<6.0.0)",
"tldextract (>=5.1.3)",
## HumanSignal repo dependencies :start
"label-studio-sdk @ https://github.com/HumanSignal/label-studio-sdk/archive/f155b03d3e449d1725aa6bcbe8ffd4ec5fa87459.zip",
"label-studio-sdk @ https://github.com/HumanSignal/label-studio-sdk/archive/87c34f6e800b6e7469f0bac8175fac96b3e363b1.zip",
## HumanSignal repo dependencies :end
]

Expand Down
Loading