1{
2  "title": "FXASignupSnippet",
3  "description": "A snippet template for FxA sign up/sign in",
4  "version": "1.2.0",
5  "type": "object",
6  "definitions": {
7    "plainText": {
8      "description": "Plain text (no HTML allowed)",
9      "type": "string"
10    },
11    "richText": {
12      "description": "Text with HTML subset allowed: i, b, u, strong, em, br",
13      "type": "string"
14    },
15    "link_url": {
16      "description": "Target for links or buttons",
17      "type": "string",
18      "format": "uri"
19    }
20  },
21  "properties": {
22    "scene1_title": {
23      "allof": [
24        {"$ref": "#/definitions/plainText"},
25        {"description": "snippet title displayed before snippet text"}
26      ]
27    },
28    "scene1_text": {
29      "allOf": [
30        {"$ref": "#/definitions/richText"},
31        {"description": "Main body text of snippet. HTML subset allowed: i, b, u, strong, em, br"}
32      ]
33    },
34    "scene1_section_title_icon": {
35      "type": "string",
36      "description": "Section title icon for scene 1. 16x16px. SVG or PNG preferred. scene1_section_title_text must also be specified to display."
37    },
38    "scene1_section_title_icon_dark_theme": {
39      "type": "string",
40      "description": "Section title icon for scene 1, dark theme variant. 16x16px. SVG or PNG preferred. scene1_section_title_text must also be specified to display."
41    },
42    "scene1_section_title_text": {
43      "type": "string",
44      "description": "Section title text for scene 1. scene1_section_title_icon must also be specified to display."
45    },
46    "scene1_section_title_url": {
47      "allOf": [
48        {"$ref": "#/definitions/link_url"},
49        {"description": "A url, scene1_section_title_text links to this"}
50      ]
51    },
52    "scene2_title": {
53      "allOf": [
54        {"$ref": "#/definitions/plainText"},
55        {"description": "Title displayed before text in scene 2. Should be plain text."}
56      ]
57    },
58    "scene2_text": {
59      "allOf": [
60        {"$ref": "#/definitions/richText"},
61        {"description": "Main body text of snippet. HTML subset allowed: i, b, u, strong, em, br"}
62      ]
63    },
64    "scene1_icon": {
65      "type": "string",
66      "description": "Snippet icon. 64x64px. SVG or PNG preferred."
67    },
68    "scene1_icon_dark_theme": {
69      "type": "string",
70      "description": "Snippet icon. Dark theme variant. 64x64px. SVG or PNG preferred."
71    },
72    "scene1_title_icon": {
73      "type": "string",
74      "description": "Small icon that shows up before the title / text. 16x16px. SVG or PNG preferred. Grayscale."
75    },
76    "scene1_title_icon_dark_theme": {
77      "type": "string",
78      "description": "Small icon that shows up before the title / text. Dark theme variant. 16x16px. SVG or PNG preferred. Grayscale."
79    },
80    "scene2_email_placeholder_text": {
81      "type": "string",
82      "description": "Value to show while input is empty.",
83      "default": "Your email here"
84    },
85    "scene2_button_label": {
86      "type": "string",
87      "description": "Label for form submit button",
88      "default": "Sign me up"
89    },
90    "scene2_dismiss_button_text": {
91      "type": "string",
92      "description": "Label for the dismiss button when the sign-up form is expanded.",
93      "default": "Dismiss"
94    },
95    "hidden_inputs": {
96      "type": "object",
97      "description": "Each entry represents a hidden input, key is used as value for the name property.",
98      "properties": {
99        "action": {
100          "type": "string",
101          "enum": ["email"]
102        },
103        "context": {
104          "type": "string",
105          "enum": ["fx_desktop_v3"]
106        },
107        "entrypoint": {
108          "type": "string",
109          "enum": ["snippets"]
110        },
111        "utm_content": {
112          "type": "number",
113          "description": "Firefox version number"
114        },
115        "utm_source": {
116          "type": "string",
117          "enum": ["snippet"]
118        },
119        "utm_campaign": {
120          "type": "string",
121          "description": "(fxa) Value to pass through to GA as utm_campaign."
122        },
123        "utm_term": {
124          "type": "string",
125          "description": "(fxa) Value to pass through to GA as utm_term."
126        },
127        "additionalProperties": false
128      }
129    },
130    "scene1_button_label": {
131      "allOf": [
132        {"$ref": "#/definitions/plainText"},
133        {"description": "Text for a button next to main snippet text that links to button_url. Requires button_url."}
134      ],
135      "default": "Learn more"
136    },
137    "scene1_button_color": {
138      "type": "string",
139      "description": "The text color of the button. Valid CSS color."
140    },
141    "scene1_button_background_color": {
142      "type": "string",
143      "description": "The background color of the button. Valid CSS color."
144    },
145    "retry_button_label": {
146      "allOf": [
147        {"$ref": "#/definitions/plainText"},
148        {"description": "Text for the button in the event of a submission error/failure."}
149      ],
150      "default": "Try again"
151    },
152    "do_not_autoblock": {
153      "type": "boolean",
154      "description": "Used to prevent blocking the snippet after the CTA (link or button) has been clicked",
155      "default": false
156    },
157    "utm_campaign": {
158      "type": "string",
159      "description": "(fxa) Value to pass through to GA as utm_campaign."
160    },
161    "utm_term": {
162      "type": "string",
163      "description": "(fxa) Value to pass through to GA as utm_term."
164    },
165    "links": {
166      "additionalProperties": {
167        "url": {
168          "allOf": [
169            {"$ref": "#/definitions/link_url"},
170            {"description": "The url where the link points to."}
171          ]
172        },
173        "metric": {
174          "type": "string",
175          "description": "Custom event name sent with telemetry event."
176        }
177      }
178    }
179  },
180  "additionalProperties": false,
181  "required": ["scene1_text", "scene2_text", "scene1_button_label"],
182  "dependencies": {
183    "scene1_button_color": ["scene1_button_label"],
184    "scene1_button_background_color": ["scene1_button_label"]
185  }
186}
187
188