@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.
Files changed (66) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/README.md +187 -41
  3. package/lib/datasources/base.d.ts +1 -0
  4. package/lib/datasources/capi.js +1 -0
  5. package/lib/datasources/capi.js.map +1 -1
  6. package/lib/datasources/instrumented.d.ts +1 -0
  7. package/lib/datasources/instrumented.js +1 -9
  8. package/lib/datasources/instrumented.js.map +1 -1
  9. package/lib/datasources/origami-image.js +1 -0
  10. package/lib/datasources/origami-image.js.map +1 -1
  11. package/lib/datasources/twitter.js +1 -0
  12. package/lib/datasources/twitter.js.map +1 -1
  13. package/lib/datasources/url-management.d.ts +1 -0
  14. package/lib/datasources/url-management.js +2 -0
  15. package/lib/datasources/url-management.js.map +1 -1
  16. package/lib/fixtures/capiObject.js +1 -1
  17. package/lib/fixtures/capiObject.js.map +1 -1
  18. package/lib/generated/index.d.ts +572 -2
  19. package/lib/model/CapiResponse.d.ts +1 -0
  20. package/lib/model/CapiResponse.js +4 -2
  21. package/lib/model/CapiResponse.js.map +1 -1
  22. package/lib/model/CapiResponse.test.js +7 -0
  23. package/lib/model/CapiResponse.test.js.map +1 -1
  24. package/lib/resolvers/content-tree/Workarounds.d.ts +8 -1
  25. package/lib/resolvers/content-tree/nodePredicates.d.ts +1 -1
  26. package/lib/resolvers/content-tree/tagMappings.js +14 -5
  27. package/lib/resolvers/content-tree/tagMappings.js.map +1 -1
  28. package/lib/resolvers/content.d.ts +8 -0
  29. package/lib/resolvers/content.js +1 -0
  30. package/lib/resolvers/content.js.map +1 -1
  31. package/lib/resolvers/index.d.ts +8 -0
  32. package/package.json +1 -1
  33. package/queries/article.graphql +1 -0
  34. package/src/datasources/base.ts +1 -0
  35. package/src/datasources/capi.ts +1 -0
  36. package/src/datasources/instrumented.ts +1 -11
  37. package/src/datasources/origami-image.ts +3 -0
  38. package/src/datasources/twitter.ts +2 -0
  39. package/src/datasources/url-management.ts +2 -0
  40. package/src/fixtures/capiObject.ts +1 -1
  41. package/src/generated/index.ts +572 -2
  42. package/src/model/CapiResponse.test.ts +9 -0
  43. package/src/model/CapiResponse.ts +4 -3
  44. package/src/resolvers/content-tree/Workarounds.ts +10 -0
  45. package/src/resolvers/content-tree/tagMappings.ts +15 -5
  46. package/src/resolvers/content.ts +1 -0
  47. package/tsconfig.tsbuildinfo +1 -1
  48. package/typedefs/clip.graphql +28 -0
  49. package/typedefs/concept.graphql +21 -2
  50. package/typedefs/content.graphql +465 -36
  51. package/typedefs/core.graphql +6 -0
  52. package/typedefs/image.graphql +210 -15
  53. package/typedefs/picture.graphql +54 -1
  54. package/typedefs/references/clipSet.graphql +34 -1
  55. package/typedefs/references/flourish.graphql +8 -0
  56. package/typedefs/references/imageSet.graphql +6 -0
  57. package/typedefs/references/layoutImage.graphql +3 -0
  58. package/typedefs/references/rawImage.graphql +3 -0
  59. package/typedefs/references/recommended.graphql +3 -0
  60. package/typedefs/references/reference.graphql +1 -0
  61. package/typedefs/references/scrollyImage.graphql +3 -0
  62. package/typedefs/references/tweet.graphql +3 -0
  63. package/typedefs/references/video.graphql +5 -0
  64. package/typedefs/richText.graphql +7 -4
  65. package/typedefs/teaser.graphql +42 -1
  66. package/typedefs/topper.graphql +219 -7
@@ -40,42 +40,72 @@ export type Scalars = {
40
40
  };
41
41
 
42
42
  export type Accessibility = {
43
+ /** An array of captions for the clip. */
43
44
  readonly captions?: Maybe<ReadonlyArray<Maybe<Caption>>>;
45
+ /** An abstract syntax tree of the transcript for the clip. */
44
46
  readonly transcript?: Maybe<RichText>;
45
47
  };
46
48
 
47
49
  export type AltStandfirst = {
50
+ /** An introductory paragraph of the article. */
48
51
  readonly promotionalStandfirst?: Maybe<Scalars['String']['output']>;
49
52
  };
50
53
 
51
54
  export type AltTitle = {
55
+ /** A promotional title of the article. */
52
56
  readonly promotionalTitle?: Maybe<Scalars['String']['output']>;
53
57
  };
54
58
 
55
59
  export type Article = Content & {
60
+ /** A scalar representing the access level of the article, eg. 'free'. */
56
61
  readonly accessLevel?: Maybe<Scalars['AccessLevel']['output']>;
62
+ /** An alternative introductory paragraph of the article. */
57
63
  readonly altStandfirst?: Maybe<AltStandfirst>;
64
+ /** An alternative title of the article. */
58
65
  readonly altTitle?: Maybe<AltTitle>;
66
+ /** An array of concepts related to the article, eg. organisations or topics. */
59
67
  readonly annotations?: Maybe<ReadonlyArray<Maybe<Concept>>>;
68
+ /** An abstract syntax tree of the article content. */
60
69
  readonly body?: Maybe<RichText>;
70
+ /** The raw string of the XML as returned from ContentAPI. */
61
71
  readonly bodyXML?: Maybe<Scalars['String']['output']>;
72
+ /** An abstract syntax tree of the authors of the article. */
62
73
  readonly byline?: Maybe<StructuredContent>;
74
+ /** A scalar representing whether the article can be syndicated, ie. published by a third party site. */
63
75
  readonly canBeSyndicated?: Maybe<Scalars['CanBeSyndicated']['output']>;
76
+ /** Whether comments are enabled on the article. */
64
77
  readonly commentsEnabled?: Maybe<Scalars['Boolean']['output']>;
78
+ /** The parent article, indicating this article is a part of a series or package. */
65
79
  readonly containedIn?: Maybe<Content>;
80
+ /** A design object containing the theme and layout of the article. */
66
81
  readonly design?: Maybe<Design>;
82
+ /** The editorial division the article belongs to, eg. 'FT-SpecialReports'. */
67
83
  readonly editorialDesk?: Maybe<Scalars['String']['output']>;
84
+ /** The first ISO string date the article was published, eg. '2024-04-03T10:35:52.443Z'. */
68
85
  readonly firstPublishedDate: Scalars['String']['output'];
86
+ /** The unique identifier of the article - a uuid or a url. */
69
87
  readonly id: Scalars['ID']['output'];
88
+ /** The concept to use for instant alert CTAs. */
70
89
  readonly instantAlertConcept?: Maybe<Concept>;
90
+ /** An image object containing the url and the caption, to be displayed usually before the article content. */
71
91
  readonly mainImage?: Maybe<Image>;
92
+ /** The party that originated the article, eg. 'FT'. */
72
93
  readonly originatingParty?: Maybe<Scalars['String']['output']>;
94
+ /** The ISO string date the article was published, eg. '2024-04-03T10:35:52.443Z'. */
73
95
  readonly publishedDate: Scalars['String']['output'];
96
+ /** The number of milliseconds since the unix epoch the article was published, eg '1712140552443'. */
97
+ readonly publishedTimestamp: Scalars['Float']['output'];
98
+ /** An introductory paragraph of the article. */
74
99
  readonly standfirst?: Maybe<Scalars['String']['output']>;
100
+ /** A promotional thumbnail / snapshot of the article. */
75
101
  readonly teaser?: Maybe<Teaser>;
102
+ /** The title of the article. */
76
103
  readonly title: Scalars['String']['output'];
104
+ /** A banner located usually at the top of articles containing the title, the standfirst and any images. */
77
105
  readonly topper?: Maybe<Topper>;
106
+ /** The type of the article, eg. 'Article' or 'Video'. */
78
107
  readonly type: Scalars['ContentType']['output'];
108
+ /** The url of the concept. Vanity urls replace long, randomly generated urls - they are more user friendly and concise. Relative urls are relative to the current domain. */
79
109
  readonly url: Scalars['String']['output'];
80
110
  };
81
111
 
@@ -91,29 +121,55 @@ export type ArticleUrlArgs = {
91
121
  };
92
122
 
93
123
  export type Audio = Content & {
124
+ /** A scalar representing the access level of the article, eg. 'free'. */
94
125
  readonly accessLevel?: Maybe<Scalars['AccessLevel']['output']>;
126
+ /** An alternative introductory paragraph of the article. */
95
127
  readonly altStandfirst?: Maybe<AltStandfirst>;
128
+ /** An alternative title of the article. */
96
129
  readonly altTitle?: Maybe<AltTitle>;
130
+ /** An array of concepts related to the article, eg. organisations or topics. */
97
131
  readonly annotations?: Maybe<ReadonlyArray<Maybe<Concept>>>;
132
+ /** An abstract syntax tree of the article content. */
98
133
  readonly body?: Maybe<RichText>;
134
+ /** The raw string of the XML as returned from ContentAPI. */
99
135
  readonly bodyXML?: Maybe<Scalars['String']['output']>;
136
+ /** An abstract syntax tree of the authors of the article. */
100
137
  readonly byline?: Maybe<StructuredContent>;
138
+ /** A scalar representing whether the article can be syndicated, ie. published by a third party site. */
101
139
  readonly canBeSyndicated?: Maybe<Scalars['CanBeSyndicated']['output']>;
140
+ /** Whether comments are enabled on the article. */
102
141
  readonly commentsEnabled?: Maybe<Scalars['Boolean']['output']>;
142
+ /** A design object containing the theme and layout of the article. */
103
143
  readonly design?: Maybe<Design>;
144
+ /** The editorial division the article belongs to, eg. 'FT-SpecialReports'. */
104
145
  readonly editorialDesk?: Maybe<Scalars['String']['output']>;
146
+ /** The first ISO string date the article was published, eg. '2024-04-03T10:35:52.443Z'. */
105
147
  readonly firstPublishedDate: Scalars['String']['output'];
148
+ /** The unique identifier of the article - a uuid or a url. */
106
149
  readonly id: Scalars['ID']['output'];
150
+ /** The concept to use for instant alert CTAs. */
107
151
  readonly instantAlertConcept?: Maybe<Concept>;
152
+ /** An image object containing the url and the caption, to be displayed usually before the article content. */
108
153
  readonly mainImage?: Maybe<Image>;
154
+ /** An array of media objects containing the url, the duration, the filesize and the media type. */
109
155
  readonly media?: Maybe<ReadonlyArray<Maybe<Media>>>;
156
+ /** The party that originated the article, eg. 'FT'. */
110
157
  readonly originatingParty?: Maybe<Scalars['String']['output']>;
158
+ /** The ISO string date the article was published, eg. '2024-04-03T10:35:52.443Z'. */
111
159
  readonly publishedDate: Scalars['String']['output'];
160
+ /** The number of milliseconds since the unix epoch the article was published, eg '1712140552443'. */
161
+ readonly publishedTimestamp: Scalars['Float']['output'];
162
+ /** An introductory paragraph of the article. */
112
163
  readonly standfirst?: Maybe<Scalars['String']['output']>;
164
+ /** A promotional thumbnail / snapshot of the article. */
113
165
  readonly teaser?: Maybe<Teaser>;
166
+ /** The title of the article. */
114
167
  readonly title: Scalars['String']['output'];
168
+ /** A banner located usually at the top of articles containing the title, the standfirst and any images. */
115
169
  readonly topper?: Maybe<Topper>;
170
+ /** The type of the article, eg. 'Article' or 'Video'. */
116
171
  readonly type: Scalars['ContentType']['output'];
172
+ /** The url of the concept. Vanity urls replace long, randomly generated urls - they are more user friendly and concise. Relative urls are relative to the current domain. */
117
173
  readonly url: Scalars['String']['output'];
118
174
  };
119
175
 
@@ -129,114 +185,200 @@ export type AudioUrlArgs = {
129
185
  };
130
186
 
131
187
  export type BasicTopper = Topper & {
188
+ /** Whether the topper should have a background box. */
132
189
  readonly backgroundBox?: Maybe<Scalars['Boolean']['output']>;
190
+ /** The background colour of the topper. */
133
191
  readonly backgroundColour?: Maybe<Scalars['TopperBackgroundColour']['output']>;
192
+ /** The concept object to be displayed, eg. {'type': 'TOPIC', 'prefLabel': 'Non-dom tax status', ...}. */
134
193
  readonly displayConcept?: Maybe<Concept>;
194
+ /** The variant of the follow button to be displayed on the topper. */
135
195
  readonly followButtonVariant?: Maybe<Scalars['FollowButtonVariant']['output']>;
196
+ /** The concept object of the genre, eg. {'type': 'GENRE', 'prefLabel': 'Opinion', ...}. */
136
197
  readonly genreConcept?: Maybe<Concept>;
198
+ /** The headline text of the topper. */
137
199
  readonly headline: Scalars['String']['output'];
200
+ /** An abstract syntax tree of the introduction text. */
138
201
  readonly intro?: Maybe<RichText>;
202
+ /** Whether the topper should have a text shadow. */
139
203
  readonly textShadow?: Maybe<Scalars['Boolean']['output']>;
140
204
  };
141
205
 
142
206
  export type BrandedTopper = Topper & TopperWithBrand & TopperWithTheme & {
207
+ /** Whether the topper should have a background box. */
143
208
  readonly backgroundBox?: Maybe<Scalars['Boolean']['output']>;
209
+ /** The background colour of the topper. */
144
210
  readonly backgroundColour?: Maybe<Scalars['TopperBackgroundColour']['output']>;
211
+ /** The concept object of the brand, eg. {'type': 'BRAND', 'prefLabel': 'FT Magazine', ...}. */
145
212
  readonly brandConcept?: Maybe<Concept>;
213
+ /** The concept object to be displayed, eg. {'type': 'TOPIC', 'prefLabel': 'Non-dom tax status', ...}. */
146
214
  readonly displayConcept?: Maybe<Concept>;
215
+ /** The variant of the follow button to be displayed on the topper. */
147
216
  readonly followButtonVariant?: Maybe<Scalars['FollowButtonVariant']['output']>;
217
+ /** The concept object of the genre, eg. {'type': 'GENRE', 'prefLabel': 'Opinion', ...}. */
148
218
  readonly genreConcept?: Maybe<Concept>;
219
+ /** The headline text of the topper. */
149
220
  readonly headline: Scalars['String']['output'];
221
+ /** An abstract syntax tree of the introduction text. */
150
222
  readonly intro?: Maybe<RichText>;
223
+ /** Whether the headline should be large. */
151
224
  readonly isLargeHeadline?: Maybe<Scalars['Boolean']['output']>;
225
+ /** The layout of the topper, eg. 'split-text-left'. */
152
226
  readonly layout?: Maybe<Scalars['String']['output']>;
227
+ /** Whether the topper should have a text shadow. */
153
228
  readonly textShadow?: Maybe<Scalars['Boolean']['output']>;
154
229
  };
155
230
 
156
231
  export type Caption = {
232
+ /** The media type of the caption eg. text/vtt. */
157
233
  readonly mediaType?: Maybe<Scalars['String']['output']>;
234
+ /** The url of the caption, eg. 'https://next-media-api.ft.com/clips/captions/32065513'. */
158
235
  readonly url?: Maybe<Scalars['String']['output']>;
159
236
  };
160
237
 
161
238
  export type Clip = {
239
+ /** An array of data sources - includes 'video/mp4' and 'audio/mp3' sources. */
162
240
  readonly dataSource: ReadonlyArray<ClipSource>;
241
+ /** The format of the clip, eg. 'standard-inline' or 'mobile'. */
163
242
  readonly format?: Maybe<Scalars['ClipFormat']['output']>;
243
+ /** The unique identifier of the clip - a uuid or a url. */
164
244
  readonly id: Scalars['String']['output'];
245
+ /** The url of the image to be used as a poster for the clip, eg. 'https://www.ft.com/__origami/service/image...'. */
165
246
  readonly poster?: Maybe<Scalars['String']['output']>;
247
+ /** The type of the clip, eg. 'http://www.ft.com/ontology/content/Clip'. */
166
248
  readonly type?: Maybe<Scalars['String']['output']>;
167
249
  };
168
250
 
169
251
  export type ClipSet = Reference & {
252
+ /** An object containing the accessibility details of the clip. */
170
253
  readonly accessibility?: Maybe<Accessibility>;
254
+ /** Whether the clip should play automatically when loaded. */
171
255
  readonly autoplay?: Maybe<Scalars['Boolean']['output']>;
256
+ /** Text describing the content of the clip, to be shown next to the clip. */
172
257
  readonly caption?: Maybe<Scalars['String']['output']>;
258
+ /** An array of clips in the clip set. */
173
259
  readonly clips?: Maybe<ReadonlyArray<Maybe<Clip>>>;
260
+ /** An array of content warnings for the clip set. */
174
261
  readonly contentWarning?: Maybe<ReadonlyArray<Maybe<Scalars['String']['output']>>>;
262
+ /** The credit text of the clip, eg. 'Getty Images'. */
175
263
  readonly credits?: Maybe<Scalars['String']['output']>;
264
+ /** The layout of the clip set, eg. 'in-line'. */
176
265
  readonly dataLayout?: Maybe<Scalars['String']['output']>;
266
+ /** The description of the clip. */
177
267
  readonly description?: Maybe<Scalars['String']['output']>;
268
+ /** The title to be displayed for the clip set. */
178
269
  readonly displayTitle?: Maybe<Scalars['String']['output']>;
270
+ /** The unique identifier of the clip set. */
179
271
  readonly id: Scalars['String']['output'];
272
+ /** Whether the clip should loop. */
180
273
  readonly loop?: Maybe<Scalars['Boolean']['output']>;
274
+ /** Whether the clip should be muted. */
181
275
  readonly muted?: Maybe<Scalars['Boolean']['output']>;
276
+ /** Whether the clip set should **not** include audio. */
182
277
  readonly noAudio?: Maybe<Scalars['Boolean']['output']>;
278
+ /** The date the clip set was published. */
183
279
  readonly publishedDate?: Maybe<Scalars['String']['output']>;
280
+ /** The source of the clip set, eg. 'YouTube'. */
184
281
  readonly source?: Maybe<Scalars['String']['output']>;
282
+ /** The subtitle of the clip set. */
185
283
  readonly subtitle?: Maybe<Scalars['String']['output']>;
284
+ /** The type of the clip set, eg. 'video'. */
186
285
  readonly type: Scalars['String']['output'];
187
286
  };
188
287
 
189
288
  export type ClipSource = {
289
+ /** The audio encoding format of the source, eg. mp3. */
190
290
  readonly audioCodec?: Maybe<Scalars['String']['output']>;
291
+ /** The url of the clip source, eg. 'https://next-media-api.ft.com/renditions/16868569859480/0x0.mp3'. */
191
292
  readonly binaryUrl: Scalars['String']['output'];
293
+ /** The duration of the clip in milliseconds. */
192
294
  readonly duration?: Maybe<Scalars['Int']['output']>;
295
+ /** The media type eg. video/mp4. */
193
296
  readonly mediaType: Scalars['String']['output'];
297
+ /** The height of the clip in pixels. */
194
298
  readonly pixelHeight?: Maybe<Scalars['Int']['output']>;
299
+ /** The width of the clip in pixels. */
195
300
  readonly pixelWidth?: Maybe<Scalars['Int']['output']>;
301
+ /** The video encoding format of the source, eg. h264. */
196
302
  readonly videoCodec?: Maybe<Scalars['String']['output']>;
197
303
  };
198
304
 
305
+ /** A concept is supplemtary information item, like a location, person, organisation or topic. It is used to provide context to an article. */
199
306
  export type Concept = {
307
+ /** The api url of the concept, eg. 'http://api.ft.com/things/a579350c-61ce-4c00-97ca-ddaa2e0cacf6'. */
200
308
  readonly apiUrl?: Maybe<Scalars['String']['output']>;
309
+ /** The type of the concept, eg. 'http://www.ft.com/ontology/Topic'. */
201
310
  readonly directType?: Maybe<Scalars['String']['output']>;
311
+ /** The unique identifier of the concept - a uuid or a url. */
202
312
  readonly id: Scalars['ID']['output'];
313
+ /** Whether the concept is part of a package brand eg. 'ftSeries' or 'ftGuides'. */
203
314
  readonly isPackageBrand?: Maybe<Scalars['Boolean']['output']>;
315
+ /** The relationship between the concept and the article, eg. 'http://www.ft.com/ontology/hasAuthor'. */
204
316
  readonly predicate?: Maybe<Scalars['String']['output']>;
317
+ /** The preferred label of the concept, eg. 'Work & Careers'. */
205
318
  readonly prefLabel: Scalars['String']['output'];
319
+ /** The type of the concept, eg. 'TOPIC'. */
206
320
  readonly type?: Maybe<Scalars['String']['output']>;
321
+ /** An array of types, eg. ['http://www.ft.com/ontology/core/Thing', 'http://www.ft.com/ontology/Topic']. */
207
322
  readonly types?: Maybe<ReadonlyArray<Scalars['String']['output']>>;
323
+ /** The url of the media, eg. 'https://next-media-api.ft.com/renditions/16868569859480/0x0.mp3'. */
208
324
  readonly url: Scalars['String']['output'];
209
325
  };
210
326
 
211
327
 
328
+ /** A concept is supplemtary information item, like a location, person, organisation or topic. It is used to provide context to an article. */
212
329
  export type ConceptUrlArgs = {
213
330
  relative?: InputMaybe<Scalars['Boolean']['input']>;
214
331
  vanity?: InputMaybe<Scalars['Boolean']['input']>;
215
332
  };
216
333
 
217
334
  export type Content = {
335
+ /** A scalar representing the access level of the article, eg. 'free'. */
218
336
  readonly accessLevel?: Maybe<Scalars['AccessLevel']['output']>;
337
+ /** An alternative introductory paragraph of the article. */
219
338
  readonly altStandfirst?: Maybe<AltStandfirst>;
339
+ /** An alternative title of the article. */
220
340
  readonly altTitle?: Maybe<AltTitle>;
341
+ /** An array of concepts related to the article, eg. organisations or topics. */
221
342
  readonly annotations?: Maybe<ReadonlyArray<Maybe<Concept>>>;
343
+ /** An abstract syntax tree of the article content. */
222
344
  readonly body?: Maybe<RichText>;
345
+ /** The raw string of the XML as returned from ContentAPI. */
223
346
  readonly bodyXML?: Maybe<Scalars['String']['output']>;
347
+ /** An abstract syntax tree of the authors of the article. */
224
348
  readonly byline?: Maybe<StructuredContent>;
349
+ /** A scalar representing whether the article can be syndicated, ie. published by a third party site. */
225
350
  readonly canBeSyndicated?: Maybe<Scalars['CanBeSyndicated']['output']>;
351
+ /** Whether comments are enabled on the article. */
226
352
  readonly commentsEnabled?: Maybe<Scalars['Boolean']['output']>;
353
+ /** A design object containing the theme and layout of the article. */
227
354
  readonly design?: Maybe<Design>;
355
+ /** The editorial division the article belongs to, eg. 'FT-SpecialReports'. */
228
356
  readonly editorialDesk?: Maybe<Scalars['String']['output']>;
357
+ /** The first ISO string date the article was published, eg. '2024-04-03T10:35:52.443Z'. */
229
358
  readonly firstPublishedDate: Scalars['String']['output'];
359
+ /** The unique identifier of the article - a uuid or a url. */
230
360
  readonly id: Scalars['ID']['output'];
361
+ /** The concept to use for instant alert CTAs. */
231
362
  readonly instantAlertConcept?: Maybe<Concept>;
363
+ /** An image object containing the url and the caption, to be displayed usually before the article content. */
232
364
  readonly mainImage?: Maybe<Image>;
365
+ /** The party that originated the article, eg. 'FT'. */
233
366
  readonly originatingParty?: Maybe<Scalars['String']['output']>;
367
+ /** The ISO string date the article was published, eg. '2024-04-03T10:35:52.443Z'. */
234
368
  readonly publishedDate: Scalars['String']['output'];
369
+ /** The number of milliseconds since the unix epoch the article was published, eg '1712140552443'. */
370
+ readonly publishedTimestamp: Scalars['Float']['output'];
371
+ /** An introductory paragraph of the article. */
235
372
  readonly standfirst?: Maybe<Scalars['String']['output']>;
373
+ /** A promotional thumbnail / snapshot of the article. */
236
374
  readonly teaser?: Maybe<Teaser>;
375
+ /** The title of the article. */
237
376
  readonly title: Scalars['String']['output'];
377
+ /** A banner located usually at the top of articles containing the title, the standfirst and any images. */
238
378
  readonly topper?: Maybe<Topper>;
379
+ /** The type of the article, eg. 'Article' or 'Video'. */
239
380
  readonly type: Scalars['ContentType']['output'];
381
+ /** The url of the concept. Vanity urls replace long, randomly generated urls - they are more user friendly and concise. Relative urls are relative to the current domain. */
240
382
  readonly url: Scalars['String']['output'];
241
383
  };
242
384
 
@@ -252,31 +394,59 @@ export type ContentUrlArgs = {
252
394
  };
253
395
 
254
396
  export type ContentPackage = Content & {
397
+ /** A scalar representing the access level of the article, eg. 'free'. */
255
398
  readonly accessLevel?: Maybe<Scalars['AccessLevel']['output']>;
399
+ /** An alternative introductory paragraph of the article. */
256
400
  readonly altStandfirst?: Maybe<AltStandfirst>;
401
+ /** An alternative title of the article. */
257
402
  readonly altTitle?: Maybe<AltTitle>;
403
+ /** An array of concepts related to the article, eg. organisations or topics. */
258
404
  readonly annotations?: Maybe<ReadonlyArray<Maybe<Concept>>>;
405
+ /** An abstract syntax tree of the article content. */
259
406
  readonly body?: Maybe<RichText>;
407
+ /** The raw string of the XML as returned from ContentAPI. */
260
408
  readonly bodyXML?: Maybe<Scalars['String']['output']>;
409
+ /** An abstract syntax tree of the authors of the article. */
261
410
  readonly byline?: Maybe<StructuredContent>;
411
+ /** A scalar representing whether the article can be syndicated, ie. published by a third party site. */
262
412
  readonly canBeSyndicated?: Maybe<Scalars['CanBeSyndicated']['output']>;
413
+ /** Whether comments are enabled on the article. */
263
414
  readonly commentsEnabled?: Maybe<Scalars['Boolean']['output']>;
415
+ /** The child articles of this content package. */
264
416
  readonly contains?: Maybe<ReadonlyArray<Maybe<Teaser>>>;
417
+ /** The number of child articles in this content package. */
265
418
  readonly containsLength?: Maybe<Scalars['Int']['output']>;
419
+ /** A design object containing the theme and layout of the article. */
266
420
  readonly design?: Maybe<Design>;
421
+ /** The editorial division the article belongs to, eg. 'FT-SpecialReports'. */
267
422
  readonly editorialDesk?: Maybe<Scalars['String']['output']>;
423
+ /** The first ISO string date the article was published, eg. '2024-04-03T10:35:52.443Z'. */
268
424
  readonly firstPublishedDate: Scalars['String']['output'];
425
+ /** The unique identifier of the article - a uuid or a url. */
269
426
  readonly id: Scalars['ID']['output'];
427
+ /** The concept to use for instant alert CTAs. */
270
428
  readonly instantAlertConcept?: Maybe<Concept>;
429
+ /** An image object containing the url and the caption, to be displayed usually before the article content. */
271
430
  readonly mainImage?: Maybe<Image>;
431
+ /** The party that originated the article, eg. 'FT'. */
272
432
  readonly originatingParty?: Maybe<Scalars['String']['output']>;
433
+ /** The ISO string date the article was published, eg. '2024-04-03T10:35:52.443Z'. */
273
434
  readonly publishedDate: Scalars['String']['output'];
435
+ /** The number of milliseconds since the unix epoch the article was published, eg '1712140552443'. */
436
+ readonly publishedTimestamp: Scalars['Float']['output'];
437
+ /** An introductory paragraph of the article. */
274
438
  readonly standfirst?: Maybe<Scalars['String']['output']>;
439
+ /** The optional table of contents for this content package. */
275
440
  readonly tableOfContents?: Maybe<TableOfContents>;
441
+ /** A promotional thumbnail / snapshot of the article. */
276
442
  readonly teaser?: Maybe<Teaser>;
443
+ /** The title of the article. */
277
444
  readonly title: Scalars['String']['output'];
445
+ /** A banner located usually at the top of articles containing the title, the standfirst and any images. */
278
446
  readonly topper?: Maybe<Topper>;
447
+ /** The type of the article, eg. 'Article' or 'Video'. */
279
448
  readonly type: Scalars['ContentType']['output'];
449
+ /** The url of the concept. Vanity urls replace long, randomly generated urls - they are more user friendly and concise. Relative urls are relative to the current domain. */
280
450
  readonly url: Scalars['String']['output'];
281
451
  };
282
452
 
@@ -298,79 +468,135 @@ export type ContentPackageUrlArgs = {
298
468
  };
299
469
 
300
470
  export type DeepLandscapeTopper = Topper & TopperWithBrand & TopperWithImages & TopperWithTheme & {
471
+ /** Whether the topper should have a background box. */
301
472
  readonly backgroundBox?: Maybe<Scalars['Boolean']['output']>;
473
+ /** The background colour of the topper. */
302
474
  readonly backgroundColour?: Maybe<Scalars['TopperBackgroundColour']['output']>;
475
+ /** The concept object of the brand, eg. {'type': 'BRAND', 'prefLabel': 'FT Magazine', ...}. */
303
476
  readonly brandConcept?: Maybe<Concept>;
477
+ /** The concept object to be displayed, eg. {'type': 'TOPIC', 'prefLabel': 'Non-dom tax status', ...}. */
304
478
  readonly displayConcept?: Maybe<Concept>;
479
+ /** A fallback image to be used if the 'images' are not availableimages: [Image!]!. */
305
480
  readonly fallbackImage?: Maybe<Image>;
481
+ /** The variant of the follow button to be displayed on the topper. */
306
482
  readonly followButtonVariant?: Maybe<Scalars['FollowButtonVariant']['output']>;
483
+ /** The concept object of the genre, eg. {'type': 'GENRE', 'prefLabel': 'Opinion', ...}. */
307
484
  readonly genreConcept?: Maybe<Concept>;
485
+ /** The headline text of the topper. */
308
486
  readonly headline: Scalars['String']['output'];
487
+ /** An array of images to be displayed on the topper. */
309
488
  readonly images: ReadonlyArray<Image>;
489
+ /** An abstract syntax tree of the introduction text. */
310
490
  readonly intro?: Maybe<RichText>;
491
+ /** Whether the headline should be large. */
311
492
  readonly isLargeHeadline?: Maybe<Scalars['Boolean']['output']>;
493
+ /** The layout of the topper, eg. 'split-text-left'. */
312
494
  readonly layout?: Maybe<Scalars['String']['output']>;
495
+ /** Whether the topper should have a text shadow. */
313
496
  readonly textShadow?: Maybe<Scalars['Boolean']['output']>;
314
497
  };
315
498
 
316
499
  export type DeepPortraitTopper = Topper & TopperWithBrand & TopperWithImages & TopperWithTheme & {
500
+ /** Whether the topper should have a background box. */
317
501
  readonly backgroundBox?: Maybe<Scalars['Boolean']['output']>;
502
+ /** The background colour of the topper. */
318
503
  readonly backgroundColour?: Maybe<Scalars['TopperBackgroundColour']['output']>;
504
+ /** The concept object of the brand, eg. {'type': 'BRAND', 'prefLabel': 'FT Magazine', ...}. */
319
505
  readonly brandConcept?: Maybe<Concept>;
506
+ /** The concept object to be displayed, eg. {'type': 'TOPIC', 'prefLabel': 'Non-dom tax status', ...}. */
320
507
  readonly displayConcept?: Maybe<Concept>;
508
+ /** A fallback image to be used if the 'images' are not availableimages: [Image!]!. */
321
509
  readonly fallbackImage?: Maybe<Image>;
510
+ /** The variant of the follow button to be displayed on the topper. */
322
511
  readonly followButtonVariant?: Maybe<Scalars['FollowButtonVariant']['output']>;
512
+ /** The concept object of the genre, eg. {'type': 'GENRE', 'prefLabel': 'Opinion', ...}. */
323
513
  readonly genreConcept?: Maybe<Concept>;
514
+ /** The headline text of the topper. */
324
515
  readonly headline: Scalars['String']['output'];
516
+ /** An array of images to be displayed on the topper. */
325
517
  readonly images: ReadonlyArray<Image>;
518
+ /** An abstract syntax tree of the introduction text. */
326
519
  readonly intro?: Maybe<RichText>;
520
+ /** Whether the headline should be large. */
327
521
  readonly isLargeHeadline?: Maybe<Scalars['Boolean']['output']>;
522
+ /** The layout of the topper, eg. 'split-text-left'. */
328
523
  readonly layout?: Maybe<Scalars['String']['output']>;
524
+ /** Whether the topper should have a text shadow. */
329
525
  readonly textShadow?: Maybe<Scalars['Boolean']['output']>;
330
526
  };
331
527
 
332
528
  export type Design = {
529
+ /** The layout, eg. 'default'. */
333
530
  readonly layout?: Maybe<Scalars['String']['output']>;
531
+ /** A scalar representing the theme of the design, eg. 'extra-wide'. */
334
532
  readonly theme?: Maybe<Scalars['PackageDesign']['output']>;
335
533
  };
336
534
 
337
535
  export type Flourish = Reference & {
536
+ /** The fallback image to be used if the flourish graphics cannot be loaded. */
338
537
  readonly fallbackImage?: Maybe<FlourishFallback>;
538
+ /** The type of the reference, eg. 'flourish'. */
339
539
  readonly type: Scalars['String']['output'];
340
540
  };
341
541
 
342
542
  export type FlourishFallback = {
543
+ /** The height in pixels of the fallback image. */
343
544
  readonly height?: Maybe<Scalars['Int']['output']>;
545
+ /** The url of the fallback image. */
344
546
  readonly url?: Maybe<Scalars['String']['output']>;
547
+ /** The width in pixels of the fallback image. */
345
548
  readonly width?: Maybe<Scalars['Int']['output']>;
346
549
  };
347
550
 
348
551
  export type FullBleedTopper = Topper & TopperWithBrand & TopperWithImages & TopperWithTheme & {
552
+ /** Whether the topper should have a background box. */
349
553
  readonly backgroundBox?: Maybe<Scalars['Boolean']['output']>;
554
+ /** The background colour of the topper. */
350
555
  readonly backgroundColour?: Maybe<Scalars['TopperBackgroundColour']['output']>;
556
+ /** The concept object of the brand, eg. {'type': 'BRAND', 'prefLabel': 'FT Magazine', ...}. */
351
557
  readonly brandConcept?: Maybe<Concept>;
558
+ /** The concept object to be displayed, eg. {'type': 'TOPIC', 'prefLabel': 'Non-dom tax status', ...}. */
352
559
  readonly displayConcept?: Maybe<Concept>;
560
+ /** A fallback image to be used if the 'images' are not availableimages: [Image!]!. */
353
561
  readonly fallbackImage?: Maybe<Image>;
562
+ /** The variant of the follow button to be displayed on the topper. */
354
563
  readonly followButtonVariant?: Maybe<Scalars['FollowButtonVariant']['output']>;
564
+ /** The concept object of the genre, eg. {'type': 'GENRE', 'prefLabel': 'Opinion', ...}. */
355
565
  readonly genreConcept?: Maybe<Concept>;
566
+ /** The headline text of the topper. */
356
567
  readonly headline: Scalars['String']['output'];
568
+ /** An array of images to be displayed on the topper. */
357
569
  readonly images: ReadonlyArray<Image>;
570
+ /** An abstract syntax tree of the introduction text. */
358
571
  readonly intro?: Maybe<RichText>;
572
+ /** Whether the headline should be large. */
359
573
  readonly isLargeHeadline?: Maybe<Scalars['Boolean']['output']>;
574
+ /** The layout of the topper, eg. 'split-text-left'. */
360
575
  readonly layout?: Maybe<Scalars['String']['output']>;
576
+ /** Whether the topper should have a text shadow. */
361
577
  readonly textShadow?: Maybe<Scalars['Boolean']['output']>;
362
578
  };
363
579
 
364
580
  export type Image = {
581
+ /** Text describing the content of the image, usually hidden from the user unless the image is not available. It is to be read by screen readers. */
365
582
  readonly altText?: Maybe<Scalars['String']['output']>;
583
+ /** Text describing the content of the image, always shown next to the image. */
366
584
  readonly caption?: Maybe<Scalars['String']['output']>;
585
+ /** The credit of the image, eg. 'Getty Images'. */
367
586
  readonly credit?: Maybe<Scalars['String']['output']>;
587
+ /** The format of the image, eg. 'portrait'. */
368
588
  readonly format: Scalars['ImageFormat']['output'];
589
+ /** The height of the image in pixels. */
369
590
  readonly height?: Maybe<Scalars['Int']['output']>;
591
+ /** The unique identifier of the image - a uuid or a url. */
370
592
  readonly id: Scalars['String']['output'];
593
+ /** An array of image sources, ie. different images to render based on input width resulting in responsive images. */
371
594
  readonly sourceSet: ReadonlyArray<ImageSource>;
595
+ /** The type of the image, eg. 'graphic'. */
372
596
  readonly type?: Maybe<Scalars['ImageType']['output']>;
597
+ /** The url of the image, eg. 'https://www.ft.com/__origami/service/image/v2/images/raw/ftcms%3Aimage%3A0e7e7b6e-4e7b-11e9-bde6-79e4b4311f90?source=next&fit=scale-down&width=700'. */
373
598
  readonly url?: Maybe<Scalars['String']['output']>;
599
+ /** The width of the image in pixels. */
374
600
  readonly width?: Maybe<Scalars['Int']['output']>;
375
601
  };
376
602
 
@@ -381,15 +607,25 @@ export type ImageSourceSetArgs = {
381
607
  };
382
608
 
383
609
  export type ImageDesktop = Image & {
610
+ /** Text describing the content of the image, usually hidden from the user unless the image is not available. It is to be read by screen readers. */
384
611
  readonly altText?: Maybe<Scalars['String']['output']>;
612
+ /** Text describing the content of the image, always shown next to the image. */
385
613
  readonly caption?: Maybe<Scalars['String']['output']>;
614
+ /** The credit of the image, eg. 'Getty Images'. */
386
615
  readonly credit?: Maybe<Scalars['String']['output']>;
616
+ /** The format of the image, eg. 'portrait'. */
387
617
  readonly format: Scalars['ImageFormat']['output'];
618
+ /** The height of the image in pixels. */
388
619
  readonly height?: Maybe<Scalars['Int']['output']>;
620
+ /** The unique identifier of the image - a uuid or a url. */
389
621
  readonly id: Scalars['String']['output'];
622
+ /** An array of image sources, ie. different images to render based on input width resulting in responsive images. */
390
623
  readonly sourceSet: ReadonlyArray<ImageSource>;
624
+ /** The type of the image, eg. 'graphic'. */
391
625
  readonly type?: Maybe<Scalars['ImageType']['output']>;
626
+ /** The url of the image, eg. 'https://www.ft.com/__origami/service/image/v2/images/raw/ftcms%3Aimage%3A0e7e7b6e-4e7b-11e9-bde6-79e4b4311f90?source=next&fit=scale-down&width=700'. */
392
627
  readonly url?: Maybe<Scalars['String']['output']>;
628
+ /** The width of the image in pixels. */
393
629
  readonly width?: Maybe<Scalars['Int']['output']>;
394
630
  };
395
631
 
@@ -400,15 +636,25 @@ export type ImageDesktopSourceSetArgs = {
400
636
  };
401
637
 
402
638
  export type ImageLandscape = Image & {
639
+ /** Text describing the content of the image, usually hidden from the user unless the image is not available. It is to be read by screen readers. */
403
640
  readonly altText?: Maybe<Scalars['String']['output']>;
641
+ /** Text describing the content of the image, always shown next to the image. */
404
642
  readonly caption?: Maybe<Scalars['String']['output']>;
643
+ /** The credit of the image, eg. 'Getty Images'. */
405
644
  readonly credit?: Maybe<Scalars['String']['output']>;
645
+ /** The format of the image, eg. 'portrait'. */
406
646
  readonly format: Scalars['ImageFormat']['output'];
647
+ /** The height of the image in pixels. */
407
648
  readonly height?: Maybe<Scalars['Int']['output']>;
649
+ /** The unique identifier of the image - a uuid or a url. */
408
650
  readonly id: Scalars['String']['output'];
651
+ /** An array of image sources, ie. different images to render based on input width resulting in responsive images. */
409
652
  readonly sourceSet: ReadonlyArray<ImageSource>;
653
+ /** The type of the image, eg. 'graphic'. */
410
654
  readonly type?: Maybe<Scalars['ImageType']['output']>;
655
+ /** The url of the image, eg. 'https://www.ft.com/__origami/service/image/v2/images/raw/ftcms%3Aimage%3A0e7e7b6e-4e7b-11e9-bde6-79e4b4311f90?source=next&fit=scale-down&width=700'. */
411
656
  readonly url?: Maybe<Scalars['String']['output']>;
657
+ /** The width of the image in pixels. */
412
658
  readonly width?: Maybe<Scalars['Int']['output']>;
413
659
  };
414
660
 
@@ -419,15 +665,25 @@ export type ImageLandscapeSourceSetArgs = {
419
665
  };
420
666
 
421
667
  export type ImageMobile = Image & {
668
+ /** Text describing the content of the image, usually hidden from the user unless the image is not available. It is to be read by screen readers. */
422
669
  readonly altText?: Maybe<Scalars['String']['output']>;
670
+ /** Text describing the content of the image, always shown next to the image. */
423
671
  readonly caption?: Maybe<Scalars['String']['output']>;
672
+ /** The credit of the image, eg. 'Getty Images'. */
424
673
  readonly credit?: Maybe<Scalars['String']['output']>;
674
+ /** The format of the image, eg. 'portrait'. */
425
675
  readonly format: Scalars['ImageFormat']['output'];
676
+ /** The height of the image in pixels. */
426
677
  readonly height?: Maybe<Scalars['Int']['output']>;
678
+ /** The unique identifier of the image - a uuid or a url. */
427
679
  readonly id: Scalars['String']['output'];
680
+ /** An array of image sources, ie. different images to render based on input width resulting in responsive images. */
428
681
  readonly sourceSet: ReadonlyArray<ImageSource>;
682
+ /** The type of the image, eg. 'graphic'. */
429
683
  readonly type?: Maybe<Scalars['ImageType']['output']>;
684
+ /** The url of the image, eg. 'https://www.ft.com/__origami/service/image/v2/images/raw/ftcms%3Aimage%3A0e7e7b6e-4e7b-11e9-bde6-79e4b4311f90?source=next&fit=scale-down&width=700'. */
430
685
  readonly url?: Maybe<Scalars['String']['output']>;
686
+ /** The width of the image in pixels. */
431
687
  readonly width?: Maybe<Scalars['Int']['output']>;
432
688
  };
433
689
 
@@ -438,15 +694,25 @@ export type ImageMobileSourceSetArgs = {
438
694
  };
439
695
 
440
696
  export type ImagePortrait = Image & {
697
+ /** Text describing the content of the image, usually hidden from the user unless the image is not available. It is to be read by screen readers. */
441
698
  readonly altText?: Maybe<Scalars['String']['output']>;
699
+ /** Text describing the content of the image, always shown next to the image. */
442
700
  readonly caption?: Maybe<Scalars['String']['output']>;
701
+ /** The credit of the image, eg. 'Getty Images'. */
443
702
  readonly credit?: Maybe<Scalars['String']['output']>;
703
+ /** The format of the image, eg. 'portrait'. */
444
704
  readonly format: Scalars['ImageFormat']['output'];
705
+ /** The height of the image in pixels. */
445
706
  readonly height?: Maybe<Scalars['Int']['output']>;
707
+ /** The unique identifier of the image - a uuid or a url. */
446
708
  readonly id: Scalars['String']['output'];
709
+ /** An array of image sources, ie. different images to render based on input width resulting in responsive images. */
447
710
  readonly sourceSet: ReadonlyArray<ImageSource>;
711
+ /** The type of the image, eg. 'graphic'. */
448
712
  readonly type?: Maybe<Scalars['ImageType']['output']>;
713
+ /** The url of the image, eg. 'https://www.ft.com/__origami/service/image/v2/images/raw/ftcms%3Aimage%3A0e7e7b6e-4e7b-11e9-bde6-79e4b4311f90?source=next&fit=scale-down&width=700'. */
449
714
  readonly url?: Maybe<Scalars['String']['output']>;
715
+ /** The width of the image in pixels. */
450
716
  readonly width?: Maybe<Scalars['Int']['output']>;
451
717
  };
452
718
 
@@ -457,26 +723,41 @@ export type ImagePortraitSourceSetArgs = {
457
723
  };
458
724
 
459
725
  export type ImageSet = Reference & {
726
+ /** A set of images with different sizes and formats. */
460
727
  readonly picture?: Maybe<Picture>;
728
+ /** The type of the reference, eg. 'image-set'. */
461
729
  readonly type: Scalars['String']['output'];
462
730
  };
463
731
 
464
732
  export type ImageSource = {
733
+ /** The device pixel ratio. DPR is calculated as DPR = Physical Pixels (pixels seen on screen) / Logical Pixels (pixel that can fit in a given space). */
465
734
  readonly dpr?: Maybe<Scalars['Int']['output']>;
735
+ /** The url of the image source, eg. 'https://www.ft.com/__origami/service/image/v2/images/raw/ftcms%3Aimage%3A0e7e7b6e-4e7b-11e9-bde6-79e4b4311f90?source=next&fit=scale-down&width=700'. */
466
736
  readonly url: Scalars['String']['output'];
737
+ /** The width of the image source in pixels. */
467
738
  readonly width?: Maybe<Scalars['Int']['output']>;
468
739
  };
469
740
 
470
741
  export type ImageSquare = Image & {
742
+ /** Text describing the content of the image, usually hidden from the user unless the image is not available. It is to be read by screen readers. */
471
743
  readonly altText?: Maybe<Scalars['String']['output']>;
744
+ /** Text describing the content of the image, always shown next to the image. */
472
745
  readonly caption?: Maybe<Scalars['String']['output']>;
746
+ /** The credit of the image, eg. 'Getty Images'. */
473
747
  readonly credit?: Maybe<Scalars['String']['output']>;
748
+ /** The format of the image, eg. 'portrait'. */
474
749
  readonly format: Scalars['ImageFormat']['output'];
750
+ /** The height of the image in pixels. */
475
751
  readonly height?: Maybe<Scalars['Int']['output']>;
752
+ /** The unique identifier of the image - a uuid or a url. */
476
753
  readonly id: Scalars['String']['output'];
754
+ /** An array of image sources, ie. different images to render based on input width resulting in responsive images. */
477
755
  readonly sourceSet: ReadonlyArray<ImageSource>;
756
+ /** The type of the image, eg. 'graphic'. */
478
757
  readonly type?: Maybe<Scalars['ImageType']['output']>;
758
+ /** The url of the image, eg. 'https://www.ft.com/__origami/service/image/v2/images/raw/ftcms%3Aimage%3A0e7e7b6e-4e7b-11e9-bde6-79e4b4311f90?source=next&fit=scale-down&width=700'. */
479
759
  readonly url?: Maybe<Scalars['String']['output']>;
760
+ /** The width of the image in pixels. */
480
761
  readonly width?: Maybe<Scalars['Int']['output']>;
481
762
  };
482
763
 
@@ -487,15 +768,25 @@ export type ImageSquareSourceSetArgs = {
487
768
  };
488
769
 
489
770
  export type ImageSquareFtEdit = Image & {
771
+ /** Text describing the content of the image, usually hidden from the user unless the image is not available. It is to be read by screen readers. */
490
772
  readonly altText?: Maybe<Scalars['String']['output']>;
773
+ /** Text describing the content of the image, always shown next to the image. */
491
774
  readonly caption?: Maybe<Scalars['String']['output']>;
775
+ /** The credit of the image, eg. 'Getty Images'. */
492
776
  readonly credit?: Maybe<Scalars['String']['output']>;
777
+ /** The format of the image, eg. 'portrait'. */
493
778
  readonly format: Scalars['ImageFormat']['output'];
779
+ /** The height of the image in pixels. */
494
780
  readonly height?: Maybe<Scalars['Int']['output']>;
781
+ /** The unique identifier of the image - a uuid or a url. */
495
782
  readonly id: Scalars['String']['output'];
783
+ /** An array of image sources, ie. different images to render based on input width resulting in responsive images. */
496
784
  readonly sourceSet: ReadonlyArray<ImageSource>;
785
+ /** The type of the image, eg. 'graphic'. */
497
786
  readonly type?: Maybe<Scalars['ImageType']['output']>;
787
+ /** The url of the image, eg. 'https://www.ft.com/__origami/service/image/v2/images/raw/ftcms%3Aimage%3A0e7e7b6e-4e7b-11e9-bde6-79e4b4311f90?source=next&fit=scale-down&width=700'. */
498
788
  readonly url?: Maybe<Scalars['String']['output']>;
789
+ /** The width of the image in pixels. */
499
790
  readonly width?: Maybe<Scalars['Int']['output']>;
500
791
  };
501
792
 
@@ -506,15 +797,25 @@ export type ImageSquareFtEditSourceSetArgs = {
506
797
  };
507
798
 
508
799
  export type ImageStandard = Image & {
800
+ /** Text describing the content of the image, usually hidden from the user unless the image is not available. It is to be read by screen readers. */
509
801
  readonly altText?: Maybe<Scalars['String']['output']>;
802
+ /** Text describing the content of the image, always shown next to the image. */
510
803
  readonly caption?: Maybe<Scalars['String']['output']>;
804
+ /** The credit of the image, eg. 'Getty Images'. */
511
805
  readonly credit?: Maybe<Scalars['String']['output']>;
806
+ /** The format of the image, eg. 'portrait'. */
512
807
  readonly format: Scalars['ImageFormat']['output'];
808
+ /** The height of the image in pixels. */
513
809
  readonly height?: Maybe<Scalars['Int']['output']>;
810
+ /** The unique identifier of the image - a uuid or a url. */
514
811
  readonly id: Scalars['String']['output'];
812
+ /** An array of image sources, ie. different images to render based on input width resulting in responsive images. */
515
813
  readonly sourceSet: ReadonlyArray<ImageSource>;
814
+ /** The type of the image, eg. 'graphic'. */
516
815
  readonly type?: Maybe<Scalars['ImageType']['output']>;
816
+ /** The url of the image, eg. 'https://www.ft.com/__origami/service/image/v2/images/raw/ftcms%3Aimage%3A0e7e7b6e-4e7b-11e9-bde6-79e4b4311f90?source=next&fit=scale-down&width=700'. */
517
817
  readonly url?: Maybe<Scalars['String']['output']>;
818
+ /** The width of the image in pixels. */
518
819
  readonly width?: Maybe<Scalars['Int']['output']>;
519
820
  };
520
821
 
@@ -525,15 +826,25 @@ export type ImageStandardSourceSetArgs = {
525
826
  };
526
827
 
527
828
  export type ImageStandardInline = Image & {
829
+ /** Text describing the content of the image, usually hidden from the user unless the image is not available. It is to be read by screen readers. */
528
830
  readonly altText?: Maybe<Scalars['String']['output']>;
831
+ /** Text describing the content of the image, always shown next to the image. */
529
832
  readonly caption?: Maybe<Scalars['String']['output']>;
833
+ /** The credit of the image, eg. 'Getty Images'. */
530
834
  readonly credit?: Maybe<Scalars['String']['output']>;
835
+ /** The format of the image, eg. 'portrait'. */
531
836
  readonly format: Scalars['ImageFormat']['output'];
837
+ /** The height of the image in pixels. */
532
838
  readonly height?: Maybe<Scalars['Int']['output']>;
839
+ /** The unique identifier of the image - a uuid or a url. */
533
840
  readonly id: Scalars['String']['output'];
841
+ /** An array of image sources, ie. different images to render based on input width resulting in responsive images. */
534
842
  readonly sourceSet: ReadonlyArray<ImageSource>;
843
+ /** The type of the image, eg. 'graphic'. */
535
844
  readonly type?: Maybe<Scalars['ImageType']['output']>;
845
+ /** The url of the image, eg. 'https://www.ft.com/__origami/service/image/v2/images/raw/ftcms%3Aimage%3A0e7e7b6e-4e7b-11e9-bde6-79e4b4311f90?source=next&fit=scale-down&width=700'. */
536
846
  readonly url?: Maybe<Scalars['String']['output']>;
847
+ /** The width of the image in pixels. */
537
848
  readonly width?: Maybe<Scalars['Int']['output']>;
538
849
  };
539
850
 
@@ -544,15 +855,25 @@ export type ImageStandardInlineSourceSetArgs = {
544
855
  };
545
856
 
546
857
  export type ImageWide = Image & {
858
+ /** Text describing the content of the image, usually hidden from the user unless the image is not available. It is to be read by screen readers. */
547
859
  readonly altText?: Maybe<Scalars['String']['output']>;
860
+ /** Text describing the content of the image, always shown next to the image. */
548
861
  readonly caption?: Maybe<Scalars['String']['output']>;
862
+ /** The credit of the image, eg. 'Getty Images'. */
549
863
  readonly credit?: Maybe<Scalars['String']['output']>;
864
+ /** The format of the image, eg. 'portrait'. */
550
865
  readonly format: Scalars['ImageFormat']['output'];
866
+ /** The height of the image in pixels. */
551
867
  readonly height?: Maybe<Scalars['Int']['output']>;
868
+ /** The unique identifier of the image - a uuid or a url. */
552
869
  readonly id: Scalars['String']['output'];
870
+ /** An array of image sources, ie. different images to render based on input width resulting in responsive images. */
553
871
  readonly sourceSet: ReadonlyArray<ImageSource>;
872
+ /** The type of the image, eg. 'graphic'. */
554
873
  readonly type?: Maybe<Scalars['ImageType']['output']>;
874
+ /** The url of the image, eg. 'https://www.ft.com/__origami/service/image/v2/images/raw/ftcms%3Aimage%3A0e7e7b6e-4e7b-11e9-bde6-79e4b4311f90?source=next&fit=scale-down&width=700'. */
555
875
  readonly url?: Maybe<Scalars['String']['output']>;
876
+ /** The width of the image in pixels. */
556
877
  readonly width?: Maybe<Scalars['Int']['output']>;
557
878
  };
558
879
 
@@ -562,47 +883,85 @@ export type ImageWideSourceSetArgs = {
562
883
  width?: InputMaybe<Scalars['Int']['input']>;
563
884
  };
564
885
 
886
+ /** Indicators are used to determine teaser styling. */
565
887
  export type Indicators = {
888
+ /** The access level of the teaser, eg. 'free' or 'premium'. */
566
889
  readonly accessLevel?: Maybe<Scalars['AccessLevel']['output']>;
890
+ /** Whether the teaser is a column, ie. has one author. */
567
891
  readonly isColumn?: Maybe<Scalars['Boolean']['output']>;
892
+ /** Whether the teaser is an editor's choice. */
568
893
  readonly isEditorsChoice?: Maybe<Scalars['Boolean']['output']>;
894
+ /** Whether the teaser is exclusive. */
569
895
  readonly isExclusive?: Maybe<Scalars['Boolean']['output']>;
896
+ /** Whether the teaser is an opinion piece. */
570
897
  readonly isOpinion?: Maybe<Scalars['Boolean']['output']>;
898
+ /** Whether the teaser is a podcast. */
571
899
  readonly isPodcast?: Maybe<Scalars['Boolean']['output']>;
900
+ /** Whether the teaser is a scoop. */
572
901
  readonly isScoop?: Maybe<Scalars['Boolean']['output']>;
573
902
  };
574
903
 
575
904
  export type LayoutImage = Reference & {
905
+ /** A set of images with different sizes and formats. */
576
906
  readonly picture?: Maybe<Picture>;
907
+ /** The type of the reference, eg. 'layout-image'. */
577
908
  readonly type: Scalars['String']['output'];
578
909
  };
579
910
 
580
911
  export type LiveBlogPackage = Content & {
912
+ /** A scalar representing the access level of the article, eg. 'free'. */
581
913
  readonly accessLevel?: Maybe<Scalars['AccessLevel']['output']>;
914
+ /** An alternative introductory paragraph of the article. */
582
915
  readonly altStandfirst?: Maybe<AltStandfirst>;
916
+ /** An alternative title of the article. */
583
917
  readonly altTitle?: Maybe<AltTitle>;
918
+ /** An array of concepts related to the article, eg. organisations or topics. */
584
919
  readonly annotations?: Maybe<ReadonlyArray<Maybe<Concept>>>;
920
+ /** An abstract syntax tree of the article content. */
585
921
  readonly body?: Maybe<RichText>;
922
+ /** The raw string of the XML as returned from ContentAPI. */
586
923
  readonly bodyXML?: Maybe<Scalars['String']['output']>;
924
+ /** An abstract syntax tree of the authors of the article. */
587
925
  readonly byline?: Maybe<StructuredContent>;
926
+ /** A scalar representing whether the article can be syndicated, ie. published by a third party site. */
588
927
  readonly canBeSyndicated?: Maybe<Scalars['CanBeSyndicated']['output']>;
928
+ /** Whether comments are enabled on the article. */
589
929
  readonly commentsEnabled?: Maybe<Scalars['Boolean']['output']>;
930
+ /** A design object containing the theme and layout of the article. */
590
931
  readonly design?: Maybe<Design>;
932
+ /** The editorial division the article belongs to, eg. 'FT-SpecialReports'. */
591
933
  readonly editorialDesk?: Maybe<Scalars['String']['output']>;
934
+ /** The first ISO string date the article was published, eg. '2024-04-03T10:35:52.443Z'. */
592
935
  readonly firstPublishedDate: Scalars['String']['output'];
936
+ /** The unique identifier of the article - a uuid or a url. */
593
937
  readonly id: Scalars['ID']['output'];
938
+ /** The concept to use for instant alert CTAs. */
594
939
  readonly instantAlertConcept?: Maybe<Concept>;
940
+ /** The child articles of this live blog package. */
595
941
  readonly liveBlogPosts?: Maybe<ReadonlyArray<Maybe<Content>>>;
942
+ /** An image object containing the url and the caption, to be displayed usually before the article content. */
596
943
  readonly mainImage?: Maybe<Image>;
944
+ /** The party that originated the article, eg. 'FT'. */
597
945
  readonly originatingParty?: Maybe<Scalars['String']['output']>;
946
+ /** The pinned article of this live blog package. */
598
947
  readonly pinnedPost?: Maybe<Content>;
948
+ /** The ISO string date the article was published, eg. '2024-04-03T10:35:52.443Z'. */
599
949
  readonly publishedDate: Scalars['String']['output'];
950
+ /** The number of milliseconds since the unix epoch the article was published, eg '1712140552443'. */
951
+ readonly publishedTimestamp: Scalars['Float']['output'];
952
+ /** Whether the live blog package should be updated in real time. */
600
953
  readonly realtime?: Maybe<Scalars['Boolean']['output']>;
954
+ /** An introductory paragraph of the article. */
601
955
  readonly standfirst?: Maybe<Scalars['String']['output']>;
956
+ /** A promotional thumbnail / snapshot of the article. */
602
957
  readonly teaser?: Maybe<Teaser>;
958
+ /** The title of the article. */
603
959
  readonly title: Scalars['String']['output'];
960
+ /** A banner located usually at the top of articles containing the title, the standfirst and any images. */
604
961
  readonly topper?: Maybe<Topper>;
962
+ /** The type of the article, eg. 'Article' or 'Video'. */
605
963
  readonly type: Scalars['ContentType']['output'];
964
+ /** The url of the concept. Vanity urls replace long, randomly generated urls - they are more user friendly and concise. Relative urls are relative to the current domain. */
606
965
  readonly url: Scalars['String']['output'];
607
966
  };
608
967
 
@@ -623,31 +982,59 @@ export type LiveBlogPackageUrlArgs = {
623
982
  };
624
983
 
625
984
  export type LiveBlogPost = Content & {
985
+ /** A scalar representing the access level of the article, eg. 'free'. */
626
986
  readonly accessLevel?: Maybe<Scalars['AccessLevel']['output']>;
987
+ /** An alternative introductory paragraph of the article. */
627
988
  readonly altStandfirst?: Maybe<AltStandfirst>;
989
+ /** An alternative title of the article. */
628
990
  readonly altTitle?: Maybe<AltTitle>;
991
+ /** An array of concepts related to the article, eg. organisations or topics. */
629
992
  readonly annotations?: Maybe<ReadonlyArray<Maybe<Concept>>>;
993
+ /** An abstract syntax tree of the article content. */
630
994
  readonly body?: Maybe<RichText>;
995
+ /** The raw string of the XML as returned from ContentAPI. */
631
996
  readonly bodyXML?: Maybe<Scalars['String']['output']>;
997
+ /** An abstract syntax tree of the authors of the article. */
632
998
  readonly byline?: Maybe<StructuredContent>;
999
+ /** A scalar representing whether the article can be syndicated, ie. published by a third party site. */
633
1000
  readonly canBeSyndicated?: Maybe<Scalars['CanBeSyndicated']['output']>;
1001
+ /** Whether comments are enabled on the article. */
634
1002
  readonly commentsEnabled?: Maybe<Scalars['Boolean']['output']>;
1003
+ /** The parent article, indicating this article is a part of a series or package. */
635
1004
  readonly containedIn?: Maybe<Content>;
1005
+ /** A design object containing the theme and layout of the article. */
636
1006
  readonly design?: Maybe<Design>;
1007
+ /** The editorial division the article belongs to, eg. 'FT-SpecialReports'. */
637
1008
  readonly editorialDesk?: Maybe<Scalars['String']['output']>;
1009
+ /** The first ISO string date the article was published, eg. '2024-04-03T10:35:52.443Z'. */
638
1010
  readonly firstPublishedDate: Scalars['String']['output'];
1011
+ /** The unique identifier of the article - a uuid or a url. */
639
1012
  readonly id: Scalars['ID']['output'];
1013
+ /** An object indicating whether the article is an opinion piece. */
640
1014
  readonly indicators?: Maybe<Indicators>;
1015
+ /** The concept to use for instant alert CTAs. */
641
1016
  readonly instantAlertConcept?: Maybe<Concept>;
1017
+ /** Whether the live-blog-post should be pinned. */
642
1018
  readonly isPinned?: Maybe<Scalars['Boolean']['output']>;
1019
+ /** An image object containing the url and the caption, to be displayed usually before the article content. */
643
1020
  readonly mainImage?: Maybe<Image>;
1021
+ /** The party that originated the article, eg. 'FT'. */
644
1022
  readonly originatingParty?: Maybe<Scalars['String']['output']>;
1023
+ /** The ISO string date the article was published, eg. '2024-04-03T10:35:52.443Z'. */
645
1024
  readonly publishedDate: Scalars['String']['output'];
1025
+ /** The number of milliseconds since the unix epoch the article was published, eg '1712140552443'. */
1026
+ readonly publishedTimestamp: Scalars['Float']['output'];
1027
+ /** An introductory paragraph of the article. */
646
1028
  readonly standfirst?: Maybe<Scalars['String']['output']>;
1029
+ /** A promotional thumbnail / snapshot of the article. */
647
1030
  readonly teaser?: Maybe<Teaser>;
1031
+ /** The title of the article. */
648
1032
  readonly title: Scalars['String']['output'];
1033
+ /** A banner located usually at the top of articles containing the title, the standfirst and any images. */
649
1034
  readonly topper?: Maybe<Topper>;
1035
+ /** The type of the article, eg. 'Article' or 'Video'. */
650
1036
  readonly type: Scalars['ContentType']['output'];
1037
+ /** The url of the concept. Vanity urls replace long, randomly generated urls - they are more user friendly and concise. Relative urls are relative to the current domain. */
651
1038
  readonly url: Scalars['String']['output'];
652
1039
  };
653
1040
 
@@ -663,20 +1050,27 @@ export type LiveBlogPostUrlArgs = {
663
1050
  };
664
1051
 
665
1052
  export type MainImage = Reference & {
1053
+ /** A set of images with different sizes and formats. */
666
1054
  readonly picture?: Maybe<Picture>;
1055
+ /** The type of the reference, eg. 'main-image'. */
667
1056
  readonly type: Scalars['String']['output'];
668
1057
  };
669
1058
 
670
1059
  export type Media = {
1060
+ /** The duration of the media in milliseconds. */
671
1061
  readonly duration?: Maybe<Scalars['Int']['output']>;
1062
+ /** The filesize of the media in bytes. */
672
1063
  readonly filesize?: Maybe<Scalars['Int']['output']>;
1064
+ /** The media type eg. video/mp4. */
673
1065
  readonly mediaType?: Maybe<Scalars['String']['output']>;
1066
+ /** The url of the media, eg. 'https://next-media-api.ft.com/renditions/16868569859480/0x0.mp3'. */
674
1067
  readonly url?: Maybe<Scalars['String']['output']>;
675
1068
  };
676
1069
 
677
1070
  export type MetaLink = Concept | ContentPackage;
678
1071
 
679
1072
  export type Mutation = {
1073
+ /** A mutation to invalidate the redis cache for content-api responses for a given uuid. */
680
1074
  readonly invalidateRedisCache?: Maybe<Scalars['String']['output']>;
681
1075
  };
682
1076
 
@@ -686,17 +1080,29 @@ export type MutationInvalidateRedisCacheArgs = {
686
1080
  };
687
1081
 
688
1082
  export type OpinionTopper = Topper & TopperWithHeadshot & TopperWithTheme & {
1083
+ /** Whether the topper should have a background box. */
689
1084
  readonly backgroundBox?: Maybe<Scalars['Boolean']['output']>;
1085
+ /** The background colour of the topper. */
690
1086
  readonly backgroundColour?: Maybe<Scalars['TopperBackgroundColour']['output']>;
1087
+ /** The concept object describing details of the column author. */
691
1088
  readonly columnist?: Maybe<Concept>;
1089
+ /** The concept object to be displayed, eg. {'type': 'TOPIC', 'prefLabel': 'Non-dom tax status', ...}. */
692
1090
  readonly displayConcept?: Maybe<Concept>;
1091
+ /** The variant of the follow button to be displayed on the topper. */
693
1092
  readonly followButtonVariant?: Maybe<Scalars['FollowButtonVariant']['output']>;
1093
+ /** The concept object of the genre, eg. {'type': 'GENRE', 'prefLabel': 'Opinion', ...}. */
694
1094
  readonly genreConcept?: Maybe<Concept>;
1095
+ /** The headline text of the topper. */
695
1096
  readonly headline: Scalars['String']['output'];
1097
+ /** The url of the headshot image, eg. for columns with one key author. */
696
1098
  readonly headshot?: Maybe<Scalars['String']['output']>;
1099
+ /** An abstract syntax tree of the introduction text. */
697
1100
  readonly intro?: Maybe<RichText>;
1101
+ /** Whether the headline should be large. */
698
1102
  readonly isLargeHeadline?: Maybe<Scalars['Boolean']['output']>;
1103
+ /** The layout of the topper, eg. 'split-text-left'. */
699
1104
  readonly layout?: Maybe<Scalars['String']['output']>;
1105
+ /** Whether the topper should have a text shadow. */
700
1106
  readonly textShadow?: Maybe<Scalars['Boolean']['output']>;
701
1107
  };
702
1108
 
@@ -706,70 +1112,125 @@ export type OpinionTopperHeadshotArgs = {
706
1112
  width?: InputMaybe<Scalars['Int']['input']>;
707
1113
  };
708
1114
 
1115
+ /** A wrapper for images. */
709
1116
  export type Picture = {
1117
+ /** The alt text of the image to be used for accessibility. */
710
1118
  readonly alt: Scalars['String']['output'];
1119
+ /** The caption of the image. */
711
1120
  readonly caption?: Maybe<Scalars['String']['output']>;
1121
+ /** The credit of the image, eg. 'Getty Images'. */
712
1122
  readonly credit?: Maybe<Scalars['String']['output']>;
1123
+ /** A fallback image to be used if the 'images' are not available. */
713
1124
  readonly fallbackImage: Image;
1125
+ /** The type of the image, eg. 'image' or 'graphic'. */
714
1126
  readonly imageType: Scalars['ImageType']['output'];
1127
+ /** A set of images with different sizes and formats. */
715
1128
  readonly images: ReadonlyArray<Image>;
1129
+ /** The layout width of the image, eg, 'standard'. */
716
1130
  readonly layoutWidth?: Maybe<Scalars['String']['output']>;
717
1131
  };
718
1132
 
719
1133
  export type PictureFullBleed = Picture & {
1134
+ /** The alt text of the image to be used for accessibility. */
720
1135
  readonly alt: Scalars['String']['output'];
1136
+ /** The caption of the image. */
721
1137
  readonly caption?: Maybe<Scalars['String']['output']>;
1138
+ /** The credit of the image, eg. 'Getty Images'. */
722
1139
  readonly credit?: Maybe<Scalars['String']['output']>;
1140
+ /** A fallback image to be used if the 'images' are not available. */
723
1141
  readonly fallbackImage: Image;
1142
+ /** The type of the image, eg. 'image' or 'graphic'. */
724
1143
  readonly imageType: Scalars['ImageType']['output'];
1144
+ /** A set of images with different sizes and formats. */
725
1145
  readonly images: ReadonlyArray<Image>;
1146
+ /** The layout width of the image, eg, 'standard'. */
726
1147
  readonly layoutWidth?: Maybe<Scalars['String']['output']>;
727
1148
  };
728
1149
 
729
1150
  export type PictureInline = Picture & {
1151
+ /** The alt text of the image to be used for accessibility. */
730
1152
  readonly alt: Scalars['String']['output'];
1153
+ /** The caption of the image. */
731
1154
  readonly caption?: Maybe<Scalars['String']['output']>;
1155
+ /** The credit of the image, eg. 'Getty Images'. */
732
1156
  readonly credit?: Maybe<Scalars['String']['output']>;
1157
+ /** A fallback image to be used if the 'images' are not available. */
733
1158
  readonly fallbackImage: Image;
1159
+ /** The type of the image, eg. 'image' or 'graphic'. */
734
1160
  readonly imageType: Scalars['ImageType']['output'];
1161
+ /** A set of images with different sizes and formats. */
735
1162
  readonly images: ReadonlyArray<Image>;
1163
+ /** The layout width of the image, eg, 'standard'. */
736
1164
  readonly layoutWidth?: Maybe<Scalars['String']['output']>;
737
1165
  };
738
1166
 
739
1167
  export type PictureStandard = Picture & {
1168
+ /** The alt text of the image to be used for accessibility. */
740
1169
  readonly alt: Scalars['String']['output'];
1170
+ /** The caption of the image. */
741
1171
  readonly caption?: Maybe<Scalars['String']['output']>;
1172
+ /** The credit of the image, eg. 'Getty Images'. */
742
1173
  readonly credit?: Maybe<Scalars['String']['output']>;
1174
+ /** A fallback image to be used if the 'images' are not available. */
743
1175
  readonly fallbackImage: Image;
1176
+ /** The type of the image, eg. 'image' or 'graphic'. */
744
1177
  readonly imageType: Scalars['ImageType']['output'];
1178
+ /** A set of images with different sizes and formats. */
745
1179
  readonly images: ReadonlyArray<Image>;
1180
+ /** The layout width of the image, eg, 'standard'. */
746
1181
  readonly layoutWidth?: Maybe<Scalars['String']['output']>;
747
1182
  };
748
1183
 
749
1184
  export type Placeholder = Content & {
1185
+ /** A scalar representing the access level of the article, eg. 'free'. */
750
1186
  readonly accessLevel?: Maybe<Scalars['AccessLevel']['output']>;
1187
+ /** An alternative introductory paragraph of the article. */
751
1188
  readonly altStandfirst?: Maybe<AltStandfirst>;
1189
+ /** An alternative title of the article. */
752
1190
  readonly altTitle?: Maybe<AltTitle>;
1191
+ /** An array of concepts related to the article, eg. organisations or topics. */
753
1192
  readonly annotations?: Maybe<ReadonlyArray<Maybe<Concept>>>;
1193
+ /** An abstract syntax tree of the article content. */
754
1194
  readonly body?: Maybe<RichText>;
1195
+ /** The raw string of the XML as returned from ContentAPI. */
755
1196
  readonly bodyXML?: Maybe<Scalars['String']['output']>;
1197
+ /** An abstract syntax tree of the authors of the article. */
756
1198
  readonly byline?: Maybe<StructuredContent>;
1199
+ /** A scalar representing whether the article can be syndicated, ie. published by a third party site. */
757
1200
  readonly canBeSyndicated?: Maybe<Scalars['CanBeSyndicated']['output']>;
1201
+ /** Whether comments are enabled on the article. */
758
1202
  readonly commentsEnabled?: Maybe<Scalars['Boolean']['output']>;
1203
+ /** The parent article, indicating this article is a part of a series or package. */
759
1204
  readonly containedIn?: Maybe<Content>;
1205
+ /** A design object containing the theme and layout of the article. */
760
1206
  readonly design?: Maybe<Design>;
1207
+ /** The editorial division the article belongs to, eg. 'FT-SpecialReports'. */
761
1208
  readonly editorialDesk?: Maybe<Scalars['String']['output']>;
1209
+ /** The first ISO string date the article was published, eg. '2024-04-03T10:35:52.443Z'. */
762
1210
  readonly firstPublishedDate: Scalars['String']['output'];
1211
+ /** The unique identifier of the article - a uuid or a url. */
763
1212
  readonly id: Scalars['ID']['output'];
1213
+ /** The concept to use for instant alert CTAs. */
764
1214
  readonly instantAlertConcept?: Maybe<Concept>;
1215
+ /** An image object containing the url and the caption, to be displayed usually before the article content. */
765
1216
  readonly mainImage?: Maybe<Image>;
1217
+ /** The party that originated the article, eg. 'FT'. */
766
1218
  readonly originatingParty?: Maybe<Scalars['String']['output']>;
1219
+ /** The ISO string date the article was published, eg. '2024-04-03T10:35:52.443Z'. */
767
1220
  readonly publishedDate: Scalars['String']['output'];
1221
+ /** The number of milliseconds since the unix epoch the article was published, eg '1712140552443'. */
1222
+ readonly publishedTimestamp: Scalars['Float']['output'];
1223
+ /** An introductory paragraph of the article. */
768
1224
  readonly standfirst?: Maybe<Scalars['String']['output']>;
1225
+ /** A promotional thumbnail / snapshot of the article. */
769
1226
  readonly teaser?: Maybe<Teaser>;
1227
+ /** The title of the article. */
770
1228
  readonly title: Scalars['String']['output'];
1229
+ /** A banner located usually at the top of articles containing the title, the standfirst and any images. */
771
1230
  readonly topper?: Maybe<Topper>;
1231
+ /** The type of the article, eg. 'Article' or 'Video'. */
772
1232
  readonly type: Scalars['ContentType']['output'];
1233
+ /** The url of the concept. Vanity urls replace long, randomly generated urls - they are more user friendly and concise. Relative urls are relative to the current domain. */
773
1234
  readonly url: Scalars['String']['output'];
774
1235
  };
775
1236
 
@@ -785,18 +1246,31 @@ export type PlaceholderUrlArgs = {
785
1246
  };
786
1247
 
787
1248
  export type PodcastTopper = Topper & TopperWithBrand & TopperWithHeadshot & TopperWithTheme & {
1249
+ /** Whether the topper should have a background box. */
788
1250
  readonly backgroundBox?: Maybe<Scalars['Boolean']['output']>;
1251
+ /** The background colour of the topper. */
789
1252
  readonly backgroundColour?: Maybe<Scalars['TopperBackgroundColour']['output']>;
1253
+ /** The concept object of the brand, eg. {'type': 'BRAND', 'prefLabel': 'FT Magazine', ...}. */
790
1254
  readonly brandConcept?: Maybe<Concept>;
1255
+ /** The concept object describing details of the column author. */
791
1256
  readonly columnist?: Maybe<Concept>;
1257
+ /** The concept object to be displayed, eg. {'type': 'TOPIC', 'prefLabel': 'Non-dom tax status', ...}. */
792
1258
  readonly displayConcept?: Maybe<Concept>;
1259
+ /** The variant of the follow button to be displayed on the topper. */
793
1260
  readonly followButtonVariant?: Maybe<Scalars['FollowButtonVariant']['output']>;
1261
+ /** The concept object of the genre, eg. {'type': 'GENRE', 'prefLabel': 'Opinion', ...}. */
794
1262
  readonly genreConcept?: Maybe<Concept>;
1263
+ /** The headline text of the topper. */
795
1264
  readonly headline: Scalars['String']['output'];
1265
+ /** The url of the headshot image, eg. for columns with one key author. */
796
1266
  readonly headshot?: Maybe<Scalars['String']['output']>;
1267
+ /** An abstract syntax tree of the introduction text. */
797
1268
  readonly intro?: Maybe<RichText>;
1269
+ /** Whether the headline should be large. */
798
1270
  readonly isLargeHeadline?: Maybe<Scalars['Boolean']['output']>;
1271
+ /** The layout of the topper, eg. 'split-text-left'. */
799
1272
  readonly layout?: Maybe<Scalars['String']['output']>;
1273
+ /** Whether the topper should have a text shadow. */
800
1274
  readonly textShadow?: Maybe<Scalars['Boolean']['output']>;
801
1275
  };
802
1276
 
@@ -807,8 +1281,11 @@ export type PodcastTopperHeadshotArgs = {
807
1281
  };
808
1282
 
809
1283
  export type Query = {
1284
+ /** The resolved article content for given uuid. */
810
1285
  readonly content: Content;
1286
+ /** The article content as resolved from passed-in content-api json data. */
811
1287
  readonly contentFromJSON: Content;
1288
+ /** The version of the schema, eg. 2.0.0. */
812
1289
  readonly version: Scalars['String']['output'];
813
1290
  };
814
1291
 
@@ -823,21 +1300,26 @@ export type QueryContentFromJsonArgs = {
823
1300
  };
824
1301
 
825
1302
  export type RawImage = Reference & {
1303
+ /** The raw image object. */
826
1304
  readonly image: Image;
1305
+ /** The type of the reference, eg. 'raw-image'. */
827
1306
  readonly type: Scalars['String']['output'];
828
1307
  };
829
1308
 
830
1309
  export type Recommended = Reference & {
1310
+ /** Recommended references contain teaser thumbnails of related articles. */
831
1311
  readonly teaser?: Maybe<Teaser>;
1312
+ /** The type of the reference, eg. 'recommended'. */
832
1313
  readonly type: Scalars['String']['output'];
833
1314
  };
834
1315
 
835
1316
  export type Reference = {
1317
+ /** The type of the reference, eg. 'image-set'. References are additional data that cannot be loaded by content-tree. They will be appended to content-tree nodes during resolution. */
836
1318
  readonly type: Scalars['String']['output'];
837
1319
  };
838
1320
 
839
1321
  export type RichText = {
840
- /** Raw string of the XML as returned from ContentAPI. */
1322
+ /** Raw string of the XML as returned from content-api. */
841
1323
  readonly raw?: Maybe<Scalars['String']['output']>;
842
1324
  /** The source format eg. bodyXML. */
843
1325
  readonly source: Scalars['RichTextSource']['output'];
@@ -846,28 +1328,44 @@ export type RichText = {
846
1328
  };
847
1329
 
848
1330
  export type ScrollyImage = Reference & {
1331
+ /** A set of images with different sizes and formats. */
849
1332
  readonly picture?: Maybe<Picture>;
1333
+ /** The type of the reference, eg. 'scrolly-image'. */
850
1334
  readonly type: Scalars['String']['output'];
851
1335
  };
852
1336
 
853
1337
  export type SplitTextTopper = Topper & TopperWithBrand & TopperWithImages & TopperWithPackage & TopperWithTheme & {
1338
+ /** Whether the topper should have a background box. */
854
1339
  readonly backgroundBox?: Maybe<Scalars['Boolean']['output']>;
1340
+ /** The background colour of the topper. */
855
1341
  readonly backgroundColour?: Maybe<Scalars['TopperBackgroundColour']['output']>;
1342
+ /** The concept object of the brand, eg. {'type': 'BRAND', 'prefLabel': 'FT Magazine', ...}. */
856
1343
  readonly brandConcept?: Maybe<Concept>;
1344
+ /** The design of the topper, eg. 'standard'. */
857
1345
  readonly design?: Maybe<Scalars['String']['output']>;
1346
+ /** The concept object to be displayed, eg. {'type': 'TOPIC', 'prefLabel': 'Non-dom tax status', ...}. */
858
1347
  readonly displayConcept?: Maybe<Concept>;
1348
+ /** A fallback image to be used if the 'images' are not availableimages: [Image!]!. */
859
1349
  readonly fallbackImage?: Maybe<Image>;
1350
+ /** The variant of the follow button to be displayed on the topper. */
860
1351
  readonly followButtonVariant?: Maybe<Scalars['FollowButtonVariant']['output']>;
1352
+ /** The concept object of the genre, eg. {'type': 'GENRE', 'prefLabel': 'Opinion', ...}. */
861
1353
  readonly genreConcept?: Maybe<Concept>;
1354
+ /** The headline text of the topper. */
862
1355
  readonly headline: Scalars['String']['output'];
1356
+ /** An array of images to be displayed on the topper. */
863
1357
  readonly images: ReadonlyArray<Image>;
1358
+ /** An abstract syntax tree of the introduction text. */
864
1359
  readonly intro?: Maybe<RichText>;
1360
+ /** Whether the headline should be large. */
865
1361
  readonly isLargeHeadline?: Maybe<Scalars['Boolean']['output']>;
1362
+ /** The layout of the topper, eg. 'split-text-left'. */
866
1363
  readonly layout?: Maybe<Scalars['String']['output']>;
1364
+ /** Whether the topper should have a text shadow. */
867
1365
  readonly textShadow?: Maybe<Scalars['Boolean']['output']>;
868
1366
  };
869
1367
 
870
- /** Describes the structure of content as an abstract syntax tree */
1368
+ /** Describes the structure of content as an abstract syntax tree. */
871
1369
  export type StructuredContent = {
872
1370
  /** An array of objects containing extra information for nodes, which is fetched from external sources eg. Twitter API. */
873
1371
  readonly references: ReadonlyArray<Reference>;
@@ -878,24 +1376,40 @@ export type StructuredContent = {
878
1376
  };
879
1377
 
880
1378
  export type TableOfContents = {
1379
+ /** The formatting of the label, eg. 'part-number'. */
881
1380
  readonly labelType?: Maybe<Scalars['String']['output']>;
1381
+ /** The ordering, eg. 'exact-order'. */
882
1382
  readonly sequence?: Maybe<Scalars['String']['output']>;
883
1383
  };
884
1384
 
885
1385
  export type Teaser = {
1386
+ /** The date the content of the teaser was first published. */
886
1387
  readonly firstPublishedDate?: Maybe<Scalars['String']['output']>;
1388
+ /** The unique identifier of the teaser, a uuid or a url. */
887
1389
  readonly id?: Maybe<Scalars['String']['output']>;
1390
+ /** The image to be used as a thumbnail for the teaser. */
888
1391
  readonly image?: Maybe<Image>;
1392
+ /** An object containing a map of indicator items to boolean values, eg. accessLevel, isOpinion. */
889
1393
  readonly indicators?: Maybe<Indicators>;
1394
+ /** An object containing the metadata details of the teaser, eg. id, url, prefLabel. */
890
1395
  readonly metaAltLink?: Maybe<MetaLink>;
1396
+ /** An object containing the metadata details of the teaser, eg. id, url, prefLabel. */
891
1397
  readonly metaLink?: Maybe<MetaLink>;
1398
+ /** The text to be displayed before the metadata of the teaser. */
892
1399
  readonly metaPrefixText?: Maybe<Scalars['String']['output']>;
1400
+ /** The text to be displayed after the metadata of the teaser. */
893
1401
  readonly metaSuffixText?: Maybe<Scalars['String']['output']>;
1402
+ /** The date the content of the teaser was published. */
894
1403
  readonly publishedDate?: Maybe<Scalars['String']['output']>;
1404
+ /** The introductory text of the teaser. */
895
1405
  readonly standfirst?: Maybe<Scalars['String']['output']>;
1406
+ /** The theme to use for the teaser, eg. 'opinion' or 'news'. */
896
1407
  readonly theme?: Maybe<Scalars['String']['output']>;
1408
+ /** The title of the teaser. */
897
1409
  readonly title?: Maybe<Scalars['String']['output']>;
1410
+ /** The type of the teaser, eg. 'article' or 'video'. */
898
1411
  readonly type?: Maybe<Scalars['String']['output']>;
1412
+ /** The url of the content that the teaser refers to. */
899
1413
  readonly url: Scalars['String']['output'];
900
1414
  };
901
1415
 
@@ -905,22 +1419,33 @@ export type TeaserUrlArgs = {
905
1419
  };
906
1420
 
907
1421
  export type Topper = {
1422
+ /** Whether the topper should have a background box. */
908
1423
  readonly backgroundBox?: Maybe<Scalars['Boolean']['output']>;
1424
+ /** The background colour of the topper. */
909
1425
  readonly backgroundColour?: Maybe<Scalars['TopperBackgroundColour']['output']>;
1426
+ /** The concept object to be displayed, eg. {'type': 'TOPIC', 'prefLabel': 'Non-dom tax status', ...}. */
910
1427
  readonly displayConcept?: Maybe<Concept>;
1428
+ /** The variant of the follow button to be displayed on the topper. */
911
1429
  readonly followButtonVariant?: Maybe<Scalars['FollowButtonVariant']['output']>;
1430
+ /** The concept object of the genre, eg. {'type': 'GENRE', 'prefLabel': 'Opinion', ...}. */
912
1431
  readonly genreConcept?: Maybe<Concept>;
1432
+ /** The headline text of the topper. */
913
1433
  readonly headline: Scalars['String']['output'];
1434
+ /** An abstract syntax tree of the introduction text. */
914
1435
  readonly intro?: Maybe<RichText>;
1436
+ /** Whether the topper should have a text shadow. */
915
1437
  readonly textShadow?: Maybe<Scalars['Boolean']['output']>;
916
1438
  };
917
1439
 
918
1440
  export type TopperWithBrand = {
1441
+ /** The concept object of the brand, eg. {'type': 'BRAND', 'prefLabel': 'FT Magazine', ...}. */
919
1442
  readonly brandConcept?: Maybe<Concept>;
1443
+ /** The concept object of the genre, eg. {'type': 'GENRE', 'prefLabel': 'Opinion', ...}. */
920
1444
  readonly genreConcept?: Maybe<Concept>;
921
1445
  };
922
1446
 
923
1447
  export type TopperWithHeadshot = {
1448
+ /** The url of the headshot image, eg. for columns with one key author. */
924
1449
  readonly headshot?: Maybe<Scalars['String']['output']>;
925
1450
  };
926
1451
 
@@ -931,47 +1456,79 @@ export type TopperWithHeadshotHeadshotArgs = {
931
1456
  };
932
1457
 
933
1458
  export type TopperWithImages = {
1459
+ /** A fallback image to be used if the 'images' are not available. */
934
1460
  readonly fallbackImage?: Maybe<Image>;
1461
+ /** An array of images to be displayed on the topper. */
935
1462
  readonly images: ReadonlyArray<Image>;
936
1463
  };
937
1464
 
938
1465
  export type TopperWithPackage = {
1466
+ /** The design of the topper, eg. 'standard'. */
939
1467
  readonly design?: Maybe<Scalars['String']['output']>;
940
1468
  };
941
1469
 
942
1470
  export type TopperWithTheme = {
1471
+ /** Whether the headline should be large. */
943
1472
  readonly isLargeHeadline?: Maybe<Scalars['Boolean']['output']>;
1473
+ /** The layout of the topper, eg. 'split-text-left'. */
944
1474
  readonly layout?: Maybe<Scalars['String']['output']>;
945
1475
  };
946
1476
 
947
1477
  export type Tweet = Reference & {
1478
+ /** The raw HTML of the tweet. */
948
1479
  readonly html?: Maybe<Scalars['String']['output']>;
1480
+ /** The type of the reference, eg. 'tweet'. */
949
1481
  readonly type: Scalars['String']['output'];
950
1482
  };
951
1483
 
952
1484
  export type Video = Content & {
1485
+ /** A scalar representing the access level of the article, eg. 'free'. */
953
1486
  readonly accessLevel?: Maybe<Scalars['AccessLevel']['output']>;
1487
+ /** An alternative introductory paragraph of the article. */
954
1488
  readonly altStandfirst?: Maybe<AltStandfirst>;
1489
+ /** An alternative title of the article. */
955
1490
  readonly altTitle?: Maybe<AltTitle>;
1491
+ /** An array of concepts related to the article, eg. organisations or topics. */
956
1492
  readonly annotations?: Maybe<ReadonlyArray<Maybe<Concept>>>;
1493
+ /** An abstract syntax tree of the article content. */
957
1494
  readonly body?: Maybe<RichText>;
1495
+ /** The raw string of the XML as returned from ContentAPI. */
958
1496
  readonly bodyXML?: Maybe<Scalars['String']['output']>;
1497
+ /** An abstract syntax tree of the authors of the article. */
959
1498
  readonly byline?: Maybe<StructuredContent>;
1499
+ /** A scalar representing whether the article can be syndicated, ie. published by a third party site. */
960
1500
  readonly canBeSyndicated?: Maybe<Scalars['CanBeSyndicated']['output']>;
1501
+ /** Whether comments are enabled on the article. */
961
1502
  readonly commentsEnabled?: Maybe<Scalars['Boolean']['output']>;
1503
+ /** A design object containing the theme and layout of the article. */
962
1504
  readonly design?: Maybe<Design>;
1505
+ /** The editorial division the article belongs to, eg. 'FT-SpecialReports'. */
963
1506
  readonly editorialDesk?: Maybe<Scalars['String']['output']>;
1507
+ /** The first ISO string date the article was published, eg. '2024-04-03T10:35:52.443Z'. */
964
1508
  readonly firstPublishedDate: Scalars['String']['output'];
1509
+ /** The unique identifier of the article - a uuid or a url. */
965
1510
  readonly id: Scalars['ID']['output'];
1511
+ /** The concept to use for instant alert CTAs. */
966
1512
  readonly instantAlertConcept?: Maybe<Concept>;
1513
+ /** An image object containing the url and the caption, to be displayed usually before the article content. */
967
1514
  readonly mainImage?: Maybe<Image>;
1515
+ /** The party that originated the article, eg. 'FT'. */
968
1516
  readonly originatingParty?: Maybe<Scalars['String']['output']>;
1517
+ /** The ISO string date the article was published, eg. '2024-04-03T10:35:52.443Z'. */
969
1518
  readonly publishedDate: Scalars['String']['output'];
1519
+ /** The number of milliseconds since the unix epoch the article was published, eg '1712140552443'. */
1520
+ readonly publishedTimestamp: Scalars['Float']['output'];
1521
+ /** An introductory paragraph of the article. */
970
1522
  readonly standfirst?: Maybe<Scalars['String']['output']>;
1523
+ /** A promotional thumbnail / snapshot of the article. */
971
1524
  readonly teaser?: Maybe<Teaser>;
1525
+ /** The title of the article. */
972
1526
  readonly title: Scalars['String']['output'];
1527
+ /** A banner located usually at the top of articles containing the title, the standfirst and any images. */
973
1528
  readonly topper?: Maybe<Topper>;
1529
+ /** The type of the article, eg. 'Article' or 'Video'. */
974
1530
  readonly type: Scalars['ContentType']['output'];
1531
+ /** The url of the concept. Vanity urls replace long, randomly generated urls - they are more user friendly and concise. Relative urls are relative to the current domain. */
975
1532
  readonly url: Scalars['String']['output'];
976
1533
  };
977
1534
 
@@ -987,8 +1544,11 @@ export type VideoUrlArgs = {
987
1544
  };
988
1545
 
989
1546
  export type VideoReference = Reference & {
1547
+ /** The unique identifier of the video - a uuid or a url. */
990
1548
  readonly id: Scalars['String']['output'];
1549
+ /** The title of the video. */
991
1550
  readonly title: Scalars['String']['output'];
1551
+ /** The type of the reference, eg. 'video'. */
992
1552
  readonly type: Scalars['String']['output'];
993
1553
  };
994
1554
 
@@ -1103,6 +1663,7 @@ export type ResolversTypes = ResolversObject<{
1103
1663
  DeepLandscapeTopper: ResolverTypeWrapper<TopperModel>;
1104
1664
  DeepPortraitTopper: ResolverTypeWrapper<TopperModel>;
1105
1665
  Design: ResolverTypeWrapper<Design>;
1666
+ Float: ResolverTypeWrapper<Scalars['Float']['output']>;
1106
1667
  Flourish: ResolverTypeWrapper<ReferenceWithCAPIData<ContentTree.Flourish>>;
1107
1668
  FlourishFallback: ResolverTypeWrapper<FlourishFallback>;
1108
1669
  FollowButtonVariant: ResolverTypeWrapper<Scalars['FollowButtonVariant']['output']>;
@@ -1188,6 +1749,7 @@ export type ResolversParentTypes = ResolversObject<{
1188
1749
  DeepLandscapeTopper: TopperModel;
1189
1750
  DeepPortraitTopper: TopperModel;
1190
1751
  Design: Design;
1752
+ Float: Scalars['Float']['output'];
1191
1753
  Flourish: ReferenceWithCAPIData<ContentTree.Flourish>;
1192
1754
  FlourishFallback: FlourishFallback;
1193
1755
  FollowButtonVariant: Scalars['FollowButtonVariant']['output'];
@@ -1288,6 +1850,7 @@ export type ArticleResolvers<ContextType = QueryContext, ParentType extends Reso
1288
1850
  mainImage: Resolver<Maybe<ResolversTypes['Image']>, ParentType, ContextType>;
1289
1851
  originatingParty: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
1290
1852
  publishedDate: Resolver<ResolversTypes['String'], ParentType, ContextType>;
1853
+ publishedTimestamp: Resolver<ResolversTypes['Float'], ParentType, ContextType>;
1291
1854
  standfirst: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
1292
1855
  teaser: Resolver<Maybe<ResolversTypes['Teaser']>, ParentType, ContextType>;
1293
1856
  title: Resolver<ResolversTypes['String'], ParentType, ContextType>;
@@ -1316,6 +1879,7 @@ export type AudioResolvers<ContextType = QueryContext, ParentType extends Resolv
1316
1879
  media: Resolver<Maybe<ReadonlyArray<Maybe<ResolversTypes['Media']>>>, ParentType, ContextType>;
1317
1880
  originatingParty: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
1318
1881
  publishedDate: Resolver<ResolversTypes['String'], ParentType, ContextType>;
1882
+ publishedTimestamp: Resolver<ResolversTypes['Float'], ParentType, ContextType>;
1319
1883
  standfirst: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
1320
1884
  teaser: Resolver<Maybe<ResolversTypes['Teaser']>, ParentType, ContextType>;
1321
1885
  title: Resolver<ResolversTypes['String'], ParentType, ContextType>;
@@ -1439,6 +2003,7 @@ export type ContentResolvers<ContextType = QueryContext, ParentType extends Reso
1439
2003
  mainImage: Resolver<Maybe<ResolversTypes['Image']>, ParentType, ContextType>;
1440
2004
  originatingParty: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
1441
2005
  publishedDate: Resolver<ResolversTypes['String'], ParentType, ContextType>;
2006
+ publishedTimestamp: Resolver<ResolversTypes['Float'], ParentType, ContextType>;
1442
2007
  standfirst: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
1443
2008
  teaser: Resolver<Maybe<ResolversTypes['Teaser']>, ParentType, ContextType>;
1444
2009
  title: Resolver<ResolversTypes['String'], ParentType, ContextType>;
@@ -1467,6 +2032,7 @@ export type ContentPackageResolvers<ContextType = QueryContext, ParentType exten
1467
2032
  mainImage: Resolver<Maybe<ResolversTypes['Image']>, ParentType, ContextType>;
1468
2033
  originatingParty: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
1469
2034
  publishedDate: Resolver<ResolversTypes['String'], ParentType, ContextType>;
2035
+ publishedTimestamp: Resolver<ResolversTypes['Float'], ParentType, ContextType>;
1470
2036
  standfirst: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
1471
2037
  tableOfContents: Resolver<Maybe<ResolversTypes['TableOfContents']>, ParentType, ContextType>;
1472
2038
  teaser: Resolver<Maybe<ResolversTypes['Teaser']>, ParentType, ContextType>;
@@ -1757,6 +2323,7 @@ export type LiveBlogPackageResolvers<ContextType = QueryContext, ParentType exte
1757
2323
  originatingParty: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
1758
2324
  pinnedPost: Resolver<Maybe<ResolversTypes['Content']>, ParentType, ContextType>;
1759
2325
  publishedDate: Resolver<ResolversTypes['String'], ParentType, ContextType>;
2326
+ publishedTimestamp: Resolver<ResolversTypes['Float'], ParentType, ContextType>;
1760
2327
  realtime: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType>;
1761
2328
  standfirst: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
1762
2329
  teaser: Resolver<Maybe<ResolversTypes['Teaser']>, ParentType, ContextType>;
@@ -1788,6 +2355,7 @@ export type LiveBlogPostResolvers<ContextType = QueryContext, ParentType extends
1788
2355
  mainImage: Resolver<Maybe<ResolversTypes['Image']>, ParentType, ContextType>;
1789
2356
  originatingParty: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
1790
2357
  publishedDate: Resolver<ResolversTypes['String'], ParentType, ContextType>;
2358
+ publishedTimestamp: Resolver<ResolversTypes['Float'], ParentType, ContextType>;
1791
2359
  standfirst: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
1792
2360
  teaser: Resolver<Maybe<ResolversTypes['Teaser']>, ParentType, ContextType>;
1793
2361
  title: Resolver<ResolversTypes['String'], ParentType, ContextType>;
@@ -1902,6 +2470,7 @@ export type PlaceholderResolvers<ContextType = QueryContext, ParentType extends
1902
2470
  mainImage: Resolver<Maybe<ResolversTypes['Image']>, ParentType, ContextType>;
1903
2471
  originatingParty: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
1904
2472
  publishedDate: Resolver<ResolversTypes['String'], ParentType, ContextType>;
2473
+ publishedTimestamp: Resolver<ResolversTypes['Float'], ParentType, ContextType>;
1905
2474
  standfirst: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
1906
2475
  teaser: Resolver<Maybe<ResolversTypes['Teaser']>, ParentType, ContextType>;
1907
2476
  title: Resolver<ResolversTypes['String'], ParentType, ContextType>;
@@ -2085,6 +2654,7 @@ export type VideoResolvers<ContextType = QueryContext, ParentType extends Resolv
2085
2654
  mainImage: Resolver<Maybe<ResolversTypes['Image']>, ParentType, ContextType>;
2086
2655
  originatingParty: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2087
2656
  publishedDate: Resolver<ResolversTypes['String'], ParentType, ContextType>;
2657
+ publishedTimestamp: Resolver<ResolversTypes['Float'], ParentType, ContextType>;
2088
2658
  standfirst: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2089
2659
  teaser: Resolver<Maybe<ResolversTypes['Teaser']>, ParentType, ContextType>;
2090
2660
  title: Resolver<ResolversTypes['String'], ParentType, ContextType>;