@forge/manifest 2.6.0-next.12 → 2.6.0-next.13

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.
@@ -2448,13 +2448,15 @@
2448
2448
  "items": {
2449
2449
  "oneOf": [
2450
2450
  {
2451
+ "additionalProperties": false,
2451
2452
  "type": "object",
2452
- "required": [
2453
- "title",
2454
- "function",
2455
- "key"
2456
- ],
2457
2453
  "properties": {
2454
+ "function": {
2455
+ "type": "string",
2456
+ "minLength": 1,
2457
+ "maxLength": 255,
2458
+ "pattern": "^[a-zA-Z0-9-_]+$"
2459
+ },
2458
2460
  "title": {
2459
2461
  "type": "string",
2460
2462
  "minLength": 1,
@@ -2466,33 +2468,137 @@
2466
2468
  "maxLength": 255
2467
2469
  },
2468
2470
  "layout": {
2471
+ "enum": [
2472
+ "basic",
2473
+ "native"
2474
+ ],
2475
+ "type": "string"
2476
+ },
2477
+ "key": {
2478
+ "$ref": "#/definitions/ModuleKeySchema"
2479
+ }
2480
+ },
2481
+ "required": [
2482
+ "function",
2483
+ "title",
2484
+ "key"
2485
+ ]
2486
+ },
2487
+ {
2488
+ "additionalProperties": false,
2489
+ "type": "object",
2490
+ "properties": {
2491
+ "resource": {
2469
2492
  "type": "string",
2470
2493
  "minLength": 1,
2471
- "maxLength": 255,
2472
- "enum": [
2473
- "native",
2474
- "basic"
2494
+ "maxLength": 23,
2495
+ "pattern": "^[a-zA-Z0-9_\\-]+$"
2496
+ },
2497
+ "resourceUploadId": {
2498
+ "type": "string",
2499
+ "minLength": 1,
2500
+ "maxLength": 255
2501
+ },
2502
+ "resolver": {
2503
+ "additionalProperties": false,
2504
+ "type": "object",
2505
+ "properties": {
2506
+ "function": {
2507
+ "type": "string",
2508
+ "minLength": 1,
2509
+ "maxLength": 255,
2510
+ "pattern": "^[a-zA-Z0-9-_]+$"
2511
+ }
2512
+ },
2513
+ "required": [
2514
+ "function"
2475
2515
  ]
2476
2516
  },
2477
- "function": {
2517
+ "title": {
2478
2518
  "type": "string",
2479
2519
  "minLength": 1,
2480
- "maxLength": 255,
2481
- "pattern": "^[a-zA-Z0-9-_]+$"
2520
+ "maxLength": 255
2521
+ },
2522
+ "icon": {
2523
+ "type": "string",
2524
+ "minLength": 1,
2525
+ "maxLength": 255
2526
+ },
2527
+ "layout": {
2528
+ "enum": [
2529
+ "basic",
2530
+ "native"
2531
+ ],
2532
+ "type": "string"
2482
2533
  },
2483
2534
  "key": {
2484
2535
  "$ref": "#/definitions/ModuleKeySchema"
2485
2536
  }
2486
- }
2487
- },
2488
- {
2489
- "type": "object",
2537
+ },
2490
2538
  "required": [
2491
- "title",
2492
2539
  "resource",
2540
+ "title",
2493
2541
  "key"
2494
- ],
2542
+ ]
2543
+ },
2544
+ {
2545
+ "additionalProperties": false,
2546
+ "type": "object",
2495
2547
  "properties": {
2548
+ "pages": {
2549
+ "type": "array",
2550
+ "items": {
2551
+ "additionalProperties": false,
2552
+ "type": "object",
2553
+ "properties": {
2554
+ "title": {
2555
+ "type": "string",
2556
+ "minLength": 1,
2557
+ "maxLength": 255
2558
+ },
2559
+ "route": {
2560
+ "minLength": 1,
2561
+ "maxLength": 255,
2562
+ "type": "string"
2563
+ },
2564
+ "icon": {
2565
+ "type": "string",
2566
+ "minLength": 1,
2567
+ "maxLength": 255
2568
+ }
2569
+ },
2570
+ "required": [
2571
+ "route",
2572
+ "title"
2573
+ ]
2574
+ }
2575
+ },
2576
+ "resource": {
2577
+ "type": "string",
2578
+ "minLength": 1,
2579
+ "maxLength": 23,
2580
+ "pattern": "^[a-zA-Z0-9_\\-]+$"
2581
+ },
2582
+ "resourceUploadId": {
2583
+ "type": "string",
2584
+ "minLength": 1,
2585
+ "maxLength": 255
2586
+ },
2587
+ "resolver": {
2588
+ "additionalProperties": false,
2589
+ "type": "object",
2590
+ "properties": {
2591
+ "function": {
2592
+ "type": "string",
2593
+ "minLength": 1,
2594
+ "maxLength": 255,
2595
+ "pattern": "^[a-zA-Z0-9-_]+$"
2596
+ }
2597
+ },
2598
+ "required": [
2599
+ "function"
2600
+ ]
2601
+ },
2496
2602
  "title": {
2497
2603
  "type": "string",
2498
2604
  "minLength": 1,
@@ -2504,13 +2610,82 @@
2504
2610
  "maxLength": 255
2505
2611
  },
2506
2612
  "layout": {
2613
+ "enum": [
2614
+ "basic",
2615
+ "native"
2616
+ ],
2617
+ "type": "string"
2618
+ },
2619
+ "key": {
2620
+ "$ref": "#/definitions/ModuleKeySchema"
2621
+ }
2622
+ },
2623
+ "required": [
2624
+ "pages",
2625
+ "resource",
2626
+ "title",
2627
+ "key"
2628
+ ]
2629
+ },
2630
+ {
2631
+ "additionalProperties": false,
2632
+ "type": "object",
2633
+ "properties": {
2634
+ "sections": {
2635
+ "type": "array",
2636
+ "items": {
2637
+ "additionalProperties": false,
2638
+ "type": "object",
2639
+ "properties": {
2640
+ "header": {
2641
+ "minLength": 1,
2642
+ "maxLength": 255,
2643
+ "type": "string"
2644
+ },
2645
+ "pages": {
2646
+ "type": "array",
2647
+ "items": {
2648
+ "additionalProperties": false,
2649
+ "type": "object",
2650
+ "properties": {
2651
+ "title": {
2652
+ "type": "string",
2653
+ "minLength": 1,
2654
+ "maxLength": 255
2655
+ },
2656
+ "route": {
2657
+ "minLength": 1,
2658
+ "maxLength": 255,
2659
+ "type": "string"
2660
+ },
2661
+ "icon": {
2662
+ "type": "string",
2663
+ "minLength": 1,
2664
+ "maxLength": 255
2665
+ }
2666
+ },
2667
+ "required": [
2668
+ "route",
2669
+ "title"
2670
+ ]
2671
+ }
2672
+ }
2673
+ },
2674
+ "required": [
2675
+ "pages"
2676
+ ]
2677
+ }
2678
+ },
2679
+ "resource": {
2507
2680
  "type": "string",
2508
2681
  "minLength": 1,
2509
- "maxLength": 255,
2510
- "enum": [
2511
- "native",
2512
- "basic"
2513
- ]
2682
+ "maxLength": 23,
2683
+ "pattern": "^[a-zA-Z0-9_\\-]+$"
2684
+ },
2685
+ "resourceUploadId": {
2686
+ "type": "string",
2687
+ "minLength": 1,
2688
+ "maxLength": 255
2514
2689
  },
2515
2690
  "resolver": {
2516
2691
  "additionalProperties": false,
@@ -2527,21 +2702,33 @@
2527
2702
  "function"
2528
2703
  ]
2529
2704
  },
2530
- "resource": {
2705
+ "title": {
2531
2706
  "type": "string",
2532
2707
  "minLength": 1,
2533
- "maxLength": 23,
2534
- "pattern": "^[a-zA-Z0-9_\\-]+$"
2708
+ "maxLength": 255
2535
2709
  },
2536
- "resourceUploadId": {
2710
+ "icon": {
2537
2711
  "type": "string",
2538
2712
  "minLength": 1,
2539
2713
  "maxLength": 255
2540
2714
  },
2715
+ "layout": {
2716
+ "enum": [
2717
+ "basic",
2718
+ "native"
2719
+ ],
2720
+ "type": "string"
2721
+ },
2541
2722
  "key": {
2542
2723
  "$ref": "#/definitions/ModuleKeySchema"
2543
2724
  }
2544
- }
2725
+ },
2726
+ "required": [
2727
+ "resource",
2728
+ "sections",
2729
+ "title",
2730
+ "key"
2731
+ ]
2545
2732
  }
2546
2733
  ]
2547
2734
  },
@@ -2552,13 +2739,15 @@
2552
2739
  "items": {
2553
2740
  "oneOf": [
2554
2741
  {
2742
+ "additionalProperties": false,
2555
2743
  "type": "object",
2556
- "required": [
2557
- "title",
2558
- "function",
2559
- "key"
2560
- ],
2561
2744
  "properties": {
2745
+ "function": {
2746
+ "type": "string",
2747
+ "minLength": 1,
2748
+ "maxLength": 255,
2749
+ "pattern": "^[a-zA-Z0-9-_]+$"
2750
+ },
2562
2751
  "title": {
2563
2752
  "type": "string",
2564
2753
  "minLength": 1,
@@ -2570,51 +2759,515 @@
2570
2759
  "maxLength": 255
2571
2760
  },
2572
2761
  "layout": {
2762
+ "enum": [
2763
+ "basic",
2764
+ "native"
2765
+ ],
2766
+ "type": "string"
2767
+ },
2768
+ "key": {
2769
+ "$ref": "#/definitions/ModuleKeySchema"
2770
+ }
2771
+ },
2772
+ "required": [
2773
+ "function",
2774
+ "title",
2775
+ "key"
2776
+ ]
2777
+ },
2778
+ {
2779
+ "additionalProperties": false,
2780
+ "type": "object",
2781
+ "properties": {
2782
+ "resource": {
2573
2783
  "type": "string",
2574
2784
  "minLength": 1,
2575
- "maxLength": 255,
2576
- "enum": [
2577
- "native",
2578
- "basic"
2579
- ]
2785
+ "maxLength": 23,
2786
+ "pattern": "^[a-zA-Z0-9_\\-]+$"
2580
2787
  },
2581
- "function": {
2788
+ "resourceUploadId": {
2582
2789
  "type": "string",
2583
2790
  "minLength": 1,
2584
- "maxLength": 255,
2585
- "pattern": "^[a-zA-Z0-9-_]+$"
2791
+ "maxLength": 255
2792
+ },
2793
+ "resolver": {
2794
+ "additionalProperties": false,
2795
+ "type": "object",
2796
+ "properties": {
2797
+ "function": {
2798
+ "type": "string",
2799
+ "minLength": 1,
2800
+ "maxLength": 255,
2801
+ "pattern": "^[a-zA-Z0-9-_]+$"
2802
+ }
2803
+ },
2804
+ "required": [
2805
+ "function"
2806
+ ]
2807
+ },
2808
+ "title": {
2809
+ "type": "string",
2810
+ "minLength": 1,
2811
+ "maxLength": 255
2812
+ },
2813
+ "icon": {
2814
+ "type": "string",
2815
+ "minLength": 1,
2816
+ "maxLength": 255
2817
+ },
2818
+ "layout": {
2819
+ "enum": [
2820
+ "basic",
2821
+ "native"
2822
+ ],
2823
+ "type": "string"
2824
+ },
2825
+ "key": {
2826
+ "$ref": "#/definitions/ModuleKeySchema"
2827
+ }
2828
+ },
2829
+ "required": [
2830
+ "resource",
2831
+ "title",
2832
+ "key"
2833
+ ]
2834
+ },
2835
+ {
2836
+ "additionalProperties": false,
2837
+ "type": "object",
2838
+ "properties": {
2839
+ "pages": {
2840
+ "type": "array",
2841
+ "items": {
2842
+ "additionalProperties": false,
2843
+ "type": "object",
2844
+ "properties": {
2845
+ "title": {
2846
+ "type": "string",
2847
+ "minLength": 1,
2848
+ "maxLength": 255
2849
+ },
2850
+ "route": {
2851
+ "minLength": 1,
2852
+ "maxLength": 255,
2853
+ "type": "string"
2854
+ },
2855
+ "icon": {
2856
+ "type": "string",
2857
+ "minLength": 1,
2858
+ "maxLength": 255
2859
+ }
2860
+ },
2861
+ "required": [
2862
+ "route",
2863
+ "title"
2864
+ ]
2865
+ }
2866
+ },
2867
+ "resource": {
2868
+ "type": "string",
2869
+ "minLength": 1,
2870
+ "maxLength": 23,
2871
+ "pattern": "^[a-zA-Z0-9_\\-]+$"
2872
+ },
2873
+ "resourceUploadId": {
2874
+ "type": "string",
2875
+ "minLength": 1,
2876
+ "maxLength": 255
2877
+ },
2878
+ "resolver": {
2879
+ "additionalProperties": false,
2880
+ "type": "object",
2881
+ "properties": {
2882
+ "function": {
2883
+ "type": "string",
2884
+ "minLength": 1,
2885
+ "maxLength": 255,
2886
+ "pattern": "^[a-zA-Z0-9-_]+$"
2887
+ }
2888
+ },
2889
+ "required": [
2890
+ "function"
2891
+ ]
2892
+ },
2893
+ "title": {
2894
+ "type": "string",
2895
+ "minLength": 1,
2896
+ "maxLength": 255
2897
+ },
2898
+ "icon": {
2899
+ "type": "string",
2900
+ "minLength": 1,
2901
+ "maxLength": 255
2902
+ },
2903
+ "layout": {
2904
+ "enum": [
2905
+ "basic",
2906
+ "native"
2907
+ ],
2908
+ "type": "string"
2909
+ },
2910
+ "key": {
2911
+ "$ref": "#/definitions/ModuleKeySchema"
2912
+ }
2913
+ },
2914
+ "required": [
2915
+ "pages",
2916
+ "resource",
2917
+ "title",
2918
+ "key"
2919
+ ]
2920
+ },
2921
+ {
2922
+ "additionalProperties": false,
2923
+ "type": "object",
2924
+ "properties": {
2925
+ "sections": {
2926
+ "type": "array",
2927
+ "items": {
2928
+ "additionalProperties": false,
2929
+ "type": "object",
2930
+ "properties": {
2931
+ "header": {
2932
+ "minLength": 1,
2933
+ "maxLength": 255,
2934
+ "type": "string"
2935
+ },
2936
+ "pages": {
2937
+ "type": "array",
2938
+ "items": {
2939
+ "additionalProperties": false,
2940
+ "type": "object",
2941
+ "properties": {
2942
+ "title": {
2943
+ "type": "string",
2944
+ "minLength": 1,
2945
+ "maxLength": 255
2946
+ },
2947
+ "route": {
2948
+ "minLength": 1,
2949
+ "maxLength": 255,
2950
+ "type": "string"
2951
+ },
2952
+ "icon": {
2953
+ "type": "string",
2954
+ "minLength": 1,
2955
+ "maxLength": 255
2956
+ }
2957
+ },
2958
+ "required": [
2959
+ "route",
2960
+ "title"
2961
+ ]
2962
+ }
2963
+ }
2964
+ },
2965
+ "required": [
2966
+ "pages"
2967
+ ]
2968
+ }
2969
+ },
2970
+ "resource": {
2971
+ "type": "string",
2972
+ "minLength": 1,
2973
+ "maxLength": 23,
2974
+ "pattern": "^[a-zA-Z0-9_\\-]+$"
2975
+ },
2976
+ "resourceUploadId": {
2977
+ "type": "string",
2978
+ "minLength": 1,
2979
+ "maxLength": 255
2980
+ },
2981
+ "resolver": {
2982
+ "additionalProperties": false,
2983
+ "type": "object",
2984
+ "properties": {
2985
+ "function": {
2986
+ "type": "string",
2987
+ "minLength": 1,
2988
+ "maxLength": 255,
2989
+ "pattern": "^[a-zA-Z0-9-_]+$"
2990
+ }
2991
+ },
2992
+ "required": [
2993
+ "function"
2994
+ ]
2995
+ },
2996
+ "title": {
2997
+ "type": "string",
2998
+ "minLength": 1,
2999
+ "maxLength": 255
3000
+ },
3001
+ "icon": {
3002
+ "type": "string",
3003
+ "minLength": 1,
3004
+ "maxLength": 255
3005
+ },
3006
+ "layout": {
3007
+ "enum": [
3008
+ "basic",
3009
+ "native"
3010
+ ],
3011
+ "type": "string"
3012
+ },
3013
+ "key": {
3014
+ "$ref": "#/definitions/ModuleKeySchema"
3015
+ }
3016
+ },
3017
+ "required": [
3018
+ "resource",
3019
+ "sections",
3020
+ "title",
3021
+ "key"
3022
+ ]
3023
+ }
3024
+ ]
3025
+ },
3026
+ "minItems": 1
3027
+ },
3028
+ "jira:globalPage": {
3029
+ "type": "array",
3030
+ "items": {
3031
+ "oneOf": [
3032
+ {
3033
+ "additionalProperties": false,
3034
+ "type": "object",
3035
+ "properties": {
3036
+ "function": {
3037
+ "type": "string",
3038
+ "minLength": 1,
3039
+ "maxLength": 255,
3040
+ "pattern": "^[a-zA-Z0-9-_]+$"
3041
+ },
3042
+ "title": {
3043
+ "type": "string",
3044
+ "minLength": 1,
3045
+ "maxLength": 255
3046
+ },
3047
+ "icon": {
3048
+ "type": "string",
3049
+ "minLength": 1,
3050
+ "maxLength": 255
3051
+ },
3052
+ "layout": {
3053
+ "enum": [
3054
+ "basic",
3055
+ "native"
3056
+ ],
3057
+ "type": "string"
3058
+ },
3059
+ "key": {
3060
+ "$ref": "#/definitions/ModuleKeySchema"
3061
+ }
3062
+ },
3063
+ "required": [
3064
+ "function",
3065
+ "title",
3066
+ "key"
3067
+ ]
3068
+ },
3069
+ {
3070
+ "additionalProperties": false,
3071
+ "type": "object",
3072
+ "properties": {
3073
+ "resource": {
3074
+ "type": "string",
3075
+ "minLength": 1,
3076
+ "maxLength": 23,
3077
+ "pattern": "^[a-zA-Z0-9_\\-]+$"
3078
+ },
3079
+ "resourceUploadId": {
3080
+ "type": "string",
3081
+ "minLength": 1,
3082
+ "maxLength": 255
3083
+ },
3084
+ "resolver": {
3085
+ "additionalProperties": false,
3086
+ "type": "object",
3087
+ "properties": {
3088
+ "function": {
3089
+ "type": "string",
3090
+ "minLength": 1,
3091
+ "maxLength": 255,
3092
+ "pattern": "^[a-zA-Z0-9-_]+$"
3093
+ }
3094
+ },
3095
+ "required": [
3096
+ "function"
3097
+ ]
3098
+ },
3099
+ "title": {
3100
+ "type": "string",
3101
+ "minLength": 1,
3102
+ "maxLength": 255
3103
+ },
3104
+ "icon": {
3105
+ "type": "string",
3106
+ "minLength": 1,
3107
+ "maxLength": 255
3108
+ },
3109
+ "layout": {
3110
+ "enum": [
3111
+ "basic",
3112
+ "native"
3113
+ ],
3114
+ "type": "string"
3115
+ },
3116
+ "key": {
3117
+ "$ref": "#/definitions/ModuleKeySchema"
3118
+ }
3119
+ },
3120
+ "required": [
3121
+ "resource",
3122
+ "title",
3123
+ "key"
3124
+ ]
3125
+ },
3126
+ {
3127
+ "additionalProperties": false,
3128
+ "type": "object",
3129
+ "properties": {
3130
+ "pages": {
3131
+ "type": "array",
3132
+ "items": {
3133
+ "additionalProperties": false,
3134
+ "type": "object",
3135
+ "properties": {
3136
+ "title": {
3137
+ "type": "string",
3138
+ "minLength": 1,
3139
+ "maxLength": 255
3140
+ },
3141
+ "route": {
3142
+ "minLength": 1,
3143
+ "maxLength": 255,
3144
+ "type": "string"
3145
+ },
3146
+ "icon": {
3147
+ "type": "string",
3148
+ "minLength": 1,
3149
+ "maxLength": 255
3150
+ }
3151
+ },
3152
+ "required": [
3153
+ "route",
3154
+ "title"
3155
+ ]
3156
+ }
3157
+ },
3158
+ "resource": {
3159
+ "type": "string",
3160
+ "minLength": 1,
3161
+ "maxLength": 23,
3162
+ "pattern": "^[a-zA-Z0-9_\\-]+$"
3163
+ },
3164
+ "resourceUploadId": {
3165
+ "type": "string",
3166
+ "minLength": 1,
3167
+ "maxLength": 255
3168
+ },
3169
+ "resolver": {
3170
+ "additionalProperties": false,
3171
+ "type": "object",
3172
+ "properties": {
3173
+ "function": {
3174
+ "type": "string",
3175
+ "minLength": 1,
3176
+ "maxLength": 255,
3177
+ "pattern": "^[a-zA-Z0-9-_]+$"
3178
+ }
3179
+ },
3180
+ "required": [
3181
+ "function"
3182
+ ]
3183
+ },
3184
+ "title": {
3185
+ "type": "string",
3186
+ "minLength": 1,
3187
+ "maxLength": 255
3188
+ },
3189
+ "icon": {
3190
+ "type": "string",
3191
+ "minLength": 1,
3192
+ "maxLength": 255
3193
+ },
3194
+ "layout": {
3195
+ "enum": [
3196
+ "basic",
3197
+ "native"
3198
+ ],
3199
+ "type": "string"
2586
3200
  },
2587
3201
  "key": {
2588
3202
  "$ref": "#/definitions/ModuleKeySchema"
2589
3203
  }
2590
- }
2591
- },
2592
- {
2593
- "type": "object",
3204
+ },
2594
3205
  "required": [
2595
- "title",
3206
+ "pages",
2596
3207
  "resource",
3208
+ "title",
2597
3209
  "key"
2598
- ],
3210
+ ]
3211
+ },
3212
+ {
3213
+ "additionalProperties": false,
3214
+ "type": "object",
2599
3215
  "properties": {
2600
- "title": {
2601
- "type": "string",
2602
- "minLength": 1,
2603
- "maxLength": 255
3216
+ "sections": {
3217
+ "type": "array",
3218
+ "items": {
3219
+ "additionalProperties": false,
3220
+ "type": "object",
3221
+ "properties": {
3222
+ "header": {
3223
+ "minLength": 1,
3224
+ "maxLength": 255,
3225
+ "type": "string"
3226
+ },
3227
+ "pages": {
3228
+ "type": "array",
3229
+ "items": {
3230
+ "additionalProperties": false,
3231
+ "type": "object",
3232
+ "properties": {
3233
+ "title": {
3234
+ "type": "string",
3235
+ "minLength": 1,
3236
+ "maxLength": 255
3237
+ },
3238
+ "route": {
3239
+ "minLength": 1,
3240
+ "maxLength": 255,
3241
+ "type": "string"
3242
+ },
3243
+ "icon": {
3244
+ "type": "string",
3245
+ "minLength": 1,
3246
+ "maxLength": 255
3247
+ }
3248
+ },
3249
+ "required": [
3250
+ "route",
3251
+ "title"
3252
+ ]
3253
+ }
3254
+ }
3255
+ },
3256
+ "required": [
3257
+ "pages"
3258
+ ]
3259
+ }
2604
3260
  },
2605
- "icon": {
3261
+ "resource": {
2606
3262
  "type": "string",
2607
3263
  "minLength": 1,
2608
- "maxLength": 255
3264
+ "maxLength": 23,
3265
+ "pattern": "^[a-zA-Z0-9_\\-]+$"
2609
3266
  },
2610
- "layout": {
3267
+ "resourceUploadId": {
2611
3268
  "type": "string",
2612
3269
  "minLength": 1,
2613
- "maxLength": 255,
2614
- "enum": [
2615
- "native",
2616
- "basic"
2617
- ]
3270
+ "maxLength": 255
2618
3271
  },
2619
3272
  "resolver": {
2620
3273
  "additionalProperties": false,
@@ -2631,31 +3284,44 @@
2631
3284
  "function"
2632
3285
  ]
2633
3286
  },
2634
- "resource": {
3287
+ "title": {
2635
3288
  "type": "string",
2636
3289
  "minLength": 1,
2637
- "maxLength": 23,
2638
- "pattern": "^[a-zA-Z0-9_\\-]+$"
3290
+ "maxLength": 255
2639
3291
  },
2640
- "resourceUploadId": {
3292
+ "icon": {
2641
3293
  "type": "string",
2642
3294
  "minLength": 1,
2643
3295
  "maxLength": 255
2644
3296
  },
3297
+ "layout": {
3298
+ "enum": [
3299
+ "basic",
3300
+ "native"
3301
+ ],
3302
+ "type": "string"
3303
+ },
2645
3304
  "key": {
2646
3305
  "$ref": "#/definitions/ModuleKeySchema"
2647
3306
  }
2648
- }
3307
+ },
3308
+ "required": [
3309
+ "resource",
3310
+ "sections",
3311
+ "title",
3312
+ "key"
3313
+ ]
2649
3314
  }
2650
3315
  ]
2651
3316
  },
2652
3317
  "minItems": 1
2653
3318
  },
2654
- "jira:globalPage": {
3319
+ "jira:projectSettingsPage": {
2655
3320
  "type": "array",
2656
3321
  "items": {
2657
3322
  "oneOf": [
2658
3323
  {
3324
+ "additionalProperties": false,
2659
3325
  "type": "object",
2660
3326
  "properties": {
2661
3327
  "function": {
@@ -2665,9 +3331,9 @@
2665
3331
  "pattern": "^[a-zA-Z0-9-_]+$"
2666
3332
  },
2667
3333
  "title": {
3334
+ "type": "string",
2668
3335
  "minLength": 1,
2669
- "maxLength": 255,
2670
- "type": "string"
3336
+ "maxLength": 255
2671
3337
  },
2672
3338
  "icon": {
2673
3339
  "type": "string",
@@ -2692,6 +3358,7 @@
2692
3358
  ]
2693
3359
  },
2694
3360
  {
3361
+ "additionalProperties": false,
2695
3362
  "type": "object",
2696
3363
  "properties": {
2697
3364
  "resource": {
@@ -2700,6 +3367,11 @@
2700
3367
  "maxLength": 23,
2701
3368
  "pattern": "^[a-zA-Z0-9_\\-]+$"
2702
3369
  },
3370
+ "resourceUploadId": {
3371
+ "type": "string",
3372
+ "minLength": 1,
3373
+ "maxLength": 255
3374
+ },
2703
3375
  "resolver": {
2704
3376
  "additionalProperties": false,
2705
3377
  "type": "object",
@@ -2716,9 +3388,9 @@
2716
3388
  ]
2717
3389
  },
2718
3390
  "title": {
3391
+ "type": "string",
2719
3392
  "minLength": 1,
2720
- "maxLength": 255,
2721
- "type": "string"
3393
+ "maxLength": 255
2722
3394
  },
2723
3395
  "icon": {
2724
3396
  "type": "string",
@@ -2741,28 +3413,69 @@
2741
3413
  "title",
2742
3414
  "key"
2743
3415
  ]
2744
- }
2745
- ]
2746
- },
2747
- "minItems": 1
2748
- },
2749
- "jira:projectSettingsPage": {
2750
- "type": "array",
2751
- "items": {
2752
- "oneOf": [
3416
+ },
2753
3417
  {
3418
+ "additionalProperties": false,
2754
3419
  "type": "object",
2755
3420
  "properties": {
2756
- "function": {
3421
+ "pages": {
3422
+ "type": "array",
3423
+ "items": {
3424
+ "additionalProperties": false,
3425
+ "type": "object",
3426
+ "properties": {
3427
+ "title": {
3428
+ "type": "string",
3429
+ "minLength": 1,
3430
+ "maxLength": 255
3431
+ },
3432
+ "route": {
3433
+ "minLength": 1,
3434
+ "maxLength": 255,
3435
+ "type": "string"
3436
+ },
3437
+ "icon": {
3438
+ "type": "string",
3439
+ "minLength": 1,
3440
+ "maxLength": 255
3441
+ }
3442
+ },
3443
+ "required": [
3444
+ "route",
3445
+ "title"
3446
+ ]
3447
+ }
3448
+ },
3449
+ "resource": {
2757
3450
  "type": "string",
2758
3451
  "minLength": 1,
2759
- "maxLength": 255,
2760
- "pattern": "^[a-zA-Z0-9-_]+$"
3452
+ "maxLength": 23,
3453
+ "pattern": "^[a-zA-Z0-9_\\-]+$"
3454
+ },
3455
+ "resourceUploadId": {
3456
+ "type": "string",
3457
+ "minLength": 1,
3458
+ "maxLength": 255
3459
+ },
3460
+ "resolver": {
3461
+ "additionalProperties": false,
3462
+ "type": "object",
3463
+ "properties": {
3464
+ "function": {
3465
+ "type": "string",
3466
+ "minLength": 1,
3467
+ "maxLength": 255,
3468
+ "pattern": "^[a-zA-Z0-9-_]+$"
3469
+ }
3470
+ },
3471
+ "required": [
3472
+ "function"
3473
+ ]
2761
3474
  },
2762
3475
  "title": {
3476
+ "type": "string",
2763
3477
  "minLength": 1,
2764
- "maxLength": 255,
2765
- "type": "string"
3478
+ "maxLength": 255
2766
3479
  },
2767
3480
  "icon": {
2768
3481
  "type": "string",
@@ -2781,20 +3494,72 @@
2781
3494
  }
2782
3495
  },
2783
3496
  "required": [
2784
- "function",
3497
+ "pages",
3498
+ "resource",
2785
3499
  "title",
2786
3500
  "key"
2787
3501
  ]
2788
3502
  },
2789
3503
  {
3504
+ "additionalProperties": false,
2790
3505
  "type": "object",
2791
3506
  "properties": {
3507
+ "sections": {
3508
+ "type": "array",
3509
+ "items": {
3510
+ "additionalProperties": false,
3511
+ "type": "object",
3512
+ "properties": {
3513
+ "header": {
3514
+ "minLength": 1,
3515
+ "maxLength": 255,
3516
+ "type": "string"
3517
+ },
3518
+ "pages": {
3519
+ "type": "array",
3520
+ "items": {
3521
+ "additionalProperties": false,
3522
+ "type": "object",
3523
+ "properties": {
3524
+ "title": {
3525
+ "type": "string",
3526
+ "minLength": 1,
3527
+ "maxLength": 255
3528
+ },
3529
+ "route": {
3530
+ "minLength": 1,
3531
+ "maxLength": 255,
3532
+ "type": "string"
3533
+ },
3534
+ "icon": {
3535
+ "type": "string",
3536
+ "minLength": 1,
3537
+ "maxLength": 255
3538
+ }
3539
+ },
3540
+ "required": [
3541
+ "route",
3542
+ "title"
3543
+ ]
3544
+ }
3545
+ }
3546
+ },
3547
+ "required": [
3548
+ "pages"
3549
+ ]
3550
+ }
3551
+ },
2792
3552
  "resource": {
2793
3553
  "type": "string",
2794
3554
  "minLength": 1,
2795
3555
  "maxLength": 23,
2796
3556
  "pattern": "^[a-zA-Z0-9_\\-]+$"
2797
3557
  },
3558
+ "resourceUploadId": {
3559
+ "type": "string",
3560
+ "minLength": 1,
3561
+ "maxLength": 255
3562
+ },
2798
3563
  "resolver": {
2799
3564
  "additionalProperties": false,
2800
3565
  "type": "object",
@@ -2811,9 +3576,9 @@
2811
3576
  ]
2812
3577
  },
2813
3578
  "title": {
3579
+ "type": "string",
2814
3580
  "minLength": 1,
2815
- "maxLength": 255,
2816
- "type": "string"
3581
+ "maxLength": 255
2817
3582
  },
2818
3583
  "icon": {
2819
3584
  "type": "string",
@@ -2833,6 +3598,7 @@
2833
3598
  },
2834
3599
  "required": [
2835
3600
  "resource",
3601
+ "sections",
2836
3602
  "title",
2837
3603
  "key"
2838
3604
  ]
@@ -5594,10 +6360,10 @@
5594
6360
  "type": "object",
5595
6361
  "anyOf": [
5596
6362
  {
5597
- "$ref": "#/definitions/singleCondition"
6363
+ "$ref": "#/definitions/compositeCondition"
5598
6364
  },
5599
6365
  {
5600
- "$ref": "#/definitions/compositeCondition"
6366
+ "$ref": "#/definitions/singleCondition"
5601
6367
  }
5602
6368
  ]
5603
6369
  },
@@ -5649,10 +6415,10 @@
5649
6415
  "type": "object",
5650
6416
  "anyOf": [
5651
6417
  {
5652
- "$ref": "#/definitions/compositeCondition"
6418
+ "$ref": "#/definitions/singleCondition"
5653
6419
  },
5654
6420
  {
5655
- "$ref": "#/definitions/singleCondition"
6421
+ "$ref": "#/definitions/compositeCondition"
5656
6422
  }
5657
6423
  ]
5658
6424
  },
@@ -5713,10 +6479,10 @@
5713
6479
  "type": "object",
5714
6480
  "anyOf": [
5715
6481
  {
5716
- "$ref": "#/definitions/compositeCondition"
6482
+ "$ref": "#/definitions/singleCondition"
5717
6483
  },
5718
6484
  {
5719
- "$ref": "#/definitions/singleCondition"
6485
+ "$ref": "#/definitions/compositeCondition"
5720
6486
  }
5721
6487
  ]
5722
6488
  },
@@ -5829,10 +6595,10 @@
5829
6595
  "type": "object",
5830
6596
  "anyOf": [
5831
6597
  {
5832
- "$ref": "#/definitions/compositeCondition"
6598
+ "$ref": "#/definitions/singleCondition"
5833
6599
  },
5834
6600
  {
5835
- "$ref": "#/definitions/singleCondition"
6601
+ "$ref": "#/definitions/compositeCondition"
5836
6602
  }
5837
6603
  ]
5838
6604
  },
@@ -5902,22 +6668,6 @@
5902
6668
  "type": "object",
5903
6669
  "fieldDescription": "\n\n<p>An object containing options which vary based on the type of web item target you are implementing.</p>\n\n <p>Currently-allowed options are:</p>\n <ul>\n <li><a href=\"../inline-dialog-options/\">Inline Dialog Options</a> when type is \"inlinedialog\", and</li>\n <li><a href=\"../dialog-options/\">Dialog Options</a> when type is \"dialog\"</li>\n <li><a href=\"../dialog-module-options/\">Dialog Module Options</a> when type is \"dialogmodule\"</li>\n </ul>\n\n",
5904
6670
  "anyOf": [
5905
- {
5906
- "properties": {
5907
- "key": {
5908
- "maxLength": 100,
5909
- "type": "string",
5910
- "fieldDescription": "\n\n<p>The key of a <a href=\"../dialog/\">Dialog</a> module declared in this Connect add-on.</p>\n\n <p>\n The dialog module will include the <a href=\"../dialog-options/\">Dialog Options</a>\n that would otherwise need to be specified directly in this options object.\n </p>\n\n"
5911
- }
5912
- },
5913
- "required": [
5914
- "key"
5915
- ],
5916
- "shortClassName": "dialogModuleOptions",
5917
- "type": "object",
5918
- "title": "Dialog Module Options",
5919
- "description": "\n\nOptions for a web-item targeting a common <a href=\"../dialog/\">dialog module</a>.\n\n <h3>Example</h3>\n\n\n\n\n\n {\n \"target\": {\n \"type\": \"dialogmodule\",\n \"options\": {\n \"key\": \"dialog-module-key\"\n }\n }\n }\n\n\n"
5920
- },
5921
6671
  {
5922
6672
  "properties": {
5923
6673
  "size": {
@@ -5963,6 +6713,22 @@
5963
6713
  "title": "Dialog Options",
5964
6714
  "description": "\n\nOptions for a modal dialog <a href=\"../web-item-target/\">web item target</a> or <a href=\"../dialog/\">common module</a>.\n\n <p>\n These options are a subset of those available via the <a href=\"../../jsapi/dialog/\">JavaScript API</a>.\n </p>\n\n <h2>Web Item Example</h2>\n\n\n\n\n\n {\n \"target\": {\n \"type\": \"dialog\",\n \"options\": {\n \"height\": \"100px\",\n \"width\": \"200px\"\n }\n }\n }\n\n\n\n\n <h2>Dialog Example</h2>\n\n\n\n\n\n {\n \"modules\": {\n \"dialogs\": [\n {\n \"url\": \"/my-dialog-content\",\n \"options\": {\n \"size\": \"fullscreen\",\n \"header\": {\n \"value\": \"Example Dialog\"\n }\n },\n \"key\": \"dialog-module-key\"\n }\n ]\n }\n }\n\n\n"
5965
6715
  },
6716
+ {
6717
+ "properties": {
6718
+ "key": {
6719
+ "maxLength": 100,
6720
+ "type": "string",
6721
+ "fieldDescription": "\n\n<p>The key of a <a href=\"../dialog/\">Dialog</a> module declared in this Connect add-on.</p>\n\n <p>\n The dialog module will include the <a href=\"../dialog-options/\">Dialog Options</a>\n that would otherwise need to be specified directly in this options object.\n </p>\n\n"
6722
+ }
6723
+ },
6724
+ "required": [
6725
+ "key"
6726
+ ],
6727
+ "shortClassName": "dialogModuleOptions",
6728
+ "type": "object",
6729
+ "title": "Dialog Module Options",
6730
+ "description": "\n\nOptions for a web-item targeting a common <a href=\"../dialog/\">dialog module</a>.\n\n <h3>Example</h3>\n\n\n\n\n\n {\n \"target\": {\n \"type\": \"dialogmodule\",\n \"options\": {\n \"key\": \"dialog-module-key\"\n }\n }\n }\n\n\n"
6731
+ },
5966
6732
  {
5967
6733
  "properties": {
5968
6734
  "offsetX": {
@@ -6328,44 +7094,17 @@
6328
7094
  "items": {
6329
7095
  "type": "object",
6330
7096
  "anyOf": [
6331
- {
6332
- "properties": {
6333
- "condition": {
6334
- "maxLength": 100,
6335
- "type": "string",
6336
- "fieldDescription": "\n\nA string indicating the name of the condition\n\n"
6337
- },
6338
- "invert": {
6339
- "type": "boolean",
6340
- "fieldDescription": "\n\nA flag indicating whether to invert the boolean result of the condition.\n\n",
6341
- "defaultValue": "false"
6342
- },
6343
- "params": {
6344
- "additionalProperties": true,
6345
- "type": "object",
6346
- "fieldTitle": "Object",
6347
- "fieldDescription": "\n\nThis object represents a map of key/value pairs, where each property name and value corresponds to the parameter name and value respectively.\n\n <p><b>Example</b></p>\n\n\n\n\n\n {\n \"params\": {\n \"someOtherProperty\": \"someValue\",\n \"myCustomProperty\": \"myValue\"\n }\n }\n\n\n"
6348
- }
6349
- },
6350
- "required": [
6351
- "condition"
6352
- ],
6353
- "shortClassName": "singleConditionBean",
6354
- "type": "object",
6355
- "title": "Single Condition",
6356
- "description": "\n\nSingle Conditions are either provided by the host application. See the complete documentation of\n [Conditions](../../conditions/) for more information.\n\n To invert a condition, add the attribute ``invert=\"true\"`` to the condition element.\n This is useful where you want to show the section if a certain condition is not satisfied.\n\n <h3>Example</h3>\n\n\n\n\n\n {\n \"condition\": \"user_is_logged_in\",\n \"invert\": false\n }\n\n\n"
6357
- },
6358
7097
  {
6359
7098
  "properties": {
6360
7099
  "conditions": {
6361
7100
  "items": {
6362
7101
  "type": "object",
6363
7102
  "anyOf": [
6364
- {
6365
- "$ref": "#"
6366
- },
6367
7103
  {
6368
7104
  "$ref": "#/definitions/singleCondition"
7105
+ },
7106
+ {
7107
+ "$ref": "#"
6369
7108
  }
6370
7109
  ]
6371
7110
  },
@@ -6387,6 +7126,33 @@
6387
7126
  "type": "object",
6388
7127
  "title": "Composite Condition",
6389
7128
  "description": "\n\nComposite Conditions are composed of a collection of [Single Condition](../single-condition/) / Composite Conditions\n and a type attribute.\n\n <h3>Example</h3>\n\n\n\n\n\n {\n \"conditions\": [\n {\n \"or\": [\n {\n \"condition\": \"can_attach_file_to_issue\",\n \"invert\": false\n },\n {\n \"condition\": \"is_issue_assigned_to_current_user\",\n \"invert\": false\n }\n ]\n },\n {\n \"condition\": \"user_is_logged_in\",\n \"invert\": false\n }\n ]\n }\n\n\n"
7129
+ },
7130
+ {
7131
+ "properties": {
7132
+ "condition": {
7133
+ "maxLength": 100,
7134
+ "type": "string",
7135
+ "fieldDescription": "\n\nA string indicating the name of the condition\n\n"
7136
+ },
7137
+ "invert": {
7138
+ "type": "boolean",
7139
+ "fieldDescription": "\n\nA flag indicating whether to invert the boolean result of the condition.\n\n",
7140
+ "defaultValue": "false"
7141
+ },
7142
+ "params": {
7143
+ "additionalProperties": true,
7144
+ "type": "object",
7145
+ "fieldTitle": "Object",
7146
+ "fieldDescription": "\n\nThis object represents a map of key/value pairs, where each property name and value corresponds to the parameter name and value respectively.\n\n <p><b>Example</b></p>\n\n\n\n\n\n {\n \"params\": {\n \"someOtherProperty\": \"someValue\",\n \"myCustomProperty\": \"myValue\"\n }\n }\n\n\n"
7147
+ }
7148
+ },
7149
+ "required": [
7150
+ "condition"
7151
+ ],
7152
+ "shortClassName": "singleConditionBean",
7153
+ "type": "object",
7154
+ "title": "Single Condition",
7155
+ "description": "\n\nSingle Conditions are either provided by the host application. See the complete documentation of\n [Conditions](../../conditions/) for more information.\n\n To invert a condition, add the attribute ``invert=\"true\"`` to the condition element.\n This is useful where you want to show the section if a certain condition is not satisfied.\n\n <h3>Example</h3>\n\n\n\n\n\n {\n \"condition\": \"user_is_logged_in\",\n \"invert\": false\n }\n\n\n"
6390
7156
  }
6391
7157
  ]
6392
7158
  },
@@ -6660,6 +7426,38 @@
6660
7426
  "items": {
6661
7427
  "type": "object",
6662
7428
  "anyOf": [
7429
+ {
7430
+ "properties": {
7431
+ "macroParameter": {
7432
+ "maxLength": 100,
7433
+ "type": "string",
7434
+ "fieldDescription": "\n\nThe Macro Parameter identifier used to store the text\n\n"
7435
+ },
7436
+ "type": {
7437
+ "enum": [
7438
+ "text",
7439
+ "TEXT"
7440
+ ],
7441
+ "type": "string",
7442
+ "fieldDescription": "\n\nThe type field must be set to 'text'\n\n"
7443
+ },
7444
+ "key": {
7445
+ "pattern": "^[a-zA-Z0-9-]+$",
7446
+ "maxLength": 100,
7447
+ "type": "string",
7448
+ "fieldDescription": "\n\nA key to identify this module.\n\n This key must be unique relative to the add on, with the exception of Confluence macros: Their keys need to be\n globally unique.\n\n Keys must only contain alphanumeric characters and dashes.\n\n The key is used to generate the url to your add-on's module. The url is generated as a combination of your add-on\n key and module key. For example, an add-on which looks like:\n\n {\n \"key\": \"my-addon\",\n \"modules\": {\n \"configurePage\": {\n \"key\": \"configure-me\",\n }\n }\n }\n\n Will have a configuration page module with a URL of `/plugins/servlet/ac/my-addon/configure-me`.\n\n"
7449
+ }
7450
+ },
7451
+ "required": [
7452
+ "macroParameter",
7453
+ "type",
7454
+ "key"
7455
+ ],
7456
+ "shortClassName": "textControlBean",
7457
+ "type": "object",
7458
+ "title": "TextControl",
7459
+ "description": "\n\nDefines a text field which may appear in control extension points such as the property panel\n\n <p><b>Example</b></p>\n\n\n\n\n\n {\n \"type\": \"button\",\n \"label\": {\n \"value\": \"My Custom Control 0\"\n },\n \"key\": \"my-custom-control-0\"\n }\n\n\n"
7460
+ },
6663
7461
  {
6664
7462
  "properties": {
6665
7463
  "label": {
@@ -6697,17 +7495,22 @@
6697
7495
  "controls": {
6698
7496
  "items": {
6699
7497
  "properties": {
7498
+ "macroParameterValue": {
7499
+ "maxLength": 10000,
7500
+ "type": "string",
7501
+ "fieldDescription": "\n\nThe value that will be assigned to a macro parameter when this toggle is clicked\n\n"
7502
+ },
6700
7503
  "label": {
6701
7504
  "$ref": "#/definitions/i18nProperty",
6702
7505
  "fieldDescription": "\n\nText which will appear inside the button\n\n"
6703
7506
  },
6704
7507
  "type": {
6705
7508
  "enum": [
6706
- "button",
6707
- "BUTTON"
7509
+ "togglebutton",
7510
+ "TOGGLEBUTTON"
6708
7511
  ],
6709
7512
  "type": "string",
6710
- "fieldDescription": "\n\nThe type field must be set to 'button'\n\n"
7513
+ "fieldDescription": "\n\nThe type field must be set to 'togglebutton'\n\n"
6711
7514
  },
6712
7515
  "key": {
6713
7516
  "pattern": "^[a-zA-Z0-9-]+$",
@@ -6717,90 +7520,61 @@
6717
7520
  }
6718
7521
  },
6719
7522
  "required": [
7523
+ "macroParameterValue",
6720
7524
  "label",
6721
7525
  "type",
6722
7526
  "key"
6723
7527
  ],
6724
7528
  "additionalProperties": true,
6725
- "shortClassName": "buttonControlBean",
7529
+ "shortClassName": "macroToggleButtonControlBean",
6726
7530
  "type": "object",
6727
- "title": "ButtonControl",
6728
- "description": "\n\nDefines a button which may appear in control extension points such as the property panel\n\n <p><b>Example</b></p>\n\n\n\n\n\n {\n \"type\": \"button\",\n \"label\": {\n \"value\": \"My Custom Control 0\"\n },\n \"key\": \"my-custom-control-0\"\n }\n\n\n"
7531
+ "title": "ToggleButtonControl",
7532
+ "description": "\n\nDefines a toggle button which appears inside a ToggleGroup\n\n <p><b>Example</b></p>\n\n\n\n\n\n {\n \"type\": \"togglebutton\",\n \"macroParameterValue\": \"macroParameterValue 0\",\n \"label\": {\n \"value\": \"My Custom Control 0\"\n },\n \"key\": \"my-custom-toggle-button-0\"\n }\n\n\n"
6729
7533
  },
6730
7534
  "type": "array",
6731
- "fieldDescription": "\n\nControls which will appear in the control group\n\n"
7535
+ "fieldDescription": "\n\nToggle buttons which will appear in the toggle group\n\n"
6732
7536
  },
6733
- "type": {
6734
- "enum": [
6735
- "group",
6736
- "GROUP"
6737
- ],
6738
- "type": "string",
6739
- "fieldDescription": "\n\nThe type field must be set to 'group'\n\n"
6740
- }
6741
- },
6742
- "required": [
6743
- "controls",
6744
- "type"
6745
- ],
6746
- "shortClassName": "controlGroupBean",
6747
- "type": "object",
6748
- "title": "ControlGroup",
6749
- "description": "\n\nDefines a ControlGroup which may appear in control extension points such as the property panel\n\n <p><b>Example</b></p>\n\n\n\n\n\n [\n {\n \"type\": \"group\",\n \"controls\": [\n {\n \"type\": \"button\",\n \"label\": {\n \"value\": \"My Custom Control 0\"\n },\n \"key\": \"my-custom-control-0\"\n },\n {\n \"type\": \"button\",\n \"label\": {\n \"value\": \"My Custom Control 1\"\n },\n \"key\": \"my-custom-control-1\"\n }\n ]\n }\n ]\n\n\n"
6750
- },
6751
- {
6752
- "properties": {
6753
7537
  "macroParameter": {
7538
+ "pattern": "[-_a-z0-9\\.]+",
6754
7539
  "maxLength": 100,
6755
7540
  "type": "string",
6756
- "fieldDescription": "\n\nThe Macro Parameter identifier used to store the text\n\n"
7541
+ "fieldDescription": "\n\nThe macro parameter identifier used to store the toggle state.\n It must only contain lowercase alphanumeric characters, dashes, underscores, dots and must not contain any spaces.\n\n"
6757
7542
  },
6758
7543
  "type": {
6759
7544
  "enum": [
6760
- "text",
6761
- "TEXT"
7545
+ "togglegroup",
7546
+ "TOGGLEGROUP"
6762
7547
  ],
6763
7548
  "type": "string",
6764
- "fieldDescription": "\n\nThe type field must be set to 'text'\n\n"
6765
- },
6766
- "key": {
6767
- "pattern": "^[a-zA-Z0-9-]+$",
6768
- "maxLength": 100,
6769
- "type": "string",
6770
- "fieldDescription": "\n\nA key to identify this module.\n\n This key must be unique relative to the add on, with the exception of Confluence macros: Their keys need to be\n globally unique.\n\n Keys must only contain alphanumeric characters and dashes.\n\n The key is used to generate the url to your add-on's module. The url is generated as a combination of your add-on\n key and module key. For example, an add-on which looks like:\n\n {\n \"key\": \"my-addon\",\n \"modules\": {\n \"configurePage\": {\n \"key\": \"configure-me\",\n }\n }\n }\n\n Will have a configuration page module with a URL of `/plugins/servlet/ac/my-addon/configure-me`.\n\n"
7549
+ "fieldDescription": "\n\nThe type field must be set to 'togglegroup'\n\n"
6771
7550
  }
6772
7551
  },
6773
7552
  "required": [
7553
+ "controls",
6774
7554
  "macroParameter",
6775
- "type",
6776
- "key"
7555
+ "type"
6777
7556
  ],
6778
- "shortClassName": "textControlBean",
7557
+ "shortClassName": "macroToggleGroupBean",
6779
7558
  "type": "object",
6780
- "title": "TextControl",
6781
- "description": "\n\nDefines a text field which may appear in control extension points such as the property panel\n\n <p><b>Example</b></p>\n\n\n\n\n\n {\n \"type\": \"button\",\n \"label\": {\n \"value\": \"My Custom Control 0\"\n },\n \"key\": \"my-custom-control-0\"\n }\n\n\n"
7559
+ "title": "ToggleGroup",
7560
+ "description": "\n\nDefines a ToggleGroup which may appear in control extension points such as the property panel\n\n <p><b>Example</b></p>\n\n\n\n\n\n [\n {\n \"type\": \"togglegroup\",\n \"macroParameter\": \"toggleGroupMacroParameter\",\n \"controls\": [\n {\n \"type\": \"togglebutton\",\n \"macroParameterValue\": \"macroParameterValue 0\",\n \"label\": {\n \"value\": \"My Custom Control 0\"\n },\n \"key\": \"my-custom-toggle-button-0\"\n },\n {\n \"type\": \"togglebutton\",\n \"macroParameterValue\": \"macroParameterValue 1\",\n \"label\": {\n \"value\": \"My Custom Control 1\"\n },\n \"key\": \"my-custom-toggle-button-1\"\n }\n ]\n }\n ]\n\n\n"
6782
7561
  },
6783
7562
  {
6784
7563
  "properties": {
6785
7564
  "controls": {
6786
7565
  "items": {
6787
7566
  "properties": {
6788
- "macroParameterValue": {
6789
- "maxLength": 10000,
6790
- "type": "string",
6791
- "fieldDescription": "\n\nThe value that will be assigned to a macro parameter when this toggle is clicked\n\n"
6792
- },
6793
7567
  "label": {
6794
7568
  "$ref": "#/definitions/i18nProperty",
6795
7569
  "fieldDescription": "\n\nText which will appear inside the button\n\n"
6796
7570
  },
6797
7571
  "type": {
6798
7572
  "enum": [
6799
- "togglebutton",
6800
- "TOGGLEBUTTON"
7573
+ "button",
7574
+ "BUTTON"
6801
7575
  ],
6802
7576
  "type": "string",
6803
- "fieldDescription": "\n\nThe type field must be set to 'togglebutton'\n\n"
7577
+ "fieldDescription": "\n\nThe type field must be set to 'button'\n\n"
6804
7578
  },
6805
7579
  "key": {
6806
7580
  "pattern": "^[a-zA-Z0-9-]+$",
@@ -6810,44 +7584,36 @@
6810
7584
  }
6811
7585
  },
6812
7586
  "required": [
6813
- "macroParameterValue",
6814
7587
  "label",
6815
7588
  "type",
6816
7589
  "key"
6817
7590
  ],
6818
7591
  "additionalProperties": true,
6819
- "shortClassName": "macroToggleButtonControlBean",
7592
+ "shortClassName": "buttonControlBean",
6820
7593
  "type": "object",
6821
- "title": "ToggleButtonControl",
6822
- "description": "\n\nDefines a toggle button which appears inside a ToggleGroup\n\n <p><b>Example</b></p>\n\n\n\n\n\n {\n \"type\": \"togglebutton\",\n \"macroParameterValue\": \"macroParameterValue 0\",\n \"label\": {\n \"value\": \"My Custom Control 0\"\n },\n \"key\": \"my-custom-toggle-button-0\"\n }\n\n\n"
7594
+ "title": "ButtonControl",
7595
+ "description": "\n\nDefines a button which may appear in control extension points such as the property panel\n\n <p><b>Example</b></p>\n\n\n\n\n\n {\n \"type\": \"button\",\n \"label\": {\n \"value\": \"My Custom Control 0\"\n },\n \"key\": \"my-custom-control-0\"\n }\n\n\n"
6823
7596
  },
6824
7597
  "type": "array",
6825
- "fieldDescription": "\n\nToggle buttons which will appear in the toggle group\n\n"
6826
- },
6827
- "macroParameter": {
6828
- "pattern": "[-_a-z0-9\\.]+",
6829
- "maxLength": 100,
6830
- "type": "string",
6831
- "fieldDescription": "\n\nThe macro parameter identifier used to store the toggle state.\n It must only contain lowercase alphanumeric characters, dashes, underscores, dots and must not contain any spaces.\n\n"
7598
+ "fieldDescription": "\n\nControls which will appear in the control group\n\n"
6832
7599
  },
6833
7600
  "type": {
6834
7601
  "enum": [
6835
- "togglegroup",
6836
- "TOGGLEGROUP"
7602
+ "group",
7603
+ "GROUP"
6837
7604
  ],
6838
7605
  "type": "string",
6839
- "fieldDescription": "\n\nThe type field must be set to 'togglegroup'\n\n"
7606
+ "fieldDescription": "\n\nThe type field must be set to 'group'\n\n"
6840
7607
  }
6841
7608
  },
6842
7609
  "required": [
6843
7610
  "controls",
6844
- "macroParameter",
6845
7611
  "type"
6846
7612
  ],
6847
- "shortClassName": "macroToggleGroupBean",
7613
+ "shortClassName": "controlGroupBean",
6848
7614
  "type": "object",
6849
- "title": "ToggleGroup",
6850
- "description": "\n\nDefines a ToggleGroup which may appear in control extension points such as the property panel\n\n <p><b>Example</b></p>\n\n\n\n\n\n [\n {\n \"type\": \"togglegroup\",\n \"macroParameter\": \"toggleGroupMacroParameter\",\n \"controls\": [\n {\n \"type\": \"togglebutton\",\n \"macroParameterValue\": \"macroParameterValue 0\",\n \"label\": {\n \"value\": \"My Custom Control 0\"\n },\n \"key\": \"my-custom-toggle-button-0\"\n },\n {\n \"type\": \"togglebutton\",\n \"macroParameterValue\": \"macroParameterValue 1\",\n \"label\": {\n \"value\": \"My Custom Control 1\"\n },\n \"key\": \"my-custom-toggle-button-1\"\n }\n ]\n }\n ]\n\n\n"
7615
+ "title": "ControlGroup",
7616
+ "description": "\n\nDefines a ControlGroup which may appear in control extension points such as the property panel\n\n <p><b>Example</b></p>\n\n\n\n\n\n [\n {\n \"type\": \"group\",\n \"controls\": [\n {\n \"type\": \"button\",\n \"label\": {\n \"value\": \"My Custom Control 0\"\n },\n \"key\": \"my-custom-control-0\"\n },\n {\n \"type\": \"button\",\n \"label\": {\n \"value\": \"My Custom Control 1\"\n },\n \"key\": \"my-custom-control-1\"\n }\n ]\n }\n ]\n\n\n"
6851
7617
  }
6852
7618
  ]
6853
7619
  },
@@ -7116,112 +7882,53 @@
7116
7882
  "$ref": "#/definitions/icon",
7117
7883
  "fieldDescription": "\n\nA link to the icon resource (80x80 pixels) that will be shown in the macro selection dialog.\n The URL can be absolute or relative to the add-on base URL.\n\n"
7118
7884
  },
7119
- "description": {
7120
- "$ref": "#/definitions/i18nProperty",
7121
- "fieldDescription": "\n\nA description of the macro's functionality.\n\n"
7122
- },
7123
- "outputType": {
7124
- "enum": [
7125
- "block",
7126
- "BLOCK",
7127
- "inline",
7128
- "INLINE"
7129
- ],
7130
- "type": "string",
7131
- "fieldDescription": "\n\nHow this macro should be placed along side other page content.\n\n",
7132
- "defaultValue": "block"
7133
- },
7134
- "url": {
7135
- "format": "uri",
7136
- "type": "string",
7137
- "fieldDescription": "\n\nThe link to the add-on resource that provides the macro content.\n This URL has to be relative to the add-on base URL.\n\n Additional context parameters can be passed as variables in the URL:\n <pre><code>\n {\n \"url\": \"/macro-renderer?body={macro.body}&amp;space_id={space.id}&amp;page_id={page.id}\"\n }\n </code></pre>\n\n Since macro bodies can be of arbitrary size and may contain sensitive data, care must be taken\n as to how its passed to your connect add-on. You have three options to gain access to the body:\n\n - If you can predict the size of your body and it is consistently less than 128 characters, you\n can include it in the GET request using the `{macro.body}` parameter.\n - If you know your macro contains a body that will often exceed the 128 character threshold\n (or is known to contain sensitive data), then you can include the `{macro.id}` parameter and\n use the Confluence REST api to call back to collect the body.\n - If you want, you can include, `{macro.body}`, `{macro.id}`, and `{macro.truncated}`. This way\n your plugin can call back to confluence only if `{macro.truncated}` is '`true`'. This will allow\n you to skip the callback if it's not needed. This would be useful for macros that don't\n contain sensitive data of an unpredictable size.\n\n\n__Note:__ If you include the `{macro.body}` in your URL you are potentially leaking sensitive data\n to any intermediate host on the internet. This may result in the body being cached or indexed\n by a third party. If you are concerned about the security of your macro, you should always use\n the `{macro.id}` and use the Confluence REST API to collect the body.\n\n Here's an example:\n\n Declare the variables that are later required to fetch the macro content in the URL:\n <pre><code>\n {\n \"url\": \"/render-macro?pageId={page.id}&amp;pageVersion={page.version}&amp;macroId={macro.id}\"\n }\n </code></pre>\n\n Then use the Confluence REST API to collect the body, for example directly from the iframe:\n <pre><code>\n AP.require(\"request\", function(request) {\n var pageId = getUrlParameter(\"pageId\");\n var pageVersion = getUrlParameter(\"pageVersion\");\n var macroId = getUrlParameter(\"macroId\");\n request({\n url: \"/rest/api/content/\" + pageId +\n \"/history/\" + pageVersion +\n \"/macro/id/\" + macroId,\n success: function(response) {\n var macro = JSON.parse(response);\n process(macro.body);\n }\n });\n });\n </code></pre>\n\n __Preview Mode:__ If you use the `{macro.id}` in your URL, the REST api will not return the macro body during\n a preview request, because the page has not been saved yet. You can use the `{output.type}` parameter to detect\n whether the macro is rendered in preview mode and adapt the response accordingly.\n\n __Note:__ `macro.body` will not be truncated when `renderingMethod` field was set to `POST` in static content macro.\n Refer to the [`Static Content Macros`](../static-content-macro/) for information on\n how to set this field.\n\n Currently supported variables for macros are:\n\n - `macro.hash`: The hash of the macro body (deprecated, use the macro.id)\n - `macro.id`: The id of the macro\n - `macro.body`: The macro body, truncated to 128 characters\n - `macro.truncated`: True if the macro body was truncated, false of not\n - `page.id`: The page ID, e.g. `1376295`\n - `page.title`: The page title, e.g. `My Page`\n - `page.type`: The page type, e.g. `page`\n - `page.version`: The page version, e.g. `6`\n - `space.id`: The space ID, e.g. `65537`\n - `space.key`: The space key, e.g. `AC`\n - `user.id`: The user ID, e.g. `admin` (deprecated in GDPR mode)\n - `user.key`: The user key, e.g. `ff80808143087d180143087d3a910004` (deprecated in GDPR mode)\n - `output.type`: The output type, e.g. `display` or `preview`\n\nContext parameters for macros are also required in the URL. Please see the\n [Macro Input Parameter](../macro-input-parameter/) documentation for details.\n\n"
7138
- },
7139
- "propertyPanel": {
7140
- "properties": {
7141
- "controls": {
7142
- "items": {
7143
- "type": "object",
7144
- "anyOf": [
7145
- {
7146
- "properties": {
7147
- "macroParameter": {
7148
- "maxLength": 100,
7149
- "type": "string",
7150
- "fieldDescription": "\n\nThe Macro Parameter identifier used to store the text\n\n"
7151
- },
7152
- "type": {
7153
- "enum": [
7154
- "text",
7155
- "TEXT"
7156
- ],
7157
- "type": "string",
7158
- "fieldDescription": "\n\nThe type field must be set to 'text'\n\n"
7159
- },
7160
- "key": {
7161
- "pattern": "^[a-zA-Z0-9-]+$",
7162
- "maxLength": 100,
7163
- "type": "string",
7164
- "fieldDescription": "\n\nA key to identify this module.\n\n This key must be unique relative to the add on, with the exception of Confluence macros: Their keys need to be\n globally unique.\n\n Keys must only contain alphanumeric characters and dashes.\n\n The key is used to generate the url to your add-on's module. The url is generated as a combination of your add-on\n key and module key. For example, an add-on which looks like:\n\n {\n \"key\": \"my-addon\",\n \"modules\": {\n \"configurePage\": {\n \"key\": \"configure-me\",\n }\n }\n }\n\n Will have a configuration page module with a URL of `/plugins/servlet/ac/my-addon/configure-me`.\n\n"
7165
- }
7166
- },
7167
- "required": [
7168
- "macroParameter",
7169
- "type",
7170
- "key"
7171
- ],
7172
- "shortClassName": "textControlBean",
7173
- "type": "object",
7174
- "title": "TextControl",
7175
- "description": "\n\nDefines a text field which may appear in control extension points such as the property panel\n\n <p><b>Example</b></p>\n\n\n\n\n\n {\n \"type\": \"button\",\n \"label\": {\n \"value\": \"My Custom Control 0\"\n },\n \"key\": \"my-custom-control-0\"\n }\n\n\n"
7176
- },
7177
- {
7178
- "properties": {
7179
- "label": {
7180
- "$ref": "#/definitions/i18nProperty",
7181
- "fieldDescription": "\n\nText which will appear inside the button\n\n"
7182
- },
7183
- "type": {
7184
- "enum": [
7185
- "button",
7186
- "BUTTON"
7187
- ],
7188
- "type": "string",
7189
- "fieldDescription": "\n\nThe type field must be set to 'button'\n\n"
7190
- },
7191
- "key": {
7192
- "pattern": "^[a-zA-Z0-9-]+$",
7193
- "maxLength": 100,
7194
- "type": "string",
7195
- "fieldDescription": "\n\nA key to identify the control. Keys must only contain alphanumeric characters and dashes, and must be unique\n\n"
7196
- }
7197
- },
7198
- "required": [
7199
- "label",
7200
- "type",
7201
- "key"
7202
- ],
7203
- "additionalProperties": true,
7204
- "shortClassName": "buttonControlBean",
7205
- "type": "object",
7206
- "title": "ButtonControl",
7207
- "description": "\n\nDefines a button which may appear in control extension points such as the property panel\n\n <p><b>Example</b></p>\n\n\n\n\n\n {\n \"type\": \"button\",\n \"label\": {\n \"value\": \"My Custom Control 0\"\n },\n \"key\": \"my-custom-control-0\"\n }\n\n\n"
7208
- },
7885
+ "description": {
7886
+ "$ref": "#/definitions/i18nProperty",
7887
+ "fieldDescription": "\n\nA description of the macro's functionality.\n\n"
7888
+ },
7889
+ "outputType": {
7890
+ "enum": [
7891
+ "block",
7892
+ "BLOCK",
7893
+ "inline",
7894
+ "INLINE"
7895
+ ],
7896
+ "type": "string",
7897
+ "fieldDescription": "\n\nHow this macro should be placed along side other page content.\n\n",
7898
+ "defaultValue": "block"
7899
+ },
7900
+ "url": {
7901
+ "format": "uri",
7902
+ "type": "string",
7903
+ "fieldDescription": "\n\nThe link to the add-on resource that provides the macro content.\n This URL has to be relative to the add-on base URL.\n\n Additional context parameters can be passed as variables in the URL:\n <pre><code>\n {\n \"url\": \"/macro-renderer?body={macro.body}&amp;space_id={space.id}&amp;page_id={page.id}\"\n }\n </code></pre>\n\n Since macro bodies can be of arbitrary size and may contain sensitive data, care must be taken\n as to how its passed to your connect add-on. You have three options to gain access to the body:\n\n - If you can predict the size of your body and it is consistently less than 128 characters, you\n can include it in the GET request using the `{macro.body}` parameter.\n - If you know your macro contains a body that will often exceed the 128 character threshold\n (or is known to contain sensitive data), then you can include the `{macro.id}` parameter and\n use the Confluence REST api to call back to collect the body.\n - If you want, you can include, `{macro.body}`, `{macro.id}`, and `{macro.truncated}`. This way\n your plugin can call back to confluence only if `{macro.truncated}` is '`true`'. This will allow\n you to skip the callback if it's not needed. This would be useful for macros that don't\n contain sensitive data of an unpredictable size.\n\n\n__Note:__ If you include the `{macro.body}` in your URL you are potentially leaking sensitive data\n to any intermediate host on the internet. This may result in the body being cached or indexed\n by a third party. If you are concerned about the security of your macro, you should always use\n the `{macro.id}` and use the Confluence REST API to collect the body.\n\n Here's an example:\n\n Declare the variables that are later required to fetch the macro content in the URL:\n <pre><code>\n {\n \"url\": \"/render-macro?pageId={page.id}&amp;pageVersion={page.version}&amp;macroId={macro.id}\"\n }\n </code></pre>\n\n Then use the Confluence REST API to collect the body, for example directly from the iframe:\n <pre><code>\n AP.require(\"request\", function(request) {\n var pageId = getUrlParameter(\"pageId\");\n var pageVersion = getUrlParameter(\"pageVersion\");\n var macroId = getUrlParameter(\"macroId\");\n request({\n url: \"/rest/api/content/\" + pageId +\n \"/history/\" + pageVersion +\n \"/macro/id/\" + macroId,\n success: function(response) {\n var macro = JSON.parse(response);\n process(macro.body);\n }\n });\n });\n </code></pre>\n\n __Preview Mode:__ If you use the `{macro.id}` in your URL, the REST api will not return the macro body during\n a preview request, because the page has not been saved yet. You can use the `{output.type}` parameter to detect\n whether the macro is rendered in preview mode and adapt the response accordingly.\n\n __Note:__ `macro.body` will not be truncated when `renderingMethod` field was set to `POST` in static content macro.\n Refer to the [`Static Content Macros`](../static-content-macro/) for information on\n how to set this field.\n\n Currently supported variables for macros are:\n\n - `macro.hash`: The hash of the macro body (deprecated, use the macro.id)\n - `macro.id`: The id of the macro\n - `macro.body`: The macro body, truncated to 128 characters\n - `macro.truncated`: True if the macro body was truncated, false of not\n - `page.id`: The page ID, e.g. `1376295`\n - `page.title`: The page title, e.g. `My Page`\n - `page.type`: The page type, e.g. `page`\n - `page.version`: The page version, e.g. `6`\n - `space.id`: The space ID, e.g. `65537`\n - `space.key`: The space key, e.g. `AC`\n - `user.id`: The user ID, e.g. `admin` (deprecated in GDPR mode)\n - `user.key`: The user key, e.g. `ff80808143087d180143087d3a910004` (deprecated in GDPR mode)\n - `output.type`: The output type, e.g. `display` or `preview`\n\nContext parameters for macros are also required in the URL. Please see the\n [Macro Input Parameter](../macro-input-parameter/) documentation for details.\n\n"
7904
+ },
7905
+ "propertyPanel": {
7906
+ "properties": {
7907
+ "controls": {
7908
+ "items": {
7909
+ "type": "object",
7910
+ "anyOf": [
7209
7911
  {
7210
7912
  "properties": {
7211
7913
  "controls": {
7212
7914
  "items": {
7213
7915
  "properties": {
7916
+ "macroParameterValue": {
7917
+ "maxLength": 10000,
7918
+ "type": "string",
7919
+ "fieldDescription": "\n\nThe value that will be assigned to a macro parameter when this toggle is clicked\n\n"
7920
+ },
7214
7921
  "label": {
7215
7922
  "$ref": "#/definitions/i18nProperty",
7216
7923
  "fieldDescription": "\n\nText which will appear inside the button\n\n"
7217
7924
  },
7218
7925
  "type": {
7219
7926
  "enum": [
7220
- "button",
7221
- "BUTTON"
7927
+ "togglebutton",
7928
+ "TOGGLEBUTTON"
7222
7929
  ],
7223
7930
  "type": "string",
7224
- "fieldDescription": "\n\nThe type field must be set to 'button'\n\n"
7931
+ "fieldDescription": "\n\nThe type field must be set to 'togglebutton'\n\n"
7225
7932
  },
7226
7933
  "key": {
7227
7934
  "pattern": "^[a-zA-Z0-9-]+$",
@@ -7231,58 +7938,61 @@
7231
7938
  }
7232
7939
  },
7233
7940
  "required": [
7941
+ "macroParameterValue",
7234
7942
  "label",
7235
7943
  "type",
7236
7944
  "key"
7237
7945
  ],
7238
7946
  "additionalProperties": true,
7239
- "shortClassName": "buttonControlBean",
7947
+ "shortClassName": "macroToggleButtonControlBean",
7240
7948
  "type": "object",
7241
- "title": "ButtonControl",
7242
- "description": "\n\nDefines a button which may appear in control extension points such as the property panel\n\n <p><b>Example</b></p>\n\n\n\n\n\n {\n \"type\": \"button\",\n \"label\": {\n \"value\": \"My Custom Control 0\"\n },\n \"key\": \"my-custom-control-0\"\n }\n\n\n"
7949
+ "title": "ToggleButtonControl",
7950
+ "description": "\n\nDefines a toggle button which appears inside a ToggleGroup\n\n <p><b>Example</b></p>\n\n\n\n\n\n {\n \"type\": \"togglebutton\",\n \"macroParameterValue\": \"macroParameterValue 0\",\n \"label\": {\n \"value\": \"My Custom Control 0\"\n },\n \"key\": \"my-custom-toggle-button-0\"\n }\n\n\n"
7243
7951
  },
7244
7952
  "type": "array",
7245
- "fieldDescription": "\n\nControls which will appear in the control group\n\n"
7953
+ "fieldDescription": "\n\nToggle buttons which will appear in the toggle group\n\n"
7954
+ },
7955
+ "macroParameter": {
7956
+ "pattern": "[-_a-z0-9\\.]+",
7957
+ "maxLength": 100,
7958
+ "type": "string",
7959
+ "fieldDescription": "\n\nThe macro parameter identifier used to store the toggle state.\n It must only contain lowercase alphanumeric characters, dashes, underscores, dots and must not contain any spaces.\n\n"
7246
7960
  },
7247
7961
  "type": {
7248
7962
  "enum": [
7249
- "group",
7250
- "GROUP"
7963
+ "togglegroup",
7964
+ "TOGGLEGROUP"
7251
7965
  ],
7252
7966
  "type": "string",
7253
- "fieldDescription": "\n\nThe type field must be set to 'group'\n\n"
7967
+ "fieldDescription": "\n\nThe type field must be set to 'togglegroup'\n\n"
7254
7968
  }
7255
7969
  },
7256
7970
  "required": [
7257
7971
  "controls",
7972
+ "macroParameter",
7258
7973
  "type"
7259
7974
  ],
7260
- "shortClassName": "controlGroupBean",
7975
+ "shortClassName": "macroToggleGroupBean",
7261
7976
  "type": "object",
7262
- "title": "ControlGroup",
7263
- "description": "\n\nDefines a ControlGroup which may appear in control extension points such as the property panel\n\n <p><b>Example</b></p>\n\n\n\n\n\n [\n {\n \"type\": \"group\",\n \"controls\": [\n {\n \"type\": \"button\",\n \"label\": {\n \"value\": \"My Custom Control 0\"\n },\n \"key\": \"my-custom-control-0\"\n },\n {\n \"type\": \"button\",\n \"label\": {\n \"value\": \"My Custom Control 1\"\n },\n \"key\": \"my-custom-control-1\"\n }\n ]\n }\n ]\n\n\n"
7977
+ "title": "ToggleGroup",
7978
+ "description": "\n\nDefines a ToggleGroup which may appear in control extension points such as the property panel\n\n <p><b>Example</b></p>\n\n\n\n\n\n [\n {\n \"type\": \"togglegroup\",\n \"macroParameter\": \"toggleGroupMacroParameter\",\n \"controls\": [\n {\n \"type\": \"togglebutton\",\n \"macroParameterValue\": \"macroParameterValue 0\",\n \"label\": {\n \"value\": \"My Custom Control 0\"\n },\n \"key\": \"my-custom-toggle-button-0\"\n },\n {\n \"type\": \"togglebutton\",\n \"macroParameterValue\": \"macroParameterValue 1\",\n \"label\": {\n \"value\": \"My Custom Control 1\"\n },\n \"key\": \"my-custom-toggle-button-1\"\n }\n ]\n }\n ]\n\n\n"
7264
7979
  },
7265
7980
  {
7266
7981
  "properties": {
7267
7982
  "controls": {
7268
7983
  "items": {
7269
7984
  "properties": {
7270
- "macroParameterValue": {
7271
- "maxLength": 10000,
7272
- "type": "string",
7273
- "fieldDescription": "\n\nThe value that will be assigned to a macro parameter when this toggle is clicked\n\n"
7274
- },
7275
7985
  "label": {
7276
7986
  "$ref": "#/definitions/i18nProperty",
7277
7987
  "fieldDescription": "\n\nText which will appear inside the button\n\n"
7278
7988
  },
7279
7989
  "type": {
7280
7990
  "enum": [
7281
- "togglebutton",
7282
- "TOGGLEBUTTON"
7991
+ "button",
7992
+ "BUTTON"
7283
7993
  ],
7284
7994
  "type": "string",
7285
- "fieldDescription": "\n\nThe type field must be set to 'togglebutton'\n\n"
7995
+ "fieldDescription": "\n\nThe type field must be set to 'button'\n\n"
7286
7996
  },
7287
7997
  "key": {
7288
7998
  "pattern": "^[a-zA-Z0-9-]+$",
@@ -7292,44 +8002,100 @@
7292
8002
  }
7293
8003
  },
7294
8004
  "required": [
7295
- "macroParameterValue",
7296
8005
  "label",
7297
8006
  "type",
7298
8007
  "key"
7299
8008
  ],
7300
8009
  "additionalProperties": true,
7301
- "shortClassName": "macroToggleButtonControlBean",
8010
+ "shortClassName": "buttonControlBean",
7302
8011
  "type": "object",
7303
- "title": "ToggleButtonControl",
7304
- "description": "\n\nDefines a toggle button which appears inside a ToggleGroup\n\n <p><b>Example</b></p>\n\n\n\n\n\n {\n \"type\": \"togglebutton\",\n \"macroParameterValue\": \"macroParameterValue 0\",\n \"label\": {\n \"value\": \"My Custom Control 0\"\n },\n \"key\": \"my-custom-toggle-button-0\"\n }\n\n\n"
8012
+ "title": "ButtonControl",
8013
+ "description": "\n\nDefines a button which may appear in control extension points such as the property panel\n\n <p><b>Example</b></p>\n\n\n\n\n\n {\n \"type\": \"button\",\n \"label\": {\n \"value\": \"My Custom Control 0\"\n },\n \"key\": \"my-custom-control-0\"\n }\n\n\n"
7305
8014
  },
7306
8015
  "type": "array",
7307
- "fieldDescription": "\n\nToggle buttons which will appear in the toggle group\n\n"
8016
+ "fieldDescription": "\n\nControls which will appear in the control group\n\n"
7308
8017
  },
8018
+ "type": {
8019
+ "enum": [
8020
+ "group",
8021
+ "GROUP"
8022
+ ],
8023
+ "type": "string",
8024
+ "fieldDescription": "\n\nThe type field must be set to 'group'\n\n"
8025
+ }
8026
+ },
8027
+ "required": [
8028
+ "controls",
8029
+ "type"
8030
+ ],
8031
+ "shortClassName": "controlGroupBean",
8032
+ "type": "object",
8033
+ "title": "ControlGroup",
8034
+ "description": "\n\nDefines a ControlGroup which may appear in control extension points such as the property panel\n\n <p><b>Example</b></p>\n\n\n\n\n\n [\n {\n \"type\": \"group\",\n \"controls\": [\n {\n \"type\": \"button\",\n \"label\": {\n \"value\": \"My Custom Control 0\"\n },\n \"key\": \"my-custom-control-0\"\n },\n {\n \"type\": \"button\",\n \"label\": {\n \"value\": \"My Custom Control 1\"\n },\n \"key\": \"my-custom-control-1\"\n }\n ]\n }\n ]\n\n\n"
8035
+ },
8036
+ {
8037
+ "properties": {
7309
8038
  "macroParameter": {
7310
- "pattern": "[-_a-z0-9\\.]+",
7311
8039
  "maxLength": 100,
7312
8040
  "type": "string",
7313
- "fieldDescription": "\n\nThe macro parameter identifier used to store the toggle state.\n It must only contain lowercase alphanumeric characters, dashes, underscores, dots and must not contain any spaces.\n\n"
8041
+ "fieldDescription": "\n\nThe Macro Parameter identifier used to store the text\n\n"
7314
8042
  },
7315
8043
  "type": {
7316
8044
  "enum": [
7317
- "togglegroup",
7318
- "TOGGLEGROUP"
8045
+ "text",
8046
+ "TEXT"
7319
8047
  ],
7320
8048
  "type": "string",
7321
- "fieldDescription": "\n\nThe type field must be set to 'togglegroup'\n\n"
8049
+ "fieldDescription": "\n\nThe type field must be set to 'text'\n\n"
8050
+ },
8051
+ "key": {
8052
+ "pattern": "^[a-zA-Z0-9-]+$",
8053
+ "maxLength": 100,
8054
+ "type": "string",
8055
+ "fieldDescription": "\n\nA key to identify this module.\n\n This key must be unique relative to the add on, with the exception of Confluence macros: Their keys need to be\n globally unique.\n\n Keys must only contain alphanumeric characters and dashes.\n\n The key is used to generate the url to your add-on's module. The url is generated as a combination of your add-on\n key and module key. For example, an add-on which looks like:\n\n {\n \"key\": \"my-addon\",\n \"modules\": {\n \"configurePage\": {\n \"key\": \"configure-me\",\n }\n }\n }\n\n Will have a configuration page module with a URL of `/plugins/servlet/ac/my-addon/configure-me`.\n\n"
7322
8056
  }
7323
8057
  },
7324
8058
  "required": [
7325
- "controls",
7326
8059
  "macroParameter",
7327
- "type"
8060
+ "type",
8061
+ "key"
7328
8062
  ],
7329
- "shortClassName": "macroToggleGroupBean",
8063
+ "shortClassName": "textControlBean",
7330
8064
  "type": "object",
7331
- "title": "ToggleGroup",
7332
- "description": "\n\nDefines a ToggleGroup which may appear in control extension points such as the property panel\n\n <p><b>Example</b></p>\n\n\n\n\n\n [\n {\n \"type\": \"togglegroup\",\n \"macroParameter\": \"toggleGroupMacroParameter\",\n \"controls\": [\n {\n \"type\": \"togglebutton\",\n \"macroParameterValue\": \"macroParameterValue 0\",\n \"label\": {\n \"value\": \"My Custom Control 0\"\n },\n \"key\": \"my-custom-toggle-button-0\"\n },\n {\n \"type\": \"togglebutton\",\n \"macroParameterValue\": \"macroParameterValue 1\",\n \"label\": {\n \"value\": \"My Custom Control 1\"\n },\n \"key\": \"my-custom-toggle-button-1\"\n }\n ]\n }\n ]\n\n\n"
8065
+ "title": "TextControl",
8066
+ "description": "\n\nDefines a text field which may appear in control extension points such as the property panel\n\n <p><b>Example</b></p>\n\n\n\n\n\n {\n \"type\": \"button\",\n \"label\": {\n \"value\": \"My Custom Control 0\"\n },\n \"key\": \"my-custom-control-0\"\n }\n\n\n"
8067
+ },
8068
+ {
8069
+ "properties": {
8070
+ "label": {
8071
+ "$ref": "#/definitions/i18nProperty",
8072
+ "fieldDescription": "\n\nText which will appear inside the button\n\n"
8073
+ },
8074
+ "type": {
8075
+ "enum": [
8076
+ "button",
8077
+ "BUTTON"
8078
+ ],
8079
+ "type": "string",
8080
+ "fieldDescription": "\n\nThe type field must be set to 'button'\n\n"
8081
+ },
8082
+ "key": {
8083
+ "pattern": "^[a-zA-Z0-9-]+$",
8084
+ "maxLength": 100,
8085
+ "type": "string",
8086
+ "fieldDescription": "\n\nA key to identify the control. Keys must only contain alphanumeric characters and dashes, and must be unique\n\n"
8087
+ }
8088
+ },
8089
+ "required": [
8090
+ "label",
8091
+ "type",
8092
+ "key"
8093
+ ],
8094
+ "additionalProperties": true,
8095
+ "shortClassName": "buttonControlBean",
8096
+ "type": "object",
8097
+ "title": "ButtonControl",
8098
+ "description": "\n\nDefines a button which may appear in control extension points such as the property panel\n\n <p><b>Example</b></p>\n\n\n\n\n\n {\n \"type\": \"button\",\n \"label\": {\n \"value\": \"My Custom Control 0\"\n },\n \"key\": \"my-custom-control-0\"\n }\n\n\n"
7333
8099
  }
7334
8100
  ]
7335
8101
  },
@@ -7565,6 +8331,51 @@
7565
8331
  "type": "object",
7566
8332
  "fieldDescription": "\n\n<p>An object containing options which vary based on the type of web item target you are implementing.</p>\n\n <p>Currently-allowed options are:</p>\n <ul>\n <li><a href=\"../inline-dialog-options/\">Inline Dialog Options</a> when type is \"inlinedialog\", and</li>\n <li><a href=\"../dialog-options/\">Dialog Options</a> when type is \"dialog\"</li>\n <li><a href=\"../dialog-module-options/\">Dialog Module Options</a> when type is \"dialogmodule\"</li>\n </ul>\n\n",
7567
8333
  "anyOf": [
8334
+ {
8335
+ "properties": {
8336
+ "size": {
8337
+ "enum": [
8338
+ "small",
8339
+ "SMALL",
8340
+ "medium",
8341
+ "MEDIUM",
8342
+ "large",
8343
+ "LARGE",
8344
+ "x-large",
8345
+ "X-LARGE",
8346
+ "fullscreen",
8347
+ "FULLSCREEN",
8348
+ "maximum",
8349
+ "MAXIMUM"
8350
+ ],
8351
+ "type": "string",
8352
+ "fieldDescription": "\n\nSets the size of the dialog.\n\n <p>\n This option is used instead of the 'height' and 'width' options.\n </p>\n\n"
8353
+ },
8354
+ "chrome": {
8355
+ "type": "boolean",
8356
+ "fieldDescription": "\n\nWhether the dialog should contain the AUI header and buttons.\n\n",
8357
+ "defaultValue": "true"
8358
+ },
8359
+ "width": {
8360
+ "maxLength": 10,
8361
+ "type": "string",
8362
+ "fieldDescription": "\n\nSets how wide the dialog is in pixels.\n\n"
8363
+ },
8364
+ "header": {
8365
+ "$ref": "#/definitions/i18nProperty",
8366
+ "fieldDescription": "\n\nThe header text for the dialog, if chrome is enabled.\n\n"
8367
+ },
8368
+ "height": {
8369
+ "maxLength": 10,
8370
+ "type": "string",
8371
+ "fieldDescription": "\n\nSets how high the dialog is in pixels\n\n"
8372
+ }
8373
+ },
8374
+ "shortClassName": "dialogOptions",
8375
+ "type": "object",
8376
+ "title": "Dialog Options",
8377
+ "description": "\n\nOptions for a modal dialog <a href=\"../web-item-target/\">web item target</a> or <a href=\"../dialog/\">common module</a>.\n\n <p>\n These options are a subset of those available via the <a href=\"../../jsapi/dialog/\">JavaScript API</a>.\n </p>\n\n <h2>Web Item Example</h2>\n\n\n\n\n\n {\n \"target\": {\n \"type\": \"dialog\",\n \"options\": {\n \"height\": \"100px\",\n \"width\": \"200px\"\n }\n }\n }\n\n\n\n\n <h2>Dialog Example</h2>\n\n\n\n\n\n {\n \"modules\": {\n \"dialogs\": [\n {\n \"url\": \"/my-dialog-content\",\n \"options\": {\n \"size\": \"fullscreen\",\n \"header\": {\n \"value\": \"Example Dialog\"\n }\n },\n \"key\": \"dialog-module-key\"\n }\n ]\n }\n }\n\n\n"
8378
+ },
7568
8379
  {
7569
8380
  "properties": {
7570
8381
  "key": {
@@ -7627,51 +8438,6 @@
7627
8438
  "type": "object",
7628
8439
  "title": "Inline Dialog Options",
7629
8440
  "description": "\n\nOptions for an inline dialog target\n\n <h3>Example</h3>\n\n\n\n\n\n {\n \"target\": {\n \"type\": \"inlinedialog\",\n \"options\": {\n \"onHover\": true,\n \"offsetX\": \"30px\",\n \"offsetY\": \"20px\"\n }\n }\n }\n\n\n"
7630
- },
7631
- {
7632
- "properties": {
7633
- "size": {
7634
- "enum": [
7635
- "small",
7636
- "SMALL",
7637
- "medium",
7638
- "MEDIUM",
7639
- "large",
7640
- "LARGE",
7641
- "x-large",
7642
- "X-LARGE",
7643
- "fullscreen",
7644
- "FULLSCREEN",
7645
- "maximum",
7646
- "MAXIMUM"
7647
- ],
7648
- "type": "string",
7649
- "fieldDescription": "\n\nSets the size of the dialog.\n\n <p>\n This option is used instead of the 'height' and 'width' options.\n </p>\n\n"
7650
- },
7651
- "chrome": {
7652
- "type": "boolean",
7653
- "fieldDescription": "\n\nWhether the dialog should contain the AUI header and buttons.\n\n",
7654
- "defaultValue": "true"
7655
- },
7656
- "width": {
7657
- "maxLength": 10,
7658
- "type": "string",
7659
- "fieldDescription": "\n\nSets how wide the dialog is in pixels.\n\n"
7660
- },
7661
- "header": {
7662
- "$ref": "#/definitions/i18nProperty",
7663
- "fieldDescription": "\n\nThe header text for the dialog, if chrome is enabled.\n\n"
7664
- },
7665
- "height": {
7666
- "maxLength": 10,
7667
- "type": "string",
7668
- "fieldDescription": "\n\nSets how high the dialog is in pixels\n\n"
7669
- }
7670
- },
7671
- "shortClassName": "dialogOptions",
7672
- "type": "object",
7673
- "title": "Dialog Options",
7674
- "description": "\n\nOptions for a modal dialog <a href=\"../web-item-target/\">web item target</a> or <a href=\"../dialog/\">common module</a>.\n\n <p>\n These options are a subset of those available via the <a href=\"../../jsapi/dialog/\">JavaScript API</a>.\n </p>\n\n <h2>Web Item Example</h2>\n\n\n\n\n\n {\n \"target\": {\n \"type\": \"dialog\",\n \"options\": {\n \"height\": \"100px\",\n \"width\": \"200px\"\n }\n }\n }\n\n\n\n\n <h2>Dialog Example</h2>\n\n\n\n\n\n {\n \"modules\": {\n \"dialogs\": [\n {\n \"url\": \"/my-dialog-content\",\n \"options\": {\n \"size\": \"fullscreen\",\n \"header\": {\n \"value\": \"Example Dialog\"\n }\n },\n \"key\": \"dialog-module-key\"\n }\n ]\n }\n }\n\n\n"
7675
8441
  }
7676
8442
  ]
7677
8443
  },
@@ -8934,10 +9700,10 @@
8934
9700
  "type": "object",
8935
9701
  "anyOf": [
8936
9702
  {
8937
- "$ref": "#"
9703
+ "$ref": "#/definitions/singleCondition"
8938
9704
  },
8939
9705
  {
8940
- "$ref": "#/definitions/singleCondition"
9706
+ "$ref": "#"
8941
9707
  }
8942
9708
  ]
8943
9709
  },