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