@@ -3,22 +3,23 @@ import "@typespec/rest";
33import "@typespec/openapi" ;
44import "@typespec/openapi3" ;
55import "../common/error.tsp" ;
6+ import "../common/pagination.tsp" ;
67import "../common/parameters.tsp" ;
78import "../shared/index.tsp" ;
89import "./ratecard.tsp" ;
910import "./plan.tsp" ;
11+ import "./planaddon.tsp" ;
1012
1113using TypeSpec .Http ;
1214using TypeSpec .OpenAPI ;
1315
1416namespace ProductCatalog ;
1517
16- interface ProductCatalogOperations {
18+ interface PlanOperations {
1719 /**
18- * List all plans.
20+ * List all plans.
1921 */
2022 @ get
21- @ route ("/plans" )
2223 @ operationId ("list-plans" )
2324 @ summary ("List plans" )
2425 @ extension (Shared .PrivateExtension , true )
@@ -29,46 +30,42 @@ interface ProductCatalogOperations {
2930 ): Shared .PagePaginatedResponse <Plan > | Common .ErrorResponses ;
3031
3132 /**
32- * Create a new plan.
33+ * Create a new plan.
3334 */
3435 @ post
35- @ route ("/plans" )
3636 @ operationId ("create-plan" )
3737 @ summary ("Create a new plan." )
3838 @ extension (Shared .PrivateExtension , true )
3939 @ extension (Shared .UnstableExtension , true )
4040 @ extension (Shared .InternalExtension , true )
4141 createPlan (
42- @ body
43- plan : Shared .CreateRequest <Plan >,
42+ @ body plan : Shared .CreateRequest <Plan >,
4443 ): Shared .CreateResponse <Plan > | Common .ErrorResponses ;
4544
4645 /**
47- * Upsert a plan by id.
46+ * Upsert a plan by id.
4847 */
4948 @ put
50- @ route ("/plans/ {planId}" )
49+ @ route ("/{planId}" )
5150 @ operationId ("upsert-plan" )
5251 @ summary ("Upsert a plan by id." )
5352 @ extension (Shared .PrivateExtension , true )
5453 @ extension (Shared .UnstableExtension , true )
5554 @ extension (Shared .InternalExtension , true )
5655 upsertPlan (
5756 @ path planId : Shared .ULID ,
58-
59- @ body
60- plan : Shared .UpsertRequest <Plan >,
57+ @ body plan : Shared .UpsertRequest <Plan >,
6158 ):
6259 | Shared .UpsertResponse <Plan >
6360 | Common .ErrorResponses
6461 | Common .Gone
6562 | Common .NotFound ;
6663
6764 /**
68- * Get a plan by id.
65+ * Get a plan by id.
6966 */
7067 @ get
71- @ route ("/plans/ {planId}" )
68+ @ route ("/{planId}" )
7269 @ operationId ("get-plan" )
7370 @ summary ("Get a plan by id." )
7471 @ extension (Shared .PrivateExtension , true )
@@ -81,10 +78,10 @@ interface ProductCatalogOperations {
8178 | Common .NotFound ;
8279
8380 /**
84- * Delete plan by id.
81+ * Delete a plan by id.
8582 */
8683 @ delete
87- @ route ("/plans/ {planId}" )
84+ @ route ("/{planId}" )
8885 @ operationId ("delete-plan" )
8986 @ summary ("Delete a plan by id." )
9087 @ extension (Shared .PrivateExtension , true )
@@ -98,7 +95,7 @@ interface ProductCatalogOperations {
9895 * Archive a plan version.
9996 */
10097 @ post
101- @ route ("/plans/ {planId}/archive" )
98+ @ route ("/{planId}/archive" )
10299 @ operationId ("archive-plan" )
103100 @ summary ("Archive a plan version." )
104101 @ extension (Shared .PrivateExtension , true )
@@ -112,21 +109,22 @@ interface ProductCatalogOperations {
112109 * Publish a plan version.
113110 */
114111 @ post
115- @ route ("/plans/ {planId}/publish" )
116- @ operationId ("archive -plan" )
112+ @ route ("/{planId}/publish" )
113+ @ operationId ("publish -plan" )
117114 @ summary ("Publish a plan version." )
118115 @ extension (Shared .PrivateExtension , true )
119116 @ extension (Shared .UnstableExtension , true )
120117 @ extension (Shared .InternalExtension , true )
121118 publishPlan (
122119 @ path planId : Shared .ULID ,
123120 ): Shared .UpdateResponse <Plan > | Common .ErrorResponses | Common .NotFound ;
121+ }
124122
123+ interface AddonOperations {
125124 /**
126- * List all add-ons.
125+ * List all add-ons.
127126 */
128127 @ get
129- @ route ("/addons" )
130128 @ operationId ("list-addons" )
131129 @ summary ("List all add-ons." )
132130 @ extension (Shared .PrivateExtension , true )
@@ -137,46 +135,42 @@ interface ProductCatalogOperations {
137135 ): Shared .PagePaginatedResponse <Addon > | Common .ErrorResponses ;
138136
139137 /**
140- * List all add-ons .
138+ * Create a new add-on .
141139 */
142140 @ post
143- @ route ("/addons" )
144141 @ operationId ("create-addon" )
145- @ summary ("Create a new add-on" )
142+ @ summary ("Create a new add-on. " )
146143 @ extension (Shared .PrivateExtension , true )
147144 @ extension (Shared .UnstableExtension , true )
148145 @ extension (Shared .InternalExtension , true )
149146 createAddon (
150- @ body
151- addon : Shared .CreateRequest <Addon >,
147+ @ body addon : Shared .CreateRequest <Addon >,
152148 ): Shared .CreateResponse <Addon > | Common .ErrorResponses ;
153149
154150 /**
155- * Upsert add-on by id.
151+ * Upsert add-on by id.
156152 */
157153 @ put
158- @ route ("/addons/ {addonId}" )
154+ @ route ("/{addonId}" )
159155 @ operationId ("upsert-addon" )
160- @ summary ("Upsert add-on by id" )
156+ @ summary ("Upsert add-on by id. " )
161157 @ extension (Shared .PrivateExtension , true )
162158 @ extension (Shared .UnstableExtension , true )
163159 @ extension (Shared .InternalExtension , true )
164160 upsertAddon (
165161 @ path addonId : Shared .ULID ,
166-
167- @ body
168- addon : Shared .UpsertRequest <Addon >,
162+ @ body addon : Shared .UpsertRequest <Addon >,
169163 ):
170164 | Shared .UpsertResponse <Addon >
171165 | Common .ErrorResponses
172166 | Common .Gone
173167 | Common .NotFound ;
174168
175169 /**
176- * Get add-on by id.
170+ * Get add-on by id.
177171 */
178172 @ get
179- @ route ("/addons/ {addonId}" )
173+ @ route ("/{addonId}" )
180174 @ operationId ("get-addon" )
181175 @ summary ("Get add-on by id." )
182176 @ extension (Shared .PrivateExtension , true )
@@ -192,7 +186,7 @@ interface ProductCatalogOperations {
192186 * Soft delete add-on by id.
193187 */
194188 @ delete
195- @ route ("/addons/ {addonId}" )
189+ @ route ("/{addonId}" )
196190 @ operationId ("delete-addon" )
197191 @ summary ("Soft delete add-on by id." )
198192 @ extension (Shared .PrivateExtension , true )
@@ -203,30 +197,106 @@ interface ProductCatalogOperations {
203197 ): Shared .DeleteResponse | Common .ErrorResponses | Common .NotFound ;
204198
205199 /**
206- * Archive a add-on version.
200+ * Archive an add-on version.
207201 */
208202 @ post
209- @ route ("/addons/ {addonId}/archive" )
203+ @ route ("/{addonId}/archive" )
210204 @ operationId ("archive-addon" )
211- @ summary ("Archive a add-on version." )
205+ @ summary ("Archive an add-on version." )
212206 @ extension (Shared .PrivateExtension , true )
213207 @ extension (Shared .UnstableExtension , true )
214208 @ extension (Shared .InternalExtension , true )
215209 archiveAddon (
216210 @ path addonId : Shared .ULID ,
217- ): Shared .UpdateResponse <Addon > | Common .ErrorResponses ;
211+ ): Shared .UpdateResponse <Addon > | Common .ErrorResponses | Common . NotFound ;
218212
219213 /**
220- * Publish an add-on version.
214+ * Publish an add-on version.
221215 */
222216 @ post
223- @ route ("/addons/ {addonId}/publish" )
217+ @ route ("/{addonId}/publish" )
224218 @ operationId ("publish-addon" )
225219 @ summary ("Publish an add-on version." )
226220 @ extension (Shared .PrivateExtension , true )
227221 @ extension (Shared .UnstableExtension , true )
228222 @ extension (Shared .InternalExtension , true )
229223 publishAddon (
230224 @ path addonId : Shared .ULID ,
231- ): Shared .UpdateResponse <Addon > | Common .ErrorResponses ;
225+ ): Shared .UpdateResponse <Addon > | Common .ErrorResponses | Common .NotFound ;
226+ }
227+
228+ interface PlanAddonOperations {
229+ /**
230+ * List add-ons associated with a plan.
231+ */
232+ @ get
233+ @ operationId ("list-plan-addons" )
234+ @ summary ("List add-ons for a plan." )
235+ @ extension (Shared .PrivateExtension , true )
236+ @ extension (Shared .UnstableExtension , true )
237+ @ extension (Shared .InternalExtension , true )
238+ listPlanAddons (
239+ @ path planId : Shared .ULID ,
240+ ... Common .PagePaginationQuery ,
241+ ): Shared .PagePaginatedResponse <PlanAddon > | Common .ErrorResponses ;
242+
243+ /**
244+ * Add an add-on to a plan.
245+ */
246+ @ post
247+ @ operationId ("create-plan-addon" )
248+ @ summary ("Add an add-on to a plan." )
249+ @ extension (Shared .PrivateExtension , true )
250+ @ extension (Shared .UnstableExtension , true )
251+ @ extension (Shared .InternalExtension , true )
252+ createPlanAddon (
253+ @ path planId : Shared .ULID ,
254+ @ body plan_addon : Shared .CreateRequest <PlanAddon >,
255+ ): Shared .CreateResponse <PlanAddon > | Common .ErrorResponses ;
256+
257+ /**
258+ * Get an add-on association for a plan.
259+ */
260+ @ get
261+ @ route ("/{planAddonId}" )
262+ @ operationId ("get-plan-addon" )
263+ @ summary ("Get an add-on association for a plan." )
264+ @ extension (Shared .PrivateExtension , true )
265+ @ extension (Shared .UnstableExtension , true )
266+ @ extension (Shared .InternalExtension , true )
267+ getPlanAddon (
268+ @ path planId : Shared .ULID ,
269+ @ path planAddonId : Shared .ULID ,
270+ ): Shared .GetResponse <PlanAddon > | Common .ErrorResponses | Common .NotFound ;
271+
272+ /**
273+ * Update an add-on association for a plan.
274+ */
275+ @ put
276+ @ route ("/{planAddonId}" )
277+ @ operationId ("upsert-plan-addon" )
278+ @ summary ("Update an add-on association for a plan." )
279+ @ extension (Shared .PrivateExtension , true )
280+ @ extension (Shared .UnstableExtension , true )
281+ @ extension (Shared .InternalExtension , true )
282+ upsertPlanAddon (
283+ @ path planId : Shared .ULID ,
284+ @ path planAddonId : Shared .ULID ,
285+ @ body plan_addon : Shared .UpsertRequest <PlanAddon >,
286+ ): Shared .UpsertResponse <PlanAddon > | Common .ErrorResponses | Common .NotFound ;
287+
288+ /**
289+ * Remove an add-on from a plan.
290+ */
291+ @ delete
292+ @ route ("/{planAddonId}" )
293+ @ operationId ("delete-plan-addon" )
294+ @ summary ("Remove an add-on from a plan." )
295+ @ extension (Shared .PrivateExtension , true )
296+ @ extension (Shared .UnstableExtension , true )
297+ @ extension (Shared .InternalExtension , true )
298+ deletePlanAddon (
299+ @ path planId : Shared .ULID ,
300+ @ path planAddonId : Shared .ULID ,
301+ ): Shared .DeleteResponse | Common .ErrorResponses | Common .NotFound ;
232302}
0 commit comments