@autoweb/domain-models 1.0.0

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.
Files changed (68) hide show
  1. package/README.md +100 -0
  2. package/index.d.ts +594 -0
  3. package/index.js +3 -0
  4. package/package.json +55 -0
  5. package/python-models/__init__.py +68 -0
  6. package/python-models/action-configs.py +1112 -0
  7. package/python-models/build/lib/floweb_models/__init__.py +194 -0
  8. package/python-models/build/lib/floweb_models/action_configs.py +783 -0
  9. package/python-models/build/lib/floweb_models/debug.py +209 -0
  10. package/python-models/build/lib/floweb_models/debug_models.py +141 -0
  11. package/python-models/build/lib/floweb_models/environment.py +158 -0
  12. package/python-models/build/lib/floweb_models/execution_results.py +208 -0
  13. package/python-models/build/lib/floweb_models/flow.py +345 -0
  14. package/python-models/build/lib/floweb_models/flow_validation.py +316 -0
  15. package/python-models/build/lib/floweb_models/parallel_execution.py +258 -0
  16. package/python-models/build/lib/floweb_models/performance_test.py +605 -0
  17. package/python-models/build/lib/floweb_models/websocket_communication.py +697 -0
  18. package/python-models/debug.py +209 -0
  19. package/python-models/dist/floweb_domain_models-1.0.0-py3-none-any.whl +0 -0
  20. package/python-models/environment.py +158 -0
  21. package/python-models/execution-results.py +208 -0
  22. package/python-models/flow-validation.py +316 -0
  23. package/python-models/flow.py +369 -0
  24. package/python-models/floweb_domain_models.egg-info/PKG-INFO +9 -0
  25. package/python-models/floweb_domain_models.egg-info/SOURCES.txt +16 -0
  26. package/python-models/floweb_domain_models.egg-info/dependency_links.txt +1 -0
  27. package/python-models/floweb_domain_models.egg-info/requires.txt +1 -0
  28. package/python-models/floweb_domain_models.egg-info/top_level.txt +1 -0
  29. package/python-models/floweb_models/__init__.py +194 -0
  30. package/python-models/floweb_models/__pycache__/__init__.cpython-312.pyc +0 -0
  31. package/python-models/floweb_models/__pycache__/action_configs.cpython-312.pyc +0 -0
  32. package/python-models/floweb_models/__pycache__/debug.cpython-312.pyc +0 -0
  33. package/python-models/floweb_models/__pycache__/debug_models.cpython-312.pyc +0 -0
  34. package/python-models/floweb_models/__pycache__/environment.cpython-312.pyc +0 -0
  35. package/python-models/floweb_models/__pycache__/execution_results.cpython-312.pyc +0 -0
  36. package/python-models/floweb_models/__pycache__/flow.cpython-312.pyc +0 -0
  37. package/python-models/floweb_models/__pycache__/flow_validation.cpython-312.pyc +0 -0
  38. package/python-models/floweb_models/__pycache__/parallel_execution.cpython-312.pyc +0 -0
  39. package/python-models/floweb_models/__pycache__/performance_test.cpython-312.pyc +0 -0
  40. package/python-models/floweb_models/__pycache__/websocket_communication.cpython-312.pyc +0 -0
  41. package/python-models/floweb_models/action_configs.py +1062 -0
  42. package/python-models/floweb_models/debug.py +209 -0
  43. package/python-models/floweb_models/debug_models.py +141 -0
  44. package/python-models/floweb_models/environment.py +158 -0
  45. package/python-models/floweb_models/execution_results.py +208 -0
  46. package/python-models/floweb_models/flow.py +345 -0
  47. package/python-models/floweb_models/flow_validation.py +316 -0
  48. package/python-models/floweb_models/parallel_execution.py +229 -0
  49. package/python-models/floweb_models/performance_test.py +605 -0
  50. package/python-models/floweb_models/websocket_communication.py +697 -0
  51. package/python-models/floweb_models.egg-info/PKG-INFO +9 -0
  52. package/python-models/floweb_models.egg-info/SOURCES.txt +16 -0
  53. package/python-models/floweb_models.egg-info/dependency_links.txt +1 -0
  54. package/python-models/floweb_models.egg-info/requires.txt +1 -0
  55. package/python-models/floweb_models.egg-info/top_level.txt +1 -0
  56. package/python-models/parallel-execution.py +475 -0
  57. package/python-models/performance-test.py +605 -0
  58. package/python-models/setup.py +13 -0
  59. package/python-models/websocket-communication.py +697 -0
  60. package/schemas/action-configs.json +1501 -0
  61. package/schemas/debug.json +203 -0
  62. package/schemas/environment.json +165 -0
  63. package/schemas/execution-results.json +209 -0
  64. package/schemas/flow-validation.json +311 -0
  65. package/schemas/flow.json +381 -0
  66. package/schemas/parallel-execution.json +219 -0
  67. package/schemas/performance-test.json +600 -0
  68. package/schemas/websocket-communication.json +1118 -0
@@ -0,0 +1,605 @@
1
+ # generated by datamodel-codegen:
2
+ # filename: performance-test.json
3
+ # timestamp: 2026-01-25T13:38:23+00:00
4
+
5
+ from __future__ import annotations
6
+
7
+ from enum import StrEnum
8
+ from typing import Annotated, Any
9
+
10
+ from pydantic import AnyUrl, AwareDatetime, BaseModel, ConfigDict, Field
11
+
12
+
13
+ class Method(StrEnum):
14
+ """
15
+ HTTP method
16
+ """
17
+
18
+ GET = 'GET'
19
+ POST = 'POST'
20
+ PUT = 'PUT'
21
+ DELETE = 'DELETE'
22
+ PATCH = 'PATCH'
23
+ HEAD = 'HEAD'
24
+ OPTIONS = 'OPTIONS'
25
+
26
+
27
+ class ResourceType(StrEnum):
28
+ """
29
+ Type of resource requested
30
+ """
31
+
32
+ document = 'document'
33
+ stylesheet = 'stylesheet'
34
+ script = 'script'
35
+ image = 'image'
36
+ fetch = 'fetch'
37
+ xhr = 'xhr'
38
+ other = 'other'
39
+
40
+
41
+ class ResponseTiming(BaseModel):
42
+ model_config = ConfigDict(
43
+ populate_by_name=True,
44
+ )
45
+ dns: float
46
+ """
47
+ DNS lookup time in milliseconds
48
+ """
49
+ tcp: float
50
+ """
51
+ TCP connection time in milliseconds
52
+ """
53
+ ssl: float
54
+ """
55
+ SSL/TLS handshake time in milliseconds
56
+ """
57
+ ttfb: float
58
+ """
59
+ Time to first byte in milliseconds
60
+ """
61
+ download: float
62
+ """
63
+ Download time in milliseconds
64
+ """
65
+ total: float
66
+ """
67
+ Total request time in milliseconds
68
+ """
69
+
70
+
71
+ class Status(StrEnum):
72
+ """
73
+ Test status
74
+ """
75
+
76
+ draft = 'draft'
77
+ configured = 'configured'
78
+ running = 'running'
79
+ completed = 'completed'
80
+ archived = 'archived'
81
+
82
+
83
+ class PerformanceTestMetadata(BaseModel):
84
+ model_config = ConfigDict(
85
+ populate_by_name=True,
86
+ )
87
+ id: str
88
+ """
89
+ Unique test identifier
90
+ """
91
+ name: str
92
+ """
93
+ Test name
94
+ """
95
+ description: str
96
+ """
97
+ Test description
98
+ """
99
+ tags: list[str]
100
+ """
101
+ Test tags for categorization
102
+ """
103
+ parentID: str | None = None
104
+ """
105
+ Parent folder ID
106
+ """
107
+ createdAt: AwareDatetime
108
+ """
109
+ Creation timestamp
110
+ """
111
+ updatedAt: AwareDatetime
112
+ """
113
+ Last update timestamp
114
+ """
115
+ createdBy: str
116
+ """
117
+ Creator identifier
118
+ """
119
+ version: Annotated[int, Field(ge=1)]
120
+ """
121
+ Test version number
122
+ """
123
+ status: Status
124
+ """
125
+ Test status
126
+ """
127
+ lastRun: AwareDatetime | None = None
128
+ """
129
+ Last execution timestamp
130
+ """
131
+
132
+
133
+ class RefreshMethod(StrEnum):
134
+ """
135
+ HTTP method for refresh request
136
+ """
137
+
138
+ GET = 'GET'
139
+ POST = 'POST'
140
+ PUT = 'PUT'
141
+
142
+
143
+ class TokenRefreshConfig(BaseModel):
144
+ model_config = ConfigDict(
145
+ populate_by_name=True,
146
+ )
147
+ refresh_url: AnyUrl
148
+ """
149
+ Token refresh endpoint URL
150
+ """
151
+ refresh_method: RefreshMethod | None = 'POST'
152
+ """
153
+ HTTP method for refresh request
154
+ """
155
+ refresh_body: Any | None = None
156
+ """
157
+ Request body for token refresh
158
+ """
159
+ refresh_headers: dict[str, str] | None = None
160
+ """
161
+ Headers for refresh request
162
+ """
163
+ token_path: str
164
+ """
165
+ JSON path to extract token from response
166
+ """
167
+ token_header: str | None = 'Authorization'
168
+ """
169
+ Header name for token
170
+ """
171
+ token_prefix: str | None = 'Bearer'
172
+ """
173
+ Token prefix
174
+ """
175
+ refresh_interval: int | None = None
176
+ """
177
+ Refresh interval in seconds
178
+ """
179
+
180
+
181
+ class Credential(BaseModel):
182
+ model_config = ConfigDict(
183
+ populate_by_name=True,
184
+ )
185
+ headers: dict[str, str]
186
+ """
187
+ Headers for this credential set
188
+ """
189
+ user_id: str | None = None
190
+ """
191
+ User identifier
192
+ """
193
+
194
+
195
+ class RotationStrategy(StrEnum):
196
+ """
197
+ Credential rotation strategy
198
+ """
199
+
200
+ round_robin = 'round_robin'
201
+ random = 'random'
202
+
203
+
204
+ class CredentialRotationConfig(BaseModel):
205
+ model_config = ConfigDict(
206
+ populate_by_name=True,
207
+ )
208
+ credentials: list[Credential]
209
+ """
210
+ Array of credential sets
211
+ """
212
+ rotation_strategy: RotationStrategy | None = 'round_robin'
213
+ """
214
+ Credential rotation strategy
215
+ """
216
+
217
+
218
+ class LoadTestThresholds(BaseModel):
219
+ model_config = ConfigDict(
220
+ populate_by_name=True,
221
+ )
222
+ maxResponseTime: Annotated[int, Field(ge=0)]
223
+ """
224
+ Maximum acceptable response time in milliseconds
225
+ """
226
+ maxErrorRate: Annotated[float, Field(ge=0.0, le=1.0)]
227
+ """
228
+ Maximum acceptable error rate (0-1)
229
+ """
230
+ minThroughput: Annotated[float, Field(ge=0.0)]
231
+ """
232
+ Minimum requests per second
233
+ """
234
+
235
+
236
+ class ResponseTimeMetrics(BaseModel):
237
+ model_config = ConfigDict(
238
+ populate_by_name=True,
239
+ )
240
+ min: float
241
+ """
242
+ Minimum response time
243
+ """
244
+ max: float
245
+ """
246
+ Maximum response time
247
+ """
248
+ mean: float
249
+ """
250
+ Mean response time
251
+ """
252
+ median: float
253
+ """
254
+ Median response time
255
+ """
256
+ p90: float
257
+ """
258
+ 90th percentile response time
259
+ """
260
+ p95: float
261
+ """
262
+ 95th percentile response time
263
+ """
264
+ p99: float
265
+ """
266
+ 99th percentile response time
267
+ """
268
+
269
+
270
+ class BandwidthMetrics(BaseModel):
271
+ model_config = ConfigDict(
272
+ populate_by_name=True,
273
+ )
274
+ sent: int
275
+ """
276
+ Total bytes sent
277
+ """
278
+ received: int
279
+ """
280
+ Total bytes received
281
+ """
282
+ avgSentPerSecond: float
283
+ """
284
+ Average bytes sent per second
285
+ """
286
+ avgReceivedPerSecond: float
287
+ """
288
+ Average bytes received per second
289
+ """
290
+
291
+
292
+ class RequestExecution(BaseModel):
293
+ model_config = ConfigDict(
294
+ populate_by_name=True,
295
+ )
296
+ timestamp: float
297
+ """
298
+ Execution timestamp
299
+ """
300
+ statusCode: int
301
+ """
302
+ HTTP status code
303
+ """
304
+ responseTime: float
305
+ """
306
+ Response time in milliseconds
307
+ """
308
+ size: int
309
+ """
310
+ Response size in bytes
311
+ """
312
+ success: bool
313
+ """
314
+ Whether the request was successful
315
+ """
316
+ error: str | None = None
317
+ """
318
+ Error message if failed
319
+ """
320
+
321
+
322
+ class TimelineDataPoint(BaseModel):
323
+ model_config = ConfigDict(
324
+ populate_by_name=True,
325
+ )
326
+ timestamp: float
327
+ """
328
+ Data point timestamp
329
+ """
330
+ activeUsers: int
331
+ """
332
+ Number of active users at this point
333
+ """
334
+ requestsPerSecond: float
335
+ """
336
+ Requests per second at this point
337
+ """
338
+ avgResponseTime: float
339
+ """
340
+ Average response time at this point
341
+ """
342
+ errorRate: float
343
+ """
344
+ Error rate at this point
345
+ """
346
+
347
+
348
+ class RecordedResponse(BaseModel):
349
+ model_config = ConfigDict(
350
+ populate_by_name=True,
351
+ )
352
+ status: int
353
+ """
354
+ HTTP status code
355
+ """
356
+ statusText: str
357
+ """
358
+ HTTP status text
359
+ """
360
+ headers: dict[str, str]
361
+ """
362
+ Response headers
363
+ """
364
+ body: str | None = None
365
+ """
366
+ Response body
367
+ """
368
+ size: int
369
+ """
370
+ Response size in bytes
371
+ """
372
+ timing: ResponseTiming
373
+ """
374
+ Response timing breakdown
375
+ """
376
+
377
+
378
+ class AuthConfig(BaseModel):
379
+ model_config = ConfigDict(
380
+ populate_by_name=True,
381
+ )
382
+ token_refresh: TokenRefreshConfig | None = None
383
+ """
384
+ Token refresh configuration
385
+ """
386
+ credential_rotation: CredentialRotationConfig | None = None
387
+ """
388
+ Credential rotation configuration
389
+ """
390
+ header_override: dict[str, str] | None = None
391
+ """
392
+ Header override configuration
393
+ """
394
+
395
+
396
+ class LoadTestConfiguration(BaseModel):
397
+ model_config = ConfigDict(
398
+ populate_by_name=True,
399
+ )
400
+ targetUrl: AnyUrl
401
+ """
402
+ Base URL for the load test
403
+ """
404
+ duration: Annotated[int, Field(ge=1)]
405
+ """
406
+ Test duration in seconds
407
+ """
408
+ virtualUsers: Annotated[int, Field(ge=1)]
409
+ """
410
+ Number of concurrent virtual users
411
+ """
412
+ rampUpTime: Annotated[int | None, Field(ge=0)] = None
413
+ """
414
+ Time to ramp up to full load in seconds
415
+ """
416
+ thinkTime: Annotated[int | None, Field(ge=0)] = None
417
+ """
418
+ Delay between requests per user in milliseconds
419
+ """
420
+ includeRequests: list[str]
421
+ """
422
+ IDs of requests to include in load test
423
+ """
424
+ thresholds: LoadTestThresholds
425
+ """
426
+ Pass/fail thresholds
427
+ """
428
+ authConfig: AuthConfig | None = None
429
+ """
430
+ Authentication configuration
431
+ """
432
+
433
+
434
+ class AggregateMetrics(BaseModel):
435
+ model_config = ConfigDict(
436
+ populate_by_name=True,
437
+ )
438
+ totalRequests: int
439
+ """
440
+ Total number of requests executed
441
+ """
442
+ successfulRequests: int
443
+ """
444
+ Number of successful requests
445
+ """
446
+ failedRequests: int
447
+ """
448
+ Number of failed requests
449
+ """
450
+ errorRate: float
451
+ """
452
+ Error rate (0-1)
453
+ """
454
+ throughput: float
455
+ """
456
+ Requests per second
457
+ """
458
+ responseTime: ResponseTimeMetrics
459
+ """
460
+ Response time statistics
461
+ """
462
+ bandwidth: BandwidthMetrics
463
+ """
464
+ Bandwidth usage metrics
465
+ """
466
+
467
+
468
+ class RequestResults(BaseModel):
469
+ model_config = ConfigDict(
470
+ populate_by_name=True,
471
+ )
472
+ requestId: str
473
+ """
474
+ Request identifier
475
+ """
476
+ url: AnyUrl
477
+ """
478
+ Request URL
479
+ """
480
+ method: str
481
+ """
482
+ HTTP method
483
+ """
484
+ executions: list[RequestExecution]
485
+ """
486
+ Individual execution results
487
+ """
488
+
489
+
490
+ class RecordedRequest(BaseModel):
491
+ model_config = ConfigDict(
492
+ populate_by_name=True,
493
+ )
494
+ id: str
495
+ """
496
+ Unique request identifier
497
+ """
498
+ url: AnyUrl
499
+ """
500
+ Request URL
501
+ """
502
+ method: Method
503
+ """
504
+ HTTP method
505
+ """
506
+ headers: dict[str, str]
507
+ """
508
+ Request headers
509
+ """
510
+ body: str | None = None
511
+ """
512
+ Request body
513
+ """
514
+ timestamp: float
515
+ """
516
+ Request timestamp in milliseconds
517
+ """
518
+ response: RecordedResponse | None = None
519
+ """
520
+ Response data
521
+ """
522
+ resourceType: ResourceType
523
+ """
524
+ Type of resource requested
525
+ """
526
+ initiator: str | None = None
527
+ """
528
+ What triggered this request
529
+ """
530
+
531
+
532
+ class PerformanceTestResults(BaseModel):
533
+ model_config = ConfigDict(
534
+ populate_by_name=True,
535
+ )
536
+ testId: str
537
+ """
538
+ Test identifier
539
+ """
540
+ startTime: float
541
+ """
542
+ Test start timestamp
543
+ """
544
+ endTime: float
545
+ """
546
+ Test end timestamp
547
+ """
548
+ duration: float
549
+ """
550
+ Test duration in seconds
551
+ """
552
+ metrics: AggregateMetrics
553
+ """
554
+ Aggregate performance metrics
555
+ """
556
+ requestResults: list[RequestResults]
557
+ """
558
+ Per-request execution results
559
+ """
560
+ timeline: list[TimelineDataPoint]
561
+ """
562
+ Time-series data for charts
563
+ """
564
+ passed: bool
565
+ """
566
+ Whether the test passed
567
+ """
568
+ failureReasons: list[str] | None = None
569
+ """
570
+ Reasons for test failure
571
+ """
572
+
573
+
574
+ class PerformanceTest(BaseModel):
575
+ """
576
+ Performance test definition for load testing and API monitoring
577
+ """
578
+
579
+ model_config = ConfigDict(
580
+ populate_by_name=True,
581
+ )
582
+ metadata: PerformanceTestMetadata
583
+ """
584
+ Test metadata and configuration
585
+ """
586
+ recordedRequests: list[RecordedRequest]
587
+ """
588
+ HTTP requests recorded during test creation
589
+ """
590
+ loadTestConfig: LoadTestConfiguration
591
+ """
592
+ Load test execution configuration
593
+ """
594
+ filterPatterns: list[str] | None = None
595
+ """
596
+ URL patterns for filtering recorded requests
597
+ """
598
+ onlySameDomain: bool | None = None
599
+ """
600
+ Restrict recording to same domain only
601
+ """
602
+ results: PerformanceTestResults | None = None
603
+ """
604
+ Results from load test execution
605
+ """