@financial-times/cp-content-pipeline-schema 2.15.1 → 3.0.1

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 (165) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/lib/datasources/capi.d.ts +2 -2
  3. package/lib/datasources/capi.js +4 -2
  4. package/lib/datasources/capi.js.map +1 -1
  5. package/lib/datasources/capi.test.js +2 -2
  6. package/lib/datasources/twitter.d.ts +3 -1
  7. package/lib/datasources/twitter.js +26 -1
  8. package/lib/datasources/twitter.js.map +1 -1
  9. package/lib/fixtures/capiObject.d.ts +2 -2
  10. package/lib/fixtures/capiObject.js +2 -0
  11. package/lib/fixtures/capiObject.js.map +1 -1
  12. package/lib/fixtures/capiPerson.d.ts +1 -1
  13. package/lib/generated/index.d.ts +278 -113
  14. package/lib/helpers/decorateHeadshotUrl.d.ts +1 -2
  15. package/lib/helpers/decorateHeadshotUrl.js +2 -3
  16. package/lib/helpers/decorateHeadshotUrl.js.map +1 -1
  17. package/lib/model/Byline.d.ts +8 -10
  18. package/lib/model/Byline.js +34 -33
  19. package/lib/model/Byline.js.map +1 -1
  20. package/lib/model/Byline.test.js +105 -52
  21. package/lib/model/Byline.test.js.map +1 -1
  22. package/lib/model/CapiResponse.d.ts +11 -15
  23. package/lib/model/CapiResponse.js +37 -40
  24. package/lib/model/CapiResponse.js.map +1 -1
  25. package/lib/model/CapiResponse.test.js +7 -18
  26. package/lib/model/CapiResponse.test.js.map +1 -1
  27. package/lib/model/Clip.d.ts +1 -1
  28. package/lib/model/Concept.d.ts +1 -1
  29. package/lib/model/Concept.js +1 -2
  30. package/lib/model/Concept.js.map +1 -1
  31. package/lib/model/FlourishSource.d.ts +1 -1
  32. package/lib/model/FlourishSource.js.map +1 -1
  33. package/lib/model/Image.d.ts +1 -1
  34. package/lib/model/LeadFlourish.test.js +1 -0
  35. package/lib/model/LeadFlourish.test.js.map +1 -1
  36. package/lib/model/Person.d.ts +6 -12
  37. package/lib/model/Person.js +39 -66
  38. package/lib/model/Person.js.map +1 -1
  39. package/lib/model/Person.test.js +7 -60
  40. package/lib/model/Person.test.js.map +1 -1
  41. package/lib/model/Picture.d.ts +1 -1
  42. package/lib/model/RichText.d.ts +1 -2
  43. package/lib/model/Topper.d.ts +1 -1
  44. package/lib/model/Topper.js +10 -8
  45. package/lib/model/Topper.js.map +1 -1
  46. package/lib/model/Topper.test.js +9 -10
  47. package/lib/model/Topper.test.js.map +1 -1
  48. package/lib/model/schemas/capi/article.d.ts +4 -1
  49. package/lib/model/schemas/capi/article.js +1 -0
  50. package/lib/model/schemas/capi/article.js.map +1 -1
  51. package/lib/model/schemas/capi/audio.d.ts +4 -1
  52. package/lib/model/schemas/capi/audio.js +1 -0
  53. package/lib/model/schemas/capi/audio.js.map +1 -1
  54. package/lib/model/schemas/capi/base-schema.d.ts +11 -120
  55. package/lib/model/schemas/capi/base-schema.js +6 -5
  56. package/lib/model/schemas/capi/base-schema.js.map +1 -1
  57. package/lib/model/schemas/capi/content-package.d.ts +7 -2
  58. package/lib/model/schemas/capi/content-package.js +2 -0
  59. package/lib/model/schemas/capi/content-package.js.map +1 -1
  60. package/lib/model/schemas/capi/index.d.ts +26 -7
  61. package/lib/model/schemas/capi/internal-content.d.ts +24 -0
  62. package/lib/model/schemas/capi/internal-content.js +3 -0
  63. package/lib/model/schemas/capi/internal-content.js.map +1 -0
  64. package/lib/model/schemas/capi/live-blog-package.d.ts +4 -1
  65. package/lib/model/schemas/capi/live-blog-package.js +1 -0
  66. package/lib/model/schemas/capi/live-blog-package.js.map +1 -1
  67. package/lib/model/schemas/capi/placeholder.d.ts +4 -1
  68. package/lib/model/schemas/capi/placeholder.js +1 -0
  69. package/lib/model/schemas/capi/placeholder.js.map +1 -1
  70. package/lib/model/schemas/capi/video.d.ts +7 -2
  71. package/lib/model/schemas/capi/video.js +2 -0
  72. package/lib/model/schemas/capi/video.js.map +1 -1
  73. package/lib/resolvers/concept.d.ts +37 -2
  74. package/lib/resolvers/concept.js +17 -10
  75. package/lib/resolvers/concept.js.map +1 -1
  76. package/lib/resolvers/content-tree/Workarounds.d.ts +19 -11
  77. package/lib/resolvers/content-tree/references/Author.d.ts +4 -0
  78. package/lib/resolvers/content-tree/references/Author.js +14 -0
  79. package/lib/resolvers/content-tree/references/Author.js.map +1 -0
  80. package/lib/resolvers/content-tree/references/ClipSet.d.ts +1 -1
  81. package/lib/resolvers/content-tree/references/ClipSet.js +1 -1
  82. package/lib/resolvers/content-tree/references/ClipSet.js.map +1 -1
  83. package/lib/resolvers/content-tree/references/Flourish.d.ts +1 -1
  84. package/lib/resolvers/content-tree/references/Reference.d.ts +1 -1
  85. package/lib/resolvers/content-tree/references/Tweet.d.ts +1 -1
  86. package/lib/resolvers/content-tree/references/index.d.ts +4 -2
  87. package/lib/resolvers/content-tree/references/index.js +4 -1
  88. package/lib/resolvers/content-tree/references/index.js.map +1 -1
  89. package/lib/resolvers/content-tree/updateTreeWithReferenceIds.d.ts +3 -3
  90. package/lib/resolvers/content-tree/updateTreeWithReferenceIds.js +2 -3
  91. package/lib/resolvers/content-tree/updateTreeWithReferenceIds.js.map +1 -1
  92. package/lib/resolvers/content.d.ts +19 -10
  93. package/lib/resolvers/content.js +4 -2
  94. package/lib/resolvers/content.js.map +1 -1
  95. package/lib/resolvers/image.d.ts +12 -12
  96. package/lib/resolvers/index.d.ts +81 -34
  97. package/lib/resolvers/leadFlourish.d.ts +2 -1
  98. package/lib/resolvers/leadFlourish.js +1 -0
  99. package/lib/resolvers/leadFlourish.js.map +1 -1
  100. package/lib/resolvers/person.d.ts +1 -1
  101. package/lib/resolvers/person.js +1 -1
  102. package/lib/resolvers/person.js.map +1 -1
  103. package/lib/resolvers/picture.d.ts +4 -4
  104. package/lib/resolvers/richText.d.ts +1 -1
  105. package/lib/resolvers/teaser.d.ts +1 -1
  106. package/lib/resolvers/topper.d.ts +3 -3
  107. package/package.json +1 -1
  108. package/queries/article.graphql +35 -13
  109. package/src/datasources/capi.test.ts +3 -3
  110. package/src/datasources/capi.ts +5 -3
  111. package/src/datasources/twitter.ts +5 -1
  112. package/src/fixtures/capiObject.ts +4 -2
  113. package/src/fixtures/capiPerson.ts +1 -1
  114. package/src/generated/index.ts +303 -114
  115. package/src/helpers/decorateHeadshotUrl.ts +2 -2
  116. package/src/model/Byline.test.ts +136 -55
  117. package/src/model/Byline.ts +49 -39
  118. package/src/model/CapiResponse.test.ts +9 -25
  119. package/src/model/CapiResponse.ts +82 -55
  120. package/src/model/Clip.ts +1 -1
  121. package/src/model/Concept.ts +3 -3
  122. package/src/model/FlourishSource.ts +1 -1
  123. package/src/model/Image.test.ts +1 -1
  124. package/src/model/Image.ts +1 -1
  125. package/src/model/LeadFlourish.test.ts +1 -0
  126. package/src/model/Person.test.ts +11 -62
  127. package/src/model/Person.ts +47 -51
  128. package/src/model/Picture.test.ts +1 -1
  129. package/src/model/Picture.ts +1 -1
  130. package/src/model/Topper.test.ts +22 -18
  131. package/src/model/Topper.ts +10 -9
  132. package/src/model/__snapshots__/Byline.test.ts.snap +166 -27
  133. package/src/model/schemas/capi/article.ts +1 -0
  134. package/src/model/schemas/capi/audio.ts +1 -0
  135. package/src/model/schemas/capi/base-schema.ts +4 -3
  136. package/src/model/schemas/capi/content-package.ts +2 -0
  137. package/src/model/schemas/capi/internal-content.ts +45 -0
  138. package/src/model/schemas/capi/live-blog-package.ts +1 -0
  139. package/src/model/schemas/capi/placeholder.ts +1 -0
  140. package/src/model/schemas/capi/video.ts +2 -0
  141. package/src/resolvers/concept.ts +29 -12
  142. package/src/resolvers/content-tree/Workarounds.ts +39 -20
  143. package/src/resolvers/content-tree/references/Author.ts +18 -0
  144. package/src/resolvers/content-tree/references/ClipSet.ts +6 -8
  145. package/src/resolvers/content-tree/references/ImageSet.ts +1 -1
  146. package/src/resolvers/content-tree/references/ScrollyImage.ts +1 -1
  147. package/src/resolvers/content-tree/references/index.ts +6 -1
  148. package/src/resolvers/content-tree/updateTreeWithReferenceIds.ts +6 -8
  149. package/src/resolvers/content.ts +4 -2
  150. package/src/resolvers/leadFlourish.ts +1 -0
  151. package/src/resolvers/person.ts +1 -1
  152. package/src/types/n-display-metadata.d.ts +1 -1
  153. package/tsconfig.tsbuildinfo +1 -1
  154. package/typedefs/clip.graphql +2 -2
  155. package/typedefs/concept.graphql +64 -2
  156. package/typedefs/content.graphql +55 -31
  157. package/typedefs/image.graphql +12 -12
  158. package/typedefs/leadFlourish.graphql +32 -0
  159. package/typedefs/person.graphql +2 -2
  160. package/typedefs/picture.graphql +6 -6
  161. package/typedefs/references/author.graphql +7 -0
  162. package/typedefs/references/clipSet.graphql +14 -2
  163. package/typedefs/teaser.graphql +10 -10
  164. package/src/types/internal-content.d.ts +0 -55
  165. package/typedefs/leadFlouish.graphql +0 -29
@@ -12,7 +12,7 @@ import type { LeadFlourish as LeadFlourishModel } from '../model/LeadFlourish';
12
12
  import type { FlourishSource as FlourishSourceModel } from '../model/FlourishSource';
13
13
  import type { ContentTree } from '@financial-times/content-tree';
14
14
  import type { ReferenceWithCAPIData } from '../resolvers/content-tree/references';
15
- import type { Video as VideoNode, ClipSet as ClipSetNode, OldClip as OldClipNode, RawImage as RawImageNode } from '../resolvers/content-tree/Workarounds';
15
+ import type { Video as VideoNode, Author as AuthorNode, ClipSet as ClipSetNode, OldClip as OldClipNode, RawImage as RawImageNode } from '../resolvers/content-tree/Workarounds';
16
16
  import type { QueryContext } from '../';
17
17
  export type Maybe<T> = T | null;
18
18
  export type InputMaybe<T> = Maybe<T>;
@@ -47,7 +47,7 @@ export type Scalars = {
47
47
 
48
48
  export type Accessibility = {
49
49
  /** An array of captions for the clip. */
50
- readonly captions?: Maybe<ReadonlyArray<Maybe<Caption>>>;
50
+ readonly captions?: Maybe<ReadonlyArray<Caption>>;
51
51
  /** An abstract syntax tree of the transcript for the clip. */
52
52
  readonly transcript?: Maybe<RichText>;
53
53
  };
@@ -70,7 +70,7 @@ export type Article = Content & {
70
70
  /** An alternative title of the article. */
71
71
  readonly altTitle?: Maybe<AltTitle>;
72
72
  /** An array of concepts related to the article, eg. organisations or topics. */
73
- readonly annotations?: Maybe<ReadonlyArray<Maybe<Concept>>>;
73
+ readonly annotations: ReadonlyArray<ConceptInterface>;
74
74
  /** An abstract syntax tree of the article content. */
75
75
  readonly body?: Maybe<RichText>;
76
76
  /** The raw string of the XML as returned from ContentAPI. */
@@ -95,13 +95,15 @@ export type Article = Content & {
95
95
  readonly instantAlertConcept?: Maybe<Concept>;
96
96
  /** An image object containing the url and the caption, to be displayed usually before the article content. */
97
97
  readonly mainImage?: Maybe<Image>;
98
+ /** The number of milliseconds since the unix epoch the article was last changed, eg '1712140552443'. */
99
+ readonly modifiedTimestamp: Scalars['Float']['output'];
98
100
  /** The party that originated the article, eg. 'FT'. */
99
101
  readonly originatingParty?: Maybe<Scalars['String']['output']>;
100
102
  /** A string ID used to trace content publishes through the pipeline, e.g. 'republish_tid_JNhUrBjdXo'. */
101
103
  readonly publishReference?: Maybe<Scalars['String']['output']>;
102
- /** The ISO string date the article was published, eg. '2024-04-03T10:35:52.443Z'. */
104
+ /** The ISO string date the article was marked as published, eg. '2024-04-03T10:35:52.443Z'. */
103
105
  readonly publishedDate: Scalars['String']['output'];
104
- /** The number of milliseconds since the unix epoch the article was published, eg '1712140552443'. */
106
+ /** The number of milliseconds since the unix epoch the article was marked as published, eg '1712140552443'. */
105
107
  readonly publishedTimestamp: Scalars['Float']['output'];
106
108
  /** An introductory paragraph of the article. */
107
109
  readonly standfirst?: Maybe<Scalars['String']['output']>;
@@ -118,6 +120,11 @@ export type Article = Content & {
118
120
  };
119
121
 
120
122
 
123
+ export type ArticleAnnotationsArgs = {
124
+ byPredicate?: InputMaybe<Scalars['String']['input']>;
125
+ };
126
+
127
+
121
128
  export type ArticleBylineArgs = {
122
129
  vanity?: InputMaybe<Scalars['Boolean']['input']>;
123
130
  };
@@ -136,7 +143,7 @@ export type Audio = Content & {
136
143
  /** An alternative title of the article. */
137
144
  readonly altTitle?: Maybe<AltTitle>;
138
145
  /** An array of concepts related to the article, eg. organisations or topics. */
139
- readonly annotations?: Maybe<ReadonlyArray<Maybe<Concept>>>;
146
+ readonly annotations: ReadonlyArray<ConceptInterface>;
140
147
  /** An abstract syntax tree of the article content. */
141
148
  readonly body?: Maybe<RichText>;
142
149
  /** The raw string of the XML as returned from ContentAPI. */
@@ -161,13 +168,15 @@ export type Audio = Content & {
161
168
  readonly mainImage?: Maybe<Image>;
162
169
  /** An array of media objects containing the url, the duration, the filesize and the media type. */
163
170
  readonly media?: Maybe<ReadonlyArray<Maybe<Media>>>;
171
+ /** The number of milliseconds since the unix epoch the article was last changed, eg '1712140552443'. */
172
+ readonly modifiedTimestamp: Scalars['Float']['output'];
164
173
  /** The party that originated the article, eg. 'FT'. */
165
174
  readonly originatingParty?: Maybe<Scalars['String']['output']>;
166
175
  /** A string ID used to trace content publishes through the pipeline, e.g. 'republish_tid_JNhUrBjdXo'. */
167
176
  readonly publishReference?: Maybe<Scalars['String']['output']>;
168
- /** The ISO string date the article was published, eg. '2024-04-03T10:35:52.443Z'. */
177
+ /** The ISO string date the article was marked as published, eg. '2024-04-03T10:35:52.443Z'. */
169
178
  readonly publishedDate: Scalars['String']['output'];
170
- /** The number of milliseconds since the unix epoch the article was published, eg '1712140552443'. */
179
+ /** The number of milliseconds since the unix epoch the article was marked as published, eg '1712140552443'. */
171
180
  readonly publishedTimestamp: Scalars['Float']['output'];
172
181
  /** An introductory paragraph of the article. */
173
182
  readonly standfirst?: Maybe<Scalars['String']['output']>;
@@ -184,6 +193,11 @@ export type Audio = Content & {
184
193
  };
185
194
 
186
195
 
196
+ export type AudioAnnotationsArgs = {
197
+ byPredicate?: InputMaybe<Scalars['String']['input']>;
198
+ };
199
+
200
+
187
201
  export type AudioBylineArgs = {
188
202
  vanity?: InputMaybe<Scalars['Boolean']['input']>;
189
203
  };
@@ -194,6 +208,44 @@ export type AudioUrlArgs = {
194
208
  vanity?: InputMaybe<Scalars['Boolean']['input']>;
195
209
  };
196
210
 
211
+ /** An author is a concept that represents a person that was involved in the writing of an item of content. */
212
+ export type Author = ConceptInterface & {
213
+ /** The api url of the concept, eg. 'http://api.ft.com/things/a579350c-61ce-4c00-97ca-ddaa2e0cacf6'. */
214
+ readonly apiUrl?: Maybe<Scalars['String']['output']>;
215
+ /** The type of the concept, eg. 'http://www.ft.com/ontology/Topic'. */
216
+ readonly directType?: Maybe<Scalars['String']['output']>;
217
+ /** The unique identifier of the concept - a uuid or a url. */
218
+ readonly id: Scalars['ID']['output'];
219
+ /** Whether the concept is part of a package brand eg. 'ftSeries' or 'ftGuides'. */
220
+ readonly isPackageBrand?: Maybe<Scalars['Boolean']['output']>;
221
+ /** The People API data for the person referenced by this Author concept. */
222
+ readonly person: Person;
223
+ /** The relationship between the concept and the article, eg. 'http://www.ft.com/ontology/hasAuthor'. */
224
+ readonly predicate?: Maybe<Scalars['String']['output']>;
225
+ /** The preferred label of the concept, eg. 'Work & Careers'. */
226
+ readonly prefLabel: Scalars['String']['output'];
227
+ /** The type of the concept, eg. 'TOPIC'. */
228
+ readonly type?: Maybe<Scalars['String']['output']>;
229
+ /** An array of types, eg. ['http://www.ft.com/ontology/core/Thing', 'http://www.ft.com/ontology/Topic']. */
230
+ readonly types?: Maybe<ReadonlyArray<Scalars['String']['output']>>;
231
+ /** The url of the media, eg. 'https://next-media-api.ft.com/renditions/16868569859480/0x0.mp3'. */
232
+ readonly url: Scalars['String']['output'];
233
+ };
234
+
235
+
236
+ /** An author is a concept that represents a person that was involved in the writing of an item of content. */
237
+ export type AuthorUrlArgs = {
238
+ relative?: InputMaybe<Scalars['Boolean']['input']>;
239
+ vanity?: InputMaybe<Scalars['Boolean']['input']>;
240
+ };
241
+
242
+ export type AuthorReference = Reference & {
243
+ /** The concept for this author */
244
+ readonly concept?: Maybe<ConceptInterface>;
245
+ /** The type of the reference, 'author' */
246
+ readonly type: Scalars['String']['output'];
247
+ };
248
+
197
249
  export type BasicTopper = Topper & {
198
250
  /** Whether the topper should have a background box. */
199
251
  readonly backgroundBox?: Maybe<Scalars['Boolean']['output']>;
@@ -261,17 +313,23 @@ export type Clip = {
261
313
  export type ClipSet = Reference & {
262
314
  /** An object containing the accessibility details of the clip. */
263
315
  readonly accessibility?: Maybe<Accessibility>;
264
- /** Whether the clip should play automatically when loaded. */
316
+ /**
317
+ * Whether the clip should play automatically when loaded.
318
+ * @deprecated field is redundant as already returned in content-tree
319
+ */
265
320
  readonly autoplay?: Maybe<Scalars['Boolean']['output']>;
266
321
  /** Text describing the content of the clip, to be shown next to the clip. */
267
322
  readonly caption?: Maybe<Scalars['String']['output']>;
268
323
  /** An array of clips in the clip set. */
269
- readonly clips?: Maybe<ReadonlyArray<Maybe<Clip>>>;
324
+ readonly clips?: Maybe<ReadonlyArray<Clip>>;
270
325
  /** An array of content warnings for the clip set. */
271
- readonly contentWarning?: Maybe<ReadonlyArray<Maybe<Scalars['String']['output']>>>;
326
+ readonly contentWarning?: Maybe<ReadonlyArray<Scalars['String']['output']>>;
272
327
  /** The credit text of the clip, eg. 'Getty Images'. */
273
328
  readonly credits?: Maybe<Scalars['String']['output']>;
274
- /** The layout of the clip set, eg. 'in-line'. */
329
+ /**
330
+ * The layout of the clip set, eg. 'in-line'.
331
+ * @deprecated field is redundant as already returned in content-tree
332
+ */
275
333
  readonly dataLayout?: Maybe<Scalars['String']['output']>;
276
334
  /** The description of the clip. */
277
335
  readonly description?: Maybe<Scalars['String']['output']>;
@@ -279,9 +337,15 @@ export type ClipSet = Reference & {
279
337
  readonly displayTitle?: Maybe<Scalars['String']['output']>;
280
338
  /** The unique identifier of the clip set. */
281
339
  readonly id: Scalars['String']['output'];
282
- /** Whether the clip should loop. */
340
+ /**
341
+ * Whether the clip should loop.
342
+ * @deprecated field is redundant as already returned in content-tree
343
+ */
283
344
  readonly loop?: Maybe<Scalars['Boolean']['output']>;
284
- /** Whether the clip should be muted. */
345
+ /**
346
+ * Whether the clip should be muted.
347
+ * @deprecated field is redundant as already returned in content-tree
348
+ */
285
349
  readonly muted?: Maybe<Scalars['Boolean']['output']>;
286
350
  /** Whether the clip set should **not** include audio. */
287
351
  readonly noAudio?: Maybe<Scalars['Boolean']['output']>;
@@ -313,7 +377,36 @@ export type ClipSource = {
313
377
  };
314
378
 
315
379
  /** A concept is supplemtary information item, like a location, person, organisation or topic. It is used to provide context to an article. */
316
- export type Concept = {
380
+ export type Concept = ConceptInterface & {
381
+ /** The api url of the concept, eg. 'http://api.ft.com/things/a579350c-61ce-4c00-97ca-ddaa2e0cacf6'. */
382
+ readonly apiUrl: Scalars['String']['output'];
383
+ /** The type of the concept, eg. 'http://www.ft.com/ontology/Topic'. */
384
+ readonly directType: Scalars['String']['output'];
385
+ /** The unique identifier of the concept - a uuid or a url. */
386
+ readonly id: Scalars['ID']['output'];
387
+ /** Whether the concept is part of a package brand eg. 'ftSeries' or 'ftGuides'. */
388
+ readonly isPackageBrand: Scalars['Boolean']['output'];
389
+ /** The relationship between the concept and the article, eg. 'http://www.ft.com/ontology/hasAuthor'. */
390
+ readonly predicate: Scalars['String']['output'];
391
+ /** The preferred label of the concept, eg. 'Work & Careers'. */
392
+ readonly prefLabel: Scalars['String']['output'];
393
+ /** The type of the concept, eg. 'TOPIC'. */
394
+ readonly type?: Maybe<Scalars['String']['output']>;
395
+ /** An array of types, eg. ['http://www.ft.com/ontology/core/Thing', 'http://www.ft.com/ontology/Topic']. */
396
+ readonly types: ReadonlyArray<Scalars['String']['output']>;
397
+ /** The url of the media, eg. 'https://next-media-api.ft.com/renditions/16868569859480/0x0.mp3'. */
398
+ readonly url: Scalars['String']['output'];
399
+ };
400
+
401
+
402
+ /** A concept is supplemtary information item, like a location, person, organisation or topic. It is used to provide context to an article. */
403
+ export type ConceptUrlArgs = {
404
+ relative?: InputMaybe<Scalars['Boolean']['input']>;
405
+ vanity?: InputMaybe<Scalars['Boolean']['input']>;
406
+ };
407
+
408
+ /** A concept is supplemtary information item, like a location, person, organisation or topic. It is used to provide context to an article. */
409
+ export type ConceptInterface = {
317
410
  /** The api url of the concept, eg. 'http://api.ft.com/things/a579350c-61ce-4c00-97ca-ddaa2e0cacf6'. */
318
411
  readonly apiUrl?: Maybe<Scalars['String']['output']>;
319
412
  /** The type of the concept, eg. 'http://www.ft.com/ontology/Topic'. */
@@ -336,7 +429,7 @@ export type Concept = {
336
429
 
337
430
 
338
431
  /** A concept is supplemtary information item, like a location, person, organisation or topic. It is used to provide context to an article. */
339
- export type ConceptUrlArgs = {
432
+ export type ConceptInterfaceUrlArgs = {
340
433
  relative?: InputMaybe<Scalars['Boolean']['input']>;
341
434
  vanity?: InputMaybe<Scalars['Boolean']['input']>;
342
435
  };
@@ -349,7 +442,7 @@ export type Content = {
349
442
  /** An alternative title of the article. */
350
443
  readonly altTitle?: Maybe<AltTitle>;
351
444
  /** An array of concepts related to the article, eg. organisations or topics. */
352
- readonly annotations?: Maybe<ReadonlyArray<Maybe<Concept>>>;
445
+ readonly annotations: ReadonlyArray<ConceptInterface>;
353
446
  /** An abstract syntax tree of the article content. */
354
447
  readonly body?: Maybe<RichText>;
355
448
  /** The raw string of the XML as returned from ContentAPI. */
@@ -372,13 +465,15 @@ export type Content = {
372
465
  readonly instantAlertConcept?: Maybe<Concept>;
373
466
  /** An image object containing the url and the caption, to be displayed usually before the article content. */
374
467
  readonly mainImage?: Maybe<Image>;
468
+ /** The number of milliseconds since the unix epoch the article was last changed, eg '1712140552443'. */
469
+ readonly modifiedTimestamp: Scalars['Float']['output'];
375
470
  /** The party that originated the article, eg. 'FT'. */
376
471
  readonly originatingParty?: Maybe<Scalars['String']['output']>;
377
472
  /** A string ID used to trace content publishes through the pipeline, e.g. 'republish_tid_JNhUrBjdXo'. */
378
473
  readonly publishReference?: Maybe<Scalars['String']['output']>;
379
- /** The ISO string date the article was published, eg. '2024-04-03T10:35:52.443Z'. */
474
+ /** The ISO string date the article was marked as published, eg. '2024-04-03T10:35:52.443Z'. */
380
475
  readonly publishedDate: Scalars['String']['output'];
381
- /** The number of milliseconds since the unix epoch the article was published, eg '1712140552443'. */
476
+ /** The number of milliseconds since the unix epoch the article was marked as published, eg '1712140552443'. */
382
477
  readonly publishedTimestamp: Scalars['Float']['output'];
383
478
  /** An introductory paragraph of the article. */
384
479
  readonly standfirst?: Maybe<Scalars['String']['output']>;
@@ -395,6 +490,11 @@ export type Content = {
395
490
  };
396
491
 
397
492
 
493
+ export type ContentAnnotationsArgs = {
494
+ byPredicate?: InputMaybe<Scalars['String']['input']>;
495
+ };
496
+
497
+
398
498
  export type ContentBylineArgs = {
399
499
  vanity?: InputMaybe<Scalars['Boolean']['input']>;
400
500
  };
@@ -413,7 +513,7 @@ export type ContentPackage = Content & {
413
513
  /** An alternative title of the article. */
414
514
  readonly altTitle?: Maybe<AltTitle>;
415
515
  /** An array of concepts related to the article, eg. organisations or topics. */
416
- readonly annotations?: Maybe<ReadonlyArray<Maybe<Concept>>>;
516
+ readonly annotations: ReadonlyArray<ConceptInterface>;
417
517
  /** An abstract syntax tree of the article content. */
418
518
  readonly body?: Maybe<RichText>;
419
519
  /** The raw string of the XML as returned from ContentAPI. */
@@ -440,13 +540,15 @@ export type ContentPackage = Content & {
440
540
  readonly instantAlertConcept?: Maybe<Concept>;
441
541
  /** An image object containing the url and the caption, to be displayed usually before the article content. */
442
542
  readonly mainImage?: Maybe<Image>;
543
+ /** The number of milliseconds since the unix epoch the article was last changed, eg '1712140552443'. */
544
+ readonly modifiedTimestamp: Scalars['Float']['output'];
443
545
  /** The party that originated the article, eg. 'FT'. */
444
546
  readonly originatingParty?: Maybe<Scalars['String']['output']>;
445
547
  /** A string ID used to trace content publishes through the pipeline, e.g. 'republish_tid_JNhUrBjdXo'. */
446
548
  readonly publishReference?: Maybe<Scalars['String']['output']>;
447
- /** The ISO string date the article was published, eg. '2024-04-03T10:35:52.443Z'. */
549
+ /** The ISO string date the article was marked as published, eg. '2024-04-03T10:35:52.443Z'. */
448
550
  readonly publishedDate: Scalars['String']['output'];
449
- /** The number of milliseconds since the unix epoch the article was published, eg '1712140552443'. */
551
+ /** The number of milliseconds since the unix epoch the article was marked as published, eg '1712140552443'. */
450
552
  readonly publishedTimestamp: Scalars['Float']['output'];
451
553
  /** An introductory paragraph of the article. */
452
554
  readonly standfirst?: Maybe<Scalars['String']['output']>;
@@ -465,6 +567,11 @@ export type ContentPackage = Content & {
465
567
  };
466
568
 
467
569
 
570
+ export type ContentPackageAnnotationsArgs = {
571
+ byPredicate?: InputMaybe<Scalars['String']['input']>;
572
+ };
573
+
574
+
468
575
  export type ContentPackageBylineArgs = {
469
576
  vanity?: InputMaybe<Scalars['Boolean']['input']>;
470
577
  };
@@ -564,15 +671,17 @@ export type FlourishFallback = {
564
671
 
565
672
  export type FlourishSource = {
566
673
  /** The format of the source, eg. 'standard'. */
567
- readonly format?: Maybe<Scalars['String']['output']>;
674
+ readonly format: Scalars['ImageFormat']['output'];
568
675
  /** The height of the source. */
569
- readonly height?: Maybe<Scalars['Int']['output']>;
676
+ readonly height: Scalars['Int']['output'];
677
+ /** The id of the source. */
678
+ readonly id: Scalars['String']['output'];
570
679
  /** The type of the source, e.g. visualisation for leadFlourish */
571
- readonly type?: Maybe<Scalars['String']['output']>;
680
+ readonly type: Scalars['String']['output'];
572
681
  /** The Origami image service url */
573
- readonly url?: Maybe<Scalars['String']['output']>;
682
+ readonly url: Scalars['String']['output'];
574
683
  /** The width of the source. */
575
- readonly width?: Maybe<Scalars['Int']['output']>;
684
+ readonly width: Scalars['Int']['output'];
576
685
  };
577
686
 
578
687
  export type FullBleedTopper = Topper & TopperWithBrand & TopperWithImages & TopperWithTheme & {
@@ -622,7 +731,7 @@ export type Image = {
622
731
  /** The type of the image, eg. 'graphic'. */
623
732
  readonly type?: Maybe<Scalars['ImageType']['output']>;
624
733
  /** 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'. */
625
- readonly url?: Maybe<Scalars['String']['output']>;
734
+ readonly url: Scalars['String']['output'];
626
735
  /** The width of the image in pixels. */
627
736
  readonly width?: Maybe<Scalars['Int']['output']>;
628
737
  };
@@ -651,7 +760,7 @@ export type ImageDesktop = Image & {
651
760
  /** The type of the image, eg. 'graphic'. */
652
761
  readonly type?: Maybe<Scalars['ImageType']['output']>;
653
762
  /** 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'. */
654
- readonly url?: Maybe<Scalars['String']['output']>;
763
+ readonly url: Scalars['String']['output'];
655
764
  /** The width of the image in pixels. */
656
765
  readonly width?: Maybe<Scalars['Int']['output']>;
657
766
  };
@@ -680,7 +789,7 @@ export type ImageLandscape = Image & {
680
789
  /** The type of the image, eg. 'graphic'. */
681
790
  readonly type?: Maybe<Scalars['ImageType']['output']>;
682
791
  /** 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'. */
683
- readonly url?: Maybe<Scalars['String']['output']>;
792
+ readonly url: Scalars['String']['output'];
684
793
  /** The width of the image in pixels. */
685
794
  readonly width?: Maybe<Scalars['Int']['output']>;
686
795
  };
@@ -709,7 +818,7 @@ export type ImageMobile = Image & {
709
818
  /** The type of the image, eg. 'graphic'. */
710
819
  readonly type?: Maybe<Scalars['ImageType']['output']>;
711
820
  /** 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'. */
712
- readonly url?: Maybe<Scalars['String']['output']>;
821
+ readonly url: Scalars['String']['output'];
713
822
  /** The width of the image in pixels. */
714
823
  readonly width?: Maybe<Scalars['Int']['output']>;
715
824
  };
@@ -738,7 +847,7 @@ export type ImagePortrait = Image & {
738
847
  /** The type of the image, eg. 'graphic'. */
739
848
  readonly type?: Maybe<Scalars['ImageType']['output']>;
740
849
  /** 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'. */
741
- readonly url?: Maybe<Scalars['String']['output']>;
850
+ readonly url: Scalars['String']['output'];
742
851
  /** The width of the image in pixels. */
743
852
  readonly width?: Maybe<Scalars['Int']['output']>;
744
853
  };
@@ -758,11 +867,11 @@ export type ImageSet = Reference & {
758
867
 
759
868
  export type ImageSource = {
760
869
  /** 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). */
761
- readonly dpr?: Maybe<Scalars['Int']['output']>;
870
+ readonly dpr: Scalars['Int']['output'];
762
871
  /** 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'. */
763
872
  readonly url: Scalars['String']['output'];
764
873
  /** The width of the image source in pixels. */
765
- readonly width?: Maybe<Scalars['Int']['output']>;
874
+ readonly width: Scalars['Int']['output'];
766
875
  };
767
876
 
768
877
  export type ImageSquare = Image & {
@@ -783,7 +892,7 @@ export type ImageSquare = Image & {
783
892
  /** The type of the image, eg. 'graphic'. */
784
893
  readonly type?: Maybe<Scalars['ImageType']['output']>;
785
894
  /** 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'. */
786
- readonly url?: Maybe<Scalars['String']['output']>;
895
+ readonly url: Scalars['String']['output'];
787
896
  /** The width of the image in pixels. */
788
897
  readonly width?: Maybe<Scalars['Int']['output']>;
789
898
  };
@@ -812,7 +921,7 @@ export type ImageSquareFtEdit = Image & {
812
921
  /** The type of the image, eg. 'graphic'. */
813
922
  readonly type?: Maybe<Scalars['ImageType']['output']>;
814
923
  /** 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'. */
815
- readonly url?: Maybe<Scalars['String']['output']>;
924
+ readonly url: Scalars['String']['output'];
816
925
  /** The width of the image in pixels. */
817
926
  readonly width?: Maybe<Scalars['Int']['output']>;
818
927
  };
@@ -841,7 +950,7 @@ export type ImageStandard = Image & {
841
950
  /** The type of the image, eg. 'graphic'. */
842
951
  readonly type?: Maybe<Scalars['ImageType']['output']>;
843
952
  /** 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'. */
844
- readonly url?: Maybe<Scalars['String']['output']>;
953
+ readonly url: Scalars['String']['output'];
845
954
  /** The width of the image in pixels. */
846
955
  readonly width?: Maybe<Scalars['Int']['output']>;
847
956
  };
@@ -870,7 +979,7 @@ export type ImageStandardInline = Image & {
870
979
  /** The type of the image, eg. 'graphic'. */
871
980
  readonly type?: Maybe<Scalars['ImageType']['output']>;
872
981
  /** 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'. */
873
- readonly url?: Maybe<Scalars['String']['output']>;
982
+ readonly url: Scalars['String']['output'];
874
983
  /** The width of the image in pixels. */
875
984
  readonly width?: Maybe<Scalars['Int']['output']>;
876
985
  };
@@ -899,7 +1008,7 @@ export type ImageWide = Image & {
899
1008
  /** The type of the image, eg. 'graphic'. */
900
1009
  readonly type?: Maybe<Scalars['ImageType']['output']>;
901
1010
  /** 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'. */
902
- readonly url?: Maybe<Scalars['String']['output']>;
1011
+ readonly url: Scalars['String']['output'];
903
1012
  /** The width of the image in pixels. */
904
1013
  readonly width?: Maybe<Scalars['Int']['output']>;
905
1014
  };
@@ -913,7 +1022,7 @@ export type ImageWideSourceSetArgs = {
913
1022
  /** Indicators are used to determine teaser styling. */
914
1023
  export type Indicators = {
915
1024
  /** The access level of the teaser, eg. 'free' or 'premium'. */
916
- readonly accessLevel?: Maybe<Scalars['AccessLevel']['output']>;
1025
+ readonly accessLevel: Scalars['AccessLevel']['output'];
917
1026
  /** Whether the teaser is a column, ie. has one author. */
918
1027
  readonly isColumn?: Maybe<Scalars['Boolean']['output']>;
919
1028
  /** Whether the teaser is an editor's choice. */
@@ -974,7 +1083,7 @@ export type LiveBlogPackage = Content & {
974
1083
  /** An alternative title of the article. */
975
1084
  readonly altTitle?: Maybe<AltTitle>;
976
1085
  /** An array of concepts related to the article, eg. organisations or topics. */
977
- readonly annotations?: Maybe<ReadonlyArray<Maybe<Concept>>>;
1086
+ readonly annotations: ReadonlyArray<ConceptInterface>;
978
1087
  /** An abstract syntax tree of the article content. */
979
1088
  readonly body?: Maybe<RichText>;
980
1089
  /** The raw string of the XML as returned from ContentAPI. */
@@ -999,15 +1108,17 @@ export type LiveBlogPackage = Content & {
999
1108
  readonly liveBlogPosts?: Maybe<ReadonlyArray<Maybe<Content>>>;
1000
1109
  /** An image object containing the url and the caption, to be displayed usually before the article content. */
1001
1110
  readonly mainImage?: Maybe<Image>;
1111
+ /** The number of milliseconds since the unix epoch the article was last changed, eg '1712140552443'. */
1112
+ readonly modifiedTimestamp: Scalars['Float']['output'];
1002
1113
  /** The party that originated the article, eg. 'FT'. */
1003
1114
  readonly originatingParty?: Maybe<Scalars['String']['output']>;
1004
1115
  /** The pinned article of this live blog package. */
1005
1116
  readonly pinnedPost?: Maybe<Content>;
1006
1117
  /** A string ID used to trace content publishes through the pipeline, e.g. 'republish_tid_JNhUrBjdXo'. */
1007
1118
  readonly publishReference?: Maybe<Scalars['String']['output']>;
1008
- /** The ISO string date the article was published, eg. '2024-04-03T10:35:52.443Z'. */
1119
+ /** The ISO string date the article was marked as published, eg. '2024-04-03T10:35:52.443Z'. */
1009
1120
  readonly publishedDate: Scalars['String']['output'];
1010
- /** The number of milliseconds since the unix epoch the article was published, eg '1712140552443'. */
1121
+ /** The number of milliseconds since the unix epoch the article was marked as published, eg '1712140552443'. */
1011
1122
  readonly publishedTimestamp: Scalars['Float']['output'];
1012
1123
  /** Whether the live blog package should be updated in real time. */
1013
1124
  readonly realtime?: Maybe<Scalars['Boolean']['output']>;
@@ -1026,13 +1137,13 @@ export type LiveBlogPackage = Content & {
1026
1137
  };
1027
1138
 
1028
1139
 
1029
- export type LiveBlogPackageBylineArgs = {
1030
- vanity?: InputMaybe<Scalars['Boolean']['input']>;
1140
+ export type LiveBlogPackageAnnotationsArgs = {
1141
+ byPredicate?: InputMaybe<Scalars['String']['input']>;
1031
1142
  };
1032
1143
 
1033
1144
 
1034
- export type LiveBlogPackageLiveBlogPostsArgs = {
1035
- includePinned?: InputMaybe<Scalars['Boolean']['input']>;
1145
+ export type LiveBlogPackageBylineArgs = {
1146
+ vanity?: InputMaybe<Scalars['Boolean']['input']>;
1036
1147
  };
1037
1148
 
1038
1149
 
@@ -1049,8 +1160,12 @@ export type LiveBlogPost = Content & {
1049
1160
  /** An alternative title of the article. */
1050
1161
  readonly altTitle?: Maybe<AltTitle>;
1051
1162
  /** An array of concepts related to the article, eg. organisations or topics. */
1052
- readonly annotations?: Maybe<ReadonlyArray<Maybe<Concept>>>;
1053
- readonly authors?: Maybe<ReadonlyArray<Maybe<Person>>>;
1163
+ readonly annotations: ReadonlyArray<ConceptInterface>;
1164
+ /**
1165
+ * The People API data for the authors of the live blog post
1166
+ * @deprecated use Content.annotations(byPredicate: "http://www.ft.com/ontology/annotation/hasAuthor")
1167
+ */
1168
+ readonly authors: ReadonlyArray<Person>;
1054
1169
  /** An abstract syntax tree of the article content. */
1055
1170
  readonly body?: Maybe<RichText>;
1056
1171
  /** The raw string of the XML as returned from ContentAPI. */
@@ -1079,13 +1194,15 @@ export type LiveBlogPost = Content & {
1079
1194
  readonly isPinned?: Maybe<Scalars['Boolean']['output']>;
1080
1195
  /** An image object containing the url and the caption, to be displayed usually before the article content. */
1081
1196
  readonly mainImage?: Maybe<Image>;
1197
+ /** The number of milliseconds since the unix epoch the article was last changed, eg '1712140552443'. */
1198
+ readonly modifiedTimestamp: Scalars['Float']['output'];
1082
1199
  /** The party that originated the article, eg. 'FT'. */
1083
1200
  readonly originatingParty?: Maybe<Scalars['String']['output']>;
1084
1201
  /** A string ID used to trace content publishes through the pipeline, e.g. 'republish_tid_JNhUrBjdXo'. */
1085
1202
  readonly publishReference?: Maybe<Scalars['String']['output']>;
1086
- /** The ISO string date the article was published, eg. '2024-04-03T10:35:52.443Z'. */
1203
+ /** The ISO string date the article was marked as published, eg. '2024-04-03T10:35:52.443Z'. */
1087
1204
  readonly publishedDate: Scalars['String']['output'];
1088
- /** The number of milliseconds since the unix epoch the article was published, eg '1712140552443'. */
1205
+ /** The number of milliseconds since the unix epoch the article was marked as published, eg '1712140552443'. */
1089
1206
  readonly publishedTimestamp: Scalars['Float']['output'];
1090
1207
  /** An introductory paragraph of the article. */
1091
1208
  readonly standfirst?: Maybe<Scalars['String']['output']>;
@@ -1102,6 +1219,11 @@ export type LiveBlogPost = Content & {
1102
1219
  };
1103
1220
 
1104
1221
 
1222
+ export type LiveBlogPostAnnotationsArgs = {
1223
+ byPredicate?: InputMaybe<Scalars['String']['input']>;
1224
+ };
1225
+
1226
+
1105
1227
  export type LiveBlogPostBylineArgs = {
1106
1228
  vanity?: InputMaybe<Scalars['Boolean']['input']>;
1107
1229
  };
@@ -1198,6 +1320,7 @@ export type PartnerContentTopper = Topper & {
1198
1320
  export type Person = {
1199
1321
  readonly headshot?: Maybe<Scalars['String']['output']>;
1200
1322
  readonly prefLabel?: Maybe<Scalars['String']['output']>;
1323
+ /** @deprecated use Concept.url instead */
1201
1324
  readonly streamPage?: Maybe<Scalars['String']['output']>;
1202
1325
  };
1203
1326
 
@@ -1222,7 +1345,7 @@ export type Picture = {
1222
1345
  /** A set of images with different sizes and formats. */
1223
1346
  readonly images: ReadonlyArray<Image>;
1224
1347
  /** The layout width of the image, eg, 'standard'. */
1225
- readonly layoutWidth?: Maybe<Scalars['String']['output']>;
1348
+ readonly layoutWidth: Scalars['String']['output'];
1226
1349
  };
1227
1350
 
1228
1351
  export type PictureFullBleed = Picture & {
@@ -1239,7 +1362,7 @@ export type PictureFullBleed = Picture & {
1239
1362
  /** A set of images with different sizes and formats. */
1240
1363
  readonly images: ReadonlyArray<Image>;
1241
1364
  /** The layout width of the image, eg, 'standard'. */
1242
- readonly layoutWidth?: Maybe<Scalars['String']['output']>;
1365
+ readonly layoutWidth: Scalars['String']['output'];
1243
1366
  };
1244
1367
 
1245
1368
  export type PictureInline = Picture & {
@@ -1256,7 +1379,7 @@ export type PictureInline = Picture & {
1256
1379
  /** A set of images with different sizes and formats. */
1257
1380
  readonly images: ReadonlyArray<Image>;
1258
1381
  /** The layout width of the image, eg, 'standard'. */
1259
- readonly layoutWidth?: Maybe<Scalars['String']['output']>;
1382
+ readonly layoutWidth: Scalars['String']['output'];
1260
1383
  };
1261
1384
 
1262
1385
  export type PictureStandard = Picture & {
@@ -1273,7 +1396,7 @@ export type PictureStandard = Picture & {
1273
1396
  /** A set of images with different sizes and formats. */
1274
1397
  readonly images: ReadonlyArray<Image>;
1275
1398
  /** The layout width of the image, eg, 'standard'. */
1276
- readonly layoutWidth?: Maybe<Scalars['String']['output']>;
1399
+ readonly layoutWidth: Scalars['String']['output'];
1277
1400
  };
1278
1401
 
1279
1402
  export type Placeholder = Content & {
@@ -1284,7 +1407,7 @@ export type Placeholder = Content & {
1284
1407
  /** An alternative title of the article. */
1285
1408
  readonly altTitle?: Maybe<AltTitle>;
1286
1409
  /** An array of concepts related to the article, eg. organisations or topics. */
1287
- readonly annotations?: Maybe<ReadonlyArray<Maybe<Concept>>>;
1410
+ readonly annotations: ReadonlyArray<ConceptInterface>;
1288
1411
  /** An abstract syntax tree of the article content. */
1289
1412
  readonly body?: Maybe<RichText>;
1290
1413
  /** The raw string of the XML as returned from ContentAPI. */
@@ -1309,13 +1432,15 @@ export type Placeholder = Content & {
1309
1432
  readonly instantAlertConcept?: Maybe<Concept>;
1310
1433
  /** An image object containing the url and the caption, to be displayed usually before the article content. */
1311
1434
  readonly mainImage?: Maybe<Image>;
1435
+ /** The number of milliseconds since the unix epoch the article was last changed, eg '1712140552443'. */
1436
+ readonly modifiedTimestamp: Scalars['Float']['output'];
1312
1437
  /** The party that originated the article, eg. 'FT'. */
1313
1438
  readonly originatingParty?: Maybe<Scalars['String']['output']>;
1314
1439
  /** A string ID used to trace content publishes through the pipeline, e.g. 'republish_tid_JNhUrBjdXo'. */
1315
1440
  readonly publishReference?: Maybe<Scalars['String']['output']>;
1316
- /** The ISO string date the article was published, eg. '2024-04-03T10:35:52.443Z'. */
1441
+ /** The ISO string date the article was marked as published, eg. '2024-04-03T10:35:52.443Z'. */
1317
1442
  readonly publishedDate: Scalars['String']['output'];
1318
- /** The number of milliseconds since the unix epoch the article was published, eg '1712140552443'. */
1443
+ /** The number of milliseconds since the unix epoch the article was marked as published, eg '1712140552443'. */
1319
1444
  readonly publishedTimestamp: Scalars['Float']['output'];
1320
1445
  /** An introductory paragraph of the article. */
1321
1446
  readonly standfirst?: Maybe<Scalars['String']['output']>;
@@ -1332,6 +1457,11 @@ export type Placeholder = Content & {
1332
1457
  };
1333
1458
 
1334
1459
 
1460
+ export type PlaceholderAnnotationsArgs = {
1461
+ byPredicate?: InputMaybe<Scalars['String']['input']>;
1462
+ };
1463
+
1464
+
1335
1465
  export type PlaceholderBylineArgs = {
1336
1466
  vanity?: InputMaybe<Scalars['Boolean']['input']>;
1337
1467
  };
@@ -1491,13 +1621,13 @@ export type TableOfContents = {
1491
1621
 
1492
1622
  export type Teaser = {
1493
1623
  /** The date the content of the teaser was first published. */
1494
- readonly firstPublishedDate?: Maybe<Scalars['String']['output']>;
1624
+ readonly firstPublishedDate: Scalars['String']['output'];
1495
1625
  /** The unique identifier of the teaser, a uuid or a url. */
1496
- readonly id?: Maybe<Scalars['String']['output']>;
1626
+ readonly id: Scalars['String']['output'];
1497
1627
  /** The image to be used as a thumbnail for the teaser. */
1498
1628
  readonly image?: Maybe<Image>;
1499
1629
  /** An object containing a map of indicator items to boolean values, eg. accessLevel, isOpinion. */
1500
- readonly indicators?: Maybe<Indicators>;
1630
+ readonly indicators: Indicators;
1501
1631
  /** An object containing the metadata details of the teaser, eg. id, url, prefLabel. */
1502
1632
  readonly metaAltLink?: Maybe<MetaLink>;
1503
1633
  /** An object containing the metadata details of the teaser, eg. id, url, prefLabel. */
@@ -1507,15 +1637,15 @@ export type Teaser = {
1507
1637
  /** The text to be displayed after the metadata of the teaser. */
1508
1638
  readonly metaSuffixText?: Maybe<Scalars['String']['output']>;
1509
1639
  /** The date the content of the teaser was published. */
1510
- readonly publishedDate?: Maybe<Scalars['String']['output']>;
1640
+ readonly publishedDate: Scalars['String']['output'];
1511
1641
  /** The introductory text of the teaser. */
1512
1642
  readonly standfirst?: Maybe<Scalars['String']['output']>;
1513
1643
  /** The theme to use for the teaser, eg. 'opinion' or 'news'. */
1514
- readonly theme?: Maybe<Scalars['String']['output']>;
1644
+ readonly theme: Scalars['String']['output'];
1515
1645
  /** The title of the teaser. */
1516
- readonly title?: Maybe<Scalars['String']['output']>;
1646
+ readonly title: Scalars['String']['output'];
1517
1647
  /** The type of the teaser, eg. 'article' or 'video'. */
1518
- readonly type?: Maybe<Scalars['String']['output']>;
1648
+ readonly type: Scalars['String']['output'];
1519
1649
  /** The url of the content that the teaser refers to. */
1520
1650
  readonly url: Scalars['String']['output'];
1521
1651
  };
@@ -1624,7 +1754,7 @@ export type Video = Content & {
1624
1754
  /** An alternative title of the article. */
1625
1755
  readonly altTitle?: Maybe<AltTitle>;
1626
1756
  /** An array of concepts related to the article, eg. organisations or topics. */
1627
- readonly annotations?: Maybe<ReadonlyArray<Maybe<Concept>>>;
1757
+ readonly annotations: ReadonlyArray<ConceptInterface>;
1628
1758
  /** An abstract syntax tree of the article content. */
1629
1759
  readonly body?: Maybe<RichText>;
1630
1760
  /** The raw string of the XML as returned from ContentAPI. */
@@ -1647,13 +1777,15 @@ export type Video = Content & {
1647
1777
  readonly instantAlertConcept?: Maybe<Concept>;
1648
1778
  /** An image object containing the url and the caption, to be displayed usually before the article content. */
1649
1779
  readonly mainImage?: Maybe<Image>;
1780
+ /** The number of milliseconds since the unix epoch the article was last changed, eg '1712140552443'. */
1781
+ readonly modifiedTimestamp: Scalars['Float']['output'];
1650
1782
  /** The party that originated the article, eg. 'FT'. */
1651
1783
  readonly originatingParty?: Maybe<Scalars['String']['output']>;
1652
1784
  /** A string ID used to trace content publishes through the pipeline, e.g. 'republish_tid_JNhUrBjdXo'. */
1653
1785
  readonly publishReference?: Maybe<Scalars['String']['output']>;
1654
- /** The ISO string date the article was published, eg. '2024-04-03T10:35:52.443Z'. */
1786
+ /** The ISO string date the article was marked as published, eg. '2024-04-03T10:35:52.443Z'. */
1655
1787
  readonly publishedDate: Scalars['String']['output'];
1656
- /** The number of milliseconds since the unix epoch the article was published, eg '1712140552443'. */
1788
+ /** The number of milliseconds since the unix epoch the article was marked as published, eg '1712140552443'. */
1657
1789
  readonly publishedTimestamp: Scalars['Float']['output'];
1658
1790
  /** An introductory paragraph of the article. */
1659
1791
  readonly standfirst?: Maybe<Scalars['String']['output']>;
@@ -1670,6 +1802,11 @@ export type Video = Content & {
1670
1802
  };
1671
1803
 
1672
1804
 
1805
+ export type VideoAnnotationsArgs = {
1806
+ byPredicate?: InputMaybe<Scalars['String']['input']>;
1807
+ };
1808
+
1809
+
1673
1810
  export type VideoBylineArgs = {
1674
1811
  vanity?: InputMaybe<Scalars['Boolean']['input']>;
1675
1812
  };
@@ -1764,10 +1901,11 @@ export type ResolversUnionTypes<RefType extends Record<string, unknown>> = Resol
1764
1901
 
1765
1902
  /** Mapping of interface types */
1766
1903
  export type ResolversInterfaceTypes<RefType extends Record<string, unknown>> = ResolversObject<{
1904
+ ConceptInterface: ( ConceptModel ) | ( ConceptModel );
1767
1905
  Content: ( CapiResponse ) | ( CapiResponse ) | ( CapiResponse ) | ( CapiResponse ) | ( CapiResponse ) | ( CapiResponse ) | ( CapiResponse );
1768
1906
  Image: ( ImageModel ) | ( ImageModel ) | ( ImageModel ) | ( ImageModel ) | ( ImageModel ) | ( ImageModel ) | ( ImageModel ) | ( ImageModel ) | ( ImageModel );
1769
1907
  Picture: ( PictureModel ) | ( PictureModel ) | ( PictureModel );
1770
- Reference: ( ReferenceWithCAPIData<ClipSetNode|OldClipNode> ) | ( ReferenceWithCAPIData<ContentTree.Flourish> ) | ( ReferenceWithCAPIData<ContentTree.ImageSet> ) | ( ReferenceWithCAPIData<ContentTree.LayoutImage> ) | ( ReferenceWithCAPIData<ContentTree.ImageSet> ) | ( ReferenceWithCAPIData<RawImageNode> ) | ( ReferenceWithCAPIData<ContentTree.Recommended> ) | ( ReferenceWithCAPIData<ContentTree.ScrollyImage> ) | ( ReferenceWithCAPIData<ContentTree.Tweet> ) | ( ReferenceWithCAPIData<VideoNode> );
1908
+ Reference: ( ReferenceWithCAPIData<AuthorNode> ) | ( ReferenceWithCAPIData<ClipSetNode|OldClipNode> ) | ( ReferenceWithCAPIData<ContentTree.Flourish> ) | ( ReferenceWithCAPIData<ContentTree.ImageSet> ) | ( ReferenceWithCAPIData<ContentTree.LayoutImage> ) | ( ReferenceWithCAPIData<ContentTree.ImageSet> ) | ( ReferenceWithCAPIData<RawImageNode> ) | ( ReferenceWithCAPIData<ContentTree.Recommended> ) | ( ReferenceWithCAPIData<ContentTree.ScrollyImage> ) | ( ReferenceWithCAPIData<ContentTree.Tweet> ) | ( ReferenceWithCAPIData<VideoNode> );
1771
1909
  Topper: ( TopperModel ) | ( TopperModel ) | ( TopperModel ) | ( TopperModel ) | ( TopperModel ) | ( TopperModel ) | ( TopperModel ) | ( TopperModel ) | ( TopperModel ) | ( TopperModel );
1772
1910
  TopperWithBrand: ( TopperModel ) | ( TopperModel ) | ( TopperModel ) | ( TopperModel ) | ( TopperModel ) | ( TopperModel );
1773
1911
  TopperWithHeadshot: ( TopperModel ) | ( TopperModel );
@@ -1784,6 +1922,8 @@ export type ResolversTypes = ResolversObject<{
1784
1922
  AltTitle: ResolverTypeWrapper<AltTitle>;
1785
1923
  Article: ResolverTypeWrapper<CapiResponse>;
1786
1924
  Audio: ResolverTypeWrapper<CapiResponse>;
1925
+ Author: ResolverTypeWrapper<ConceptModel>;
1926
+ AuthorReference: ResolverTypeWrapper<ReferenceWithCAPIData<AuthorNode>>;
1787
1927
  BasicTopper: ResolverTypeWrapper<TopperModel>;
1788
1928
  Boolean: ResolverTypeWrapper<Scalars['Boolean']['output']>;
1789
1929
  BrandedTopper: ResolverTypeWrapper<TopperModel>;
@@ -1794,6 +1934,7 @@ export type ResolversTypes = ResolversObject<{
1794
1934
  ClipSet: ResolverTypeWrapper<ReferenceWithCAPIData<ClipSetNode|OldClipNode>>;
1795
1935
  ClipSource: ResolverTypeWrapper<ClipSource>;
1796
1936
  Concept: ResolverTypeWrapper<ConceptModel>;
1937
+ ConceptInterface: ResolverTypeWrapper<ConceptModel>;
1797
1938
  Content: ResolverTypeWrapper<ResolversInterfaceTypes<ResolversTypes>['Content']>;
1798
1939
  ContentPackage: ResolverTypeWrapper<CapiResponse>;
1799
1940
  ContentType: ResolverTypeWrapper<Scalars['ContentType']['output']>;
@@ -1878,6 +2019,8 @@ export type ResolversParentTypes = ResolversObject<{
1878
2019
  AltTitle: AltTitle;
1879
2020
  Article: CapiResponse;
1880
2021
  Audio: CapiResponse;
2022
+ Author: ConceptModel;
2023
+ AuthorReference: ReferenceWithCAPIData<AuthorNode>;
1881
2024
  BasicTopper: TopperModel;
1882
2025
  Boolean: Scalars['Boolean']['output'];
1883
2026
  BrandedTopper: TopperModel;
@@ -1888,6 +2031,7 @@ export type ResolversParentTypes = ResolversObject<{
1888
2031
  ClipSet: ReferenceWithCAPIData<ClipSetNode|OldClipNode>;
1889
2032
  ClipSource: ClipSource;
1890
2033
  Concept: ConceptModel;
2034
+ ConceptInterface: ConceptModel;
1891
2035
  Content: ResolversInterfaceTypes<ResolversParentTypes>['Content'];
1892
2036
  ContentPackage: CapiResponse;
1893
2037
  ContentType: Scalars['ContentType']['output'];
@@ -1969,7 +2113,7 @@ export interface AccessLevelScalarConfig extends GraphQLScalarTypeConfig<Resolve
1969
2113
  }
1970
2114
 
1971
2115
  export type AccessibilityResolvers<ContextType = QueryContext, ParentType extends ResolversParentTypes['Accessibility'] = ResolversParentTypes['Accessibility']> = ResolversObject<{
1972
- captions: Resolver<Maybe<ReadonlyArray<Maybe<ResolversTypes['Caption']>>>, ParentType, ContextType>;
2116
+ captions: Resolver<Maybe<ReadonlyArray<ResolversTypes['Caption']>>, ParentType, ContextType>;
1973
2117
  transcript: Resolver<Maybe<ResolversTypes['RichText']>, ParentType, ContextType>;
1974
2118
  __isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
1975
2119
  }>;
@@ -1988,7 +2132,7 @@ export type ArticleResolvers<ContextType = QueryContext, ParentType extends Reso
1988
2132
  accessLevel: Resolver<Maybe<ResolversTypes['AccessLevel']>, ParentType, ContextType>;
1989
2133
  altStandfirst: Resolver<Maybe<ResolversTypes['AltStandfirst']>, ParentType, ContextType>;
1990
2134
  altTitle: Resolver<Maybe<ResolversTypes['AltTitle']>, ParentType, ContextType>;
1991
- annotations: Resolver<Maybe<ReadonlyArray<Maybe<ResolversTypes['Concept']>>>, ParentType, ContextType>;
2135
+ annotations: Resolver<ReadonlyArray<ResolversTypes['ConceptInterface']>, ParentType, ContextType, Partial<ArticleAnnotationsArgs>>;
1992
2136
  body: Resolver<Maybe<ResolversTypes['RichText']>, ParentType, ContextType>;
1993
2137
  bodyXML: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
1994
2138
  byline: Resolver<Maybe<ResolversTypes['StructuredContent']>, ParentType, ContextType, Partial<ArticleBylineArgs>>;
@@ -2001,6 +2145,7 @@ export type ArticleResolvers<ContextType = QueryContext, ParentType extends Reso
2001
2145
  id: Resolver<ResolversTypes['ID'], ParentType, ContextType>;
2002
2146
  instantAlertConcept: Resolver<Maybe<ResolversTypes['Concept']>, ParentType, ContextType>;
2003
2147
  mainImage: Resolver<Maybe<ResolversTypes['Image']>, ParentType, ContextType>;
2148
+ modifiedTimestamp: Resolver<ResolversTypes['Float'], ParentType, ContextType>;
2004
2149
  originatingParty: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2005
2150
  publishReference: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2006
2151
  publishedDate: Resolver<ResolversTypes['String'], ParentType, ContextType>;
@@ -2018,7 +2163,7 @@ export type AudioResolvers<ContextType = QueryContext, ParentType extends Resolv
2018
2163
  accessLevel: Resolver<Maybe<ResolversTypes['AccessLevel']>, ParentType, ContextType>;
2019
2164
  altStandfirst: Resolver<Maybe<ResolversTypes['AltStandfirst']>, ParentType, ContextType>;
2020
2165
  altTitle: Resolver<Maybe<ResolversTypes['AltTitle']>, ParentType, ContextType>;
2021
- annotations: Resolver<Maybe<ReadonlyArray<Maybe<ResolversTypes['Concept']>>>, ParentType, ContextType>;
2166
+ annotations: Resolver<ReadonlyArray<ResolversTypes['ConceptInterface']>, ParentType, ContextType, Partial<AudioAnnotationsArgs>>;
2022
2167
  body: Resolver<Maybe<ResolversTypes['RichText']>, ParentType, ContextType>;
2023
2168
  bodyXML: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2024
2169
  byline: Resolver<Maybe<ResolversTypes['StructuredContent']>, ParentType, ContextType, Partial<AudioBylineArgs>>;
@@ -2031,6 +2176,7 @@ export type AudioResolvers<ContextType = QueryContext, ParentType extends Resolv
2031
2176
  instantAlertConcept: Resolver<Maybe<ResolversTypes['Concept']>, ParentType, ContextType>;
2032
2177
  mainImage: Resolver<Maybe<ResolversTypes['Image']>, ParentType, ContextType>;
2033
2178
  media: Resolver<Maybe<ReadonlyArray<Maybe<ResolversTypes['Media']>>>, ParentType, ContextType>;
2179
+ modifiedTimestamp: Resolver<ResolversTypes['Float'], ParentType, ContextType>;
2034
2180
  originatingParty: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2035
2181
  publishReference: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2036
2182
  publishedDate: Resolver<ResolversTypes['String'], ParentType, ContextType>;
@@ -2044,6 +2190,26 @@ export type AudioResolvers<ContextType = QueryContext, ParentType extends Resolv
2044
2190
  __isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
2045
2191
  }>;
2046
2192
 
2193
+ export type AuthorResolvers<ContextType = QueryContext, ParentType extends ResolversParentTypes['Author'] = ResolversParentTypes['Author']> = ResolversObject<{
2194
+ apiUrl: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2195
+ directType: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2196
+ id: Resolver<ResolversTypes['ID'], ParentType, ContextType>;
2197
+ isPackageBrand: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType>;
2198
+ person: Resolver<ResolversTypes['Person'], ParentType, ContextType>;
2199
+ predicate: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2200
+ prefLabel: Resolver<ResolversTypes['String'], ParentType, ContextType>;
2201
+ type: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2202
+ types: Resolver<Maybe<ReadonlyArray<ResolversTypes['String']>>, ParentType, ContextType>;
2203
+ url: Resolver<ResolversTypes['String'], ParentType, ContextType, Partial<AuthorUrlArgs>>;
2204
+ __isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
2205
+ }>;
2206
+
2207
+ export type AuthorReferenceResolvers<ContextType = QueryContext, ParentType extends ResolversParentTypes['AuthorReference'] = ResolversParentTypes['AuthorReference']> = ResolversObject<{
2208
+ concept: Resolver<Maybe<ResolversTypes['ConceptInterface']>, ParentType, ContextType>;
2209
+ type: Resolver<ResolversTypes['String'], ParentType, ContextType>;
2210
+ __isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
2211
+ }>;
2212
+
2047
2213
  export type BasicTopperResolvers<ContextType = QueryContext, ParentType extends ResolversParentTypes['BasicTopper'] = ResolversParentTypes['BasicTopper']> = ResolversObject<{
2048
2214
  backgroundBox: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType>;
2049
2215
  backgroundColour: Resolver<Maybe<ResolversTypes['TopperBackgroundColour']>, ParentType, ContextType>;
@@ -2098,8 +2264,8 @@ export type ClipSetResolvers<ContextType = QueryContext, ParentType extends Reso
2098
2264
  accessibility: Resolver<Maybe<ResolversTypes['Accessibility']>, ParentType, ContextType>;
2099
2265
  autoplay: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType>;
2100
2266
  caption: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2101
- clips: Resolver<Maybe<ReadonlyArray<Maybe<ResolversTypes['Clip']>>>, ParentType, ContextType>;
2102
- contentWarning: Resolver<Maybe<ReadonlyArray<Maybe<ResolversTypes['String']>>>, ParentType, ContextType>;
2267
+ clips: Resolver<Maybe<ReadonlyArray<ResolversTypes['Clip']>>, ParentType, ContextType>;
2268
+ contentWarning: Resolver<Maybe<ReadonlyArray<ResolversTypes['String']>>, ParentType, ContextType>;
2103
2269
  credits: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2104
2270
  dataLayout: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2105
2271
  description: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
@@ -2127,6 +2293,20 @@ export type ClipSourceResolvers<ContextType = QueryContext, ParentType extends R
2127
2293
  }>;
2128
2294
 
2129
2295
  export type ConceptResolvers<ContextType = QueryContext, ParentType extends ResolversParentTypes['Concept'] = ResolversParentTypes['Concept']> = ResolversObject<{
2296
+ apiUrl: Resolver<ResolversTypes['String'], ParentType, ContextType>;
2297
+ directType: Resolver<ResolversTypes['String'], ParentType, ContextType>;
2298
+ id: Resolver<ResolversTypes['ID'], ParentType, ContextType>;
2299
+ isPackageBrand: Resolver<ResolversTypes['Boolean'], ParentType, ContextType>;
2300
+ predicate: Resolver<ResolversTypes['String'], ParentType, ContextType>;
2301
+ prefLabel: Resolver<ResolversTypes['String'], ParentType, ContextType>;
2302
+ type: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2303
+ types: Resolver<ReadonlyArray<ResolversTypes['String']>, ParentType, ContextType>;
2304
+ url: Resolver<ResolversTypes['String'], ParentType, ContextType, Partial<ConceptUrlArgs>>;
2305
+ __isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
2306
+ }>;
2307
+
2308
+ export type ConceptInterfaceResolvers<ContextType = QueryContext, ParentType extends ResolversParentTypes['ConceptInterface'] = ResolversParentTypes['ConceptInterface']> = ResolversObject<{
2309
+ __resolveType?: TypeResolveFn<'Author' | 'Concept', ParentType, ContextType>;
2130
2310
  apiUrl: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2131
2311
  directType: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2132
2312
  id: Resolver<ResolversTypes['ID'], ParentType, ContextType>;
@@ -2135,8 +2315,7 @@ export type ConceptResolvers<ContextType = QueryContext, ParentType extends Reso
2135
2315
  prefLabel: Resolver<ResolversTypes['String'], ParentType, ContextType>;
2136
2316
  type: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2137
2317
  types: Resolver<Maybe<ReadonlyArray<ResolversTypes['String']>>, ParentType, ContextType>;
2138
- url: Resolver<ResolversTypes['String'], ParentType, ContextType, Partial<ConceptUrlArgs>>;
2139
- __isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
2318
+ url: Resolver<ResolversTypes['String'], ParentType, ContextType, Partial<ConceptInterfaceUrlArgs>>;
2140
2319
  }>;
2141
2320
 
2142
2321
  export type ContentResolvers<ContextType = QueryContext, ParentType extends ResolversParentTypes['Content'] = ResolversParentTypes['Content']> = ResolversObject<{
@@ -2144,7 +2323,7 @@ export type ContentResolvers<ContextType = QueryContext, ParentType extends Reso
2144
2323
  accessLevel: Resolver<Maybe<ResolversTypes['AccessLevel']>, ParentType, ContextType>;
2145
2324
  altStandfirst: Resolver<Maybe<ResolversTypes['AltStandfirst']>, ParentType, ContextType>;
2146
2325
  altTitle: Resolver<Maybe<ResolversTypes['AltTitle']>, ParentType, ContextType>;
2147
- annotations: Resolver<Maybe<ReadonlyArray<Maybe<ResolversTypes['Concept']>>>, ParentType, ContextType>;
2326
+ annotations: Resolver<ReadonlyArray<ResolversTypes['ConceptInterface']>, ParentType, ContextType, Partial<ContentAnnotationsArgs>>;
2148
2327
  body: Resolver<Maybe<ResolversTypes['RichText']>, ParentType, ContextType>;
2149
2328
  bodyXML: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2150
2329
  byline: Resolver<Maybe<ResolversTypes['StructuredContent']>, ParentType, ContextType, Partial<ContentBylineArgs>>;
@@ -2156,6 +2335,7 @@ export type ContentResolvers<ContextType = QueryContext, ParentType extends Reso
2156
2335
  id: Resolver<ResolversTypes['ID'], ParentType, ContextType>;
2157
2336
  instantAlertConcept: Resolver<Maybe<ResolversTypes['Concept']>, ParentType, ContextType>;
2158
2337
  mainImage: Resolver<Maybe<ResolversTypes['Image']>, ParentType, ContextType>;
2338
+ modifiedTimestamp: Resolver<ResolversTypes['Float'], ParentType, ContextType>;
2159
2339
  originatingParty: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2160
2340
  publishReference: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2161
2341
  publishedDate: Resolver<ResolversTypes['String'], ParentType, ContextType>;
@@ -2172,7 +2352,7 @@ export type ContentPackageResolvers<ContextType = QueryContext, ParentType exten
2172
2352
  accessLevel: Resolver<Maybe<ResolversTypes['AccessLevel']>, ParentType, ContextType>;
2173
2353
  altStandfirst: Resolver<Maybe<ResolversTypes['AltStandfirst']>, ParentType, ContextType>;
2174
2354
  altTitle: Resolver<Maybe<ResolversTypes['AltTitle']>, ParentType, ContextType>;
2175
- annotations: Resolver<Maybe<ReadonlyArray<Maybe<ResolversTypes['Concept']>>>, ParentType, ContextType>;
2355
+ annotations: Resolver<ReadonlyArray<ResolversTypes['ConceptInterface']>, ParentType, ContextType, Partial<ContentPackageAnnotationsArgs>>;
2176
2356
  body: Resolver<Maybe<ResolversTypes['RichText']>, ParentType, ContextType>;
2177
2357
  bodyXML: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2178
2358
  byline: Resolver<Maybe<ResolversTypes['StructuredContent']>, ParentType, ContextType, Partial<ContentPackageBylineArgs>>;
@@ -2186,6 +2366,7 @@ export type ContentPackageResolvers<ContextType = QueryContext, ParentType exten
2186
2366
  id: Resolver<ResolversTypes['ID'], ParentType, ContextType>;
2187
2367
  instantAlertConcept: Resolver<Maybe<ResolversTypes['Concept']>, ParentType, ContextType>;
2188
2368
  mainImage: Resolver<Maybe<ResolversTypes['Image']>, ParentType, ContextType>;
2369
+ modifiedTimestamp: Resolver<ResolversTypes['Float'], ParentType, ContextType>;
2189
2370
  originatingParty: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2190
2371
  publishReference: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2191
2372
  publishedDate: Resolver<ResolversTypes['String'], ParentType, ContextType>;
@@ -2258,11 +2439,12 @@ export type FlourishFallbackResolvers<ContextType = QueryContext, ParentType ext
2258
2439
  }>;
2259
2440
 
2260
2441
  export type FlourishSourceResolvers<ContextType = QueryContext, ParentType extends ResolversParentTypes['FlourishSource'] = ResolversParentTypes['FlourishSource']> = ResolversObject<{
2261
- format: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2262
- height: Resolver<Maybe<ResolversTypes['Int']>, ParentType, ContextType>;
2263
- type: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2264
- url: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2265
- width: Resolver<Maybe<ResolversTypes['Int']>, ParentType, ContextType>;
2442
+ format: Resolver<ResolversTypes['ImageFormat'], ParentType, ContextType>;
2443
+ height: Resolver<ResolversTypes['Int'], ParentType, ContextType>;
2444
+ id: Resolver<ResolversTypes['String'], ParentType, ContextType>;
2445
+ type: Resolver<ResolversTypes['String'], ParentType, ContextType>;
2446
+ url: Resolver<ResolversTypes['String'], ParentType, ContextType>;
2447
+ width: Resolver<ResolversTypes['Int'], ParentType, ContextType>;
2266
2448
  __isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
2267
2449
  }>;
2268
2450
 
@@ -2297,7 +2479,7 @@ export type ImageResolvers<ContextType = QueryContext, ParentType extends Resolv
2297
2479
  id: Resolver<ResolversTypes['String'], ParentType, ContextType>;
2298
2480
  sourceSet: Resolver<ReadonlyArray<ResolversTypes['ImageSource']>, ParentType, ContextType, Partial<ImageSourceSetArgs>>;
2299
2481
  type: Resolver<Maybe<ResolversTypes['ImageType']>, ParentType, ContextType>;
2300
- url: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2482
+ url: Resolver<ResolversTypes['String'], ParentType, ContextType>;
2301
2483
  width: Resolver<Maybe<ResolversTypes['Int']>, ParentType, ContextType>;
2302
2484
  }>;
2303
2485
 
@@ -2310,7 +2492,7 @@ export type ImageDesktopResolvers<ContextType = QueryContext, ParentType extends
2310
2492
  id: Resolver<ResolversTypes['String'], ParentType, ContextType>;
2311
2493
  sourceSet: Resolver<ReadonlyArray<ResolversTypes['ImageSource']>, ParentType, ContextType, Partial<ImageDesktopSourceSetArgs>>;
2312
2494
  type: Resolver<Maybe<ResolversTypes['ImageType']>, ParentType, ContextType>;
2313
- url: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2495
+ url: Resolver<ResolversTypes['String'], ParentType, ContextType>;
2314
2496
  width: Resolver<Maybe<ResolversTypes['Int']>, ParentType, ContextType>;
2315
2497
  __isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
2316
2498
  }>;
@@ -2328,7 +2510,7 @@ export type ImageLandscapeResolvers<ContextType = QueryContext, ParentType exten
2328
2510
  id: Resolver<ResolversTypes['String'], ParentType, ContextType>;
2329
2511
  sourceSet: Resolver<ReadonlyArray<ResolversTypes['ImageSource']>, ParentType, ContextType, Partial<ImageLandscapeSourceSetArgs>>;
2330
2512
  type: Resolver<Maybe<ResolversTypes['ImageType']>, ParentType, ContextType>;
2331
- url: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2513
+ url: Resolver<ResolversTypes['String'], ParentType, ContextType>;
2332
2514
  width: Resolver<Maybe<ResolversTypes['Int']>, ParentType, ContextType>;
2333
2515
  __isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
2334
2516
  }>;
@@ -2342,7 +2524,7 @@ export type ImageMobileResolvers<ContextType = QueryContext, ParentType extends
2342
2524
  id: Resolver<ResolversTypes['String'], ParentType, ContextType>;
2343
2525
  sourceSet: Resolver<ReadonlyArray<ResolversTypes['ImageSource']>, ParentType, ContextType, Partial<ImageMobileSourceSetArgs>>;
2344
2526
  type: Resolver<Maybe<ResolversTypes['ImageType']>, ParentType, ContextType>;
2345
- url: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2527
+ url: Resolver<ResolversTypes['String'], ParentType, ContextType>;
2346
2528
  width: Resolver<Maybe<ResolversTypes['Int']>, ParentType, ContextType>;
2347
2529
  __isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
2348
2530
  }>;
@@ -2356,7 +2538,7 @@ export type ImagePortraitResolvers<ContextType = QueryContext, ParentType extend
2356
2538
  id: Resolver<ResolversTypes['String'], ParentType, ContextType>;
2357
2539
  sourceSet: Resolver<ReadonlyArray<ResolversTypes['ImageSource']>, ParentType, ContextType, Partial<ImagePortraitSourceSetArgs>>;
2358
2540
  type: Resolver<Maybe<ResolversTypes['ImageType']>, ParentType, ContextType>;
2359
- url: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2541
+ url: Resolver<ResolversTypes['String'], ParentType, ContextType>;
2360
2542
  width: Resolver<Maybe<ResolversTypes['Int']>, ParentType, ContextType>;
2361
2543
  __isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
2362
2544
  }>;
@@ -2368,9 +2550,9 @@ export type ImageSetResolvers<ContextType = QueryContext, ParentType extends Res
2368
2550
  }>;
2369
2551
 
2370
2552
  export type ImageSourceResolvers<ContextType = QueryContext, ParentType extends ResolversParentTypes['ImageSource'] = ResolversParentTypes['ImageSource']> = ResolversObject<{
2371
- dpr: Resolver<Maybe<ResolversTypes['Int']>, ParentType, ContextType>;
2553
+ dpr: Resolver<ResolversTypes['Int'], ParentType, ContextType>;
2372
2554
  url: Resolver<ResolversTypes['String'], ParentType, ContextType>;
2373
- width: Resolver<Maybe<ResolversTypes['Int']>, ParentType, ContextType>;
2555
+ width: Resolver<ResolversTypes['Int'], ParentType, ContextType>;
2374
2556
  __isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
2375
2557
  }>;
2376
2558
 
@@ -2383,7 +2565,7 @@ export type ImageSquareResolvers<ContextType = QueryContext, ParentType extends
2383
2565
  id: Resolver<ResolversTypes['String'], ParentType, ContextType>;
2384
2566
  sourceSet: Resolver<ReadonlyArray<ResolversTypes['ImageSource']>, ParentType, ContextType, Partial<ImageSquareSourceSetArgs>>;
2385
2567
  type: Resolver<Maybe<ResolversTypes['ImageType']>, ParentType, ContextType>;
2386
- url: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2568
+ url: Resolver<ResolversTypes['String'], ParentType, ContextType>;
2387
2569
  width: Resolver<Maybe<ResolversTypes['Int']>, ParentType, ContextType>;
2388
2570
  __isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
2389
2571
  }>;
@@ -2397,7 +2579,7 @@ export type ImageSquareFtEditResolvers<ContextType = QueryContext, ParentType ex
2397
2579
  id: Resolver<ResolversTypes['String'], ParentType, ContextType>;
2398
2580
  sourceSet: Resolver<ReadonlyArray<ResolversTypes['ImageSource']>, ParentType, ContextType, Partial<ImageSquareFtEditSourceSetArgs>>;
2399
2581
  type: Resolver<Maybe<ResolversTypes['ImageType']>, ParentType, ContextType>;
2400
- url: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2582
+ url: Resolver<ResolversTypes['String'], ParentType, ContextType>;
2401
2583
  width: Resolver<Maybe<ResolversTypes['Int']>, ParentType, ContextType>;
2402
2584
  __isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
2403
2585
  }>;
@@ -2411,7 +2593,7 @@ export type ImageStandardResolvers<ContextType = QueryContext, ParentType extend
2411
2593
  id: Resolver<ResolversTypes['String'], ParentType, ContextType>;
2412
2594
  sourceSet: Resolver<ReadonlyArray<ResolversTypes['ImageSource']>, ParentType, ContextType, Partial<ImageStandardSourceSetArgs>>;
2413
2595
  type: Resolver<Maybe<ResolversTypes['ImageType']>, ParentType, ContextType>;
2414
- url: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2596
+ url: Resolver<ResolversTypes['String'], ParentType, ContextType>;
2415
2597
  width: Resolver<Maybe<ResolversTypes['Int']>, ParentType, ContextType>;
2416
2598
  __isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
2417
2599
  }>;
@@ -2425,7 +2607,7 @@ export type ImageStandardInlineResolvers<ContextType = QueryContext, ParentType
2425
2607
  id: Resolver<ResolversTypes['String'], ParentType, ContextType>;
2426
2608
  sourceSet: Resolver<ReadonlyArray<ResolversTypes['ImageSource']>, ParentType, ContextType, Partial<ImageStandardInlineSourceSetArgs>>;
2427
2609
  type: Resolver<Maybe<ResolversTypes['ImageType']>, ParentType, ContextType>;
2428
- url: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2610
+ url: Resolver<ResolversTypes['String'], ParentType, ContextType>;
2429
2611
  width: Resolver<Maybe<ResolversTypes['Int']>, ParentType, ContextType>;
2430
2612
  __isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
2431
2613
  }>;
@@ -2443,13 +2625,13 @@ export type ImageWideResolvers<ContextType = QueryContext, ParentType extends Re
2443
2625
  id: Resolver<ResolversTypes['String'], ParentType, ContextType>;
2444
2626
  sourceSet: Resolver<ReadonlyArray<ResolversTypes['ImageSource']>, ParentType, ContextType, Partial<ImageWideSourceSetArgs>>;
2445
2627
  type: Resolver<Maybe<ResolversTypes['ImageType']>, ParentType, ContextType>;
2446
- url: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2628
+ url: Resolver<ResolversTypes['String'], ParentType, ContextType>;
2447
2629
  width: Resolver<Maybe<ResolversTypes['Int']>, ParentType, ContextType>;
2448
2630
  __isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
2449
2631
  }>;
2450
2632
 
2451
2633
  export type IndicatorsResolvers<ContextType = QueryContext, ParentType extends ResolversParentTypes['Indicators'] = ResolversParentTypes['Indicators']> = ResolversObject<{
2452
- accessLevel: Resolver<Maybe<ResolversTypes['AccessLevel']>, ParentType, ContextType>;
2634
+ accessLevel: Resolver<ResolversTypes['AccessLevel'], ParentType, ContextType>;
2453
2635
  isColumn: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType>;
2454
2636
  isEditorsChoice: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType>;
2455
2637
  isExclusive: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType>;
@@ -2502,7 +2684,7 @@ export type LiveBlogPackageResolvers<ContextType = QueryContext, ParentType exte
2502
2684
  accessLevel: Resolver<Maybe<ResolversTypes['AccessLevel']>, ParentType, ContextType>;
2503
2685
  altStandfirst: Resolver<Maybe<ResolversTypes['AltStandfirst']>, ParentType, ContextType>;
2504
2686
  altTitle: Resolver<Maybe<ResolversTypes['AltTitle']>, ParentType, ContextType>;
2505
- annotations: Resolver<Maybe<ReadonlyArray<Maybe<ResolversTypes['Concept']>>>, ParentType, ContextType>;
2687
+ annotations: Resolver<ReadonlyArray<ResolversTypes['ConceptInterface']>, ParentType, ContextType, Partial<LiveBlogPackageAnnotationsArgs>>;
2506
2688
  body: Resolver<Maybe<ResolversTypes['RichText']>, ParentType, ContextType>;
2507
2689
  bodyXML: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2508
2690
  byline: Resolver<Maybe<ResolversTypes['StructuredContent']>, ParentType, ContextType, Partial<LiveBlogPackageBylineArgs>>;
@@ -2513,8 +2695,9 @@ export type LiveBlogPackageResolvers<ContextType = QueryContext, ParentType exte
2513
2695
  firstPublishedDate: Resolver<ResolversTypes['String'], ParentType, ContextType>;
2514
2696
  id: Resolver<ResolversTypes['ID'], ParentType, ContextType>;
2515
2697
  instantAlertConcept: Resolver<Maybe<ResolversTypes['Concept']>, ParentType, ContextType>;
2516
- liveBlogPosts: Resolver<Maybe<ReadonlyArray<Maybe<ResolversTypes['Content']>>>, ParentType, ContextType, Partial<LiveBlogPackageLiveBlogPostsArgs>>;
2698
+ liveBlogPosts: Resolver<Maybe<ReadonlyArray<Maybe<ResolversTypes['Content']>>>, ParentType, ContextType>;
2517
2699
  mainImage: Resolver<Maybe<ResolversTypes['Image']>, ParentType, ContextType>;
2700
+ modifiedTimestamp: Resolver<ResolversTypes['Float'], ParentType, ContextType>;
2518
2701
  originatingParty: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2519
2702
  pinnedPost: Resolver<Maybe<ResolversTypes['Content']>, ParentType, ContextType>;
2520
2703
  publishReference: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
@@ -2534,8 +2717,8 @@ export type LiveBlogPostResolvers<ContextType = QueryContext, ParentType extends
2534
2717
  accessLevel: Resolver<Maybe<ResolversTypes['AccessLevel']>, ParentType, ContextType>;
2535
2718
  altStandfirst: Resolver<Maybe<ResolversTypes['AltStandfirst']>, ParentType, ContextType>;
2536
2719
  altTitle: Resolver<Maybe<ResolversTypes['AltTitle']>, ParentType, ContextType>;
2537
- annotations: Resolver<Maybe<ReadonlyArray<Maybe<ResolversTypes['Concept']>>>, ParentType, ContextType>;
2538
- authors: Resolver<Maybe<ReadonlyArray<Maybe<ResolversTypes['Person']>>>, ParentType, ContextType>;
2720
+ annotations: Resolver<ReadonlyArray<ResolversTypes['ConceptInterface']>, ParentType, ContextType, Partial<LiveBlogPostAnnotationsArgs>>;
2721
+ authors: Resolver<ReadonlyArray<ResolversTypes['Person']>, ParentType, ContextType>;
2539
2722
  body: Resolver<Maybe<ResolversTypes['RichText']>, ParentType, ContextType>;
2540
2723
  bodyXML: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2541
2724
  byline: Resolver<Maybe<ResolversTypes['StructuredContent']>, ParentType, ContextType, Partial<LiveBlogPostBylineArgs>>;
@@ -2550,6 +2733,7 @@ export type LiveBlogPostResolvers<ContextType = QueryContext, ParentType extends
2550
2733
  instantAlertConcept: Resolver<Maybe<ResolversTypes['Concept']>, ParentType, ContextType>;
2551
2734
  isPinned: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType>;
2552
2735
  mainImage: Resolver<Maybe<ResolversTypes['Image']>, ParentType, ContextType>;
2736
+ modifiedTimestamp: Resolver<ResolversTypes['Float'], ParentType, ContextType>;
2553
2737
  originatingParty: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2554
2738
  publishReference: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2555
2739
  publishedDate: Resolver<ResolversTypes['String'], ParentType, ContextType>;
@@ -2632,7 +2816,7 @@ export type PictureResolvers<ContextType = QueryContext, ParentType extends Reso
2632
2816
  fallbackImage: Resolver<ResolversTypes['Image'], ParentType, ContextType>;
2633
2817
  imageType: Resolver<ResolversTypes['ImageType'], ParentType, ContextType>;
2634
2818
  images: Resolver<ReadonlyArray<ResolversTypes['Image']>, ParentType, ContextType>;
2635
- layoutWidth: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2819
+ layoutWidth: Resolver<ResolversTypes['String'], ParentType, ContextType>;
2636
2820
  }>;
2637
2821
 
2638
2822
  export type PictureFullBleedResolvers<ContextType = QueryContext, ParentType extends ResolversParentTypes['PictureFullBleed'] = ResolversParentTypes['PictureFullBleed']> = ResolversObject<{
@@ -2642,7 +2826,7 @@ export type PictureFullBleedResolvers<ContextType = QueryContext, ParentType ext
2642
2826
  fallbackImage: Resolver<ResolversTypes['Image'], ParentType, ContextType>;
2643
2827
  imageType: Resolver<ResolversTypes['ImageType'], ParentType, ContextType>;
2644
2828
  images: Resolver<ReadonlyArray<ResolversTypes['Image']>, ParentType, ContextType>;
2645
- layoutWidth: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2829
+ layoutWidth: Resolver<ResolversTypes['String'], ParentType, ContextType>;
2646
2830
  __isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
2647
2831
  }>;
2648
2832
 
@@ -2653,7 +2837,7 @@ export type PictureInlineResolvers<ContextType = QueryContext, ParentType extend
2653
2837
  fallbackImage: Resolver<ResolversTypes['Image'], ParentType, ContextType>;
2654
2838
  imageType: Resolver<ResolversTypes['ImageType'], ParentType, ContextType>;
2655
2839
  images: Resolver<ReadonlyArray<ResolversTypes['Image']>, ParentType, ContextType>;
2656
- layoutWidth: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2840
+ layoutWidth: Resolver<ResolversTypes['String'], ParentType, ContextType>;
2657
2841
  __isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
2658
2842
  }>;
2659
2843
 
@@ -2664,7 +2848,7 @@ export type PictureStandardResolvers<ContextType = QueryContext, ParentType exte
2664
2848
  fallbackImage: Resolver<ResolversTypes['Image'], ParentType, ContextType>;
2665
2849
  imageType: Resolver<ResolversTypes['ImageType'], ParentType, ContextType>;
2666
2850
  images: Resolver<ReadonlyArray<ResolversTypes['Image']>, ParentType, ContextType>;
2667
- layoutWidth: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2851
+ layoutWidth: Resolver<ResolversTypes['String'], ParentType, ContextType>;
2668
2852
  __isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
2669
2853
  }>;
2670
2854
 
@@ -2672,7 +2856,7 @@ export type PlaceholderResolvers<ContextType = QueryContext, ParentType extends
2672
2856
  accessLevel: Resolver<Maybe<ResolversTypes['AccessLevel']>, ParentType, ContextType>;
2673
2857
  altStandfirst: Resolver<Maybe<ResolversTypes['AltStandfirst']>, ParentType, ContextType>;
2674
2858
  altTitle: Resolver<Maybe<ResolversTypes['AltTitle']>, ParentType, ContextType>;
2675
- annotations: Resolver<Maybe<ReadonlyArray<Maybe<ResolversTypes['Concept']>>>, ParentType, ContextType>;
2859
+ annotations: Resolver<ReadonlyArray<ResolversTypes['ConceptInterface']>, ParentType, ContextType, Partial<PlaceholderAnnotationsArgs>>;
2676
2860
  body: Resolver<Maybe<ResolversTypes['RichText']>, ParentType, ContextType>;
2677
2861
  bodyXML: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2678
2862
  byline: Resolver<Maybe<ResolversTypes['StructuredContent']>, ParentType, ContextType, Partial<PlaceholderBylineArgs>>;
@@ -2685,6 +2869,7 @@ export type PlaceholderResolvers<ContextType = QueryContext, ParentType extends
2685
2869
  id: Resolver<ResolversTypes['ID'], ParentType, ContextType>;
2686
2870
  instantAlertConcept: Resolver<Maybe<ResolversTypes['Concept']>, ParentType, ContextType>;
2687
2871
  mainImage: Resolver<Maybe<ResolversTypes['Image']>, ParentType, ContextType>;
2872
+ modifiedTimestamp: Resolver<ResolversTypes['Float'], ParentType, ContextType>;
2688
2873
  originatingParty: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2689
2874
  publishReference: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2690
2875
  publishedDate: Resolver<ResolversTypes['String'], ParentType, ContextType>;
@@ -2736,7 +2921,7 @@ export type RecommendedResolvers<ContextType = QueryContext, ParentType extends
2736
2921
  }>;
2737
2922
 
2738
2923
  export type ReferenceResolvers<ContextType = QueryContext, ParentType extends ResolversParentTypes['Reference'] = ResolversParentTypes['Reference']> = ResolversObject<{
2739
- __resolveType?: TypeResolveFn<'ClipSet' | 'Flourish' | 'ImageSet' | 'LayoutImage' | 'MainImage' | 'RawImage' | 'Recommended' | 'ScrollyImage' | 'Tweet' | 'VideoReference', ParentType, ContextType>;
2924
+ __resolveType?: TypeResolveFn<'AuthorReference' | 'ClipSet' | 'Flourish' | 'ImageSet' | 'LayoutImage' | 'MainImage' | 'RawImage' | 'Recommended' | 'ScrollyImage' | 'Tweet' | 'VideoReference', ParentType, ContextType>;
2740
2925
  type: Resolver<ResolversTypes['String'], ParentType, ContextType>;
2741
2926
  }>;
2742
2927
 
@@ -2789,19 +2974,19 @@ export type TableOfContentsResolvers<ContextType = QueryContext, ParentType exte
2789
2974
  }>;
2790
2975
 
2791
2976
  export type TeaserResolvers<ContextType = QueryContext, ParentType extends ResolversParentTypes['Teaser'] = ResolversParentTypes['Teaser']> = ResolversObject<{
2792
- firstPublishedDate: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2793
- id: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2977
+ firstPublishedDate: Resolver<ResolversTypes['String'], ParentType, ContextType>;
2978
+ id: Resolver<ResolversTypes['String'], ParentType, ContextType>;
2794
2979
  image: Resolver<Maybe<ResolversTypes['Image']>, ParentType, ContextType>;
2795
- indicators: Resolver<Maybe<ResolversTypes['Indicators']>, ParentType, ContextType>;
2980
+ indicators: Resolver<ResolversTypes['Indicators'], ParentType, ContextType>;
2796
2981
  metaAltLink: Resolver<Maybe<ResolversTypes['MetaLink']>, ParentType, ContextType>;
2797
2982
  metaLink: Resolver<Maybe<ResolversTypes['MetaLink']>, ParentType, ContextType>;
2798
2983
  metaPrefixText: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2799
2984
  metaSuffixText: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2800
- publishedDate: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2985
+ publishedDate: Resolver<ResolversTypes['String'], ParentType, ContextType>;
2801
2986
  standfirst: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2802
- theme: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2803
- title: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2804
- type: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2987
+ theme: Resolver<ResolversTypes['String'], ParentType, ContextType>;
2988
+ title: Resolver<ResolversTypes['String'], ParentType, ContextType>;
2989
+ type: Resolver<ResolversTypes['String'], ParentType, ContextType>;
2805
2990
  url: Resolver<ResolversTypes['String'], ParentType, ContextType, Partial<TeaserUrlArgs>>;
2806
2991
  __isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
2807
2992
  }>;
@@ -2876,7 +3061,7 @@ export type VideoResolvers<ContextType = QueryContext, ParentType extends Resolv
2876
3061
  accessLevel: Resolver<Maybe<ResolversTypes['AccessLevel']>, ParentType, ContextType>;
2877
3062
  altStandfirst: Resolver<Maybe<ResolversTypes['AltStandfirst']>, ParentType, ContextType>;
2878
3063
  altTitle: Resolver<Maybe<ResolversTypes['AltTitle']>, ParentType, ContextType>;
2879
- annotations: Resolver<Maybe<ReadonlyArray<Maybe<ResolversTypes['Concept']>>>, ParentType, ContextType>;
3064
+ annotations: Resolver<ReadonlyArray<ResolversTypes['ConceptInterface']>, ParentType, ContextType, Partial<VideoAnnotationsArgs>>;
2880
3065
  body: Resolver<Maybe<ResolversTypes['RichText']>, ParentType, ContextType>;
2881
3066
  bodyXML: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2882
3067
  byline: Resolver<Maybe<ResolversTypes['StructuredContent']>, ParentType, ContextType, Partial<VideoBylineArgs>>;
@@ -2888,6 +3073,7 @@ export type VideoResolvers<ContextType = QueryContext, ParentType extends Resolv
2888
3073
  id: Resolver<ResolversTypes['ID'], ParentType, ContextType>;
2889
3074
  instantAlertConcept: Resolver<Maybe<ResolversTypes['Concept']>, ParentType, ContextType>;
2890
3075
  mainImage: Resolver<Maybe<ResolversTypes['Image']>, ParentType, ContextType>;
3076
+ modifiedTimestamp: Resolver<ResolversTypes['Float'], ParentType, ContextType>;
2891
3077
  originatingParty: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2892
3078
  publishReference: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
2893
3079
  publishedDate: Resolver<ResolversTypes['String'], ParentType, ContextType>;
@@ -2915,6 +3101,8 @@ export type Resolvers<ContextType = QueryContext> = ResolversObject<{
2915
3101
  AltTitle: AltTitleResolvers<ContextType>;
2916
3102
  Article: ArticleResolvers<ContextType>;
2917
3103
  Audio: AudioResolvers<ContextType>;
3104
+ Author: AuthorResolvers<ContextType>;
3105
+ AuthorReference: AuthorReferenceResolvers<ContextType>;
2918
3106
  BasicTopper: BasicTopperResolvers<ContextType>;
2919
3107
  BrandedTopper: BrandedTopperResolvers<ContextType>;
2920
3108
  CanBeSyndicated: GraphQLScalarType;
@@ -2924,6 +3112,7 @@ export type Resolvers<ContextType = QueryContext> = ResolversObject<{
2924
3112
  ClipSet: ClipSetResolvers<ContextType>;
2925
3113
  ClipSource: ClipSourceResolvers<ContextType>;
2926
3114
  Concept: ConceptResolvers<ContextType>;
3115
+ ConceptInterface: ConceptInterfaceResolvers<ContextType>;
2927
3116
  Content: ContentResolvers<ContextType>;
2928
3117
  ContentPackage: ContentPackageResolvers<ContextType>;
2929
3118
  ContentType: GraphQLScalarType;