How to get a story with assets
Now that we know how to get a story, let's dig a bit deeper, and fetch the assets (attached files, urls, ...) that are used in the current version of the story.
We have to use the asset
resolver on story
.
graphqlquery {story(slug: 123) {idslugversion {titleassets {__typenameuuidcreated}}user {name}}}
Notice the __typename
here, the value is probably "FileAsset", or "UrlAsset".
That will give us an array of assets. But what we want is having the URLs, thumbnails, extracts,... of the assets.
As an asset can have multiple forms (FileAsset, UrlAsset, StoryAsset, ...) they can also have different fields attached.
To fetch those specific fields we need to "cast" and use fragments exactly as we did with ... on Story
previously
.
The __typename
indicates the type of a specific asset, and by so the cast we need to use to fetch those specific fields.
graphqlquery {story(slug: 123) {idslugversion {titleassets {__typenameuuidcreated... on FileAsset {embedfilenamedownloadUrl}... on URLAsset {embedurl}}}user {name}}}
now that will give us something like this:
response{"data": {"story": {"id": "TWU6MTIz","slug": 123,"version": {"title": "Hello world!","assets": [{"__typename": "FileAsset","uuid": "ef022818c-88dc-432c-975d-74bc4575a251","created": "2020-03-26T10:21:10.067170Z","embed": {"url": "https://mycompany.elium.com/api/story/asset/12/download/13/image001.jpg","thumbnail_url": "https://mycompany.elium.com/api/story/asset/12/thumbnail/13?fallback=false&tclass=xxlarge","thumbnail_fallback_url": "https://mycompany.elium.com/api/story/asset/12/thumbnail/13?fallback=false&tclass=xxlarge","image_url": "https://mycompany.elium.com/api/story/asset/12/thumbnail/13?fallback=false&tclass=xxlarge","filename": "image001.jpg","cover_url": "https://mycompany.elium.com/api/story/asset/12/thumbnail/13?fallback=false&tclass=cover","digest": "b6b6783c4b5445249b30e17d969515a1f5d8b82bf05a1c5ca97211e244ad9a1a","filesize": 53223,"mimetype": "image/jpeg"},"filename": "image001.jpg","downloadUrl": "https://mycompany.elium.com/api/story/asset/12/download/13/image001.jpg"}]},"user": {"name": "John Doe"}}}}
The embed
will give us informations like the thumbnails for a FileAsset or the extract (structured summary of the website) for an URLAsset