@financial-times/cp-content-pipeline-schema 2.5.3 → 2.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/README.md +187 -41
  3. package/lib/datasources/base.d.ts +1 -0
  4. package/lib/datasources/capi.js +1 -0
  5. package/lib/datasources/capi.js.map +1 -1
  6. package/lib/datasources/instrumented.d.ts +1 -0
  7. package/lib/datasources/instrumented.js +1 -9
  8. package/lib/datasources/instrumented.js.map +1 -1
  9. package/lib/datasources/origami-image.js +1 -0
  10. package/lib/datasources/origami-image.js.map +1 -1
  11. package/lib/datasources/twitter.js +1 -0
  12. package/lib/datasources/twitter.js.map +1 -1
  13. package/lib/datasources/url-management.d.ts +1 -0
  14. package/lib/datasources/url-management.js +2 -0
  15. package/lib/datasources/url-management.js.map +1 -1
  16. package/lib/fixtures/capiObject.js +1 -1
  17. package/lib/fixtures/capiObject.js.map +1 -1
  18. package/lib/generated/index.d.ts +572 -2
  19. package/lib/model/CapiResponse.d.ts +1 -0
  20. package/lib/model/CapiResponse.js +4 -2
  21. package/lib/model/CapiResponse.js.map +1 -1
  22. package/lib/model/CapiResponse.test.js +7 -0
  23. package/lib/model/CapiResponse.test.js.map +1 -1
  24. package/lib/resolvers/content-tree/Workarounds.d.ts +8 -1
  25. package/lib/resolvers/content-tree/nodePredicates.d.ts +1 -1
  26. package/lib/resolvers/content-tree/tagMappings.js +14 -5
  27. package/lib/resolvers/content-tree/tagMappings.js.map +1 -1
  28. package/lib/resolvers/content.d.ts +8 -0
  29. package/lib/resolvers/content.js +1 -0
  30. package/lib/resolvers/content.js.map +1 -1
  31. package/lib/resolvers/index.d.ts +8 -0
  32. package/package.json +1 -1
  33. package/queries/article.graphql +1 -0
  34. package/src/datasources/base.ts +1 -0
  35. package/src/datasources/capi.ts +1 -0
  36. package/src/datasources/instrumented.ts +1 -11
  37. package/src/datasources/origami-image.ts +3 -0
  38. package/src/datasources/twitter.ts +2 -0
  39. package/src/datasources/url-management.ts +2 -0
  40. package/src/fixtures/capiObject.ts +1 -1
  41. package/src/generated/index.ts +572 -2
  42. package/src/model/CapiResponse.test.ts +9 -0
  43. package/src/model/CapiResponse.ts +4 -3
  44. package/src/resolvers/content-tree/Workarounds.ts +10 -0
  45. package/src/resolvers/content-tree/tagMappings.ts +15 -5
  46. package/src/resolvers/content.ts +1 -0
  47. package/tsconfig.tsbuildinfo +1 -1
  48. package/typedefs/clip.graphql +28 -0
  49. package/typedefs/concept.graphql +21 -2
  50. package/typedefs/content.graphql +465 -36
  51. package/typedefs/core.graphql +6 -0
  52. package/typedefs/image.graphql +210 -15
  53. package/typedefs/picture.graphql +54 -1
  54. package/typedefs/references/clipSet.graphql +34 -1
  55. package/typedefs/references/flourish.graphql +8 -0
  56. package/typedefs/references/imageSet.graphql +6 -0
  57. package/typedefs/references/layoutImage.graphql +3 -0
  58. package/typedefs/references/rawImage.graphql +3 -0
  59. package/typedefs/references/recommended.graphql +3 -0
  60. package/typedefs/references/reference.graphql +1 -0
  61. package/typedefs/references/scrollyImage.graphql +3 -0
  62. package/typedefs/references/tweet.graphql +3 -0
  63. package/typedefs/references/video.graphql +5 -0
  64. package/typedefs/richText.graphql +7 -4
  65. package/typedefs/teaser.graphql +42 -1
  66. package/typedefs/topper.graphql +219 -7
@@ -1,248 +1,677 @@
1
- interface Content {
2
- title: String!
3
- id: ID!
4
- type: ContentType!
5
- standfirst: String
6
- topper: Topper
7
- body: RichText
8
- bodyXML: String
9
- url(vanity: Boolean, relative: Boolean): String!
10
- publishedDate: String!
11
- firstPublishedDate: String!
12
- mainImage: Image
13
- altTitle: AltTitle
14
- altStandfirst: AltStandfirst
15
- byline(vanity: Boolean): StructuredContent
16
- teaser: Teaser
17
- annotations: [Concept]
18
- editorialDesk: String
19
- accessLevel: AccessLevel
20
- instantAlertConcept: Concept
21
- canBeSyndicated: CanBeSyndicated
22
- originatingParty: String
23
- commentsEnabled: Boolean
24
- design: Design
25
- }
26
-
27
1
  type Design {
2
+ "A scalar representing the theme of the design, eg. 'extra-wide'."
28
3
  theme: PackageDesign
4
+
5
+ "The layout, eg. 'default'."
29
6
  layout: String
30
7
  }
31
8
 
32
9
  type AltTitle {
10
+ "A promotional title of the article."
33
11
  promotionalTitle: String
34
12
  }
35
13
 
36
14
  type AltStandfirst {
15
+ "An introductory paragraph of the article."
37
16
  promotionalStandfirst: String
38
17
  }
39
18
 
40
19
  type Media {
20
+ "The url of the media, eg. 'https://next-media-api.ft.com/renditions/16868569859480/0x0.mp3'."
41
21
  url: String
22
+
23
+ "The duration of the media in milliseconds."
42
24
  duration: Int
25
+
26
+ "The filesize of the media in bytes."
27
+
43
28
  filesize: Int
29
+
30
+ "The media type eg. video/mp4."
44
31
  mediaType: String
45
32
  }
46
33
 
47
34
  type TableOfContents {
35
+ "The formatting of the label, eg. 'part-number'."
48
36
  labelType: String
37
+
38
+ "The ordering, eg. 'exact-order'."
49
39
  sequence: String
50
40
  }
51
41
 
42
+ type Indicators {
43
+ "Whether the content is an opinion piece."
44
+ isOpinion: Boolean
45
+ }
46
+
47
+ interface Content {
48
+ "The unique identifier of the article - a uuid or a url."
49
+ id: ID!
50
+
51
+ "The title of the article."
52
+ title: String!
53
+
54
+ "The type of the article, eg. 'Article' or 'Video'."
55
+ type: ContentType!
56
+
57
+ "An introductory paragraph of the article."
58
+ standfirst: String
59
+
60
+ "A banner located usually at the top of articles containing the title, the standfirst and any images."
61
+ topper: Topper
62
+
63
+ "An abstract syntax tree of the article content."
64
+ body: RichText
65
+
66
+ "The raw string of the XML as returned from ContentAPI."
67
+ bodyXML: String
68
+
69
+ "The url of the concept. Vanity urls replace long, randomly generated urls - they are more user friendly and concise. Relative urls are relative to the current domain."
70
+ url(vanity: Boolean, relative: Boolean): String!
71
+
72
+ "The ISO string date the article was published, eg. '2024-04-03T10:35:52.443Z'."
73
+ publishedDate: String!
74
+
75
+ "The number of milliseconds since the unix epoch the article was published, eg '1712140552443'."
76
+ publishedTimestamp: Float!
77
+
78
+ "The first ISO string date the article was published, eg. '2024-04-03T10:35:52.443Z'."
79
+ firstPublishedDate: String!
80
+
81
+ "An image object containing the url and the caption, to be displayed usually before the article content."
82
+ mainImage: Image
83
+
84
+ "An alternative title of the article."
85
+ altTitle: AltTitle
86
+
87
+ "An alternative introductory paragraph of the article."
88
+ altStandfirst: AltStandfirst
89
+
90
+ "An abstract syntax tree of the authors of the article."
91
+ byline(vanity: Boolean): StructuredContent
92
+
93
+ "A promotional thumbnail / snapshot of the article."
94
+ teaser: Teaser
95
+
96
+ "An array of concepts related to the article, eg. organisations or topics."
97
+ annotations: [Concept]
98
+
99
+ "The editorial division the article belongs to, eg. 'FT-SpecialReports'."
100
+ editorialDesk: String
101
+
102
+ "A scalar representing the access level of the article, eg. 'free'."
103
+ accessLevel: AccessLevel
104
+
105
+ "The concept to use for instant alert CTAs."
106
+ instantAlertConcept: Concept
107
+
108
+ "A scalar representing whether the article can be syndicated, ie. published by a third party site."
109
+ canBeSyndicated: CanBeSyndicated
110
+
111
+ "The party that originated the article, eg. 'FT'."
112
+ originatingParty: String
113
+
114
+ "Whether comments are enabled on the article."
115
+ commentsEnabled: Boolean
116
+
117
+ "A design object containing the theme and layout of the article."
118
+ design: Design
119
+ }
120
+
52
121
  type Article implements Content {
122
+ "The title of the article."
53
123
  title: String!
124
+
125
+ "The unique identifier of the article - a uuid or a url."
54
126
  id: ID!
127
+
128
+ "The type of the article, eg. 'Article' or 'Video'."
55
129
  type: ContentType!
130
+
131
+ "An introductory paragraph of the article."
56
132
  standfirst: String
133
+
134
+ "A banner located usually at the top of articles containing the title, the standfirst and any images."
57
135
  topper: Topper
136
+
137
+ "An abstract syntax tree of the article content."
58
138
  body: RichText
139
+
140
+ "The raw string of the XML as returned from ContentAPI."
59
141
  bodyXML: String
142
+
143
+ "The url of the concept. Vanity urls replace long, randomly generated urls - they are more user friendly and concise. Relative urls are relative to the current domain."
60
144
  url(vanity: Boolean, relative: Boolean): String!
145
+
146
+ "The ISO string date the article was published, eg. '2024-04-03T10:35:52.443Z'."
61
147
  publishedDate: String!
148
+
149
+ "The number of milliseconds since the unix epoch the article was published, eg '1712140552443'."
150
+ publishedTimestamp: Float!
151
+
152
+ "The first ISO string date the article was published, eg. '2024-04-03T10:35:52.443Z'."
62
153
  firstPublishedDate: String!
154
+
155
+ "An image object containing the url and the caption, to be displayed usually before the article content."
63
156
  mainImage: Image
157
+
158
+ "An alternative title of the article."
64
159
  altTitle: AltTitle
160
+
161
+ "An alternative introductory paragraph of the article."
65
162
  altStandfirst: AltStandfirst
163
+
164
+ "An abstract syntax tree of the authors of the article."
66
165
  byline(vanity: Boolean): StructuredContent
166
+
167
+ "A promotional thumbnail / snapshot of the article."
67
168
  teaser: Teaser
169
+
170
+ "An array of concepts related to the article, eg. organisations or topics."
171
+
68
172
  annotations: [Concept]
173
+
174
+ "The editorial division the article belongs to, eg. 'FT-SpecialReports'."
69
175
  editorialDesk: String
176
+
177
+ "A scalar representing the access level of the article, eg. 'free'."
70
178
  accessLevel: AccessLevel
71
- canBeSyndicated: CanBeSyndicated
179
+
180
+ "The concept to use for instant alert CTAs."
72
181
  instantAlertConcept: Concept
182
+
183
+ "A scalar representing whether the article can be syndicated, ie. published by a third party site."
184
+ canBeSyndicated: CanBeSyndicated
185
+
186
+ "The party that originated the article, eg. 'FT'."
73
187
  originatingParty: String
188
+
189
+ "Whether comments are enabled on the article."
190
+
74
191
  commentsEnabled: Boolean
192
+
193
+ "A design object containing the theme and layout of the article."
75
194
  design: Design
195
+
196
+ "The parent article, indicating this article is a part of a series or package."
76
197
  containedIn: Content
77
198
  }
78
199
 
79
200
  type Placeholder implements Content {
201
+ "The title of the article."
80
202
  title: String!
203
+
204
+ "The unique identifier of the article - a uuid or a url."
81
205
  id: ID!
206
+
207
+ "The type of the article, eg. 'Article' or 'Video'."
82
208
  type: ContentType!
209
+
210
+ "An introductory paragraph of the article."
83
211
  standfirst: String
212
+
213
+ "A banner located usually at the top of articles containing the title, the standfirst and any images."
84
214
  topper: Topper
215
+
216
+ "An abstract syntax tree of the article content."
85
217
  body: RichText
218
+
219
+ "The raw string of the XML as returned from ContentAPI."
86
220
  bodyXML: String
221
+
222
+ "The url of the concept. Vanity urls replace long, randomly generated urls - they are more user friendly and concise. Relative urls are relative to the current domain."
87
223
  url(vanity: Boolean, relative: Boolean): String!
224
+
225
+ "The ISO string date the article was published, eg. '2024-04-03T10:35:52.443Z'."
88
226
  publishedDate: String!
227
+
228
+ "The number of milliseconds since the unix epoch the article was published, eg '1712140552443'."
229
+ publishedTimestamp: Float!
230
+
231
+ "The first ISO string date the article was published, eg. '2024-04-03T10:35:52.443Z'."
89
232
  firstPublishedDate: String!
233
+
234
+ "An image object containing the url and the caption, to be displayed usually before the article content."
90
235
  mainImage: Image
236
+
237
+ "An alternative title of the article."
91
238
  altTitle: AltTitle
239
+
240
+ "An alternative introductory paragraph of the article."
92
241
  altStandfirst: AltStandfirst
242
+
243
+ "An abstract syntax tree of the authors of the article."
93
244
  byline(vanity: Boolean): StructuredContent
245
+
246
+ "A promotional thumbnail / snapshot of the article."
94
247
  teaser: Teaser
248
+
249
+ "An array of concepts related to the article, eg. organisations or topics."
95
250
  annotations: [Concept]
251
+
252
+ "The editorial division the article belongs to, eg. 'FT-SpecialReports'."
96
253
  editorialDesk: String
254
+
255
+ "A scalar representing the access level of the article, eg. 'free'."
97
256
  accessLevel: AccessLevel
98
- canBeSyndicated: CanBeSyndicated
257
+
258
+ "The concept to use for instant alert CTAs."
99
259
  instantAlertConcept: Concept
260
+
261
+ "A scalar representing whether the article can be syndicated, ie. published by a third party site."
262
+ canBeSyndicated: CanBeSyndicated
263
+
264
+ "The party that originated the article, eg. 'FT'."
100
265
  originatingParty: String
266
+
267
+ "Whether comments are enabled on the article."
101
268
  commentsEnabled: Boolean
269
+
270
+ "A design object containing the theme and layout of the article."
102
271
  design: Design
272
+
273
+ "The parent article, indicating this article is a part of a series or package."
103
274
  containedIn: Content
104
275
  }
105
276
 
106
277
  type LiveBlogPackage implements Content {
278
+ "The title of the article."
107
279
  title: String!
280
+
281
+ "The unique identifier of the article - a uuid or a url."
108
282
  id: ID!
283
+
284
+ "The type of the article, eg. 'Article' or 'Video'."
109
285
  type: ContentType!
286
+
287
+ "An introductory paragraph of the article."
110
288
  standfirst: String
289
+
290
+ "A banner located usually at the top of articles containing the title, the standfirst and any images."
111
291
  topper: Topper
292
+
293
+ "An abstract syntax tree of the article content."
112
294
  body: RichText
295
+
296
+ "The raw string of the XML as returned from ContentAPI."
113
297
  bodyXML: String
298
+
299
+ "The url of the concept. Vanity urls replace long, randomly generated urls - they are more user friendly and concise. Relative urls are relative to the current domain."
114
300
  url(vanity: Boolean, relative: Boolean): String!
301
+
302
+ "The ISO string date the article was published, eg. '2024-04-03T10:35:52.443Z'."
115
303
  publishedDate: String!
304
+
305
+ "The number of milliseconds since the unix epoch the article was published, eg '1712140552443'."
306
+ publishedTimestamp: Float!
307
+
308
+ "The first ISO string date the article was published, eg. '2024-04-03T10:35:52.443Z'."
116
309
  firstPublishedDate: String!
310
+
311
+ "An image object containing the url and the caption, to be displayed usually before the article content."
117
312
  mainImage: Image
313
+
314
+ "An alternative title of the article."
118
315
  altTitle: AltTitle
316
+
317
+ "An alternative introductory paragraph of the article."
119
318
  altStandfirst: AltStandfirst
319
+
320
+ "An abstract syntax tree of the authors of the article."
120
321
  byline(vanity: Boolean): StructuredContent
322
+
323
+ "A promotional thumbnail / snapshot of the article."
121
324
  teaser: Teaser
325
+
326
+ "An array of concepts related to the article, eg. organisations or topics."
122
327
  annotations: [Concept]
328
+
329
+ "The editorial division the article belongs to, eg. 'FT-SpecialReports'."
123
330
  editorialDesk: String
331
+
332
+ "A scalar representing the access level of the article, eg. 'free'."
124
333
  accessLevel: AccessLevel
125
- canBeSyndicated: CanBeSyndicated
334
+
335
+ "The concept to use for instant alert CTAs."
126
336
  instantAlertConcept: Concept
337
+
338
+ "A scalar representing whether the article can be syndicated, ie. published by a third party site."
339
+ canBeSyndicated: CanBeSyndicated
340
+
341
+ "The party that originated the article, eg. 'FT'."
127
342
  originatingParty: String
343
+
344
+ "Whether comments are enabled on the article."
128
345
  commentsEnabled: Boolean
346
+
347
+ "A design object containing the theme and layout of the article."
129
348
  design: Design
349
+
350
+ "The child articles of this live blog package."
130
351
  liveBlogPosts(includePinned: Boolean @deprecated(reason: "avoiding breaking change, will remove argument on next major release")): [Content]
352
+
353
+ "The pinned article of this live blog package."
131
354
  pinnedPost: Content
355
+
356
+ "Whether the live blog package should be updated in real time."
132
357
  realtime: Boolean
133
358
  }
134
359
 
135
360
  type LiveBlogPost implements Content {
361
+ "The title of the article."
136
362
  title: String!
363
+
364
+ "The unique identifier of the article - a uuid or a url."
137
365
  id: ID!
366
+
367
+ "The type of the article, eg. 'Article' or 'Video'."
138
368
  type: ContentType!
369
+
370
+ "An introductory paragraph of the article."
139
371
  standfirst: String
372
+
373
+ "A banner located usually at the top of articles containing the title, the standfirst and any images."
140
374
  topper: Topper
375
+
376
+ "An abstract syntax tree of the article content."
141
377
  body: RichText
378
+
379
+ "The raw string of the XML as returned from ContentAPI."
142
380
  bodyXML: String
381
+
382
+ "The url of the concept. Vanity urls replace long, randomly generated urls - they are more user friendly and concise. Relative urls are relative to the current domain."
143
383
  url(vanity: Boolean, relative: Boolean): String!
384
+
385
+ "The ISO string date the article was published, eg. '2024-04-03T10:35:52.443Z'."
144
386
  publishedDate: String!
387
+
388
+ "The number of milliseconds since the unix epoch the article was published, eg '1712140552443'."
389
+ publishedTimestamp: Float!
390
+
391
+ "The first ISO string date the article was published, eg. '2024-04-03T10:35:52.443Z'."
145
392
  firstPublishedDate: String!
393
+
394
+ "An image object containing the url and the caption, to be displayed usually before the article content."
146
395
  mainImage: Image
396
+
397
+ "An alternative title of the article."
147
398
  altTitle: AltTitle
399
+
400
+ "An alternative introductory paragraph of the article."
148
401
  altStandfirst: AltStandfirst
402
+
403
+ "An abstract syntax tree of the authors of the article."
149
404
  byline(vanity: Boolean): StructuredContent
405
+
406
+ "A promotional thumbnail / snapshot of the article."
150
407
  teaser: Teaser
408
+
409
+ "An array of concepts related to the article, eg. organisations or topics."
151
410
  annotations: [Concept]
411
+
412
+ "The editorial division the article belongs to, eg. 'FT-SpecialReports'."
152
413
  editorialDesk: String
414
+
415
+ "A scalar representing the access level of the article, eg. 'free'."
153
416
  accessLevel: AccessLevel
154
- canBeSyndicated: CanBeSyndicated
417
+
418
+ "The concept to use for instant alert CTAs."
155
419
  instantAlertConcept: Concept
420
+
421
+ "A scalar representing whether the article can be syndicated, ie. published by a third party site."
422
+ canBeSyndicated: CanBeSyndicated
423
+
424
+ "The party that originated the article, eg. 'FT'."
156
425
  originatingParty: String
426
+
427
+ "Whether comments are enabled on the article."
157
428
  commentsEnabled: Boolean
429
+
430
+ "A design object containing the theme and layout of the article."
158
431
  design: Design
432
+
433
+ "The parent article, indicating this article is a part of a series or package."
159
434
  containedIn: Content
435
+
436
+ "An object indicating whether the article is an opinion piece."
160
437
  indicators: Indicators
438
+
439
+ "Whether the live-blog-post should be pinned."
161
440
  isPinned: Boolean
162
441
  }
163
442
 
164
443
  type Audio implements Content {
444
+ "The title of the article."
165
445
  title: String!
446
+
447
+ "The unique identifier of the article - a uuid or a url."
166
448
  id: ID!
449
+
450
+ "The type of the article, eg. 'Article' or 'Video'."
167
451
  type: ContentType!
452
+
453
+ "An introductory paragraph of the article."
168
454
  standfirst: String
455
+
456
+ "A banner located usually at the top of articles containing the title, the standfirst and any images."
169
457
  topper: Topper
458
+
459
+ "An abstract syntax tree of the article content."
170
460
  body: RichText
461
+
462
+ "The raw string of the XML as returned from ContentAPI."
171
463
  bodyXML: String
464
+
465
+ "The url of the concept. Vanity urls replace long, randomly generated urls - they are more user friendly and concise. Relative urls are relative to the current domain."
172
466
  url(vanity: Boolean, relative: Boolean): String!
467
+
468
+ "The ISO string date the article was published, eg. '2024-04-03T10:35:52.443Z'."
173
469
  publishedDate: String!
470
+
471
+ "The number of milliseconds since the unix epoch the article was published, eg '1712140552443'."
472
+ publishedTimestamp: Float!
473
+
474
+ "The first ISO string date the article was published, eg. '2024-04-03T10:35:52.443Z'."
174
475
  firstPublishedDate: String!
476
+
477
+ "An image object containing the url and the caption, to be displayed usually before the article content."
175
478
  mainImage: Image
479
+
480
+ "An alternative title of the article."
176
481
  altTitle: AltTitle
482
+
483
+ "An alternative introductory paragraph of the article."
177
484
  altStandfirst: AltStandfirst
485
+
486
+ "An abstract syntax tree of the authors of the article."
178
487
  byline(vanity: Boolean): StructuredContent
488
+
489
+ "A promotional thumbnail / snapshot of the article."
179
490
  teaser: Teaser
491
+
492
+ "An array of concepts related to the article, eg. organisations or topics."
180
493
  annotations: [Concept]
494
+
495
+ "The editorial division the article belongs to, eg. 'FT-SpecialReports'."
181
496
  editorialDesk: String
497
+
498
+ "A scalar representing the access level of the article, eg. 'free'."
182
499
  accessLevel: AccessLevel
183
- canBeSyndicated: CanBeSyndicated
500
+
501
+ "The concept to use for instant alert CTAs."
184
502
  instantAlertConcept: Concept
503
+
504
+ "A scalar representing whether the article can be syndicated, ie. published by a third party site."
505
+ canBeSyndicated: CanBeSyndicated
506
+
507
+ "The party that originated the article, eg. 'FT'."
185
508
  originatingParty: String
509
+
510
+ "Whether comments are enabled on the article."
186
511
  commentsEnabled: Boolean
512
+
513
+ "A design object containing the theme and layout of the article."
187
514
  design: Design
515
+
516
+ "An array of media objects containing the url, the duration, the filesize and the media type."
188
517
  media: [Media]
189
518
  }
190
519
 
191
520
  type Video implements Content {
521
+ "The title of the article."
192
522
  title: String!
523
+
524
+ "The unique identifier of the article - a uuid or a url."
193
525
  id: ID!
526
+
527
+ "The type of the article, eg. 'Article' or 'Video'."
194
528
  type: ContentType!
529
+
530
+ "An introductory paragraph of the article."
195
531
  standfirst: String
532
+
533
+ "A banner located usually at the top of articles containing the title, the standfirst and any images."
196
534
  topper: Topper
535
+
536
+ "An abstract syntax tree of the article content."
197
537
  body: RichText
538
+
539
+ "The raw string of the XML as returned from ContentAPI."
198
540
  bodyXML: String
541
+
542
+ "The url of the concept. Vanity urls replace long, randomly generated urls - they are more user friendly and concise. Relative urls are relative to the current domain."
199
543
  url(vanity: Boolean, relative: Boolean): String!
544
+
545
+ "The ISO string date the article was published, eg. '2024-04-03T10:35:52.443Z'."
200
546
  publishedDate: String!
547
+
548
+ "The number of milliseconds since the unix epoch the article was published, eg '1712140552443'."
549
+ publishedTimestamp: Float!
550
+
551
+ "The first ISO string date the article was published, eg. '2024-04-03T10:35:52.443Z'."
201
552
  firstPublishedDate: String!
553
+
554
+ "An image object containing the url and the caption, to be displayed usually before the article content."
202
555
  mainImage: Image
556
+
557
+ "An alternative title of the article."
203
558
  altTitle: AltTitle
559
+
560
+ "An alternative introductory paragraph of the article."
204
561
  altStandfirst: AltStandfirst
562
+
563
+ "An abstract syntax tree of the authors of the article."
205
564
  byline(vanity: Boolean): StructuredContent
565
+
566
+ "A promotional thumbnail / snapshot of the article."
206
567
  teaser: Teaser
568
+
569
+ "An array of concepts related to the article, eg. organisations or topics."
207
570
  annotations: [Concept]
571
+
572
+ "The editorial division the article belongs to, eg. 'FT-SpecialReports'."
208
573
  editorialDesk: String
574
+
575
+ "A scalar representing the access level of the article, eg. 'free'."
209
576
  accessLevel: AccessLevel
210
- canBeSyndicated: CanBeSyndicated
577
+
578
+ "The concept to use for instant alert CTAs."
211
579
  instantAlertConcept: Concept
580
+
581
+ "A scalar representing whether the article can be syndicated, ie. published by a third party site."
582
+ canBeSyndicated: CanBeSyndicated
583
+
584
+ "The party that originated the article, eg. 'FT'."
212
585
  originatingParty: String
586
+
587
+ "Whether comments are enabled on the article."
213
588
  commentsEnabled: Boolean
589
+
590
+ "A design object containing the theme and layout of the article."
214
591
  design: Design
215
592
  }
216
593
 
217
594
  type ContentPackage implements Content {
595
+ "The title of the article."
218
596
  title: String!
597
+
598
+ "The unique identifier of the article - a uuid or a url."
219
599
  id: ID!
600
+
601
+ "The type of the article, eg. 'Article' or 'Video'."
220
602
  type: ContentType!
603
+
604
+ "An introductory paragraph of the article."
221
605
  standfirst: String
606
+
607
+ "A banner located usually at the top of articles containing the title, the standfirst and any images."
222
608
  topper: Topper
609
+
610
+ "An abstract syntax tree of the article content."
223
611
  body: RichText
612
+
613
+ "The raw string of the XML as returned from ContentAPI."
224
614
  bodyXML: String
615
+
616
+ "The url of the concept. Vanity urls replace long, randomly generated urls - they are more user friendly and concise. Relative urls are relative to the current domain."
225
617
  url(vanity: Boolean, relative: Boolean): String!
618
+
619
+ "The ISO string date the article was published, eg. '2024-04-03T10:35:52.443Z'."
226
620
  publishedDate: String!
621
+
622
+ "The number of milliseconds since the unix epoch the article was published, eg '1712140552443'."
623
+ publishedTimestamp: Float!
624
+
625
+ "The first ISO string date the article was published, eg. '2024-04-03T10:35:52.443Z'."
227
626
  firstPublishedDate: String!
627
+
628
+ "An image object containing the url and the caption, to be displayed usually before the article content."
228
629
  mainImage: Image
630
+
631
+ "An alternative title of the article."
229
632
  altTitle: AltTitle
633
+
634
+ "An alternative introductory paragraph of the article."
230
635
  altStandfirst: AltStandfirst
636
+
637
+ "An abstract syntax tree of the authors of the article."
231
638
  byline(vanity: Boolean): StructuredContent
639
+
640
+ "A promotional thumbnail / snapshot of the article."
232
641
  teaser: Teaser
642
+
643
+ "An array of concepts related to the article, eg. organisations or topics."
233
644
  annotations: [Concept]
645
+
646
+ "The editorial division the article belongs to, eg. 'FT-SpecialReports'."
234
647
  editorialDesk: String
648
+
649
+ "A scalar representing the access level of the article, eg. 'free'."
235
650
  accessLevel: AccessLevel
236
- canBeSyndicated: CanBeSyndicated
651
+
652
+ "The concept to use for instant alert CTAs."
237
653
  instantAlertConcept: Concept
654
+
655
+ "A scalar representing whether the article can be syndicated, ie. published by a third party site."
656
+ canBeSyndicated: CanBeSyndicated
657
+
658
+ "The party that originated the article, eg. 'FT'."
238
659
  originatingParty: String
660
+
661
+ "Whether comments are enabled on the article."
239
662
  commentsEnabled: Boolean
663
+
664
+ "A design object containing the theme and layout of the article."
240
665
  design: Design
666
+
667
+ "The child articles of this content package."
241
668
  contains(fromId: String, surroundingArticles: Int): [Teaser]
669
+
670
+ "The number of child articles in this content package."
242
671
  containsLength: Int
672
+
673
+ "The optional table of contents for this content package."
243
674
  tableOfContents: TableOfContents
244
675
  }
245
676
 
246
- type Indicators {
247
- isOpinion: Boolean
248
- }
677
+