001// ***************************************************************************************************************************
002// * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements.  See the NOTICE file *
003// * distributed with this work for additional information regarding copyright ownership.  The ASF licenses this file        *
004// * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance            *
005// * with the License.  You may obtain a copy of the License at                                                              *
006// *                                                                                                                         *
007// *  http://www.apache.org/licenses/LICENSE-2.0                                                                             *
008// *                                                                                                                         *
009// * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an  *
010// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the License for the        *
011// * specific language governing permissions and limitations under the License.                                              *
012// ***************************************************************************************************************************
013package org.apache.juneau.http.annotation;
014
015import static java.lang.annotation.RetentionPolicy.*;
016
017import java.lang.annotation.*;
018
019/**
020 * @deprecated Use {@link org.apache.juneau.jsonschema.annotation.Schema}
021 */
022@Documented
023@Retention(RUNTIME)
024@Deprecated
025public @interface Schema {
026
027   /**
028    * <mk>$ref</mk> field of the {@doc SwaggerSchemaObject}.
029    *
030    * <p>
031    *    A JSON reference to the schema definition.
032    *
033    * <h5 class='section'>Notes:</h5>
034    * <ul class='spaced-list'>
035    *    <li>
036    *       The format is a <a href='https://tools.ietf.org/html/draft-pbryan-zyp-json-ref-03'>JSON Reference</a>.
037    *    <li>
038    *       Supports {@doc DefaultRestSvlVariables}
039    *       (e.g. <js>"$L{my.localized.variable}"</js>).
040    * </ul>
041    */
042   String $ref() default "";
043
044   /**
045    * <mk>format</mk> field of the {@doc SwaggerSchemaObject}.
046    *
047    * <h5 class='section'>Examples:</h5>
048    * <p class='bcode w800'>
049    *    <jc>// Used on parameter</jc>
050    *    <ja>@RestMethod</ja>(name=<jsf>PUT</jsf>)
051    *    <jk>public void</jk> setAge(
052    *       <ja>@Body</ja>(type=<js>"integer"</js>, format=<js>"int32"</js>) String input
053    *    ) {...}
054    * </p>
055    *
056    * <h5 class='section'>Notes:</h5>
057    * <ul class='spaced-list'>
058    *    <li>
059    *       The format is plain text.
060    *    <li>
061    *       Supports {@doc DefaultRestSvlVariables}
062    *       (e.g. <js>"$L{my.localized.variable}"</js>).
063    * </ul>
064    *
065    * <h5 class='section'>See Also:</h5>
066    * <ul class='doctree'>
067    *    <li class='extlink'>{@doc SwaggerDataTypeFormats}
068    * </ul>
069    */
070   String format() default "";
071
072   /**
073    * <mk>title</mk> field of the {@doc SwaggerSchemaObject}.
074    *
075    * <h5 class='section'>Notes:</h5>
076    * <ul class='spaced-list'>
077    *    <li>
078    *       The format is plain text.
079    *    <li>
080    *       Supports {@doc DefaultRestSvlVariables}
081    *       (e.g. <js>"$L{my.localized.variable}"</js>).
082    * </ul>
083    */
084   String title() default "";
085
086   /**
087    * <mk>description</mk> field of the {@doc SwaggerSchemaObject}.
088    *
089    * <p>
090    * A brief description of the body. This could contain examples of use.
091    *
092    * <h5 class='section'>Examples:</h5>
093    * <p class='bcode w800'>
094    *    <jc>// Used on parameter</jc>
095    *    <ja>@RestMethod</ja>(name=<jsf>POST</jsf>)
096    *    <jk>public void</jk> addPet(
097    *       <ja>@Body</ja>(description=<js>"Pet object to add to the store"</js>) Pet input
098    *    ) {...}
099    * </p>
100    * <p class='bcode w800'>
101    *    <jc>// Used on class</jc>
102    *    <ja>@RestMethod</ja>(name=<jsf>POST</jsf>)
103    *    <jk>public void</jk> addPet(Pet input) {...}
104    *
105    *    <ja>@Body</ja>(description=<js>"Pet object to add to the store"</js>)
106    *    <jk>public class</jk> Pet {...}
107    * </p>
108    *
109    * <h5 class='section'>Notes:</h5>
110    * <ul class='spaced-list'>
111    *    <li>
112    *       The format is plain text.
113    *       <br>Multiple lines are concatenated with newlines.
114    *    <li>
115    *       Supports {@doc DefaultRestSvlVariables}
116    *       (e.g. <js>"$L{my.localized.variable}"</js>).
117    * </ul>
118    */
119   String[] description() default {};
120
121   /**
122    * <mk>default</mk> field of the {@doc SwaggerSchemaObject}.
123    *
124    * <h5 class='section'>Notes:</h5>
125    * <ul class='spaced-list'>
126    *    <li>
127    *       The format is any {@doc juneau-marshall.JsonDetails.SimplifiedJson}.
128    *       <br>Multiple lines are concatenated with newlines.
129    *    <li>
130    *       Supports {@doc DefaultRestSvlVariables}
131    *       (e.g. <js>"$L{my.localized.variable}"</js>).
132    * </ul>
133    */
134   String[] _default() default {};
135
136   /**
137    * <mk>multipleOf</mk> field of the {@doc SwaggerSchemaObject}.
138    *
139    * <h5 class='section'>Notes:</h5>
140    * <ul class='spaced-list'>
141    *    <li>
142    *       The format is numeric.
143    *    <li>
144    *       Supports {@doc DefaultRestSvlVariables}
145    *       (e.g. <js>"$L{my.localized.variable}"</js>).
146    * </ul>
147    */
148   String multipleOf() default "";
149
150   /**
151    * <mk>maximum</mk> field of the {@doc SwaggerSchemaObject}.
152    *
153    * <h5 class='section'>Notes:</h5>
154    * <ul class='spaced-list'>
155    *    <li>
156    *       The format is numeric.
157    *    <li>
158    *       Supports {@doc DefaultRestSvlVariables}
159    *       (e.g. <js>"$L{my.localized.variable}"</js>).
160    * </ul>
161    */
162   String maximum() default "";
163
164   /**
165    * <mk>exclusiveMaximum</mk> field of the {@doc SwaggerSchemaObject}.
166    *
167    * <h5 class='section'>Notes:</h5>
168    * <ul class='spaced-list'>
169    *    <li>
170    *       The format is numeric.
171    *    <li>
172    *       Supports {@doc DefaultRestSvlVariables}
173    *       (e.g. <js>"$L{my.localized.variable}"</js>).
174    * </ul>
175    */
176   boolean exclusiveMaximum() default false;
177
178   /**
179    * <mk>minimum</mk> field of the {@doc SwaggerSchemaObject}.
180    *
181    * <h5 class='section'>Notes:</h5>
182    * <ul class='spaced-list'>
183    *    <li>
184    *       The format is numeric.
185    *    <li>
186    *       Supports {@doc DefaultRestSvlVariables}
187    *       (e.g. <js>"$L{my.localized.variable}"</js>).
188    * </ul>
189    */
190   String minimum() default "";
191
192   /**
193    * <mk>exclusiveMinimum</mk> field of the {@doc SwaggerSchemaObject}.
194    *
195    * <h5 class='section'>Notes:</h5>
196    * <ul class='spaced-list'>
197    *    <li>
198    *       The format is numeric.
199    *    <li>
200    *       Supports {@doc DefaultRestSvlVariables}
201    *       (e.g. <js>"$L{my.localized.variable}"</js>).
202    * </ul>
203    */
204   boolean exclusiveMinimum() default false;
205
206   /**
207    * <mk>maxLength</mk> field of the {@doc SwaggerSchemaObject}.
208    *
209    * <h5 class='section'>Notes:</h5>
210    * <ul class='spaced-list'>
211    *    <li>
212    *       The format is numeric.
213    *    <li>
214    *       Supports {@doc DefaultRestSvlVariables}
215    *       (e.g. <js>"$L{my.localized.variable}"</js>).
216    * </ul>
217    */
218   long maxLength() default -1;
219
220   /**
221    * <mk>minLength</mk> field of the {@doc SwaggerSchemaObject}.
222    *
223    * <h5 class='section'>Notes:</h5>
224    * <ul class='spaced-list'>
225    *    <li>
226    *       The format is numeric.
227    *    <li>
228    *       Supports {@doc DefaultRestSvlVariables}
229    *       (e.g. <js>"$L{my.localized.variable}"</js>).
230    * </ul>
231    */
232   long minLength() default -1;
233
234   /**
235    * <mk>pattern</mk> field of the {@doc SwaggerSchemaObject}.
236    *
237    * <h5 class='section'>Example:</h5>
238    * <p class='bcode w800'>
239    *    <ja>@RestMethod</ja>(name=<jsf>PUT</jsf>)
240    *    <jk>public void</jk> doPut(<ja>@Body</ja>(format=<js>"/\\w+\\.\\d+/"</js>) String input) {...}
241    * </p>
242    *
243    * <h5 class='section'>Notes:</h5>
244    * <ul class='spaced-list'>
245    *    <li>
246    *       The format is plain text.
247    *    <li>
248    *       This string SHOULD be a valid regular expression.
249    *    <li>
250    *       Supports {@doc DefaultRestSvlVariables}
251    *       (e.g. <js>"$L{my.localized.variable}"</js>).
252    * </ul>
253    */
254   String pattern() default "";
255
256   /**
257    * <mk>maxItems</mk> field of the {@doc SwaggerSchemaObject}.
258    *
259    * <h5 class='section'>Notes:</h5>
260    * <ul class='spaced-list'>
261    *    <li>
262    *       The format is numeric.
263    *    <li>
264    *       Supports {@doc DefaultRestSvlVariables}
265    *       (e.g. <js>"$L{my.localized.variable}"</js>).
266    * </ul>
267    */
268   long maxItems() default -1;
269
270   /**
271    * <mk>minItems</mk> field of the {@doc SwaggerSchemaObject}.
272    *
273    * <h5 class='section'>Notes:</h5>
274    * <ul class='spaced-list'>
275    *    <li>
276    *       The format is numeric.
277    *    <li>
278    *       Supports {@doc DefaultRestSvlVariables}
279    *       (e.g. <js>"$L{my.localized.variable}"</js>).
280    * </ul>
281    */
282   long minItems() default -1;
283
284   /**
285    * <mk>uniqueItems</mk> field of the {@doc SwaggerSchemaObject}.
286    *
287    * <h5 class='section'>Notes:</h5>
288    * <ul class='spaced-list'>
289    *    <li>
290    *       The format is boolean.
291    *    <li>
292    *       Supports {@doc DefaultRestSvlVariables}
293    *       (e.g. <js>"$L{my.localized.variable}"</js>).
294    * </ul>
295    */
296   boolean uniqueItems() default false;
297
298
299   /**
300    * <mk>maxProperties</mk> field of the {@doc SwaggerSchemaObject}.
301    *
302    * <h5 class='section'>Notes:</h5>
303    * <ul class='spaced-list'>
304    *    <li>
305    *       The format is a {@doc juneau-marshall.JsonDetails.SimplifiedJson} object.
306    *       <br>Multiple lines are concatenated with newlines.
307    *    <li>
308    *       Supports {@doc DefaultRestSvlVariables}
309    *       (e.g. <js>"$L{my.localized.variable}"</js>).
310    * </ul>
311    */
312   long maxProperties() default -1;
313
314
315   /**
316    * <mk>minProperties</mk> field of the {@doc SwaggerSchemaObject}.
317    *
318    * <h5 class='section'>Notes:</h5>
319    * <ul class='spaced-list'>
320    *    <li>
321    *       The format is a {@doc juneau-marshall.JsonDetails.SimplifiedJson} object.
322    *       <br>Multiple lines are concatenated with newlines.
323    *    <li>
324    *       Supports {@doc DefaultRestSvlVariables}
325    *       (e.g. <js>"$L{my.localized.variable}"</js>).
326    * </ul>
327    */
328   long minProperties() default -1;
329
330   /**
331    * <mk>required</mk> field of the {@doc SwaggerSchemaObject}.
332    *
333    * <p>
334    *    Determines whether this parameter is mandatory.
335    *  <br>The property MAY be included and its default value is false.
336    *
337    * <h5 class='section'>Examples:</h5>
338    * <p class='bcode w800'>
339    *    <jc>// Used on parameter</jc>
340    *    <ja>@RestMethod</ja>(name=<jsf>POST</jsf>)
341    *    <jk>public void</jk> addPet(
342    *       <ja>@Body</ja>(required=<jk>true</jk>) Pet input
343    *    ) {...}
344    * </p>
345    * <p class='bcode w800'>
346    *    <jc>// Used on class</jc>
347    *    <ja>@RestMethod</ja>(name=<jsf>POST</jsf>)
348    *    <jk>public void</jk> addPet(Pet input) {...}
349    *
350    *    <ja>@Body</ja>(required=<jk>true</jk>)
351    *    <jk>public class</jk> Pet {...}
352    * </p>
353    *
354    * <h5 class='section'>Notes:</h5>
355    * <ul class='spaced-list'>
356    *    <li>
357    *       The format is boolean.
358    *    <li>
359    *       Supports {@doc DefaultRestSvlVariables}
360    *       (e.g. <js>"$L{my.localized.variable}"</js>).
361    * </ul>
362    */
363   boolean required() default false;
364
365   /**
366    * <mk>enum</mk> field of the {@doc SwaggerSchemaObject}.
367    *
368    * <h5 class='section'>Notes:</h5>
369    * <ul class='spaced-list'>
370    *    <li>
371    *       The format is a {@doc juneau-marshall.JsonDetails.SimplifiedJson} array or comma-delimited list.
372    *       <br>Multiple lines are concatenated with newlines.
373    *    <li>
374    *       Supports {@doc DefaultRestSvlVariables}
375    *       (e.g. <js>"$L{my.localized.variable}"</js>).
376    * </ul>
377    */
378   String[] _enum() default {};
379
380   /**
381    * <mk>type</mk> field of the {@doc SwaggerSchemaObject}.
382    *
383    * <h5 class='section'>Examples:</h5>
384    * <p class='bcode w800'>
385    *    <jc>// Used on parameter</jc>
386    *    <ja>@RestMethod</ja>(name=<jsf>POST</jsf>)
387    *    <jk>public void</jk> addPet(
388    *       <ja>@Body</ja>(type=<js>"object"</js>) Pet input
389    *    ) {...}
390    * </p>
391    * <p class='bcode w800'>
392    *    <jc>// Used on class</jc>
393    *    <ja>@RestMethod</ja>(name=<jsf>POST</jsf>)
394    *    <jk>public void</jk> addPet(Pet input) {...}
395    *
396    *    <ja>@Body</ja>(type=<js>"object"</js>)
397    *    <jk>public class</jk> Pet {...}
398    * </p>
399    *
400    * <h5 class='section'>Notes:</h5>
401    * <ul class='spaced-list'>
402    *    <li>
403    *       The format is plain text.
404    *    <li>
405    *       The possible values are:
406    *       <ul>
407    *          <li><js>"object"</js>
408    *          <li><js>"string"</js>
409    *          <li><js>"number"</js>
410    *          <li><js>"integer"</js>
411    *          <li><js>"boolean"</js>
412    *          <li><js>"array"</js>
413    *          <li><js>"file"</js>
414    *       </ul>
415    *    <li>
416    *       Supports {@doc DefaultRestSvlVariables}
417    *       (e.g. <js>"$L{my.localized.variable}"</js>).
418    * </ul>
419    *
420    * <h5 class='section'>See Also:</h5>
421    * <ul class='doctree'>
422    *    <li class='extlink'>{@doc SwaggerDataTypes}
423    * </ul>
424    *
425    */
426   String type() default "";
427
428   /**
429    * <mk>items</mk> field of the {@doc SwaggerSchemaObject}.
430    *
431    * <h5 class='section'>Notes:</h5>
432    * <ul class='spaced-list'>
433    *    <li>
434    *       The format is a {@doc juneau-marshall.JsonDetails.SimplifiedJson} object.
435    *       <br>Multiple lines are concatenated with newlines.
436    *    <li>
437    *       Supports {@doc DefaultRestSvlVariables}
438    *       (e.g. <js>"$L{my.localized.variable}"</js>).
439    * </ul>
440    */
441   Items items() default @Items;
442
443   /**
444    * <mk>collectionFormat</mk> field.
445    *
446    * <p>
447    * Note that this field isn't part of the Swagger 2.0 specification, but the specification does not specify how
448    * items are supposed to be represented.
449    *
450    * <p>
451    * Determines the format of the array if <code>type</code> <js>"array"</js> is used.
452    * <br>Can only be used if <code>type</code> is <js>"array"</js>.
453    *
454    * <br>Possible values are:
455    * <ul class='spaced-list'>
456    *    <li>
457    *       <js>"csv"</js> (default) - Comma-separated values (e.g. <js>"foo,bar"</js>).
458    *    <li>
459    *       <js>"ssv"</js> - Space-separated values (e.g. <js>"foo bar"</js>).
460    *    <li>
461    *       <js>"tsv"</js> - Tab-separated values (e.g. <js>"foo\tbar"</js>).
462    *    <li>
463    *       <js>"pipes</js> - Pipe-separated values (e.g. <js>"foo|bar"</js>).
464    *    <li>
465    *       <js>"multi"</js> - Corresponds to multiple parameter instances instead of multiple values for a single instance (e.g. <js>"foo=bar&amp;foo=baz"</js>).
466    *    <li>
467    *       <js>"uon"</js> - UON notation (e.g. <js>"@(foo,bar)"</js>).
468    * </ul>
469    *
470    * <p>
471    * Static strings are defined in {@link CollectionFormatType}.
472    *
473    * <p>
474    * Note that for collections/arrays parameters with POJO element types, the input is broken into a string array before being converted into POJO elements.
475    *
476    * <h5 class='section'>Used for:</h5>
477    * <ul class='spaced-list'>
478    *    <li>
479    *       Server-side schema-based parsing.
480    *    <li>
481    *       Server-side generated Swagger documentation.
482    *    <li>
483    *       Client-side schema-based serializing.
484    * </ul>
485    */
486   String collectionFormat() default "";
487
488   /**
489    * <mk>allOf</mk> field of the {@doc SwaggerSchemaObject}.
490    *
491    * <h5 class='section'>Notes:</h5>
492    * <ul class='spaced-list'>
493    *    <li>
494    *       The format is a {@doc juneau-marshall.JsonDetails.SimplifiedJson} object.
495    *       <br>Multiple lines are concatenated with newlines.
496    *    <li>
497    *       Supports {@doc DefaultRestSvlVariables}
498    *       (e.g. <js>"$L{my.localized.variable}"</js>).
499    * </ul>
500    */
501   String[] allOf() default {};
502
503   /**
504    * <mk>properties</mk> field of the {@doc SwaggerSchemaObject}.
505    *
506    * <h5 class='section'>Notes:</h5>
507    * <ul class='spaced-list'>
508    *    <li>
509    *       The format is a {@doc juneau-marshall.JsonDetails.SimplifiedJson} object.
510    *       <br>Multiple lines are concatenated with newlines.
511    *    <li>
512    *       Supports {@doc DefaultRestSvlVariables}
513    *       (e.g. <js>"$L{my.localized.variable}"</js>).
514    * </ul>
515    */
516   String[] properties() default {};
517
518   /**
519    * <mk>additionalProperties</mk> field of the {@doc SwaggerSchemaObject}.
520    *
521    * <h5 class='section'>Notes:</h5>
522    * <ul class='spaced-list'>
523    *    <li>
524    *       The format is a {@doc juneau-marshall.JsonDetails.SimplifiedJson} object.
525    *       <br>Multiple lines are concatenated with newlines.
526    *    <li>
527    *       Supports {@doc DefaultRestSvlVariables}
528    *       (e.g. <js>"$L{my.localized.variable}"</js>).
529    * </ul>
530    */
531   String[] additionalProperties() default {};
532
533   /**
534    * <mk>discriminator</mk> field of the {@doc SwaggerSchemaObject}.
535    *
536    * <h5 class='section'>Notes:</h5>
537    * <ul class='spaced-list'>
538    *    <li>
539    *       The format is a {@doc juneau-marshall.JsonDetails.SimplifiedJson} object.
540    *       <br>Multiple lines are concatenated with newlines.
541    *    <li>
542    *       Supports {@doc DefaultRestSvlVariables}
543    *       (e.g. <js>"$L{my.localized.variable}"</js>).
544    * </ul>
545    */
546   String discriminator() default "";
547
548   /**
549    * <mk>readOnly</mk> field of the {@doc SwaggerSchemaObject}.
550    *
551    * <h5 class='section'>Notes:</h5>
552    * <ul class='spaced-list'>
553    *    <li>
554    *       The format is a {@doc juneau-marshall.JsonDetails.SimplifiedJson} object.
555    *       <br>Multiple lines are concatenated with newlines.
556    *    <li>
557    *       Supports {@doc DefaultRestSvlVariables}
558    *       (e.g. <js>"$L{my.localized.variable}"</js>).
559    * </ul>
560    */
561   boolean readOnly() default false;
562
563   /**
564    * <mk>xml</mk> field of the {@doc SwaggerSchemaObject}.
565    *
566    * <h5 class='section'>Notes:</h5>
567    * <ul class='spaced-list'>
568    *    <li>
569    *       The format is a {@doc juneau-marshall.JsonDetails.SimplifiedJson} object.
570    *       <br>Multiple lines are concatenated with newlines.
571    *    <li>
572    *       Supports {@doc DefaultRestSvlVariables}
573    *       (e.g. <js>"$L{my.localized.variable}"</js>).
574    * </ul>
575    */
576   String[] xml() default {};
577
578   /**
579    * <mk>externalDocs</mk> field of the {@doc SwaggerSchemaObject}.
580    *
581    * <h5 class='section'>Notes:</h5>
582    * <ul class='spaced-list'>
583    *    <li>
584    *       The format is a {@doc juneau-marshall.JsonDetails.SimplifiedJson} object.
585    *       <br>Multiple lines are concatenated with newlines.
586    *    <li>
587    *       Supports {@doc DefaultRestSvlVariables}
588    *       (e.g. <js>"$L{my.localized.variable}"</js>).
589    * </ul>
590    */
591   ExternalDocs externalDocs() default @ExternalDocs;
592
593   /**
594    * <mk>example</mk> field of the {@doc SwaggerSchemaObject}.
595    *
596    * <p>
597    * A free-form property to include an example of an instance for this schema.
598    *
599    * <p>
600    * This attribute defines a JSON representation of the body value that is used by <code>BasicRestInfoProvider</code> to construct
601    * media-type-based examples of the body of the request.
602    *
603    * <h5 class='section'>Notes:</h5>
604    * <ul class='spaced-list'>
605    *    <li>
606    *       The format is a {@doc juneau-marshall.JsonDetails.SimplifiedJson} object or plain text string.
607    *       <br>Multiple lines are concatenated with newlines.
608    *    <li>
609    *       Supports {@doc DefaultRestSvlVariables}
610    *       (e.g. <js>"$L{my.localized.variable}"</js>).
611    * </ul>
612    */
613   String[] example() default {};
614
615   /**
616    * <mk>x-examples</mk> field of the {@doc SwaggerSchemaObject}.
617    *
618    * <p>
619    * This is a JSON object whose keys are media types and values are string representations of that value.
620    *
621    * <h5 class='section'>Notes:</h5>
622    * <ul class='spaced-list'>
623    *    <li>
624    *       The format is a {@doc juneau-marshall.JsonDetails.SimplifiedJson} object.
625    *       <br>Multiple lines are concatenated with newlines.
626    *    <li>
627    *       Supports {@doc DefaultRestSvlVariables}
628    *       (e.g. <js>"$L{my.localized.variable}"</js>).
629    * </ul>
630    */
631   String[] examples() default {};
632
633   /**
634    * Specifies that schema information for this part should not be shown in the generated Swagger documentation.
635    */
636   boolean ignore() default false;
637
638   /**
639    * Free-form value for the {@doc SwaggerSchemaObject}.
640    *
641    * <p>
642    * This is a JSON object that makes up the swagger information for this field.
643    *
644    * <p>
645    * The following are completely equivalent ways of defining the swagger description of a Schema object:
646    * <p class='bcode w800'>
647    *    <jc>// Normal</jc>
648    *    <ja>@Schema</ja>(
649    *       type=<js>"array"</js>,
650    *       items=<ja>@Items</ja>(
651    *          $ref=<js>"#/definitions/Pet"</js>
652    *       )
653    *    )
654    * </p>
655    * <p class='bcode w800'>
656    *    <jc>// Free-form</jc>
657    *    <ja>@Schema</ja>(
658    *       <js>"type: 'array',"</js>,
659    *       <js>"items: {"</js>,
660    *          <js>"$ref: '#/definitions/Pet'"</js>,
661    *       <js>"}"</js>
662    *    )
663    * </p>
664    * <p class='bcode w800'>
665    *    <jc>// Free-form using variables</jc>
666    *    <ja>@Schema</ja>(<js>"$L{petArraySwagger}"</js>)
667    * </p>
668    * <p class='bcode w800'>
669    *    <mc>// Contents of MyResource.properties</mc>
670    *    <mk>petArraySwagger</mk> = <mv>{ type: "array", items: { $ref: "#/definitions/Pet" } }</mv>
671    * </p>
672    *
673    * <p>
674    *    The reasons why you may want to use this field include:
675    * <ul>
676    *    <li>You want to pull in the entire Swagger JSON definition for this field from an external source such as a properties file.
677    *    <li>You want to add extra fields to the Swagger documentation that are not officially part of the Swagger specification.
678    * </ul>
679    *
680    * <h5 class='section'>Notes:</h5>
681    * <ul class='spaced-list'>
682    *    <li>
683    *       The format is a {@doc juneau-marshall.JsonDetails.SimplifiedJson} object.
684    *    <li>
685    *       The leading/trailing <code>{ }</code> characters are optional.
686    *       <br>The following two example are considered equivalent:
687    *       <p class='bcode w800'>
688    *    <ja>@Schema</ja>(<js>"{type: 'array'}"</js>)
689    *       </p>
690    *       <p class='bcode w800'>
691    *    <ja>@Schema</ja>(<js>"type: 'array'"</js>)
692    *       </p>
693    *    <li>
694    *       Multiple lines are concatenated with newlines so that you can format the value to be readable.
695    *    <li>
696    *       Supports {@doc DefaultRestSvlVariables}
697    *       (e.g. <js>"$L{my.localized.variable}"</js>).
698    *    <li>
699    *       Values defined in this field supersede values pulled from the Swagger JSON file and are superseded by individual values defined on this annotation.
700    * </ul>
701    */
702   String[] value() default {};
703}