@things-factory/operato-dataset 9.1.17 → 9.1.19

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.
package/schema.graphql CHANGED
@@ -466,6 +466,45 @@ input ActivityThreadSave {
466
466
  output: Object
467
467
  }
468
468
 
469
+ """Input for adding ML Backend"""
470
+ input AddMLBackendInput {
471
+ """Is interactive preannotation enabled"""
472
+ isInteractive: Boolean
473
+
474
+ """ML Backend title"""
475
+ title: String!
476
+
477
+ """ML Backend URL"""
478
+ url: String!
479
+ }
480
+
481
+ """Annotation export result"""
482
+ type AnnotationExportResult {
483
+ """Number of annotations exported"""
484
+ count: Int!
485
+
486
+ """Exported data as JSON string"""
487
+ data: String!
488
+
489
+ """Export format used"""
490
+ format: String!
491
+ }
492
+
493
+ """Annotator statistics"""
494
+ type AnnotatorStats {
495
+ """Number of annotations"""
496
+ annotationCount: Int!
497
+
498
+ """Average time per annotation in seconds"""
499
+ avgTime: Float!
500
+
501
+ """User email"""
502
+ email: String!
503
+
504
+ """Last annotation date"""
505
+ lastAnnotationDate: DateTimeISO!
506
+ }
507
+
469
508
  """
470
509
  A flexible scalar type that can represent any GraphQL value, including String, Boolean, Int, Float, Object, or List. Use this type for fields or arguments that may accept or return various data types.
471
510
  """
@@ -1083,6 +1122,39 @@ type AuthProviderTypeList {
1083
1122
  total: Int!
1084
1123
  }
1085
1124
 
1125
+ """Request to generate predictions for multiple tasks"""
1126
+ input BatchGeneratePredictionRequest {
1127
+ """Confidence threshold (0-1)"""
1128
+ confidenceThreshold: Float
1129
+
1130
+ """AI model ID to use"""
1131
+ modelId: String
1132
+
1133
+ """Label Studio project ID"""
1134
+ projectId: Int!
1135
+
1136
+ """Array of task IDs"""
1137
+ taskIds: [Int!]!
1138
+ }
1139
+
1140
+ """Batch prediction generation result"""
1141
+ type BatchPredictionResult {
1142
+ """Number of failed predictions"""
1143
+ failed: Int!
1144
+
1145
+ """Model version used"""
1146
+ modelVersion: String!
1147
+
1148
+ """Individual results"""
1149
+ results: [PredictionGenerationResult!]!
1150
+
1151
+ """Number of successful predictions"""
1152
+ succeeded: Int!
1153
+
1154
+ """Total tasks processed"""
1155
+ total: Int!
1156
+ }
1157
+
1086
1158
  """Represents a visual dashboard or display board."""
1087
1159
  type Board {
1088
1160
  """The timestamp when the board was created."""
@@ -1369,6 +1441,36 @@ input BoardTemplatePatch {
1369
1441
  visibility: String
1370
1442
  }
1371
1443
 
1444
+ """Bounding box coordinates"""
1445
+ type BoundingBox {
1446
+ """Height (percentage 0-100)"""
1447
+ height: Float!
1448
+
1449
+ """Width (percentage 0-100)"""
1450
+ width: Float!
1451
+
1452
+ """X coordinate (percentage 0-100)"""
1453
+ x: Float!
1454
+
1455
+ """Y coordinate (percentage 0-100)"""
1456
+ y: Float!
1457
+ }
1458
+
1459
+ """Input for bulk prediction creation"""
1460
+ input BulkPredictionInput {
1461
+ """Model version"""
1462
+ modelVersion: String
1463
+
1464
+ """Prediction result as JSON string"""
1465
+ result: String!
1466
+
1467
+ """Prediction confidence score (0-1)"""
1468
+ score: Float
1469
+
1470
+ """Task ID"""
1471
+ taskId: Int!
1472
+ }
1473
+
1372
1474
  input ChatCompletionInput {
1373
1475
  content: String!
1374
1476
  }
@@ -1377,6 +1479,27 @@ type ChatCompletionOutput {
1377
1479
  message: String
1378
1480
  }
1379
1481
 
1482
+ """Class probability"""
1483
+ type ClassProbability {
1484
+ """Class name"""
1485
+ className: String!
1486
+
1487
+ """Probability (0-1)"""
1488
+ probability: Float!
1489
+ }
1490
+
1491
+ """Image classification result"""
1492
+ type ClassificationResult {
1493
+ """Predicted class"""
1494
+ className: String!
1495
+
1496
+ """Confidence score (0-1)"""
1497
+ confidence: Float!
1498
+
1499
+ """All class probabilities"""
1500
+ probabilities: [ClassProbability!]!
1501
+ }
1502
+
1380
1503
  input CodeDecipherInput {
1381
1504
  code: String!
1382
1505
  language: String
@@ -1651,6 +1774,140 @@ input ContactPatch {
1651
1774
  profile: ProfileInput
1652
1775
  }
1653
1776
 
1777
+ """Input for creating MLflow experiment"""
1778
+ input CreateExperimentInput {
1779
+ """Artifact location"""
1780
+ artifactLocation: String
1781
+
1782
+ """Experiment name"""
1783
+ name: String!
1784
+
1785
+ """Tags as JSON string"""
1786
+ tags: String
1787
+ }
1788
+
1789
+ """Request to create Label Studio tasks from DataSamples"""
1790
+ input CreateLabelingTasksRequest {
1791
+ """Auto-generate AI predictions for created tasks"""
1792
+ autoGeneratePredictions: Boolean = true
1793
+
1794
+ """Confidence threshold for AI predictions"""
1795
+ confidenceThreshold: Float
1796
+
1797
+ """DataSet ID to sync"""
1798
+ dataSetId: String!
1799
+
1800
+ """Image field name in DataSample.data or DataSample.rawData"""
1801
+ imageField: String
1802
+
1803
+ """Maximum number of tasks to create"""
1804
+ limit: Float
1805
+
1806
+ """AI model ID to use for predictions"""
1807
+ modelId: String
1808
+
1809
+ """Label Studio project ID"""
1810
+ projectId: Int!
1811
+
1812
+ """Only create tasks for samples after this date"""
1813
+ sinceDate: DateTimeISO
1814
+ }
1815
+
1816
+ """Input for creating model version"""
1817
+ input CreateModelVersionInput {
1818
+ """Description"""
1819
+ description: String
1820
+
1821
+ """Model name"""
1822
+ name: String!
1823
+
1824
+ """Run ID"""
1825
+ runId: String
1826
+
1827
+ """Model source URI"""
1828
+ source: String!
1829
+
1830
+ """Tags as JSON string"""
1831
+ tags: String
1832
+ }
1833
+
1834
+ """Input for creating Label Studio project"""
1835
+ input CreateProjectInput {
1836
+ """Project description"""
1837
+ description: String
1838
+
1839
+ """Expert instruction"""
1840
+ expertInstruction: String
1841
+
1842
+ """Label configuration XML"""
1843
+ labelConfig: String!
1844
+
1845
+ """Project title"""
1846
+ title: String!
1847
+ }
1848
+
1849
+ """Input for creating project with flexible config builder"""
1850
+ input CreateProjectWithSpecInput {
1851
+ """Project description"""
1852
+ description: String
1853
+
1854
+ """Expert instruction"""
1855
+ expertInstruction: String
1856
+
1857
+ """Label config specification"""
1858
+ labelConfigSpec: LabelConfigSpecInput!
1859
+
1860
+ """Project title"""
1861
+ title: String!
1862
+ }
1863
+
1864
+ """Input for creating registered model"""
1865
+ input CreateRegisteredModelInput {
1866
+ """Model description"""
1867
+ description: String
1868
+
1869
+ """Model name"""
1870
+ name: String!
1871
+
1872
+ """Tags as JSON string"""
1873
+ tags: String
1874
+ }
1875
+
1876
+ """Input for creating MLflow run"""
1877
+ input CreateRunInput {
1878
+ """Experiment ID"""
1879
+ experimentId: String!
1880
+
1881
+ """Start time"""
1882
+ startTime: Int
1883
+
1884
+ """Tags as JSON string"""
1885
+ tags: String
1886
+ }
1887
+
1888
+ input CreateWorkflowRequest {
1889
+ """Auto-start workflow after creation"""
1890
+ autoStart: Boolean = true
1891
+
1892
+ """Workflow description"""
1893
+ description: String
1894
+
1895
+ """Workflow name"""
1896
+ name: String!
1897
+
1898
+ """Label Studio project ID"""
1899
+ projectId: Int!
1900
+
1901
+ """Workflow steps"""
1902
+ steps: [WorkflowStepInput!]!
1903
+
1904
+ """Trigger configuration (schedule, event, etc.)"""
1905
+ triggerConfig: String
1906
+
1907
+ """How to trigger this workflow"""
1908
+ triggerType: TriggerType!
1909
+ }
1910
+
1654
1911
  """
1655
1912
  Represents a data payload delivered via subscription, including its domain, tag, and content.
1656
1913
  """
@@ -1833,15 +2090,18 @@ input DataItemPatch {
1833
2090
 
1834
2091
  """type enumeration of a data-item"""
1835
2092
  enum DataItemType {
2093
+ audio
1836
2094
  boolean
1837
2095
  date
1838
2096
  datetime
1839
2097
  file
2098
+ image
1840
2099
  number
1841
2100
  radio
1842
2101
  select
1843
2102
  signature
1844
2103
  text
2104
+ video
1845
2105
  }
1846
2106
 
1847
2107
  """
@@ -2548,6 +2808,20 @@ type DataSetState {
2548
2808
  state: String!
2549
2809
  }
2550
2810
 
2811
+ type DataSourcePreview {
2812
+ """Preview error if any"""
2813
+ error: String
2814
+
2815
+ """Number of items available"""
2816
+ itemCount: Int!
2817
+
2818
+ """Sample data (first item)"""
2819
+ sampleData: String!
2820
+
2821
+ """Detected schema/fields"""
2822
+ schema: String!
2823
+ }
2824
+
2551
2825
  """
2552
2826
  Represents a data specification that defines the structure, validation rules, and metadata for a dataset.
2553
2827
  """
@@ -2648,6 +2922,51 @@ type DataSummaryList {
2648
2922
  total: Int!
2649
2923
  }
2650
2924
 
2925
+ """Labeling status for a dataset"""
2926
+ type DatasetLabelingStatus {
2927
+ """Number of samples with completed annotations"""
2928
+ annotationsCompleted: Int!
2929
+
2930
+ """Labeling completion rate (0-1)"""
2931
+ completionRate: Float!
2932
+
2933
+ """DataSet ID"""
2934
+ dataSetId: String!
2935
+
2936
+ """DataSet name"""
2937
+ dataSetName: String!
2938
+
2939
+ """Last sync timestamp"""
2940
+ lastSyncedAt: DateTimeISO
2941
+
2942
+ """Number of samples not yet processed"""
2943
+ notProcessed: Int!
2944
+
2945
+ """Associated Label Studio project ID"""
2946
+ projectId: Float
2947
+
2948
+ """Number of samples with Label Studio tasks"""
2949
+ tasksCreated: Int!
2950
+
2951
+ """Total number of DataSamples in the dataset"""
2952
+ totalSamples: Int!
2953
+
2954
+ """Number of samples with human annotations"""
2955
+ withAnnotations: Int!
2956
+
2957
+ """Number of samples with AI predictions"""
2958
+ withPredictions: Int!
2959
+ }
2960
+
2961
+ """Request to query dataset labeling status"""
2962
+ input DatasetLabelingStatusRequest {
2963
+ """DataSet ID"""
2964
+ dataSetId: String!
2965
+
2966
+ """Associated Label Studio project ID"""
2967
+ projectId: Int
2968
+ }
2969
+
2651
2970
  """
2652
2971
  A custom scalar type for representing date values. Accepts and serializes dates as either timestamps (milliseconds since epoch) or ISO date strings. Use this type for fields or arguments that require date-only values without time components.
2653
2972
  """
@@ -2709,6 +3028,18 @@ input DepartmentPatch {
2709
3028
  picture: Upload
2710
3029
  }
2711
3030
 
3031
+ """Detected object with bounding box and classification"""
3032
+ type DetectedObject {
3033
+ """Bounding box coordinates"""
3034
+ bbox: BoundingBox!
3035
+
3036
+ """Object class/label"""
3037
+ className: String!
3038
+
3039
+ """Confidence score (0-1)"""
3040
+ confidence: Float!
3041
+ }
3042
+
2712
3043
  """
2713
3044
  Represents a domain entity, which is a logical grouping of users, roles, and resources within the system.
2714
3045
  """
@@ -3308,6 +3639,72 @@ input EnvVarPatch {
3308
3639
  value: String
3309
3640
  }
3310
3641
 
3642
+ input ExecuteWorkflowRequest {
3643
+ """Override parameters as JSON"""
3644
+ parameters: String
3645
+
3646
+ """Workflow ID to execute"""
3647
+ workflowId: String!
3648
+ }
3649
+
3650
+ """Export annotations input"""
3651
+ input ExportAnnotationsInput {
3652
+ """Export format (json, jsonl, csv, rank-csv, coco, yolo, ner-json)"""
3653
+ format: String!
3654
+
3655
+ """Filter by task IDs"""
3656
+ taskIds: String
3657
+ }
3658
+
3659
+ """Export result"""
3660
+ type ExportResult {
3661
+ """Number of annotations exported"""
3662
+ annotationCount: Int!
3663
+
3664
+ """Export file path or URL"""
3665
+ exportPath: String!
3666
+
3667
+ """Export format (JSON, CSV, YOLO, etc.)"""
3668
+ format: String!
3669
+ }
3670
+
3671
+ input ExternalDataSourceConfig {
3672
+ """Authentication header if required"""
3673
+ authHeader: String
3674
+
3675
+ """JSONPath or XPath for data extraction"""
3676
+ dataPath: String
3677
+
3678
+ """HTTP method for API calls"""
3679
+ httpMethod: String
3680
+
3681
+ """Request body for POST/PUT"""
3682
+ requestBody: String
3683
+
3684
+ """Data source type"""
3685
+ sourceType: String!
3686
+
3687
+ """Source URL or endpoint"""
3688
+ sourceUrl: String!
3689
+ }
3690
+
3691
+ type ExternalImportResult {
3692
+ """Error message if any"""
3693
+ error: String
3694
+
3695
+ """Imported task IDs"""
3696
+ taskIds: [Int!]!
3697
+
3698
+ """Tasks failed to import"""
3699
+ tasksFailed: Int!
3700
+
3701
+ """Tasks successfully imported"""
3702
+ tasksImported: Int!
3703
+
3704
+ """Total items fetched from source"""
3705
+ totalFetched: Int!
3706
+ }
3707
+
3311
3708
  """Entity for Favorite"""
3312
3709
  type Favorite {
3313
3710
  createdAt: DateTimeISO
@@ -3370,6 +3767,39 @@ input FontPatch {
3370
3767
  uri: String
3371
3768
  }
3372
3769
 
3770
+ """Request to generate Label Studio predictions"""
3771
+ input GeneratePredictionRequest {
3772
+ """Confidence threshold (0-1)"""
3773
+ confidenceThreshold: Float
3774
+
3775
+ """Image URL from task data"""
3776
+ imageUrl: String!
3777
+
3778
+ """AI model ID to use"""
3779
+ modelId: String
3780
+
3781
+ """Label Studio task ID"""
3782
+ taskId: Int!
3783
+ }
3784
+
3785
+ """Request to generate predictions for existing tasks"""
3786
+ input GeneratePredictionsForDatasetRequest {
3787
+ """Confidence threshold"""
3788
+ confidenceThreshold: Float
3789
+
3790
+ """DataSet ID"""
3791
+ dataSetId: String!
3792
+
3793
+ """Regenerate predictions even if they already exist"""
3794
+ forceRegenerate: Boolean = false
3795
+
3796
+ """AI model ID to use"""
3797
+ modelId: String
3798
+
3799
+ """Label Studio project ID"""
3800
+ projectId: Int!
3801
+ }
3802
+
3373
3803
  """Represents a role that is granted to a specific domain."""
3374
3804
  type GrantedRole {
3375
3805
  """The domain to which the role is granted."""
@@ -3440,6 +3870,50 @@ type ImageCompletionOutput {
3440
3870
  images: String
3441
3871
  }
3442
3872
 
3873
+ input ImportFromExternalSourceRequest {
3874
+ """Auto-generate AI predictions"""
3875
+ autoGeneratePredictions: Boolean = false
3876
+
3877
+ """Field mapping JSON (source -> Label Studio)"""
3878
+ fieldMapping: String
3879
+
3880
+ """Image field name in source data"""
3881
+ imageField: String
3882
+
3883
+ """Maximum number of items to import"""
3884
+ limit: Float
3885
+
3886
+ """Label Studio project ID"""
3887
+ projectId: Int!
3888
+
3889
+ """External data source configuration"""
3890
+ source: ExternalDataSourceConfig!
3891
+ }
3892
+
3893
+ """Input for importing tasks with transformation"""
3894
+ input ImportTasksWithTransformInput {
3895
+ """Source data as JSON array string"""
3896
+ sourceData: String!
3897
+
3898
+ """Transformation rule"""
3899
+ transformRule: TaskTransformRuleInput!
3900
+ }
3901
+
3902
+ """AI inference request"""
3903
+ input InferenceRequest {
3904
+ """Confidence threshold (0-1)"""
3905
+ confidenceThreshold: Float
3906
+
3907
+ """Image URL or base64 data"""
3908
+ imageUrl: String!
3909
+
3910
+ """Model ID to use"""
3911
+ modelId: String
3912
+
3913
+ """Additional options as JSON"""
3914
+ options: String
3915
+ }
3916
+
3443
3917
  """
3444
3918
  Enumeration for inherited value types: None, Only, or Include. Used to specify how values are inherited in queries or filters.
3445
3919
  """
@@ -4463,6 +4937,157 @@ enum KpiVizType {
4463
4937
  THERMOMETER
4464
4938
  }
4465
4939
 
4940
+ """Label config specification for flexible project creation"""
4941
+ input LabelConfigSpecInput {
4942
+ """Control specifications as JSON array"""
4943
+ controls: String!
4944
+
4945
+ """Data name (default: data)"""
4946
+ dataName: String
4947
+
4948
+ """Data type (image, text, audio, video, timeseries, html, hypertext)"""
4949
+ dataType: String!
4950
+ }
4951
+
4952
+ """Label Studio annotation"""
4953
+ type LabelStudioAnnotation {
4954
+ """Completed by user email"""
4955
+ completedBy: String!
4956
+
4957
+ """Created date"""
4958
+ createdAt: DateTimeISO!
4959
+
4960
+ """Annotation ID"""
4961
+ id: Int!
4962
+
4963
+ """Lead time in seconds"""
4964
+ leadTime: Float
4965
+
4966
+ """Annotation result (JSON)"""
4967
+ result: String!
4968
+
4969
+ """Task ID"""
4970
+ taskId: Int!
4971
+ }
4972
+
4973
+ """Label Studio prediction (AI pre-annotation)"""
4974
+ type LabelStudioPrediction {
4975
+ """Created date"""
4976
+ createdAt: DateTimeISO
4977
+
4978
+ """Prediction ID"""
4979
+ id: Int!
4980
+
4981
+ """Model version that generated this prediction"""
4982
+ modelVersion: String
4983
+
4984
+ """Prediction result (JSON)"""
4985
+ result: String!
4986
+
4987
+ """Prediction confidence score (0-1)"""
4988
+ score: Float
4989
+
4990
+ """Task ID"""
4991
+ taskId: Int!
4992
+ }
4993
+
4994
+ """Label Studio project information"""
4995
+ type LabelStudioProject {
4996
+ """Number of completed tasks"""
4997
+ completedTaskCount: Int!
4998
+
4999
+ """Completion rate (0-1)"""
5000
+ completionRate: Float!
5001
+
5002
+ """Created date"""
5003
+ createdAt: DateTimeISO
5004
+
5005
+ """Project description"""
5006
+ description: String
5007
+
5008
+ """Expert instruction"""
5009
+ expertInstruction: String
5010
+
5011
+ """Project ID"""
5012
+ id: Int!
5013
+
5014
+ """Label configuration XML"""
5015
+ labelConfig: String!
5016
+
5017
+ """Number of tasks"""
5018
+ taskCount: Int!
5019
+
5020
+ """Project title"""
5021
+ title: String!
5022
+
5023
+ """Updated date"""
5024
+ updatedAt: DateTimeISO
5025
+ }
5026
+
5027
+ """Label Studio task"""
5028
+ type LabelStudioTask {
5029
+ """Number of annotations"""
5030
+ annotationCount: Int!
5031
+
5032
+ """Task created date"""
5033
+ createdAt: DateTimeISO
5034
+
5035
+ """Task data (JSON)"""
5036
+ data: String!
5037
+
5038
+ """Task ID"""
5039
+ id: Int!
5040
+
5041
+ """Is task completed"""
5042
+ isCompleted: Boolean!
5043
+ }
5044
+
5045
+ type LabelingWorkflow {
5046
+ """Created at"""
5047
+ createdAt: DateTimeISO!
5048
+
5049
+ """Description"""
5050
+ description: String
5051
+
5052
+ """Workflow ID"""
5053
+ id: String!
5054
+
5055
+ """Last execution time"""
5056
+ lastExecutedAt: DateTimeISO
5057
+
5058
+ """Workflow name"""
5059
+ name: String!
5060
+
5061
+ """Next scheduled execution"""
5062
+ nextExecutionAt: DateTimeISO
5063
+
5064
+ """Label Studio project ID"""
5065
+ projectId: Int!
5066
+
5067
+ """Current status"""
5068
+ status: WorkflowStatus!
5069
+
5070
+ """Workflow steps"""
5071
+ steps: [WorkflowStep!]!
5072
+
5073
+ """Trigger configuration"""
5074
+ triggerConfig: String
5075
+
5076
+ """Trigger type"""
5077
+ triggerType: TriggerType!
5078
+
5079
+ """Updated at"""
5080
+ updatedAt: DateTimeISO!
5081
+ }
5082
+
5083
+ type LabelingWorkflowList {
5084
+ """List of workflows"""
5085
+ items: [LabelingWorkflow!]!
5086
+
5087
+ """Total count"""
5088
+ total: Int!
5089
+ }
5090
+
4466
5091
  """Entity for LiteMenu"""
4467
5092
  type LiteMenu {
4468
5093
  active: Boolean
@@ -4528,6 +5153,36 @@ type Log {
4528
5153
  timestamp: String!
4529
5154
  }
4530
5155
 
5156
+ """Input for logging metric"""
5157
+ input LogMetricInput {
5158
+ """Metric key"""
5159
+ key: String!
5160
+
5161
+ """Run ID"""
5162
+ runId: String!
5163
+
5164
+ """Step"""
5165
+ step: Int
5166
+
5167
+ """Timestamp"""
5168
+ timestamp: Int
5169
+
5170
+ """Metric value"""
5171
+ value: Float!
5172
+ }
5173
+
5174
+ """Input for logging parameter"""
5175
+ input LogParamInput {
5176
+ """Parameter key"""
5177
+ key: String!
5178
+
5179
+ """Run ID"""
5180
+ runId: String!
5181
+
5182
+ """Parameter value"""
5183
+ value: String!
5184
+ }
5185
+
4531
5186
  """Records user login attempts."""
4532
5187
  type LoginHistory {
4533
5188
  """The domain the user logged into."""
@@ -4555,6 +5210,180 @@ type LoginHistoryList {
4555
5210
  total: Int!
4556
5211
  }
4557
5212
 
5213
+ """ML Backend information"""
5214
+ type MLBackend {
5215
+ """ML Backend ID"""
5216
+ id: Int!
5217
+
5218
+ """Is interactive preannotation enabled"""
5219
+ isInteractive: Boolean!
5220
+
5221
+ """Model version"""
5222
+ modelVersion: String!
5223
+
5224
+ """ML Backend title"""
5225
+ title: String!
5226
+
5227
+ """ML Backend URL"""
5228
+ url: String!
5229
+ }
5230
+
5231
+ """ML Model registered in the system"""
5232
+ type MLModel {
5233
+ """Model artifact storage URI"""
5234
+ artifactUri: String
5235
+
5236
+ """Created at"""
5237
+ createdAt: DateTimeISO!
5238
+
5239
+ """Creator"""
5240
+ creator: User
5241
+
5242
+ """Deleted at"""
5243
+ deletedAt: DateTimeISO
5244
+
5245
+ """Model description"""
5246
+ description: String
5247
+
5248
+ """Domain"""
5249
+ domain: Domain
5250
+
5251
+ """Framework used for training"""
5252
+ framework: ModelFramework
5253
+
5254
+ """Model ID"""
5255
+ id: ID!
5256
+
5257
+ """Associated Label Studio project"""
5258
+ labelStudioProjectId: Int
5259
+
5260
+ """Model metadata as JSON"""
5261
+ metadata: String
5262
+
5263
+ """Model metrics as JSON"""
5264
+ metrics: String
5265
+
5266
+ """MLflow experiment ID"""
5267
+ mlflowExperimentId: String
5268
+
5269
+ """MLflow run ID for tracking"""
5270
+ mlflowRunId: String
5271
+
5272
+ """Model name"""
5273
+ name: String!
5274
+
5275
+ """Current deployment stage"""
5276
+ stage: ModelStage!
5277
+
5278
+ """Tags as JSON array"""
5279
+ tags: String
5280
+
5281
+ """Updated at"""
5282
+ updatedAt: DateTimeISO!
5283
+
5284
+ """Last updater"""
5285
+ updater: User
5286
+
5287
+ """Model version"""
5288
+ version: String!
5289
+ }
5290
+
5291
+ """MLflow Experiment"""
5292
+ type MLflowExperiment {
5293
+ """Artifact location"""
5294
+ artifactLocation: String!
5295
+
5296
+ """Experiment ID"""
5297
+ experimentId: String!
5298
+
5299
+ """Lifecycle stage"""
5300
+ lifecycleStage: String!
5301
+
5302
+ """Experiment name"""
5303
+ name: String!
5304
+
5305
+ """Tags as JSON string"""
5306
+ tags: String
5307
+ }
5308
+
5309
+ """MLflow Model Version"""
5310
+ type MLflowModelVersion {
5311
+ """Creation timestamp"""
5312
+ creationTimestamp: Int!
5313
+
5314
+ """Current stage"""
5315
+ currentStage: String!
5316
+
5317
+ """Description"""
5318
+ description: String
5319
+
5320
+ """Model name"""
5321
+ name: String!
5322
+
5323
+ """Run ID"""
5324
+ runId: String
5325
+
5326
+ """Model source"""
5327
+ source: String!
5328
+
5329
+ """Version status"""
5330
+ status: String!
5331
+
5332
+ """Version number"""
5333
+ version: String!
5334
+ }
5335
+
5336
+ """MLflow Registered Model"""
5337
+ type MLflowRegisteredModel {
5338
+ """Creation timestamp"""
5339
+ creationTimestamp: Int!
5340
+
5341
+ """Model description"""
5342
+ description: String
5343
+
5344
+ """Last updated timestamp"""
5345
+ lastUpdatedTimestamp: Int!
5346
+
5347
+ """Latest versions as JSON string"""
5348
+ latestVersions: String
5349
+
5350
+ """Model name"""
5351
+ name: String!
5352
+
5353
+ """Tags as JSON string"""
5354
+ tags: String
5355
+ }
5356
+
5357
+ """MLflow Run"""
5358
+ type MLflowRun {
5359
+ """Artifact URI"""
5360
+ artifactUri: String!
5361
+
5362
+ """End time (Unix timestamp)"""
5363
+ endTime: Int
5364
+
5365
+ """Experiment ID"""
5366
+ experimentId: String!
5367
+
5368
+ """Metrics as JSON string"""
5369
+ metrics: String
5370
+
5371
+ """Params as JSON string"""
5372
+ params: String
5373
+
5374
+ """Run ID"""
5375
+ runId: String!
5376
+
5377
+ """Start time (Unix timestamp)"""
5378
+ startTime: Int!
5379
+
5380
+ """Run status"""
5381
+ status: String!
5382
+
5383
+ """Tags as JSON string"""
5384
+ tags: String
5385
+ }
5386
+
4558
5387
  """Entity for Menu"""
4559
5388
  type Menu {
4560
5389
  buttons: [MenuButton!]!
@@ -4912,6 +5741,25 @@ input MenuPatch {
4912
5741
  totalProp: String
4913
5742
  }
4914
5743
 
5744
+ """ML framework used for model training"""
5745
+ enum ModelFramework {
5746
+ CUSTOM
5747
+ LIGHTGBM
5748
+ ONNX
5749
+ PYTORCH
5750
+ SKLEARN
5751
+ TENSORFLOW
5752
+ XGBOOST
5753
+ }
5754
+
5755
+ """ML model deployment stage"""
5756
+ enum ModelStage {
5757
+ ARCHIVED
5758
+ NONE
5759
+ PRODUCTION
5760
+ STAGING
5761
+ }
5762
+
4915
5763
  type Mutation {
4916
5764
  """To abort a ActivityInstance"""
4917
5765
  abortActivityInstance(id: String!, reason: String): ActivityInstance!
@@ -4933,9 +5781,15 @@ type Mutation {
4933
5781
  username: String!
4934
5782
  ): Boolean!
4935
5783
 
5784
+ """Add ML backend to Label Studio project for predictions and training"""
5785
+ addMLBackendToProject(input: AddMLBackendInput!, projectId: Int!): MLBackend!
5786
+
4936
5787
  """To approve ActivityApproval"""
4937
5788
  approveActivityApproval(comment: String, id: String!): ActivityApproval
4938
5789
 
5790
+ """Archive ML model (soft delete)"""
5791
+ archiveMLModel(id: String!): Boolean!
5792
+
4939
5793
  """To assign a ActivityInstance"""
4940
5794
  assignActivityInstance(
4941
5795
  """Email of assignee users"""
@@ -4950,6 +5804,11 @@ type Mutation {
4950
5804
  """
4951
5805
  attachContact(contactId: String!, id: String!): Employee!
4952
5806
 
5807
+ """
5808
+ Auto-generate predictions for all unlabeled tasks in a Label Studio project
5809
+ """
5810
+ autoGeneratePredictions(confidenceThreshold: Float, modelId: String, projectId: Int!): BatchPredictionResult!
5811
+
4953
5812
  """Bulk create or update KPI org-scope mappings."""
4954
5813
  bulkUpsertKpiOrgScopes(
4955
5814
  """Array of org-scope mapping data for bulk upsert."""
@@ -5029,6 +5888,9 @@ type Mutation {
5029
5888
  """To create new BoardTemplate"""
5030
5889
  createBoardTemplate(boardTemplate: NewBoardTemplate!): BoardTemplate!
5031
5890
 
5891
+ """Create multiple predictions at once"""
5892
+ createBulkPredictions(predictions: [BulkPredictionInput!]!): PredictionImportResult!
5893
+
5032
5894
  """To create new CommonCode"""
5033
5895
  createCommonCode(commonCode: NewCommonCode!): CommonCode!
5034
5896
 
@@ -5071,6 +5933,9 @@ type Mutation {
5071
5933
  """
5072
5934
  createDataSet(dataSet: NewDataSet!): DataSet!
5073
5935
 
5936
+ """Create automatic labeling workflow for a dataset"""
5937
+ createDatasetLabelingWorkflow(autoStart: Boolean = false, dataSetId: String!, modelId: String, projectId: Int!, workflowName: String!): LabelingWorkflow!
5938
+
5074
5939
  """To create new Department"""
5075
5940
  createDepartment(department: NewDepartment!): Department!
5076
5941
 
@@ -5144,9 +6009,38 @@ type Mutation {
5144
6009
  kpiValue: NewKpiValue!
5145
6010
  ): KpiValue!
5146
6011
 
6012
+ """Create a prediction for a Label Studio task"""
6013
+ createLabelStudioPrediction(input: PredictionInput!): LabelStudioPrediction!
6014
+
6015
+ """Create a new Label Studio project"""
6016
+ createLabelStudioProject(input: CreateProjectInput!): LabelStudioProject!
6017
+
6018
+ """Create Label Studio project with flexible config specification"""
6019
+ createLabelStudioProjectWithSpec(input: CreateProjectWithSpecInput!): LabelStudioProject!
6020
+
6021
+ """
6022
+ Create Label Studio labeling tasks from DataSamples in a DataSet. Optionally auto-generates AI predictions for each task.
6023
+ """
6024
+ createLabelingTasksFromDataset(input: CreateLabelingTasksRequest!): TaskCreationResult!
6025
+
6026
+ """Create a new labeling workflow"""
6027
+ createLabelingWorkflow(input: CreateWorkflowRequest!): LabelingWorkflow!
6028
+
5147
6029
  """To create new LiteMenu"""
5148
6030
  createLiteMenu(liteMenu: NewLiteMenu!): LiteMenu!
5149
6031
 
6032
+ """Create new MLflow experiment"""
6033
+ createMLflowExperiment(input: CreateExperimentInput!): MLflowExperiment!
6034
+
6035
+ """Create new model version"""
6036
+ createMLflowModelVersion(input: CreateModelVersionInput!): MLflowModelVersion!
6037
+
6038
+ """Create new registered model"""
6039
+ createMLflowRegisteredModel(input: CreateRegisteredModelInput!): MLflowRegisteredModel!
6040
+
6041
+ """Create new MLflow run"""
6042
+ createMLflowRun(input: CreateRunInput!): MLflowRun!
6043
+
5150
6044
  """To create new Menu"""
5151
6045
  createMenu(menu: NewMenu!): Menu!
5152
6046
 
@@ -5198,6 +6092,9 @@ type Mutation {
5198
6092
  """To create new privilege"""
5199
6093
  createPrivilege(privilege: NewPrivilege!): Privilege!
5200
6094
 
6095
+ """Create manual-only labeling workflow for quick annotation"""
6096
+ createQuickLabelingWorkflow(dataSetId: String!, projectId: Int!, workflowName: String!): LabelingWorkflow!
6097
+
5201
6098
  """To create new user"""
5202
6099
  createRole(role: NewRole!): User!
5203
6100
 
@@ -5474,9 +6371,33 @@ type Mutation {
5474
6371
  """To delete multiple Kpis"""
5475
6372
  deleteKpis(ids: [String!]!): Boolean!
5476
6373
 
6374
+ """Delete a prediction from Label Studio"""
6375
+ deleteLabelStudioPrediction(predictionId: Int!): Boolean!
6376
+
6377
+ """Delete a Label Studio project"""
6378
+ deleteLabelStudioProject(projectId: Int!): Boolean!
6379
+
6380
+ """Delete a task from Label Studio"""
6381
+ deleteLabelStudioTask(taskId: Int!): Boolean!
6382
+
6383
+ """Delete a webhook"""
6384
+ deleteLabelStudioWebhook(webhookId: Int!): Boolean!
6385
+
5477
6386
  """To delete LiteMenu"""
5478
6387
  deleteLiteMenu(id: String!): Boolean!
5479
6388
 
6389
+ """Remove ML backend from project"""
6390
+ deleteMLBackend(mlBackendId: Int!): Boolean!
6391
+
6392
+ """Delete ML model permanently"""
6393
+ deleteMLModel(id: String!): Boolean!
6394
+
6395
+ """Delete MLflow experiment"""
6396
+ deleteMLflowExperiment(experimentId: String!): Boolean!
6397
+
6398
+ """Delete model version"""
6399
+ deleteMLflowModelVersion(name: String!, version: String!): Boolean!
6400
+
5480
6401
  """To delete Menu"""
5481
6402
  deleteMenu(id: String!): Boolean!
5482
6403
 
@@ -5653,6 +6574,18 @@ type Mutation {
5653
6574
  """To end a ActivityThread"""
5654
6575
  endActivityThread(id: String!, output: Object, reason: String): ActivityThread!
5655
6576
 
6577
+ """Execute a labeling workflow"""
6578
+ executeDatasetWorkflow(parameters: String, workflowId: String!): WorkflowExecutionResult!
6579
+
6580
+ """Execute a labeling workflow"""
6581
+ executeLabelingWorkflow(input: ExecuteWorkflowRequest!): WorkflowExecutionResult!
6582
+
6583
+ """Export annotations from Label Studio with flexible format conversion"""
6584
+ exportAnnotationsWithFormat(input: ExportAnnotationsInput!, projectId: Int!): AnnotationExportResult!
6585
+
6586
+ """Export annotations from a Label Studio project"""
6587
+ exportLabelStudioAnnotations(format: String! = "JSON", projectId: Int!): ExportResult!
6588
+
5656
6589
  """
5657
6590
  Finalizes data collection for a specific period and generates summary records. This operation processes all collected data within the specified time range.
5658
6591
  """
@@ -5665,12 +6598,23 @@ type Mutation {
5665
6598
  generateApplianceSecret(id: String!): Appliance!
5666
6599
  generateApplicationSecret(id: String!): Application!
5667
6600
 
6601
+ """Generate Label Studio predictions for multiple tasks in batch"""
6602
+ generateBatchPredictions(input: BatchGeneratePredictionRequest!): BatchPredictionResult!
6603
+
5668
6604
  """Deprecated. Use finalizeDataCollection"""
5669
6605
  generateDataSummaries(dataSetId: String!, date: String!, period: String!): Boolean! @deprecated(reason: "This resolver has been replaced by finalizeDataCollection")
5670
6606
 
5671
6607
  """Deprecated. Use finalizeLatestDataCollection"""
5672
6608
  generateLatestDataSummaries(dataSetId: String!): Boolean! @deprecated(reason: "This resolver has been replaced by finalizeLatestDataCollection")
5673
6609
 
6610
+ """Generate Label Studio prediction for a task using AI model"""
6611
+ generatePrediction(input: GeneratePredictionRequest!): PredictionGenerationResult!
6612
+
6613
+ """
6614
+ Generate AI predictions for DataSet samples that already have Label Studio tasks
6615
+ """
6616
+ generatePredictionsForDataset(input: GeneratePredictionsForDatasetRequest!): BatchPredictionResult!
6617
+
5674
6618
  """
5675
6619
  Generates a presigned URL for downloading archived data. This mutation initiates the data export process and notifies users when the download is ready.
5676
6620
  """
@@ -5737,6 +6681,9 @@ type Mutation {
5737
6681
  """
5738
6682
  importEmployees(employees: [EmployeePatch!]!): Boolean!
5739
6683
 
6684
+ """Import data from external source into Label Studio project"""
6685
+ importFromExternalSource(input: ImportFromExternalSourceRequest!): ExternalImportResult!
6686
+
5740
6687
  """To import multiple KpiMetricValues"""
5741
6688
  importKpiMetricValues(metricValues: [KpiMetricValuePatch!]!): Boolean!
5742
6689
 
@@ -5776,6 +6723,9 @@ type Mutation {
5776
6723
  """To import multiple Oauth2Clients"""
5777
6724
  importOauth2Clients(oauth2Clients: [Oauth2ClientPatch!]!): Boolean!
5778
6725
 
6726
+ """Import predictions for a Label Studio project in bulk"""
6727
+ importPredictionsToProject(predictions: [BulkPredictionInput!]!, projectId: Int!): PredictionImportResult!
6728
+
5779
6729
  """
5780
6730
  Imports multiple scenarios, including their steps. This can overwrite existing scenarios if IDs match.
5781
6731
  """
@@ -5784,6 +6734,12 @@ type Mutation {
5784
6734
  """Imports multiple state registers from a provided list."""
5785
6735
  importStateRegisters(stateRegisters: [StateRegisterPatch!]!): Boolean!
5786
6736
 
6737
+ """Import tasks to a Label Studio project in bulk"""
6738
+ importTasksToLabelStudio(projectId: Int!, tasks: [TaskDataInput!]!): TaskImportResult!
6739
+
6740
+ """Import tasks to Label Studio with flexible data transformation"""
6741
+ importTasksWithTransform(input: ImportTasksWithTransformInput!, projectId: Int!): TaskImportResult!
6742
+
5787
6743
  """To import multiple Terminologies"""
5788
6744
  importTerminologies(terminologies: [TerminologyPatch!]!): Boolean!
5789
6745
 
@@ -5823,13 +6779,28 @@ type Mutation {
5823
6779
 
5824
6780
  """Removes one or more boards from a play group."""
5825
6781
  leavePlayGroup(boardIds: [String!]!, id: String!): PlayGroup!
6782
+
6783
+ """Log metric to MLflow run"""
6784
+ logMLflowMetric(input: LogMetricInput!): Boolean!
6785
+
6786
+ """Log parameter to MLflow run"""
6787
+ logMLflowParam(input: LogParamInput!): Boolean!
5826
6788
  multipleUpload(files: [Upload!]!): [Attachment!]!
5827
6789
 
6790
+ """Pause a workflow"""
6791
+ pauseDatasetWorkflow(workflowId: String!): LabelingWorkflow!
6792
+
6793
+ """Pause a workflow"""
6794
+ pauseLabelingWorkflow(workflowId: String!): LabelingWorkflow!
6795
+
5828
6796
  """
5829
6797
  To pick an activity ActivityInstance voluntarily. [cautions] This resolver will return a assigned ActivityThread.
5830
6798
  """
5831
6799
  pickActivityInstance(id: String!): ActivityThread
5832
6800
 
6801
+ """Promote model to target deployment stage (Staging/Production)"""
6802
+ promoteMLModel(input: PromoteModelInput!): MLModel!
6803
+
5833
6804
  """기존 KPI Value 인스턴스를 현재 formula/metric 값으로 재계산"""
5834
6805
  recalculateKpiValue(id: String!): KpiValue!
5835
6806
 
@@ -5879,6 +6850,12 @@ type Mutation {
5879
6850
  employeeId: String!
5880
6851
  ): Boolean!
5881
6852
 
6853
+ """Register webhook for Label Studio project to receive real-time updates"""
6854
+ registerLabelStudioWebhook(projectId: Int!): Webhook!
6855
+
6856
+ """Register new ML model in the system"""
6857
+ registerMLModel(input: RegisterMLModelInput!): MLModel!
6858
+
5882
6859
  """Register a new schedule with the scheduler service."""
5883
6860
  registerSchedule(schedule: NewSchedule!): ID!
5884
6861
 
@@ -5906,6 +6883,12 @@ type Mutation {
5906
6883
  """To restart ActivityThread"""
5907
6884
  restartActivityThread(id: String!, output: Object, reason: String): ActivityThread
5908
6885
 
6886
+ """Resume a paused workflow"""
6887
+ resumeDatasetWorkflow(workflowId: String!): LabelingWorkflow!
6888
+
6889
+ """Resume a paused workflow"""
6890
+ resumeLabelingWorkflow(workflowId: String!): LabelingWorkflow!
6891
+
5909
6892
  """Reverts a board to a specific historical version."""
5910
6893
  revertBoardVersion(id: String!, version: Float!): Board!
5911
6894
 
@@ -5970,6 +6953,22 @@ type Mutation {
5970
6953
  """To submit a ActivityThread"""
5971
6954
  submitActivityThread(id: String!, output: Object, reason: String): ActivityThread!
5972
6955
 
6956
+ """Synchronize all domain users to Label Studio (batch operation)"""
6957
+ syncAllUsersToLabelStudio: UserSyncSummary!
6958
+
6959
+ """
6960
+ Sync completed annotations from Label Studio to Things-Factory database
6961
+ """
6962
+ syncAnnotationsToDatabase(projectId: Int!): Int!
6963
+
6964
+ """
6965
+ Sync Label Studio annotations back to DataSamples, updating judgment fields
6966
+ """
6967
+ syncAnnotationsToDataset(input: SyncAnnotationsRequest!): SyncAnnotationsResult!
6968
+
6969
+ """Synchronize current user to Label Studio"""
6970
+ syncMyUserToLabelStudio: UserSyncResult!
6971
+
5973
6972
  """To synchronize auth-providers users"""
5974
6973
  synchronizeAuthProviderUsers(id: String!): Boolean!
5975
6974
 
@@ -5979,6 +6978,9 @@ type Mutation {
5979
6978
  synchronizePrivilegeMaster(privilege: NewPrivilege!): Boolean!
5980
6979
  terminateContract(partnerName: String!): Boolean!
5981
6980
 
6981
+ """Trigger ML model training with current annotations"""
6982
+ trainLabelStudioModel(mlBackendId: Int!): Boolean!
6983
+
5982
6984
  """
5983
6985
  Transfers domain ownership to another user. Use this mutation to assign the owner role to a different user within the domain.
5984
6986
  """
@@ -5987,6 +6989,14 @@ type Mutation {
5987
6989
  username: String!
5988
6990
  ): Boolean!
5989
6991
 
6992
+ """
6993
+ Transition model version to target stage (None, Staging, Production, Archived)
6994
+ """
6995
+ transitionMLflowModelStage(input: TransitionStageInput!): MLflowModelVersion!
6996
+
6997
+ """Trigger ML predictions for tasks in a project"""
6998
+ triggerLabelStudioPredictions(projectId: Int!, taskIds: [Int!]): Boolean!
6999
+
5990
7000
  """Unregister and remove a schedule from the scheduler service."""
5991
7001
  unregisterSchedule(handle: ID!): Boolean!
5992
7002
 
@@ -6114,9 +7124,18 @@ type Mutation {
6114
7124
  """To modify KpiValue information"""
6115
7125
  updateKpiValue(id: String!, patch: KpiValuePatch!): KpiValue!
6116
7126
 
7127
+ """Update an existing Label Studio project"""
7128
+ updateLabelStudioProject(input: CreateProjectInput!, projectId: Int!): LabelStudioProject!
7129
+
6117
7130
  """To modify LiteMenu information"""
6118
7131
  updateLiteMenu(id: String!, patch: LiteMenuPatch!): LiteMenu!
6119
7132
 
7133
+ """Update ML model information"""
7134
+ updateMLModel(id: String!, input: UpdateMLModelInput!): MLModel!
7135
+
7136
+ """Update MLflow run status"""
7137
+ updateMLflowRun(input: UpdateRunInput!): Boolean!
7138
+
6120
7139
  """To modify Menu information"""
6121
7140
  updateMenu(id: String!, patch: MenuPatch!): Menu!
6122
7141
 
@@ -8158,6 +9177,54 @@ input PlayGroupPatch {
8158
9177
  name: String
8159
9178
  }
8160
9179
 
9180
+ """Prediction generation result"""
9181
+ type PredictionGenerationResult {
9182
+ """Average confidence score"""
9183
+ avgConfidence: Float
9184
+
9185
+ """Error message if failed"""
9186
+ error: String
9187
+
9188
+ """Number of detected objects"""
9189
+ objectCount: Int!
9190
+
9191
+ """Created prediction ID"""
9192
+ predictionId: Int
9193
+
9194
+ """Success status"""
9195
+ success: Boolean!
9196
+
9197
+ """Task ID"""
9198
+ taskId: Int!
9199
+ }
9200
+
9201
+ """Result of prediction import operation"""
9202
+ type PredictionImportResult {
9203
+ """Number of predictions created"""
9204
+ created: Int!
9205
+
9206
+ """Error messages"""
9207
+ errors: [String!]
9208
+
9209
+ """Number of predictions failed"""
9210
+ failed: Int!
9211
+ }
9212
+
9213
+ """Input for creating a prediction"""
9214
+ input PredictionInput {
9215
+ """Model version"""
9216
+ modelVersion: String
9217
+
9218
+ """Prediction result as JSON string"""
9219
+ result: String!
9220
+
9221
+ """Prediction confidence score (0-1)"""
9222
+ score: Float
9223
+
9224
+ """Task ID to create prediction for"""
9225
+ taskId: Int!
9226
+ }
9227
+
8161
9228
  """Entity for PrinterDevice"""
8162
9229
  type PrinterDevice {
8163
9230
  activeFlag: Boolean
@@ -8286,6 +9353,42 @@ input ProfileInput {
8286
9353
  zoom: Float
8287
9354
  }
8288
9355
 
9356
+ """Project metrics and statistics"""
9357
+ type ProjectMetrics {
9358
+ """Statistics per annotator"""
9359
+ annotatorStats: [AnnotatorStats!]!
9360
+
9361
+ """Average annotations per task"""
9362
+ avgAnnotationsPerTask: Float!
9363
+
9364
+ """Average time per task in seconds"""
9365
+ avgTimePerTask: Float
9366
+
9367
+ """Number of completed tasks"""
9368
+ completedTasks: Int!
9369
+
9370
+ """Completion rate (0-1)"""
9371
+ completionRate: Float!
9372
+
9373
+ """Total annotations"""
9374
+ totalAnnotations: Int!
9375
+
9376
+ """Total number of tasks"""
9377
+ totalTasks: Int!
9378
+ }
9379
+
9380
+ """Input for promoting model stage"""
9381
+ input PromoteModelInput {
9382
+ """Model ID to promote"""
9383
+ modelId: String!
9384
+
9385
+ """Promotion notes"""
9386
+ notes: String
9387
+
9388
+ """Target stage"""
9389
+ targetStage: ModelStage!
9390
+ }
9391
+
8289
9392
  """
8290
9393
  Describes a single property for a component or a step, used for UI rendering and configuration.
8291
9394
  """
@@ -8735,6 +9838,9 @@ type Query {
8735
9838
  """
8736
9839
  checkDefaultPassword: Boolean!
8737
9840
 
9841
+ """Check if AI model is healthy"""
9842
+ checkModelHealth(modelId: String): Boolean!
9843
+
8738
9844
  """
8739
9845
  Determines whether the system provides a default password when creating a new user.
8740
9846
  """
@@ -8754,6 +9860,9 @@ type Query {
8754
9860
  email: EmailAddress!
8755
9861
  ): Boolean!
8756
9862
 
9863
+ """Classify an image using AI model"""
9864
+ classifyImage(input: InferenceRequest!): ClassificationResult!
9865
+
8757
9866
  """To fetch common approval lines"""
8758
9867
  commonApprovalLines(
8759
9868
  """An array of filter conditions to apply to the list query."""
@@ -9208,6 +10317,18 @@ type Query {
9208
10317
  """Sorting options for the list query."""
9209
10318
  sortings: [Sorting!]
9210
10319
  ): [DynamicDataSummary!]!
10320
+
10321
+ """Get labeling status and progress for a DataSet"""
10322
+ datasetLabelingStatus(input: DatasetLabelingStatusRequest!): DatasetLabelingStatus!
10323
+
10324
+ """Get workflow details"""
10325
+ datasetLabelingWorkflow(workflowId: String!): LabelingWorkflow!
10326
+
10327
+ """Get labeling workflows for a specific project"""
10328
+ datasetLabelingWorkflows(projectId: Int): [LabelingWorkflow!]!
10329
+
10330
+ """Get workflow execution status"""
10331
+ datasetWorkflowExecution(executionId: String!): WorkflowExecution!
9211
10332
  decipherCode(input: CodeDecipherInput!): CodeDecipherOutput!
9212
10333
  decipherErrorCode(input: CodeDecipherInput!): CodeDecipherOutput!
9213
10334
 
@@ -9244,6 +10365,9 @@ type Query {
9244
10365
  sortings: [Sorting!]
9245
10366
  ): DepartmentList!
9246
10367
 
10368
+ """Run object detection on an image using AI model"""
10369
+ detectObjects(input: InferenceRequest!): [DetectedObject!]!
10370
+
9247
10371
  """
9248
10372
  Fetches a single domain entity by its unique identifier. Only superusers are granted this privilege.
9249
10373
  """
@@ -9704,6 +10828,48 @@ type Query {
9704
10828
  rootId: String
9705
10829
  ): [Kpi!]!
9706
10830
 
10831
+ """Get all ML backends connected to a Label Studio project"""
10832
+ labelStudioMLBackends(projectId: Int!): [MLBackend!]!
10833
+
10834
+ """Get a single prediction by ID"""
10835
+ labelStudioPrediction(predictionId: Int!): LabelStudioPrediction
10836
+
10837
+ """Get a single Label Studio project by ID"""
10838
+ labelStudioProject(projectId: Int!): LabelStudioProject
10839
+
10840
+ """Get metrics and statistics for a Label Studio project"""
10841
+ labelStudioProjectMetrics(projectId: Int!): ProjectMetrics!
10842
+
10843
+ """Get all predictions for a Label Studio project"""
10844
+ labelStudioProjectPredictions(projectId: Int!): [LabelStudioPrediction!]!
10845
+
10846
+ """Get all Label Studio projects accessible to the user"""
10847
+ labelStudioProjects: [LabelStudioProject!]!
10848
+
10849
+ """Get a single task by ID"""
10850
+ labelStudioTask(taskId: Int!): LabelStudioTask
10851
+
10852
+ """Get all annotations for a task"""
10853
+ labelStudioTaskAnnotations(taskId: Int!): [LabelStudioAnnotation!]!
10854
+
10855
+ """Get all predictions for a Label Studio task"""
10856
+ labelStudioTaskPredictions(taskId: Int!): [LabelStudioPrediction!]!
10857
+
10858
+ """Get all tasks for a Label Studio project"""
10859
+ labelStudioTasks(page: Int = 1, pageSize: Int = 100, projectId: Int!): [LabelStudioTask!]!
10860
+
10861
+ """Get JWT token for Label Studio authentication"""
10862
+ labelStudioToken: String
10863
+
10864
+ """Get all webhooks registered for a Label Studio project"""
10865
+ labelStudioWebhooks(projectId: Int!): [Webhook!]!
10866
+
10867
+ """Get labeling workflow details"""
10868
+ labelingWorkflow(workflowId: String!): LabelingWorkflow!
10869
+
10870
+ """List all labeling workflows"""
10871
+ labelingWorkflows(projectId: Int): LabelingWorkflowList!
10872
+
9707
10873
  """To fetch a LiteMenu"""
9708
10874
  liteMenu(id: String!): LiteMenu!
9709
10875
 
@@ -9848,6 +11014,39 @@ type Query {
9848
11014
  sortings: [Sorting!]
9849
11015
  ): MenuList!
9850
11016
 
11017
+ """Get ML model by ID"""
11018
+ mlModel(id: String!): MLModel
11019
+
11020
+ """Get all versions of a model by name"""
11021
+ mlModelVersions(name: String!): [MLModel!]!
11022
+
11023
+ """Get all ML models in the system"""
11024
+ mlModels: [MLModel!]!
11025
+
11026
+ """Get models associated with Label Studio project"""
11027
+ mlModelsByLabelStudioProject(projectId: Float!): [MLModel!]!
11028
+
11029
+ """Get models by deployment stage"""
11030
+ mlModelsByStage(stage: ModelStage!): [MLModel!]!
11031
+
11032
+ """Get MLflow experiment by ID"""
11033
+ mlflowExperiment(experimentId: String!): MLflowExperiment
11034
+
11035
+ """Get all MLflow experiments"""
11036
+ mlflowExperiments: [MLflowExperiment!]!
11037
+
11038
+ """Get model version"""
11039
+ mlflowModelVersion(name: String!, version: String!): MLflowModelVersion
11040
+
11041
+ """Get registered model by name"""
11042
+ mlflowRegisteredModel(name: String!): MLflowRegisteredModel
11043
+
11044
+ """Get all registered models in MLflow"""
11045
+ mlflowRegisteredModels: [MLflowRegisteredModel!]!
11046
+
11047
+ """Get MLflow run by ID"""
11048
+ mlflowRun(runId: String!): MLflowRun
11049
+
9851
11050
  """To fetch approval lines only for to the user"""
9852
11051
  myApprovalLines(
9853
11052
  """An array of filter conditions to apply to the list query."""
@@ -10095,6 +11294,9 @@ type Query {
10095
11294
  """To fetch a UserPreference"""
10096
11295
  preference(id: String!): UserPreference
10097
11296
 
11297
+ """Preview external data source to verify connection and data structure"""
11298
+ previewExternalDataSource(source: ExternalDataSourceConfig!): DataSourcePreview!
11299
+
10098
11300
  """To fetch a PrinterDevice"""
10099
11301
  printerDevice(id: String!): PrinterDevice!
10100
11302
 
@@ -10227,6 +11429,9 @@ type Query {
10227
11429
  sortings: [Sorting!]
10228
11430
  ): DomainList!
10229
11431
 
11432
+ """Search MLflow runs"""
11433
+ searchMLflowRuns(input: SearchRunsInput!): [MLflowRun!]!
11434
+
10230
11435
  """
10231
11436
  Fetches the secure IP list (whitelist, blacklist, etc.) for the current domain. Only domain owners and superusers are granted this privilege.
10232
11437
  """
@@ -10428,6 +11633,12 @@ type Query {
10428
11633
  """Sorting options for the list query."""
10429
11634
  sortings: [Sorting!]
10430
11635
  ): WorkShiftList!
11636
+
11637
+ """Get workflow execution status"""
11638
+ workflowExecution(executionId: String!): WorkflowExecution!
11639
+
11640
+ """List executions for a workflow"""
11641
+ workflowExecutions(workflowId: String!): WorkflowExecutionList!
10431
11642
  }
10432
11643
 
10433
11644
  type RecipientItem {
@@ -10436,6 +11647,45 @@ type RecipientItem {
10436
11647
  value: String
10437
11648
  }
10438
11649
 
11650
+ """Input for registering ML model"""
11651
+ input RegisterMLModelInput {
11652
+ """Artifact URI"""
11653
+ artifactUri: String
11654
+
11655
+ """Model description"""
11656
+ description: String
11657
+
11658
+ """ML framework"""
11659
+ framework: ModelFramework
11660
+
11661
+ """Label Studio project ID"""
11662
+ labelStudioProjectId: Int
11663
+
11664
+ """Model metadata as JSON string"""
11665
+ metadata: String
11666
+
11667
+ """Model metrics as JSON string"""
11668
+ metrics: String
11669
+
11670
+ """MLflow experiment ID"""
11671
+ mlflowExperimentId: String
11672
+
11673
+ """MLflow run ID"""
11674
+ mlflowRunId: String
11675
+
11676
+ """Model name"""
11677
+ name: String!
11678
+
11679
+ """Initial stage"""
11680
+ stage: ModelStage
11681
+
11682
+ """Tags as JSON array string"""
11683
+ tags: String
11684
+
11685
+ """Model version"""
11686
+ version: String!
11687
+ }
11688
+
10439
11689
  """
10440
11690
  A role that groups a set of privileges, which can be assigned to users.
10441
11691
  """
@@ -11056,6 +12306,21 @@ enum ScopeType {
11056
12306
  TEMPORAL
11057
12307
  }
11058
12308
 
12309
+ """Input for searching runs"""
12310
+ input SearchRunsInput {
12311
+ """Experiment IDs to search"""
12312
+ experimentIds: [String!]!
12313
+
12314
+ """Filter string"""
12315
+ filter: String
12316
+
12317
+ """Max results"""
12318
+ maxResults: Int
12319
+
12320
+ """Order by"""
12321
+ orderBy: [String!]
12322
+ }
12323
+
11059
12324
  """Entity for Setting"""
11060
12325
  type Setting {
11061
12326
  category: String!
@@ -11364,6 +12629,96 @@ type Subscription {
11364
12629
  syncConnections: [Connection!]!
11365
12630
  }
11366
12631
 
12632
+ """Request to sync Label Studio annotations back to DataSamples"""
12633
+ input SyncAnnotationsRequest {
12634
+ """Only sync completed annotations"""
12635
+ completedOnly: Boolean = false
12636
+
12637
+ """DataSet ID to sync annotations to"""
12638
+ dataSetId: String!
12639
+
12640
+ """Label Studio project ID"""
12641
+ projectId: Int!
12642
+
12643
+ """Only sync annotations updated after this date"""
12644
+ sinceDate: DateTimeISO
12645
+ }
12646
+
12647
+ """Result of syncing annotations to dataset"""
12648
+ type SyncAnnotationsResult {
12649
+ """Error message if operation partially failed"""
12650
+ error: String
12651
+
12652
+ """Number of DataSamples successfully updated"""
12653
+ samplesUpdated: Int!
12654
+
12655
+ """Number of annotations skipped"""
12656
+ skipped: Int!
12657
+
12658
+ """Total annotations processed"""
12659
+ totalAnnotations: Int!
12660
+
12661
+ """Number of updates that failed"""
12662
+ updatesFailed: Int!
12663
+ }
12664
+
12665
+ """Result of task creation from dataset"""
12666
+ type TaskCreationResult {
12667
+ """Error message if operation partially failed"""
12668
+ error: String
12669
+
12670
+ """Number of AI predictions generated"""
12671
+ predictionsCreated: Int
12672
+
12673
+ """Array of created Label Studio task IDs"""
12674
+ taskIds: [Int!]!
12675
+
12676
+ """Number of tasks successfully created"""
12677
+ tasksCreated: Int!
12678
+
12679
+ """Number of tasks that failed to create"""
12680
+ tasksFailed: Int!
12681
+
12682
+ """Number of samples skipped (no image, already exists, etc.)"""
12683
+ tasksSkipped: Int!
12684
+
12685
+ """Total DataSamples processed"""
12686
+ totalSamples: Int!
12687
+ }
12688
+
12689
+ """Input for creating tasks"""
12690
+ input TaskDataInput {
12691
+ """Task data as JSON string"""
12692
+ data: String!
12693
+ }
12694
+
12695
+ """Result of task import operation"""
12696
+ type TaskImportResult {
12697
+ """Error messages"""
12698
+ errors: [String!]
12699
+
12700
+ """Number of tasks failed"""
12701
+ failed: Int!
12702
+
12703
+ """Number of tasks imported"""
12704
+ imported: Int!
12705
+
12706
+ """IDs of imported tasks"""
12707
+ taskIds: [Int!]!
12708
+ }
12709
+
12710
+ """Task transformation rule for flexible data import"""
12711
+ input TaskTransformRuleInput {
12712
+ """Field mapping as JSON (Label Studio field -> source path)"""
12713
+ dataFields: String!
12714
+
12715
+ """Metadata mapping as JSON"""
12716
+ meta: String
12717
+
12718
+ """Prediction configuration as JSON"""
12719
+ predictions: String
12720
+ }
12721
+
11367
12722
  """Describes a type of task that can be used in a scenario."""
11368
12723
  type TaskType {
11369
12724
  """Indicates whether this task type can be used without a connector."""
@@ -11497,6 +12852,59 @@ input ThemePatch {
11497
12852
  value: Object
11498
12853
  }
11499
12854
 
12855
+ """Input for transitioning model version stage"""
12856
+ input TransitionStageInput {
12857
+ """Archive existing versions in target stage"""
12858
+ archiveExistingVersions: Boolean
12859
+
12860
+ """Model name"""
12861
+ name: String!
12862
+
12863
+ """Target stage (None, Staging, Production, Archived)"""
12864
+ stage: String!
12865
+
12866
+ """Version number"""
12867
+ version: String!
12868
+ }
12869
+
12870
+ """How the workflow is triggered"""
12871
+ enum TriggerType {
12872
+ DatasetUpdate
12873
+ ExternalEvent
12874
+ Manual
12875
+ Schedule
12876
+ }
12877
+
12878
+ """Input for updating ML model"""
12879
+ input UpdateMLModelInput {
12880
+ """Model description"""
12881
+ description: String
12882
+
12883
+ """Model metadata as JSON string"""
12884
+ metadata: String
12885
+
12886
+ """Model metrics as JSON string"""
12887
+ metrics: String
12888
+
12889
+ """Stage"""
12890
+ stage: ModelStage
12891
+
12892
+ """Tags as JSON array string"""
12893
+ tags: String
12894
+ }
12895
+
12896
+ """Input for updating run"""
12897
+ input UpdateRunInput {
12898
+ """End time"""
12899
+ endTime: Int
12900
+
12901
+ """Run ID"""
12902
+ runId: String!
12903
+
12904
+ """Status"""
12905
+ status: String
12906
+ }
12907
+
11500
12908
  """The `Upload` scalar type represents a file upload."""
11501
12909
  scalar Upload
11502
12910
 
@@ -11649,6 +13057,29 @@ type UserRole {
11649
13057
  name: String
11650
13058
  }
11651
13059
 
13060
+ """User synchronization result"""
13061
+ type UserSyncResult {
13062
+ action: String!
13063
+ email: String!
13064
+ error: String
13065
+
13066
+ """Label Studio permissions (Admin/Staff/Inactive)"""
13067
+ lsPermissions: String
13068
+ lsUserId: String
13069
+ success: Boolean!
13070
+ }
13071
+
13072
+ """User synchronization summary"""
13073
+ type UserSyncSummary {
13074
+ created: Int!
13075
+ deactivated: Int!
13076
+ errors: Int!
13077
+ results: [UserSyncResult!]!
13078
+ skipped: Int!
13079
+ total: Int!
13080
+ updated: Int!
13081
+ }
13082
+
11652
13083
  """
11653
13084
  Represents the link between a user and an external authentication provider.
11654
13085
  """
@@ -11677,6 +13108,24 @@ type UsersAuthProviders {
11677
13108
  user: User
11678
13109
  }
11679
13110
 
13111
+ """Webhook information"""
13112
+ type Webhook {
13113
+ """Webhook ID"""
13114
+ id: Int!
13115
+
13116
+ """Is webhook active"""
13117
+ isActive: Boolean!
13118
+
13119
+ """Project ID"""
13120
+ projectId: Int!
13121
+
13122
+ """Send payload with webhook"""
13123
+ sendPayload: Boolean!
13124
+
13125
+ """Webhook URL"""
13126
+ url: String!
13127
+ }
13128
+
11680
13129
  """Entity for WorkShift"""
11681
13130
  type WorkShift {
11682
13131
  createdAt: DateTimeISO
@@ -11714,6 +13163,149 @@ input WorkShiftPatch {
11714
13163
  toTime: String!
11715
13164
  }
11716
13165
 
13166
+ type WorkflowExecution {
13167
+ """Completed at"""
13168
+ completedAt: DateTimeISO
13169
+
13170
+ """Error message if failed"""
13171
+ error: String
13172
+
13173
+ """Execution ID"""
13174
+ id: String!
13175
+
13176
+ """Started at"""
13177
+ startedAt: DateTimeISO!
13178
+
13179
+ """Execution status: running, completed, failed"""
13180
+ status: String!
13181
+
13182
+ """Step executions"""
13183
+ steps: [WorkflowExecutionStep!]!
13184
+
13185
+ """Overall result summary"""
13186
+ summary: String
13187
+
13188
+ """Total duration in milliseconds"""
13189
+ totalDurationMs: Int
13190
+
13191
+ """Workflow ID"""
13192
+ workflowId: String!
13193
+
13194
+ """Workflow name"""
13195
+ workflowName: String!
13196
+ }
13197
+
13198
+ type WorkflowExecutionList {
13199
+ """List of executions"""
13200
+ items: [WorkflowExecution!]!
13201
+
13202
+ """Total count"""
13203
+ total: Int!
13204
+ }
13205
+
13206
+ type WorkflowExecutionResult {
13207
+ """Error if failed"""
13208
+ error: String
13209
+
13210
+ """Execution ID"""
13211
+ executionId: String!
13212
+
13213
+ """Execution status"""
13214
+ status: String!
13215
+
13216
+ """Execution summary"""
13217
+ summary: String
13218
+ }
13219
+
13220
+ type WorkflowExecutionStep {
13221
+ """Completed at"""
13222
+ completedAt: DateTimeISO
13223
+
13224
+ """Duration in milliseconds"""
13225
+ durationMs: Int
13226
+
13227
+ """Error message if failed"""
13228
+ error: String
13229
+
13230
+ """Step output data"""
13231
+ output: String
13232
+
13233
+ """Started at"""
13234
+ startedAt: DateTimeISO
13235
+
13236
+ """Step status: pending, running, completed, failed, skipped"""
13237
+ status: String!
13238
+
13239
+ """Step name"""
13240
+ stepName: String!
13241
+
13242
+ """Step type"""
13243
+ stepType: WorkflowStepType!
13244
+ }
13245
+
13246
+ """Status of labeling workflow"""
13247
+ enum WorkflowStatus {
13248
+ Active
13249
+ Completed
13250
+ Draft
13251
+ Failed
13252
+ Paused
13253
+ }
13254
+
13255
+ type WorkflowStep {
13256
+ """Execution condition"""
13257
+ condition: String
13258
+
13259
+ """Step configuration"""
13260
+ config: String!
13261
+
13262
+ """Continue on error"""
13263
+ continueOnError: Boolean!
13264
+
13265
+ """Max retry attempts"""
13266
+ maxRetries: Int
13267
+
13268
+ """Step name"""
13269
+ name: String!
13270
+
13271
+ """Step order"""
13272
+ order: Int!
13273
+
13274
+ """Step type"""
13275
+ type: WorkflowStepType!
13276
+ }
13277
+
13278
+ input WorkflowStepInput {
13279
+ """Condition to execute this step (JSON logic)"""
13280
+ condition: String
13281
+
13282
+ """Step configuration as JSON string"""
13283
+ config: String!
13284
+
13285
+ """Continue on error"""
13286
+ continueOnError: Boolean = true
13287
+
13288
+ """Max retry attempts"""
13289
+ maxRetries: Int
13290
+
13291
+ """Step name"""
13292
+ name: String!
13293
+
13294
+ """Step type"""
13295
+ type: WorkflowStepType!
13296
+ }
13297
+
13298
+ """Type of workflow step"""
13299
+ enum WorkflowStepType {
13300
+ ExportResults
13301
+ GeneratePredictions
13302
+ ImportData
13303
+ Notification
13304
+ SyncAnnotations
13305
+ ValidateQuality
13306
+ WaitForAnnotations
13307
+ }
13308
+
11717
13309
  input i18nCompletionInput {
11718
13310
  json: String!
11719
13311
  }