Skip to content

Commit 8eab3f0

Browse files
author
Siwei Zhang
committed
Introduce generic XY endpoint
This endpoint is introduced to support xy chart that has a non-time x-axis proposed in #114 Signed-off-by: Siwei Zhang <[email protected]>
1 parent 8c4fe1c commit 8eab3f0

File tree

2 files changed

+622
-10
lines changed

2 files changed

+622
-10
lines changed

API-proposed.yaml

Lines changed: 311 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1013,6 +1013,134 @@ paths:
10131013
application/json:
10141014
schema:
10151015
$ref: "#/components/schemas/ErrorResponse"
1016+
/experiments/{expUUID}/outputs/genericXY/{outputId}/xy:
1017+
post:
1018+
tags:
1019+
- Generic XY
1020+
summary: API to get the xy model
1021+
description: "Unique endpoint for all xy models, ensures that the same template\
1022+
\ is followed for all endpoints."
1023+
operationId: getGenericXY
1024+
parameters:
1025+
- name: expUUID
1026+
in: path
1027+
description: UUID of the experiment to query
1028+
required: true
1029+
schema:
1030+
type: string
1031+
format: uuid
1032+
- name: outputId
1033+
in: path
1034+
description: ID of the output provider to query
1035+
required: true
1036+
schema:
1037+
type: string
1038+
requestBody:
1039+
description: Query parameters to fetch the xy model. The object 'requested_timerange'
1040+
is the requested time range and number of samples. The array 'requested_items'
1041+
is the list of entryId or seriesId being requested.
1042+
content:
1043+
application/json:
1044+
schema:
1045+
$ref: "#/components/schemas/GenericXYQueryParameters"
1046+
example:
1047+
parameters:
1048+
requested_timerange:
1049+
start: 111111111
1050+
end: 222222222
1051+
nbSamples: 1920
1052+
requested_items:
1053+
- 1
1054+
- 2
1055+
required: true
1056+
responses:
1057+
"200":
1058+
description: Return the queried xy response
1059+
content:
1060+
application/json:
1061+
schema:
1062+
$ref: "#/components/schemas/XYResponse"
1063+
"400":
1064+
description: Missing query parameters
1065+
content:
1066+
application/json:
1067+
schema:
1068+
$ref: "#/components/schemas/ErrorResponse"
1069+
"404":
1070+
description: Experiment or output provider not found
1071+
content:
1072+
application/json:
1073+
schema:
1074+
$ref: "#/components/schemas/ErrorResponse"
1075+
"405":
1076+
description: Analysis cannot run
1077+
content:
1078+
application/json:
1079+
schema:
1080+
$ref: "#/components/schemas/ErrorResponse"
1081+
/experiments/{expUUID}/outputs/genericXY/{outputId}/tree:
1082+
post:
1083+
tags:
1084+
- Generic XY
1085+
summary: API to get the tree for generic xy chart
1086+
description: "Unique entry point for output providers, to get the tree of visible\
1087+
\ entries"
1088+
operationId: getGenericXYChartTree
1089+
parameters:
1090+
- name: expUUID
1091+
in: path
1092+
description: UUID of the experiment to query
1093+
required: true
1094+
schema:
1095+
type: string
1096+
format: uuid
1097+
- name: outputId
1098+
in: path
1099+
description: ID of the output provider to query
1100+
required: true
1101+
schema:
1102+
type: string
1103+
requestBody:
1104+
description: Query parameters to fetch the generic XY tree. The object 'requested_timerange'
1105+
specifies the requested time range. When absent the tree for the full range
1106+
is returned.
1107+
content:
1108+
application/json:
1109+
schema:
1110+
$ref: "#/components/schemas/TreeQueryParameters"
1111+
example:
1112+
parameters:
1113+
requested_timerange:
1114+
start: 111111111
1115+
end: 222222222
1116+
required: true
1117+
responses:
1118+
"200":
1119+
description: "Returns a list of generic xy chart entries. The returned model\
1120+
\ must be consistent, parentIds must refer to a parent which exists in\
1121+
\ the model."
1122+
content:
1123+
application/json:
1124+
schema:
1125+
$ref: "#/components/schemas/XYTreeResponse"
1126+
"400":
1127+
description: Invalid query parameters
1128+
content:
1129+
application/json:
1130+
schema:
1131+
$ref: "#/components/schemas/ErrorResponse"
1132+
"404":
1133+
description: Experiment or output provider not found
1134+
content:
1135+
application/json:
1136+
schema:
1137+
$ref: "#/components/schemas/ErrorResponse"
1138+
"405":
1139+
description: Analysis cannot run
1140+
content:
1141+
application/json:
1142+
schema:
1143+
$ref: "#/components/schemas/ErrorResponse"
10161144
/experiments/{expUUID}/outputs/table/{outputId}/lines:
10171145
post:
10181146
tags:
@@ -2912,6 +3040,182 @@ components:
29123040
properties:
29133041
parameters:
29143042
$ref: "#/components/schemas/TreeParameters"
3043+
AxisDomain:
3044+
required:
3045+
- type
3046+
type: object
3047+
properties:
3048+
type:
3049+
type: string
3050+
description: "Type of axis domain (e.g., 'categorical' or 'timeRange')"
3051+
description: Domain of values supported on a chart axis. Can be either categorical
3052+
or numeric range.
3053+
discriminator:
3054+
propertyName: type
3055+
AxisDomainCategorical:
3056+
required:
3057+
- categories
3058+
- type
3059+
type: object
3060+
allOf:
3061+
- $ref: "#/components/schemas/AxisDomain"
3062+
- type: object
3063+
properties:
3064+
categories:
3065+
uniqueItems: true
3066+
type: array
3067+
description: List of category labels on the axis
3068+
items:
3069+
type: string
3070+
type:
3071+
type: string
3072+
description: Type of axis domain
3073+
AxisDomainTimeRange:
3074+
required:
3075+
- end
3076+
- start
3077+
- type
3078+
type: object
3079+
allOf:
3080+
- $ref: "#/components/schemas/AxisDomain"
3081+
- type: object
3082+
properties:
3083+
start:
3084+
type: integer
3085+
description: Start of the axis range
3086+
format: int64
3087+
end:
3088+
type: integer
3089+
description: End of the axis range
3090+
format: int64
3091+
type:
3092+
type: string
3093+
description: Type of axis domain
3094+
CategorySampling:
3095+
required:
3096+
- sampling
3097+
type: object
3098+
properties:
3099+
sampling:
3100+
type: array
3101+
description: Sampling as list of categories
3102+
items:
3103+
type: string
3104+
description: Sampling as list of categories
3105+
RangeSampling:
3106+
required:
3107+
- sampling
3108+
type: object
3109+
properties:
3110+
sampling:
3111+
type: array
3112+
description: "Sampling as list of [start, end] timestamp ranges"
3113+
items:
3114+
$ref: "#/components/schemas/StartEndRange"
3115+
Sampling:
3116+
type: object
3117+
description: Sampling values
3118+
oneOf:
3119+
- $ref: "#/components/schemas/TimestampSampling"
3120+
- $ref: "#/components/schemas/CategorySampling"
3121+
- $ref: "#/components/schemas/RangeSampling"
3122+
StartEndRange:
3123+
required:
3124+
- end
3125+
- start
3126+
type: object
3127+
properties:
3128+
start:
3129+
type: integer
3130+
description: Start timestamp of the range
3131+
format: int64
3132+
end:
3133+
type: integer
3134+
description: End timestamp of the range
3135+
format: int64
3136+
description: "Sampling as list of [start, end] timestamp ranges"
3137+
TimestampSampling:
3138+
required:
3139+
- sampling
3140+
type: object
3141+
properties:
3142+
sampling:
3143+
type: array
3144+
description: Sampling as list of timestamps
3145+
items:
3146+
type: integer
3147+
description: Sampling as list of timestamps
3148+
format: int64
3149+
XYAxisDescription:
3150+
required:
3151+
- dataType
3152+
- label
3153+
- unit
3154+
type: object
3155+
properties:
3156+
dataType:
3157+
type: string
3158+
description: The type of data this axis represents
3159+
enum:
3160+
- NUMBER
3161+
- BINARY_NUMBER
3162+
- TIMESTAMP
3163+
- DURATION
3164+
- STRING
3165+
- TIME_RANGE
3166+
unit:
3167+
type: string
3168+
description: "Unit associated with this axis (e.g., ns, ms)"
3169+
label:
3170+
type: string
3171+
description: Label for the axis
3172+
axisDomain:
3173+
$ref: '#/components/schemas/AxisDomain'
3174+
description: "Describes a single axis in an XY chart, including label, unit,\
3175+
\ data type, and optional domain."
3176+
GenericTimeRange:
3177+
required:
3178+
- end
3179+
- start
3180+
type: object
3181+
properties:
3182+
end:
3183+
type: integer
3184+
description: End of the range
3185+
format: int64
3186+
nbSamples:
3187+
type: integer
3188+
description: Optional number of samples (1–65536) to generate within the
3189+
range
3190+
format: int32
3191+
start:
3192+
type: integer
3193+
description: Start of the range
3194+
format: int64
3195+
description: A generic time range with optional sampling count. Sampling points
3196+
may represent values other than timestamps.
3197+
GenericXYQueryParameters:
3198+
required:
3199+
- parameters
3200+
type: object
3201+
properties:
3202+
parameters:
3203+
$ref: "#/components/schemas/GenericXYRequestedParameters"
3204+
GenericXYRequestedParameters:
3205+
required:
3206+
- requested_items
3207+
- requested_timerange
3208+
type: object
3209+
properties:
3210+
requested_timerange:
3211+
$ref: "#/components/schemas/GenericTimeRange"
3212+
requested_items:
3213+
type: array
3214+
items:
3215+
type: integer
3216+
format: int32
3217+
filter_query_parameters:
3218+
$ref: "#/components/schemas/RequestedFilterQueryParameters"
29153219
VirtualTableCell:
29163220
type: object
29173221
properties:
@@ -3287,7 +3591,9 @@ components:
32873591
- seriesName
32883592
- style
32893593
- xValues
3594+
- xValuesDescription
32903595
- yValues
3596+
- yValuesDescription
32913597
type: object
32923598
properties:
32933599
seriesName:
@@ -3299,12 +3605,12 @@ components:
32993605
format: int64
33003606
style:
33013607
$ref: "#/components/schemas/OutputElementStyle"
3608+
xValuesDescription:
3609+
$ref: "#/components/schemas/XYAxisDescription"
3610+
yValuesDescription:
3611+
$ref: "#/components/schemas/XYAxisDescription"
33023612
xValues:
3303-
type: array
3304-
description: Series' X values
3305-
items:
3306-
type: integer
3307-
format: int64
3613+
$ref: "#/components/schemas/Sampling"
33083614
yValues:
33093615
type: array
33103616
description: Series' Y values

0 commit comments

Comments
 (0)