@financial-times/cp-content-pipeline-schema 2.5.3 → 2.6.0
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.
- package/CHANGELOG.md +20 -0
- package/README.md +187 -41
- package/lib/datasources/base.d.ts +1 -0
- package/lib/datasources/capi.js +1 -0
- package/lib/datasources/capi.js.map +1 -1
- package/lib/datasources/instrumented.d.ts +1 -0
- package/lib/datasources/instrumented.js +1 -9
- package/lib/datasources/instrumented.js.map +1 -1
- package/lib/datasources/origami-image.js +1 -0
- package/lib/datasources/origami-image.js.map +1 -1
- package/lib/datasources/twitter.js +1 -0
- package/lib/datasources/twitter.js.map +1 -1
- package/lib/datasources/url-management.d.ts +1 -0
- package/lib/datasources/url-management.js +2 -0
- package/lib/datasources/url-management.js.map +1 -1
- package/lib/fixtures/capiObject.js +1 -1
- package/lib/fixtures/capiObject.js.map +1 -1
- package/lib/generated/index.d.ts +572 -2
- package/lib/model/CapiResponse.d.ts +1 -0
- package/lib/model/CapiResponse.js +4 -2
- package/lib/model/CapiResponse.js.map +1 -1
- package/lib/model/CapiResponse.test.js +7 -0
- package/lib/model/CapiResponse.test.js.map +1 -1
- package/lib/resolvers/content-tree/Workarounds.d.ts +8 -1
- package/lib/resolvers/content-tree/nodePredicates.d.ts +1 -1
- package/lib/resolvers/content-tree/tagMappings.js +14 -5
- package/lib/resolvers/content-tree/tagMappings.js.map +1 -1
- package/lib/resolvers/content.d.ts +8 -0
- package/lib/resolvers/content.js +1 -0
- package/lib/resolvers/content.js.map +1 -1
- package/lib/resolvers/index.d.ts +8 -0
- package/package.json +1 -1
- package/queries/article.graphql +1 -0
- package/src/datasources/base.ts +1 -0
- package/src/datasources/capi.ts +1 -0
- package/src/datasources/instrumented.ts +1 -11
- package/src/datasources/origami-image.ts +3 -0
- package/src/datasources/twitter.ts +2 -0
- package/src/datasources/url-management.ts +2 -0
- package/src/fixtures/capiObject.ts +1 -1
- package/src/generated/index.ts +572 -2
- package/src/model/CapiResponse.test.ts +9 -0
- package/src/model/CapiResponse.ts +4 -3
- package/src/resolvers/content-tree/Workarounds.ts +10 -0
- package/src/resolvers/content-tree/tagMappings.ts +15 -5
- package/src/resolvers/content.ts +1 -0
- package/tsconfig.tsbuildinfo +1 -1
- package/typedefs/clip.graphql +28 -0
- package/typedefs/concept.graphql +21 -2
- package/typedefs/content.graphql +465 -36
- package/typedefs/core.graphql +6 -0
- package/typedefs/image.graphql +210 -15
- package/typedefs/picture.graphql +54 -1
- package/typedefs/references/clipSet.graphql +34 -1
- package/typedefs/references/flourish.graphql +8 -0
- package/typedefs/references/imageSet.graphql +6 -0
- package/typedefs/references/layoutImage.graphql +3 -0
- package/typedefs/references/rawImage.graphql +3 -0
- package/typedefs/references/recommended.graphql +3 -0
- package/typedefs/references/reference.graphql +1 -0
- package/typedefs/references/scrollyImage.graphql +3 -0
- package/typedefs/references/tweet.graphql +3 -0
- package/typedefs/references/video.graphql +5 -0
- package/typedefs/richText.graphql +7 -4
- package/typedefs/teaser.graphql +42 -1
- package/typedefs/topper.graphql +219 -7
package/typedefs/teaser.graphql
CHANGED
|
@@ -1,28 +1,69 @@
|
|
|
1
1
|
union MetaLink = Concept | ContentPackage
|
|
2
2
|
|
|
3
3
|
type Teaser {
|
|
4
|
+
"The unique identifier of the teaser, a uuid or a url."
|
|
5
|
+
id: String
|
|
6
|
+
|
|
7
|
+
"The url of the content that the teaser refers to."
|
|
4
8
|
url(relative: Boolean): String!
|
|
9
|
+
|
|
10
|
+
"The type of the teaser, eg. 'article' or 'video'."
|
|
5
11
|
type: String
|
|
12
|
+
|
|
13
|
+
"The title of the teaser."
|
|
6
14
|
title: String
|
|
7
|
-
|
|
15
|
+
|
|
16
|
+
"The image to be used as a thumbnail for the teaser."
|
|
8
17
|
image: Image
|
|
18
|
+
|
|
19
|
+
"The date the content of the teaser was published."
|
|
9
20
|
publishedDate: String
|
|
21
|
+
|
|
22
|
+
"The date the content of the teaser was first published."
|
|
10
23
|
firstPublishedDate: String
|
|
24
|
+
|
|
25
|
+
"An object containing the metadata details of the teaser, eg. id, url, prefLabel."
|
|
11
26
|
metaLink: MetaLink
|
|
27
|
+
|
|
28
|
+
"An object containing the metadata details of the teaser, eg. id, url, prefLabel."
|
|
12
29
|
metaAltLink: MetaLink
|
|
30
|
+
|
|
31
|
+
"The text to be displayed before the metadata of the teaser."
|
|
13
32
|
metaPrefixText: String
|
|
33
|
+
|
|
34
|
+
"The text to be displayed after the metadata of the teaser."
|
|
14
35
|
metaSuffixText: String
|
|
36
|
+
|
|
37
|
+
"An object containing a map of indicator items to boolean values, eg. accessLevel, isOpinion."
|
|
15
38
|
indicators: Indicators
|
|
39
|
+
|
|
40
|
+
"The theme to use for the teaser, eg. 'opinion' or 'news'."
|
|
16
41
|
theme: String
|
|
42
|
+
|
|
43
|
+
"The introductory text of the teaser."
|
|
17
44
|
standfirst: String
|
|
18
45
|
}
|
|
19
46
|
|
|
47
|
+
"Indicators are used to determine teaser styling."
|
|
20
48
|
type Indicators {
|
|
49
|
+
"The access level of the teaser, eg. 'free' or 'premium'."
|
|
21
50
|
accessLevel: AccessLevel
|
|
51
|
+
|
|
52
|
+
"Whether the teaser is an opinion piece."
|
|
22
53
|
isOpinion: Boolean
|
|
54
|
+
|
|
55
|
+
"Whether the teaser is a column, ie. has one author."
|
|
23
56
|
isColumn: Boolean
|
|
57
|
+
|
|
58
|
+
"Whether the teaser is a podcast."
|
|
24
59
|
isPodcast: Boolean
|
|
60
|
+
|
|
61
|
+
"Whether the teaser is an editor's choice."
|
|
25
62
|
isEditorsChoice: Boolean
|
|
63
|
+
|
|
64
|
+
"Whether the teaser is exclusive."
|
|
26
65
|
isExclusive: Boolean
|
|
66
|
+
|
|
67
|
+
"Whether the teaser is a scoop."
|
|
27
68
|
isScoop: Boolean
|
|
28
69
|
}
|
package/typedefs/topper.graphql
CHANGED
|
@@ -1,154 +1,366 @@
|
|
|
1
|
-
interface Topper {
|
|
1
|
+
interface Topper {
|
|
2
|
+
"The headline text of the topper."
|
|
2
3
|
headline: String!
|
|
4
|
+
|
|
5
|
+
"An abstract syntax tree of the introduction text."
|
|
3
6
|
intro: RichText
|
|
7
|
+
|
|
8
|
+
"The background colour of the topper."
|
|
4
9
|
backgroundColour: TopperBackgroundColour
|
|
10
|
+
|
|
11
|
+
"Whether the topper should have a background box."
|
|
5
12
|
backgroundBox: Boolean
|
|
13
|
+
|
|
14
|
+
"Whether the topper should have a text shadow."
|
|
6
15
|
textShadow: Boolean
|
|
16
|
+
|
|
17
|
+
"The concept object to be displayed, eg. {'type': 'TOPIC', 'prefLabel': 'Non-dom tax status', ...}."
|
|
7
18
|
displayConcept: Concept
|
|
19
|
+
|
|
20
|
+
"The concept object of the genre, eg. {'type': 'GENRE', 'prefLabel': 'Opinion', ...}."
|
|
8
21
|
genreConcept: Concept
|
|
22
|
+
|
|
23
|
+
"The variant of the follow button to be displayed on the topper."
|
|
9
24
|
followButtonVariant: FollowButtonVariant
|
|
10
25
|
}
|
|
11
26
|
|
|
12
27
|
interface TopperWithImages {
|
|
28
|
+
"An array of images to be displayed on the topper."
|
|
13
29
|
images: [Image!]!
|
|
30
|
+
|
|
31
|
+
"A fallback image to be used if the 'images' are not available."
|
|
14
32
|
fallbackImage: Image
|
|
15
33
|
}
|
|
16
34
|
|
|
17
35
|
interface TopperWithTheme {
|
|
36
|
+
"Whether the headline should be large."
|
|
18
37
|
isLargeHeadline: Boolean
|
|
38
|
+
|
|
39
|
+
"The layout of the topper, eg. 'split-text-left'."
|
|
19
40
|
layout: String
|
|
20
41
|
}
|
|
21
42
|
|
|
22
43
|
interface TopperWithHeadshot {
|
|
44
|
+
"The url of the headshot image, eg. for columns with one key author."
|
|
23
45
|
headshot(width: Int, dpr: Int): String
|
|
24
46
|
}
|
|
25
47
|
|
|
26
48
|
interface TopperWithBrand {
|
|
49
|
+
"The concept object of the brand, eg. {'type': 'BRAND', 'prefLabel': 'FT Magazine', ...}."
|
|
27
50
|
brandConcept: Concept
|
|
51
|
+
|
|
52
|
+
"The concept object of the genre, eg. {'type': 'GENRE', 'prefLabel': 'Opinion', ...}."
|
|
28
53
|
genreConcept: Concept
|
|
29
54
|
}
|
|
30
55
|
|
|
31
56
|
interface TopperWithPackage {
|
|
57
|
+
"The design of the topper, eg. 'standard'."
|
|
32
58
|
design: String
|
|
33
59
|
}
|
|
34
60
|
|
|
35
61
|
type BasicTopper implements Topper {
|
|
62
|
+
"The headline text of the topper."
|
|
36
63
|
headline: String!
|
|
64
|
+
|
|
65
|
+
"An abstract syntax tree of the introduction text."
|
|
37
66
|
intro: RichText
|
|
67
|
+
|
|
68
|
+
"The background colour of the topper."
|
|
38
69
|
backgroundColour: TopperBackgroundColour
|
|
70
|
+
|
|
71
|
+
"Whether the topper should have a background box."
|
|
39
72
|
backgroundBox: Boolean
|
|
73
|
+
|
|
74
|
+
"Whether the topper should have a text shadow."
|
|
40
75
|
textShadow: Boolean
|
|
76
|
+
|
|
77
|
+
"The concept object to be displayed, eg. {'type': 'TOPIC', 'prefLabel': 'Non-dom tax status', ...}."
|
|
41
78
|
displayConcept: Concept
|
|
79
|
+
|
|
80
|
+
"The concept object of the genre, eg. {'type': 'GENRE', 'prefLabel': 'Opinion', ...}."
|
|
42
81
|
genreConcept: Concept
|
|
82
|
+
|
|
83
|
+
"The variant of the follow button to be displayed on the topper."
|
|
43
84
|
followButtonVariant: FollowButtonVariant
|
|
44
85
|
}
|
|
45
86
|
|
|
46
87
|
type SplitTextTopper implements Topper & TopperWithImages & TopperWithTheme & TopperWithBrand & TopperWithPackage {
|
|
88
|
+
"The headline text of the topper."
|
|
47
89
|
headline: String!
|
|
90
|
+
|
|
91
|
+
"An abstract syntax tree of the introduction text."
|
|
48
92
|
intro: RichText
|
|
93
|
+
|
|
94
|
+
"The background colour of the topper."
|
|
49
95
|
backgroundColour: TopperBackgroundColour
|
|
96
|
+
|
|
97
|
+
"Whether the topper should have a background box."
|
|
50
98
|
backgroundBox: Boolean
|
|
99
|
+
|
|
100
|
+
"Whether the topper should have a text shadow."
|
|
51
101
|
textShadow: Boolean
|
|
102
|
+
|
|
103
|
+
"The concept object to be displayed, eg. {'type': 'TOPIC', 'prefLabel': 'Non-dom tax status', ...}."
|
|
52
104
|
displayConcept: Concept
|
|
105
|
+
|
|
106
|
+
"The concept object of the genre, eg. {'type': 'GENRE', 'prefLabel': 'Opinion', ...}."
|
|
107
|
+
genreConcept: Concept
|
|
108
|
+
|
|
109
|
+
"The variant of the follow button to be displayed on the topper."
|
|
53
110
|
followButtonVariant: FollowButtonVariant
|
|
111
|
+
|
|
112
|
+
"An array of images to be displayed on the topper."
|
|
54
113
|
images: [Image!]!
|
|
114
|
+
|
|
115
|
+
"A fallback image to be used if the 'images' are not availableimages: [Image!]!."
|
|
55
116
|
fallbackImage: Image
|
|
117
|
+
|
|
118
|
+
"Whether the headline should be large."
|
|
56
119
|
isLargeHeadline: Boolean
|
|
120
|
+
|
|
121
|
+
"The layout of the topper, eg. 'split-text-left'."
|
|
57
122
|
layout: String
|
|
123
|
+
|
|
124
|
+
"The concept object of the brand, eg. {'type': 'BRAND', 'prefLabel': 'FT Magazine', ...}."
|
|
58
125
|
brandConcept: Concept
|
|
59
|
-
|
|
126
|
+
|
|
127
|
+
"The design of the topper, eg. 'standard'."
|
|
60
128
|
design: String
|
|
61
129
|
}
|
|
62
130
|
|
|
63
131
|
type FullBleedTopper implements Topper & TopperWithImages & TopperWithTheme & TopperWithBrand {
|
|
132
|
+
"The headline text of the topper."
|
|
64
133
|
headline: String!
|
|
134
|
+
|
|
135
|
+
"An abstract syntax tree of the introduction text."
|
|
65
136
|
intro: RichText
|
|
137
|
+
|
|
138
|
+
"The background colour of the topper."
|
|
66
139
|
backgroundColour: TopperBackgroundColour
|
|
140
|
+
|
|
141
|
+
"Whether the topper should have a background box."
|
|
67
142
|
backgroundBox: Boolean
|
|
143
|
+
|
|
144
|
+
"Whether the topper should have a text shadow."
|
|
68
145
|
textShadow: Boolean
|
|
146
|
+
|
|
147
|
+
"The concept object to be displayed, eg. {'type': 'TOPIC', 'prefLabel': 'Non-dom tax status', ...}."
|
|
69
148
|
displayConcept: Concept
|
|
149
|
+
|
|
150
|
+
"The concept object of the genre, eg. {'type': 'GENRE', 'prefLabel': 'Opinion', ...}."
|
|
151
|
+
genreConcept: Concept
|
|
152
|
+
|
|
153
|
+
"The variant of the follow button to be displayed on the topper."
|
|
70
154
|
followButtonVariant: FollowButtonVariant
|
|
155
|
+
|
|
156
|
+
"An array of images to be displayed on the topper."
|
|
71
157
|
images: [Image!]!
|
|
158
|
+
|
|
159
|
+
"A fallback image to be used if the 'images' are not availableimages: [Image!]!."
|
|
72
160
|
fallbackImage: Image
|
|
161
|
+
|
|
162
|
+
"Whether the headline should be large."
|
|
73
163
|
isLargeHeadline: Boolean
|
|
164
|
+
|
|
165
|
+
"The layout of the topper, eg. 'split-text-left'."
|
|
74
166
|
layout: String
|
|
167
|
+
|
|
168
|
+
"The concept object of the brand, eg. {'type': 'BRAND', 'prefLabel': 'FT Magazine', ...}."
|
|
75
169
|
brandConcept: Concept
|
|
76
|
-
genreConcept: Concept
|
|
77
170
|
}
|
|
78
171
|
|
|
79
172
|
type PodcastTopper implements Topper & TopperWithTheme & TopperWithHeadshot & TopperWithBrand {
|
|
173
|
+
"The headline text of the topper."
|
|
80
174
|
headline: String!
|
|
175
|
+
|
|
176
|
+
"An abstract syntax tree of the introduction text."
|
|
81
177
|
intro: RichText
|
|
178
|
+
|
|
179
|
+
"The background colour of the topper."
|
|
82
180
|
backgroundColour: TopperBackgroundColour
|
|
181
|
+
|
|
182
|
+
"Whether the topper should have a background box."
|
|
83
183
|
backgroundBox: Boolean
|
|
184
|
+
|
|
185
|
+
"Whether the topper should have a text shadow."
|
|
84
186
|
textShadow: Boolean
|
|
187
|
+
|
|
188
|
+
"The concept object to be displayed, eg. {'type': 'TOPIC', 'prefLabel': 'Non-dom tax status', ...}."
|
|
85
189
|
displayConcept: Concept
|
|
190
|
+
|
|
191
|
+
"The concept object of the genre, eg. {'type': 'GENRE', 'prefLabel': 'Opinion', ...}."
|
|
192
|
+
genreConcept: Concept
|
|
193
|
+
|
|
194
|
+
"The variant of the follow button to be displayed on the topper."
|
|
86
195
|
followButtonVariant: FollowButtonVariant
|
|
196
|
+
|
|
197
|
+
"Whether the headline should be large."
|
|
87
198
|
isLargeHeadline: Boolean
|
|
199
|
+
|
|
200
|
+
"The layout of the topper, eg. 'split-text-left'."
|
|
88
201
|
layout: String
|
|
202
|
+
|
|
203
|
+
"The url of the headshot image, eg. for columns with one key author."
|
|
89
204
|
headshot(width: Int, dpr: Int): String
|
|
205
|
+
|
|
206
|
+
"The concept object describing details of the column author."
|
|
90
207
|
columnist: Concept
|
|
208
|
+
|
|
209
|
+
"The concept object of the brand, eg. {'type': 'BRAND', 'prefLabel': 'FT Magazine', ...}."
|
|
91
210
|
brandConcept: Concept
|
|
92
|
-
genreConcept: Concept
|
|
93
211
|
}
|
|
94
212
|
|
|
95
213
|
type OpinionTopper implements Topper & TopperWithTheme & TopperWithHeadshot {
|
|
214
|
+
"The headline text of the topper."
|
|
96
215
|
headline: String!
|
|
216
|
+
|
|
217
|
+
"An abstract syntax tree of the introduction text."
|
|
97
218
|
intro: RichText
|
|
219
|
+
|
|
220
|
+
"The background colour of the topper."
|
|
98
221
|
backgroundColour: TopperBackgroundColour
|
|
222
|
+
|
|
223
|
+
"Whether the topper should have a background box."
|
|
99
224
|
backgroundBox: Boolean
|
|
225
|
+
|
|
226
|
+
"Whether the topper should have a text shadow."
|
|
100
227
|
textShadow: Boolean
|
|
228
|
+
|
|
229
|
+
"The concept object to be displayed, eg. {'type': 'TOPIC', 'prefLabel': 'Non-dom tax status', ...}."
|
|
101
230
|
displayConcept: Concept
|
|
231
|
+
|
|
232
|
+
"The concept object of the genre, eg. {'type': 'GENRE', 'prefLabel': 'Opinion', ...}."
|
|
102
233
|
genreConcept: Concept
|
|
234
|
+
|
|
235
|
+
"The variant of the follow button to be displayed on the topper."
|
|
103
236
|
followButtonVariant: FollowButtonVariant
|
|
237
|
+
|
|
238
|
+
"Whether the headline should be large."
|
|
104
239
|
isLargeHeadline: Boolean
|
|
240
|
+
|
|
241
|
+
"The layout of the topper, eg. 'split-text-left'."
|
|
105
242
|
layout: String
|
|
243
|
+
|
|
244
|
+
"The url of the headshot image, eg. for columns with one key author."
|
|
106
245
|
headshot(width: Int, dpr: Int): String
|
|
246
|
+
|
|
247
|
+
"The concept object describing details of the column author."
|
|
107
248
|
columnist: Concept
|
|
108
249
|
}
|
|
109
250
|
|
|
110
251
|
type BrandedTopper implements Topper & TopperWithTheme & TopperWithBrand {
|
|
252
|
+
"The headline text of the topper."
|
|
111
253
|
headline: String!
|
|
254
|
+
|
|
255
|
+
"An abstract syntax tree of the introduction text."
|
|
112
256
|
intro: RichText
|
|
257
|
+
|
|
258
|
+
"The background colour of the topper."
|
|
113
259
|
backgroundColour: TopperBackgroundColour
|
|
260
|
+
|
|
261
|
+
"Whether the topper should have a background box."
|
|
114
262
|
backgroundBox: Boolean
|
|
263
|
+
|
|
264
|
+
"Whether the topper should have a text shadow."
|
|
115
265
|
textShadow: Boolean
|
|
266
|
+
|
|
267
|
+
"The concept object to be displayed, eg. {'type': 'TOPIC', 'prefLabel': 'Non-dom tax status', ...}."
|
|
116
268
|
displayConcept: Concept
|
|
269
|
+
|
|
270
|
+
"The concept object of the genre, eg. {'type': 'GENRE', 'prefLabel': 'Opinion', ...}."
|
|
271
|
+
genreConcept: Concept
|
|
272
|
+
|
|
273
|
+
"The variant of the follow button to be displayed on the topper."
|
|
117
274
|
followButtonVariant: FollowButtonVariant
|
|
275
|
+
|
|
276
|
+
"Whether the headline should be large."
|
|
118
277
|
isLargeHeadline: Boolean
|
|
278
|
+
|
|
279
|
+
"The layout of the topper, eg. 'split-text-left'."
|
|
119
280
|
layout: String
|
|
281
|
+
|
|
282
|
+
"The concept object of the brand, eg. {'type': 'BRAND', 'prefLabel': 'FT Magazine', ...}."
|
|
120
283
|
brandConcept: Concept
|
|
121
|
-
genreConcept: Concept
|
|
122
284
|
}
|
|
123
285
|
|
|
124
286
|
type DeepPortraitTopper implements Topper & TopperWithImages & TopperWithTheme & TopperWithBrand {
|
|
287
|
+
"The headline text of the topper."
|
|
125
288
|
headline: String!
|
|
289
|
+
|
|
290
|
+
"An abstract syntax tree of the introduction text."
|
|
126
291
|
intro: RichText
|
|
292
|
+
|
|
293
|
+
"The background colour of the topper."
|
|
127
294
|
backgroundColour: TopperBackgroundColour
|
|
295
|
+
|
|
296
|
+
"Whether the topper should have a background box."
|
|
128
297
|
backgroundBox: Boolean
|
|
298
|
+
|
|
299
|
+
"Whether the topper should have a text shadow."
|
|
129
300
|
textShadow: Boolean
|
|
301
|
+
|
|
302
|
+
"The concept object to be displayed, eg. {'type': 'TOPIC', 'prefLabel': 'Non-dom tax status', ...}."
|
|
130
303
|
displayConcept: Concept
|
|
304
|
+
|
|
305
|
+
"The concept object of the genre, eg. {'type': 'GENRE', 'prefLabel': 'Opinion', ...}."
|
|
306
|
+
genreConcept: Concept
|
|
307
|
+
|
|
308
|
+
"The variant of the follow button to be displayed on the topper."
|
|
131
309
|
followButtonVariant: FollowButtonVariant
|
|
310
|
+
|
|
311
|
+
"An array of images to be displayed on the topper."
|
|
132
312
|
images: [Image!]!
|
|
313
|
+
|
|
314
|
+
"A fallback image to be used if the 'images' are not availableimages: [Image!]!."
|
|
133
315
|
fallbackImage: Image
|
|
316
|
+
|
|
317
|
+
"Whether the headline should be large."
|
|
134
318
|
isLargeHeadline: Boolean
|
|
319
|
+
|
|
320
|
+
"The layout of the topper, eg. 'split-text-left'."
|
|
135
321
|
layout: String
|
|
322
|
+
|
|
323
|
+
"The concept object of the brand, eg. {'type': 'BRAND', 'prefLabel': 'FT Magazine', ...}."
|
|
136
324
|
brandConcept: Concept
|
|
137
|
-
genreConcept: Concept
|
|
138
325
|
}
|
|
139
326
|
|
|
140
327
|
type DeepLandscapeTopper implements Topper & TopperWithImages & TopperWithTheme & TopperWithBrand {
|
|
328
|
+
"The headline text of the topper."
|
|
141
329
|
headline: String!
|
|
330
|
+
|
|
331
|
+
"An abstract syntax tree of the introduction text."
|
|
142
332
|
intro: RichText
|
|
333
|
+
|
|
334
|
+
"The background colour of the topper."
|
|
143
335
|
backgroundColour: TopperBackgroundColour
|
|
336
|
+
|
|
337
|
+
"Whether the topper should have a background box."
|
|
144
338
|
backgroundBox: Boolean
|
|
339
|
+
|
|
340
|
+
"Whether the topper should have a text shadow."
|
|
145
341
|
textShadow: Boolean
|
|
342
|
+
|
|
343
|
+
"The concept object to be displayed, eg. {'type': 'TOPIC', 'prefLabel': 'Non-dom tax status', ...}."
|
|
146
344
|
displayConcept: Concept
|
|
345
|
+
|
|
346
|
+
"The concept object of the genre, eg. {'type': 'GENRE', 'prefLabel': 'Opinion', ...}."
|
|
347
|
+
genreConcept: Concept
|
|
348
|
+
|
|
349
|
+
"The variant of the follow button to be displayed on the topper."
|
|
147
350
|
followButtonVariant: FollowButtonVariant
|
|
351
|
+
|
|
352
|
+
"An array of images to be displayed on the topper."
|
|
148
353
|
images: [Image!]!
|
|
354
|
+
|
|
355
|
+
"A fallback image to be used if the 'images' are not availableimages: [Image!]!."
|
|
149
356
|
fallbackImage: Image
|
|
357
|
+
|
|
358
|
+
"Whether the headline should be large."
|
|
150
359
|
isLargeHeadline: Boolean
|
|
360
|
+
|
|
361
|
+
"The layout of the topper, eg. 'split-text-left'."
|
|
151
362
|
layout: String
|
|
363
|
+
|
|
364
|
+
"The concept object of the brand, eg. {'type': 'BRAND', 'prefLabel': 'FT Magazine', ...}."
|
|
152
365
|
brandConcept: Concept
|
|
153
|
-
genreConcept: Concept
|
|
154
366
|
}
|