diff --git a/src/endpoints/Stories/Client.ts b/src/endpoints/Stories/Client.ts index b602afa3..60020f2f 100644 --- a/src/endpoints/Stories/Client.ts +++ b/src/endpoints/Stories/Client.ts @@ -1,7 +1,7 @@ import type { DeferredJobsApiClient } from '../../api'; import { ApiError, HttpCodes } from '../../http'; import { routing } from '../../routing'; -import type { ExtendedStory, Story } from '../../types'; +import type { ExtendedStory, Query, Story } from '../../types'; import { SortOrder } from '../../types'; import type { @@ -174,6 +174,27 @@ export class Client { return story; } + async getBySlug( + slug: Story['slug'], + options?: Exactly, + ): Promise> { + if (slug.includes('/') || slug.includes('\\')) { + throw new Error('Story slugs cannot contain slashes.'); + } + + const { include, query, formats } = options ?? {}; + + const { story } = await this.apiClient.post<{ + story: ExtendedStory & InferExtraFields; + }>(`${routing.storiesUrl}/by-slug/${slug}`, { + headers: acceptedFormatsHeader(formats), + query: { include }, + payload: { query }, + }); + + return story; + } + async create( payload: CreateRequest, options?: Exactly,