From f6a1a6d76fd0820a0fed22807de722574c043675 Mon Sep 17 00:00:00 2001 From: Hazem Ahmed Date: Tue, 27 Aug 2024 14:22:54 +0400 Subject: [PATCH] navbar links update (#24) --- .../themes/enterprise/components/header.tsx | 45 +- .../icons/svgs/NavbarIcons/GuideSVG.js | 21 + .../enterprise/components/icons/svgs/index.js | 5 +- .../themes/enterprise/generated/graphql.ts | 1612 ++++++++++++++++- .../enterprise/generated/schema.graphql | 1325 +++++++++++++- 5 files changed, 2991 insertions(+), 17 deletions(-) create mode 100644 packages/blog-starter-kit/themes/enterprise/components/icons/svgs/NavbarIcons/GuideSVG.js diff --git a/packages/blog-starter-kit/themes/enterprise/components/header.tsx b/packages/blog-starter-kit/themes/enterprise/components/header.tsx index e7e63de2..01730a76 100644 --- a/packages/blog-starter-kit/themes/enterprise/components/header.tsx +++ b/packages/blog-starter-kit/themes/enterprise/components/header.tsx @@ -18,6 +18,7 @@ import { ContactsSVG, EventsSVG, GitHubNavBarSVG, + GiudeSVG, IntegrationsSVG, MindsCloudSVG, MindsdbLogoSVG, @@ -37,15 +38,21 @@ const NavItem = ({ icon: Icon, url, cta, + newTab, }: { title: string; description: string; icon: React.ReactNode; url: string; cta?: string; + newTab?: boolean; }) => { return ( - +
{Icon}

{title}

@@ -64,6 +71,7 @@ const mindsCloudList = [ href: 'https://mdb.ai/', Icon: , cta: 'Try now →', + newTab: true, }, ]; const MindsCloudPopover = () => { @@ -96,6 +104,7 @@ const MindsCloudPopover = () => { icon={item.Icon} url={item.href} cta={item.cta} + newTab={item?.newTab} /> ))} @@ -112,18 +121,21 @@ const opensourceNav = [ description: 'AI models, data sources, applications', href: 'https://docs.mindsdb.com/integrations/integrations', Icon: , + newTab: true, }, { name: 'Support', description: 'Chat with experts on Slack', href: 'https://mindsdb.com/joincommunity', Icon: , + newTab: true, }, { name: 'GitHub', description: 'Get code, contribute, flag issues', - href: 'https://docs.mindsdb.com/what-is-mindsdb', + href: 'https://github.com/mindsdb/mindsdb', Icon: , + newTab: true, }, { name: 'Community', @@ -162,6 +174,7 @@ const OpenSourcePopover = () => { description={item.description} icon={item.Icon} url={item.href} + newTab={item?.newTab} /> ))} @@ -174,18 +187,35 @@ const OpenSourcePopover = () => { const connectList = [ { - name: 'Connect with an Expert', - description: "Let's explore AI together and solve your most pressing business challenges.", + name: 'Enterprise Offerings', + description: + 'Fully featured, fully supported, fully on prem. Explore how custom AI can benefit your business.', href: 'https://mindsdb.com/enterprise', Icon: , cta: 'Learn more →', }, + { + name: "CTO's Guide to AI Agents", + description: + 'Deep dive into the world of AI agents, covering everything from fundamental concepts to advanced applications.', + href: 'https://mindsdb.com/the-cto-guide-to-buiding-ai-agents', + Icon: , + cta: 'Download Now →', + }, + { + name: "CTO's Guide to RAG", + description: + 'Read more about how RAG works, and why this new approach to retrieving data makes a chatbot’s answers more accurate, relevant, and secure.', + href: 'https://mindsdb.com/mindsdb-the-ctos-guide-to-rag-guide', + Icon: , + cta: 'Download Now →', + }, ]; const ConnectPopover = () => { return ( - Connect with an Expert + Enterprise @@ -370,7 +400,8 @@ export const Header = () => { Docs @@ -488,6 +519,7 @@ export const Header = () => { description={item.description} icon={item.Icon} url={item.href} + newTab={item.newTab} /> ))} @@ -501,6 +533,7 @@ export const Header = () => { Docs diff --git a/packages/blog-starter-kit/themes/enterprise/components/icons/svgs/NavbarIcons/GuideSVG.js b/packages/blog-starter-kit/themes/enterprise/components/icons/svgs/NavbarIcons/GuideSVG.js new file mode 100644 index 00000000..57094f1c --- /dev/null +++ b/packages/blog-starter-kit/themes/enterprise/components/icons/svgs/NavbarIcons/GuideSVG.js @@ -0,0 +1,21 @@ +import React from 'react'; + +export default class GuideSVG extends React.Component { + render() { + return ( + + + + ); + } +} diff --git a/packages/blog-starter-kit/themes/enterprise/components/icons/svgs/index.js b/packages/blog-starter-kit/themes/enterprise/components/icons/svgs/index.js index 4dbd8334..7ab6d2e5 100644 --- a/packages/blog-starter-kit/themes/enterprise/components/icons/svgs/index.js +++ b/packages/blog-starter-kit/themes/enterprise/components/icons/svgs/index.js @@ -23,7 +23,9 @@ import CareersSVG from './NavbarIcons/CareersSVG'; import CaseStudiesSVG from './NavbarIcons/CaseStudiesSVG'; import ContactsSVG from './NavbarIcons/ContactSVG'; import EventsSVG from './NavbarIcons/EventsSVG'; +import GiudeSVG from './NavbarIcons/GuideSVG'; import NewsroomSVG from './NavbarIcons/NewsroomSVG'; + import NewsletterPlusSVG from './NewsletterPlusSVG'; import PlusCircleSVG from './PlusCircleSVG'; import RssSVG from './RssSVG'; @@ -44,13 +46,14 @@ export { ExternalArrowSVG, GitHubNavBarSVG, GithubSVG, + GiudeSVG, HashnodeSVG, IntegrationsSVG, LinkedinSVG, MindsCloudSVG, MindsdbLogoSVG, - NewsroomSVG, NewsletterPlusSVG, + NewsroomSVG, PlusCircleSVG, RssSVG, SlackWhiteNavSGV, diff --git a/packages/blog-starter-kit/themes/enterprise/generated/graphql.ts b/packages/blog-starter-kit/themes/enterprise/generated/graphql.ts index 421f417e..ea4c8896 100644 --- a/packages/blog-starter-kit/themes/enterprise/generated/graphql.ts +++ b/packages/blog-starter-kit/themes/enterprise/generated/graphql.ts @@ -14,10 +14,44 @@ export type Scalars = { Int: { input: number; output: number; } Float: { input: number; output: number; } DateTime: { input: string; output: string; } + JSONObject: { input: Record; output: Record; } ObjectId: { input: string; output: string; } + TimeZone: { input: any; output: any; } URL: { input: any; output: any; } }; +export type AbsoluteTimeRange = { + /** + * The start date of the views. + * The time range will include this date (using >=). + * + * Defaults to the unix epoch start (1970-01-01). + */ + from?: InputMaybe; + /** + * The end date of the views. + * The time range will include this date (using <=). + * + * Defaults to the current date. + */ + to?: InputMaybe; +}; + +/** The input for accepting an invitation to join a documentation project. */ +export type AcceptInviteToDocumentationProjectInput = { + /** The invitation token to accept. */ + inviteToken: Scalars['String']['input']; +}; + +/** Response to accepting an invitation to join a documentation project. */ +export type AcceptInviteToDocumentationProjectPayload = { + __typename?: 'AcceptInviteToDocumentationProjectPayload'; + /** The documentation project that the user has been invited to. */ + project?: Maybe; + /** Signifies the success of the mutation. */ + success: Scalars['Boolean']['output']; +}; + export type AcceptInviteToPublicationInput = { /** The invitation token to accept. */ inviteToken: Scalars['String']['input']; @@ -53,6 +87,34 @@ export type AddCommentPayload = { comment?: Maybe; }; +export type AddDocumentationProjectCustomDomainInput = { + domain: Scalars['String']['input']; + projectId: Scalars['ID']['input']; + wwwDomain: Scalars['Boolean']['input']; +}; + +export type AddDocumentationProjectCustomDomainPayload = { + __typename?: 'AddDocumentationProjectCustomDomainPayload'; + /** + * Additional DNS entries required to verify the domain. + * There are cases where additional records in the DNS config are required to successfully verify the domain. + */ + dnsVerificationEntries: Array; + project?: Maybe; + wwwRedirectDnsVerificationEntries: Array; +}; + +export type AddDocumentationProjectMemberInput = { + projectId: Scalars['ID']['input']; + userId: Scalars['ID']['input']; +}; + +export type AddDocumentationProjectMemberPayload = { + __typename?: 'AddDocumentationProjectMemberPayload'; + member?: Maybe; + project?: Maybe; +}; + export type AddPostToSeriesInput = { /** The ID of the post to be added to the series. */ postId: Scalars['ObjectId']['input']; @@ -201,6 +263,28 @@ export type ChangePublicationMemberVisibilityPayload = { member: PublicationMember; }; +export type CheckCustomDomainAvailabilityInput = { + domain: Scalars['String']['input']; + withWWWRedirect: Scalars['Boolean']['input']; +}; + +export type CheckCustomDomainAvailabilityResult = { + __typename?: 'CheckCustomDomainAvailabilityResult'; + domainAvailable: Scalars['Boolean']['output']; +}; + +export type CheckSubdomainAvailabilityResult = { + __typename?: 'CheckSubdomainAvailabilityResult'; + subdomainAvailable: Scalars['Boolean']['output']; +}; + +/** Contains the flag indicating if the collaboration feature is enabled or not. */ +export type CollaborationFeature = Feature & { + __typename?: 'CollaborationFeature'; + /** A flag indicating if the collaboration feature is enabled or not. */ + isEnabled: Scalars['Boolean']['output']; +}; + /** * Contains basic information about the comment. * A comment is a response to a post. @@ -814,6 +898,86 @@ export type CoverImageOptionsInput = { stickCoverToBottom?: InputMaybe; }; +export type CreateDocumentationApiReferenceInput = { + name?: InputMaybe; + projectId: Scalars['ID']['input']; + slug?: InputMaybe; + url: Scalars['String']['input']; +}; + +export type CreateDocumentationApiReferencePayload = { + __typename?: 'CreateDocumentationApiReferencePayload'; + guide: DocumentationApiReference; +}; + +export type CreateDocumentationGuideInput = { + name: Scalars['String']['input']; + projectId: Scalars['ID']['input']; + slug?: InputMaybe; +}; + +export type CreateDocumentationGuidePayload = { + __typename?: 'CreateDocumentationGuidePayload'; + guide: DocumentationGuide; +}; + +export type CreateDocumentationLinkInput = { + guideSlug: Scalars['String']['input']; + label: Scalars['String']['input']; + projectId: Scalars['ID']['input']; + url: Scalars['String']['input']; +}; + +export type CreateDocumentationLinkPayload = { + __typename?: 'CreateDocumentationLinkPayload'; + guide?: Maybe; + link?: Maybe; +}; + +export type CreateDocumentationPageDraftInput = { + content?: InputMaybe; + description?: InputMaybe; + guideSlug: Scalars['String']['input']; + label?: InputMaybe; + parentId?: InputMaybe; + projectId: Scalars['ID']['input']; + title?: InputMaybe; +}; + +export type CreateDocumentationPageDraftPayload = { + __typename?: 'CreateDocumentationPageDraftPayload'; + guide?: Maybe; + page?: Maybe; +}; + +export type CreateDocumentationProjectInput = { + description?: InputMaybe; + favIconUrl?: InputMaybe; + links?: InputMaybe; + logoDarkThemeUrl?: InputMaybe; + logoUrl?: InputMaybe; + name: Scalars['String']['input']; + settings?: InputMaybe; + subdomain: Scalars['String']['input']; +}; + +export type CreateDocumentationProjectPayload = { + __typename?: 'CreateDocumentationProjectPayload'; + project: DocumentationProject; +}; + +export type CreateDocumentationSectionInput = { + guideSlug: Scalars['String']['input']; + label?: InputMaybe; + projectId: Scalars['ID']['input']; +}; + +export type CreateDocumentationSectionPayload = { + __typename?: 'CreateDocumentationSectionPayload'; + guide?: Maybe; + section?: Maybe; +}; + export type CreateDraftInput = { /** Ids of the co-authors of the resulting draft. */ coAuthors?: InputMaybe>; @@ -1003,6 +1167,11 @@ export type DarkModePreferences = { logo?: Maybe; }; +export enum DefaultDocsTheme { + Dark = 'DARK', + Light = 'LIGHT' +} + /** Input to delete a role based invite. */ export type DeleteRoleBasedInviteInput = { /** The ID of the role based invite. */ @@ -1029,6 +1198,60 @@ export enum DeviceType { Tablet = 'TABLET' } +/** The input for disabling AI search for a documentation project */ +export type DisableDocumentationProjectAiSearchInput = { + /** The ID of the documentation project */ + projectId: Scalars['ID']['input']; +}; + +/** The response to disabling AI search for a documentation project */ +export type DisableDocumentationProjectAiSearchPayload = { + __typename?: 'DisableDocumentationProjectAISearchPayload'; + project?: Maybe; +}; + +export type DisableDocumentationProjectHeadlessCmsInput = { + projectId: Scalars['ID']['input']; +}; + +export type DisableDocumentationProjectHeadlessCmsPayload = { + __typename?: 'DisableDocumentationProjectHeadlessCmsPayload'; + project?: Maybe; +}; + +export type DnsVerificationEntry = { + __typename?: 'DnsVerificationEntry'; + name: Scalars['String']['output']; + type: DnsVerificationType; + value: Scalars['String']['output']; +}; + +export enum DnsVerificationType { + ARecord = 'A_RECORD', + CnameRecord = 'CNAME_RECORD', + TxtRecord = 'TXT_RECORD' +} + +export enum DocsAnalyticsDimension { + ApiReferenceGuide = 'API_REFERENCE_GUIDE', + Browser = 'BROWSER', + Country = 'COUNTRY', + DeviceType = 'DEVICE_TYPE', + DocumentationGuide = 'DOCUMENTATION_GUIDE', + OperatingSystem = 'OPERATING_SYSTEM', + Page = 'PAGE', + Path = 'PATH', + ReferrerHost = 'REFERRER_HOST' +} + +export type DocsProjectInvitedMembers = { + __typename?: 'DocsProjectInvitedMembers'; + email: Scalars['String']['output']; + role: DocumentationMemberRole; + /** Invited Hashnode user, returns null if the user is not a Hashnode user. */ + user?: Maybe; +}; + export type DocsViews = { id: Scalars['ID']['output']; /** The aggregated views. */ @@ -1041,6 +1264,25 @@ export type DocsVisitors = { total: Scalars['Int']['output']; }; +export type DocumentationApiReference = IGuide & { + __typename?: 'DocumentationApiReference'; + /** The parsed Swagger Definition of the API Reference. */ + definition?: Maybe; + id: Scalars['ID']['output']; + lastModified: Scalars['DateTime']['output']; + name: Scalars['String']['output']; + /** OG meta-data of the page. Contains image url used in open graph meta tags. */ + ogMetaData?: Maybe; + /** Url of the published api reference. */ + publishedUrl?: Maybe; + /** SEO information of the page. Contains title and description used in meta tags. */ + seo?: Maybe; + slug: Scalars['String']['output']; + status: DocumentationGuideItemStatus; + url: Scalars['String']['output']; + versionId?: Maybe; +}; + export type DocumentationGuide = IGuide & { __typename?: 'DocumentationGuide'; hasChanges: Scalars['Boolean']['output']; @@ -1052,6 +1294,7 @@ export type DocumentationGuide = IGuide & { page?: Maybe; publishedPage?: Maybe; publishedSidebarItems: Array; + redirectedPublishedPage?: Maybe; /** SEO information of the page. Contains title and description used in meta tags. */ seo?: Maybe; sidebarItems: Array; @@ -1074,7 +1317,13 @@ export type DocumentationGuidePublishedPageArgs = { path?: InputMaybe; }; -export type DocumentationGuideItem = DocumentationGuide; + +export type DocumentationGuideRedirectedPublishedPageArgs = { + id?: InputMaybe; + path?: InputMaybe; +}; + +export type DocumentationGuideItem = DocumentationApiReference | DocumentationGuide; export enum DocumentationGuideItemStatus { Deleted = 'DELETED', @@ -1093,10 +1342,66 @@ export type DocumentationLink = IDocumentationSidebarItem & { visibility: DocumentationSidebarItemVisibility; }; +export enum DocumentationMemberRole { + Admin = 'ADMIN', + Owner = 'OWNER' +} + +/** A column for the navigation. Used in the footer */ +export type DocumentationNavbarColumn = Node & { + __typename?: 'DocumentationNavbarColumn'; + /** The date the column was created. */ + createdAt: Scalars['DateTime']['output']; + /** The ID of the column. */ + id: Scalars['ID']['output']; + /** The navigation items in the column. */ + items: Array; + /** The label of the column. */ + label: Scalars['String']['output']; + /** The date the column was last updated. */ + updatedAt?: Maybe; +}; + +export type DocumentationNavbarItem = DocumentationNavbarItemGuide | DocumentationNavbarItemLink; + +/** A navigation item pointing to a guide. */ +export type DocumentationNavbarItemGuide = Node & { + __typename?: 'DocumentationNavbarItemGuide'; + /** The date the item was created. */ + createdAt: Scalars['DateTime']['output']; + /** The guide the item points to. */ + guide: DocumentationGuideItem; + /** The ID of the item. */ + id: Scalars['ID']['output']; + /** The label of the item. */ + label: Scalars['String']['output']; + /** The date the item was last updated. */ + updatedAt?: Maybe; +}; + +/** A navigation item pointing to an external URL. */ +export type DocumentationNavbarItemLink = Node & { + __typename?: 'DocumentationNavbarItemLink'; + /** The date the item was created. */ + createdAt: Scalars['DateTime']['output']; + /** The ID of the item. */ + id: Scalars['ID']['output']; + /** The label of the item. */ + label: Scalars['String']['output']; + /** Indicates if the link should open in a new tab. */ + openInNewTab: Scalars['Boolean']['output']; + /** The date the item was last updated. */ + updatedAt?: Maybe; + /** The URL the item points to. */ + url: Scalars['String']['output']; +}; + export type DocumentationPage = { __typename?: 'DocumentationPage'; + content: DocumentationPageContent; createdAt: Scalars['DateTime']['output']; description?: Maybe; + draft: DocumentationPageDraft; guideSlug: Scalars['String']['output']; id: Scalars['ID']['output']; /** OG meta-data of the page. Contains image url used in open graph meta tags. */ @@ -1112,12 +1417,384 @@ export type DocumentationPage = { visibility: DocumentationSidebarItemVisibility; }; +export type DocumentationPageContent = { + __typename?: 'DocumentationPageContent'; + mdx: Scalars['String']['output']; +}; + +export type DocumentationPageDraft = { + __typename?: 'DocumentationPageDraft'; + content: DocumentationPageContent; + description?: Maybe; + title: Scalars['String']['output']; +}; + +export type DocumentationProject = Node & { + __typename?: 'DocumentationProject'; + ai?: Maybe; + analytics: DocumentationProjectAnalytics; + appearance: DocumentationProjectAppearance; + createdAt: Scalars['DateTime']['output']; + defaultGuide?: Maybe; + description?: Maybe; + domain?: Maybe; + /** Object containing information about beta features enabled for the documentation project. */ + features: DocumentationProjectFeatures; + guide?: Maybe; + guides: Array; + id: Scalars['ID']['output']; + integrations?: Maybe; + links: DocumentationProjectLinks; + /** @deprecated Use membersV2 */ + members: Array; + membersV2: DocumentationProjectMemberConnection; + name: Scalars['String']['output']; + /** The navigation configuration for the documentation project. */ + navigation: DocumentationProjectNavigation; + /** The Owner of the documentation project. */ + owner: User; + /** Details of publication invites. Returns null if publication is not a team publication. */ + pendingInvites: DocumentationProjectPendingInviteConnection; + publishedGuide?: Maybe; + publishedGuides: Array; + /** A user search to find users with a specific status */ + searchUsers: DocumentationProjectSearchUserConnection; + settings: DocumentationProjectSettings; + subscription?: Maybe; + updatedAt?: Maybe; + /** Url of the documentation project. */ + url: Scalars['String']['output']; +}; + + +export type DocumentationProjectGuideArgs = { + id?: InputMaybe; + slug?: InputMaybe; +}; + + +export type DocumentationProjectMembersV2Args = { + filter?: InputMaybe; + page: Scalars['Int']['input']; + pageSize: Scalars['Int']['input']; +}; + + +export type DocumentationProjectPendingInvitesArgs = { + page: Scalars['Int']['input']; + pageSize: Scalars['Int']['input']; +}; + + +export type DocumentationProjectPublishedGuideArgs = { + id?: InputMaybe; + slug?: InputMaybe; +}; + + +export type DocumentationProjectSearchUsersArgs = { + input: DocumentationProjectSearchUsersInput; +}; + +export type DocumentationProjectAiPreference = { + __typename?: 'DocumentationProjectAIPreference'; + /** The prompts for the documentation project. These prompts are shown to the user when AI Search chatbot is opened. */ + prompts: Array; + /** The settings for the AI feature. */ + settings: DocumentationProjectAiSettings; +}; + +export type DocumentationProjectAiPrompt = { + __typename?: 'DocumentationProjectAIPrompt'; + /** The date the prompt was created. */ + createdAt: Scalars['DateTime']['output']; + /** The ID of the prompt. */ + id: Scalars['ID']['output']; + /** The prompt text. */ + prompt: Scalars['String']['output']; +}; + +export type DocumentationProjectAiSettings = { + __typename?: 'DocumentationProjectAISettings'; + /** A flag to indicate if the AI search feature is enabled. */ + isSearchEnabled: Scalars['Boolean']['output']; +}; + +export type DocumentationProjectAnalytics = { + __typename?: 'DocumentationProjectAnalytics'; + views?: Maybe; + visitors: ProjectVisitorsConnection; +}; + + +export type DocumentationProjectAnalyticsViewsArgs = { + after?: InputMaybe; + filter?: InputMaybe; + first: Scalars['Int']['input']; + groupBy?: InputMaybe; + options?: InputMaybe; + sortBy?: InputMaybe; +}; + + +export type DocumentationProjectAnalyticsVisitorsArgs = { + after?: InputMaybe; + filter?: InputMaybe; + first: Scalars['Int']['input']; + groupBy?: InputMaybe; + options?: InputMaybe; +}; + +export type DocumentationProjectAppearance = { + __typename?: 'DocumentationProjectAppearance'; + defaultDocsTheme: DefaultDocsTheme; + favIconUrl?: Maybe; + getStarted?: Maybe; + logoDarkThemeUrl?: Maybe; + logoUrl?: Maybe; + primaryColor?: Maybe; +}; + +export type DocumentationProjectAppearanceInput = { + defaultDocsTheme?: InputMaybe; + favIconUrl?: InputMaybe; + getStarted?: InputMaybe; + logoDarkThemeUrl?: InputMaybe; + logoUrl?: InputMaybe; + primaryColor?: InputMaybe; +}; + +export type DocumentationProjectCustomDomain = { + __typename?: 'DocumentationProjectCustomDomain'; + domain: Scalars['String']['output']; + status: CustomDomainStatus; + verifiedAt?: Maybe; + wwwDomain?: Maybe; +}; + +export type DocumentationProjectCustomWwwDomain = { + __typename?: 'DocumentationProjectCustomWwwDomain'; + status: CustomDomainStatus; + verifiedAt?: Maybe; +}; + +export type DocumentationProjectDomainSettings = { + __typename?: 'DocumentationProjectDomainSettings'; + customDomain?: Maybe; + hashnodeSubDomain: Scalars['String']['output']; +}; + +/** Contains the documentation project's beta features. */ +export type DocumentationProjectFeatures = { + __typename?: 'DocumentationProjectFeatures'; + /** Collaboration feature for the docs project which enables collaborative editing in the page editor. */ + collaboration: CollaborationFeature; +}; + +export type DocumentationProjectGetStarted = { + __typename?: 'DocumentationProjectGetStarted'; + label: Scalars['String']['output']; + url: Scalars['URL']['output']; +}; + +export type DocumentationProjectGetStartedInput = { + label?: InputMaybe; + url?: InputMaybe; +}; + +export type DocumentationProjectIntegrations = { + __typename?: 'DocumentationProjectIntegrations'; + /** FB Pixel ID for integration with Facebook Pixel. */ + fbPixelID?: Maybe; + /** Google Tag Manager ID for integration with Google Tag Manager. */ + gTagManagerID?: Maybe; + /** Google Analytics Tracking ID for integration with Google Analytics. */ + gaTrackingID?: Maybe; + /** Hotjar Site ID for integration with Hotjar. */ + hotjarSiteID?: Maybe; + /** Intercom ID for integration with Intercom */ + intercomID?: Maybe; + /** The meta tags associated with the documentation project. */ + metaTags?: Maybe; +}; + +export type DocumentationProjectIntegrationsInput = { + fbPixelID?: InputMaybe; + gTagManagerID?: InputMaybe; + gaTrackingID?: InputMaybe; + hotjarSiteID?: InputMaybe; + intercomID?: InputMaybe; + metaTags?: InputMaybe; +}; + +/** Contains the pending invite information. */ +export type DocumentationProjectInvite = Node & { + __typename?: 'DocumentationProjectInvite'; + /** The ID of the pending invite. */ + id: Scalars['ID']['output']; + /** The role assigned to the user in the publication. */ + role: DocumentationMemberRole; + /** Invited Hashnode user, returns null if the user is not a Hashnode user. */ + user: User; +}; + +export type DocumentationProjectLinks = { + __typename?: 'DocumentationProjectLinks'; + /** Daily.dev URL of the documentation project. */ + dailydev?: Maybe; + /** GitHub URL of the documentation project. */ + github?: Maybe; + /** The GitHub repository of the documentation project. */ + githubRepository?: Maybe; + /** Hashnode profile of author of the documentation project. */ + hashnode?: Maybe; + /** Instagram URL of the documentation project. */ + instagram?: Maybe; + /** LinkedIn URL of the documentation project. */ + linkedin?: Maybe; + /** Mastodon URL of the documentation project. */ + mastodon?: Maybe; + /** Twitter URL of the documentation project. */ + twitter?: Maybe; + /** Website URL of the documentation project. */ + website?: Maybe; + /** YouTube URL of the documentation project. */ + youtube?: Maybe; +}; + +export type DocumentationProjectLinksInput = { + dailydev?: InputMaybe; + github?: InputMaybe; + githubRepository?: InputMaybe; + hashnode?: InputMaybe; + instagram?: InputMaybe; + linkedin?: InputMaybe; + mastodon?: InputMaybe; + twitter?: InputMaybe; + website?: InputMaybe; + youtube?: InputMaybe; +}; + +export type DocumentationProjectMember = { + __typename?: 'DocumentationProjectMember'; + /** The role of the member in the documentation project. */ + role: DocumentationMemberRole; + /** The user who is a member of the documentation project. */ + user: User; +}; + +export type DocumentationProjectMemberConnection = PageConnection & { + __typename?: 'DocumentationProjectMemberConnection'; + /** A list of members. */ + nodes: Array; + /** Information to aid in pagination. */ + pageInfo: OffsetPageInfo; + /** Total number of nodes available i.e. number of members. */ + totalDocuments: Scalars['Int']['output']; +}; + +/** The filter for the documentation member connection. */ +export type DocumentationProjectMemberConnectionFilter = { + /** Search filter can be used to filter members by their username or email. */ + searchTerm?: InputMaybe; +}; + +export type DocumentationProjectMemberV2 = Node & { + __typename?: 'DocumentationProjectMemberV2'; + /** The ID of the member. */ + id: Scalars['ID']['output']; + /** The role of the member in the documentation project. */ + role: DocumentationMemberRole; + /** The user who is a member of the documentation project. */ + user: User; +}; + +/** Contains the header and footer navigation for the documentation project. */ +export type DocumentationProjectNavigation = { + __typename?: 'DocumentationProjectNavigation'; + /** The columns in the footer navigation. */ + footer: Array; + /** The items in the header navigation. */ + header: Array; +}; + +/** A connection for the user search result. */ +export type DocumentationProjectPendingInviteConnection = PageConnection & { + __typename?: 'DocumentationProjectPendingInviteConnection'; + /** A list of invites */ + nodes: Array; + /** Information to aid in pagination. */ + pageInfo: OffsetPageInfo; + /** The total number of invites. */ + totalDocuments: Scalars['Int']['output']; +}; + +export enum DocumentationProjectProductName { + Enterprise = 'ENTERPRISE', + Startup = 'STARTUP' +} + +/** A connection for the user search result. */ +export type DocumentationProjectSearchUserConnection = PageConnection & { + __typename?: 'DocumentationProjectSearchUserConnection'; + /** The edges containing the user and the status of the user. */ + edges: Array; + /** A list user nodes. */ + nodes: Array; + /** Information to aid in pagination. */ + pageInfo: OffsetPageInfo; + /** Total number of nodes available i.e. number of user search results. */ + totalDocuments: Scalars['Int']['output']; +}; + +export type DocumentationProjectSearchUserEdge = PageEdge & { + __typename?: 'DocumentationProjectSearchUserEdge'; + node: User; + status: UserInviteStatus; +}; + +export type DocumentationProjectSearchUsersInput = { + /** The page number that should be returned. */ + page: Scalars['Int']['input']; + /** The number of users to return on a single page. */ + pageSize: Scalars['Int']['input']; + searchTerm: Scalars['String']['input']; + status: UserInviteStatus; +}; + +export type DocumentationProjectSettings = { + __typename?: 'DocumentationProjectSettings'; + isHashnodeLoginAllowed: Scalars['Boolean']['output']; + /** A flag to indicate if the documentation project is using Headless CMS. */ + isHeadless: Scalars['Boolean']['output']; + isRobotsAllowed: Scalars['Boolean']['output']; +}; + +export type DocumentationProjectSettingsInput = { + allowHashnodeLogin?: InputMaybe; + allowRobots?: InputMaybe; +}; + +export type DocumentationProjectSubscription = { + __typename?: 'DocumentationProjectSubscription'; + productName: DocumentationProjectProductName; + status: DocumentationProjectSubscriptionStatus; +}; + +export enum DocumentationProjectSubscriptionStatus { + Active = 'ACTIVE', + Canceled = 'CANCELED', + PastDue = 'PAST_DUE', + Unpaid = 'UNPAID' +} + export type DocumentationSection = IDocumentationNestableSidebarItem & IDocumentationSidebarItem & { __typename?: 'DocumentationSection'; createdAt: Scalars['DateTime']['output']; id: Scalars['ID']['output']; label: Scalars['String']['output']; pages: Array; + path: Scalars['String']['output']; status: DocumentationSidebarItemStatus; updatedAt?: Maybe; visibility: DocumentationSidebarItemVisibility; @@ -1226,6 +1903,8 @@ export type Draft = Node & { /** The publication the draft belongs to. */ publication?: Maybe; publishAs?: Maybe; + /** Returns the published post when the draft is published, returns null otherwise */ + publishedPost?: Maybe; readTimeInMinutes: Scalars['Int']['output']; /** The date the draft is scheduled to be published. */ scheduledDate?: Maybe; @@ -1407,6 +2086,27 @@ export type EmailNotificationPreferences = { weeklyNewsletterEmails: Scalars['Boolean']['output']; }; +/** The input for enabling AI search for a documentation project */ +export type EnableDocumentationProjectAiSearchInput = { + /** The ID of the documentation project */ + projectId: Scalars['ID']['input']; +}; + +/** The response to enabling AI search for a documentation project */ +export type EnableDocumentationProjectAiSearchPayload = { + __typename?: 'EnableDocumentationProjectAISearchPayload'; + project?: Maybe; +}; + +export type EnableDocumentationProjectHeadlessCmsInput = { + projectId: Scalars['ID']['input']; +}; + +export type EnableDocumentationProjectHeadlessCmsPayload = { + __typename?: 'EnableDocumentationProjectHeadlessCmsPayload'; + project?: Maybe; +}; + /** Invitations that failed to be sent to the user */ export type FailedInvite = { __typename?: 'FailedInvite'; @@ -1480,6 +2180,34 @@ export type GptBotCrawlingFeature = Feature & { isEnabled: Scalars['Boolean']['output']; }; +/** The input for the exchange of token to a JWT to preview token for a documentation project. */ +export type GenerateDocumentationProjectPreviewAuthorizationTokenInput = { + token: Scalars['String']['input']; +}; + +/** The payload for the exchange of token to a JWT to preview token for a documentation project. */ +export type GenerateDocumentationProjectPreviewAuthorizationTokenPayload = { + __typename?: 'GenerateDocumentationProjectPreviewAuthorizationTokenPayload'; + /** The JWT that can be used to preview the documentation project. */ + authorizationToken?: Maybe; + /** The project for which the JWT is generated. With this request, authenticated fields are not accessible. */ + project?: Maybe; +}; + +/** The input for the generation of a exchangeable preview token for a documentation project. */ +export type GenerateDocumentationProjectPreviewTokenInput = { + projectId: Scalars['ID']['input']; +}; + +/** The payload for the generation of a exchangeable preview token for a documentation project. */ +export type GenerateDocumentationProjectPreviewTokenPayload = { + __typename?: 'GenerateDocumentationProjectPreviewTokenPayload'; + /** The project for which the token is generated. */ + project?: Maybe; + /** The token that can be exchanged for a JWT to preview the documentation project. */ + token?: Maybe; +}; + /** Views implementation that will be returned if grouping by browser. */ export type GroupedByBrowserViews = Node & Views & { __typename?: 'GroupedByBrowserViews'; @@ -1644,7 +2372,7 @@ export type GroupedByDocsPageViews = DocsViews & Node & { __typename?: 'GroupedByDocsPageViews'; id: Scalars['ID']['output']; /** The page that these views belong to. */ - page: DocumentationPage; + page?: Maybe; /** The aggregated views. */ total: Scalars['Int']['output']; }; @@ -1654,7 +2382,7 @@ export type GroupedByDocsPageVisitors = DocsVisitors & Node & { __typename?: 'GroupedByDocsPageVisitors'; id: Scalars['ID']['output']; /** The page that these views belong to. */ - page: DocumentationPage; + page?: Maybe; /** The aggregated number of visitors. */ total: Scalars['Int']['output']; }; @@ -1874,6 +2602,7 @@ export type IGuide = { id: Scalars['ID']['output']; lastModified: Scalars['DateTime']['output']; name: Scalars['String']['output']; + seo?: Maybe; slug: Scalars['String']['output']; versionId?: Maybe; }; @@ -1985,6 +2714,21 @@ export type IUserTechStackArgs = { pageSize: Scalars['Int']['input']; }; +export type InviteDocumentationProjectAdminInput = { + invites: Array; + projectId: Scalars['ID']['input']; +}; + +export type InviteDocumentationProjectAdminInputEmail = { + userId: Scalars['ID']['input']; +}; + +export type InviteDocumentationProjectAdminPayload = { + __typename?: 'InviteDocumentationProjectAdminPayload'; + invitedMembers?: Maybe>; + project?: Maybe; +}; + /** Input to invite users to a publication. */ export type InviteUsersToPublicationInput = { /** The publication ID to invite users to. */ @@ -2035,6 +2779,20 @@ export type LikeReplyPayload = { reply?: Maybe; }; +export type MapDocumentationProjectCustomDomainWwwRedirectInput = { + projectId: Scalars['ID']['input']; +}; + +export type MapDocumentationProjectCustomDomainWwwRedirectPayload = { + __typename?: 'MapDocumentationProjectCustomDomainWwwRedirectPayload'; + /** + * Additional DNS entries required to verify the www redirect domain. + * There are cases where additional records in the DNS config are required to successfully verify the domain. + */ + dnsVerificationEntries: Array; + project?: Maybe; +}; + /** Contains information about meta tags. Used for SEO purpose. */ export type MetaTagsInput = { /** The description of the post used in og:description for SEO. */ @@ -2045,14 +2803,32 @@ export type MetaTagsInput = { title?: InputMaybe; }; +export type MoveDocumentationSidebarItemInput = { + guideSlug: Scalars['String']['input']; + itemId: Scalars['ID']['input']; + parentId?: InputMaybe; + position?: InputMaybe; + projectId: Scalars['ID']['input']; +}; + +export type MoveDocumentationSidebarItemPayload = { + __typename?: 'MoveDocumentationSidebarItemPayload'; + guide?: Maybe; +}; + export type Mutation = { __typename?: 'Mutation'; + /** Mutation to accept an invite to a documentation project */ + acceptInviteToDocumentationProject: AcceptInviteToDocumentationProjectPayload; /** Accepts an invitation to join a publication. The user is added as a member of the publication. */ acceptInviteToPublication: AcceptInviteToPublicationPayload; /** Accepts a role based invite and adds the user as a member of the publication. The user is assigned the role specified in the invite. */ acceptRoleBasedInvite: AcceptRoleBasedInvitePayload; /** Adds a comment to a post. */ addComment: AddCommentPayload; + addDocumentationProjectCustomDomain: AddDocumentationProjectCustomDomainPayload; + /** Mutation to add a Member to a Documentation Project */ + addDocumentationProjectMember: AddDocumentationProjectMemberPayload; /** Adds a post to a series. */ addPostToSeries: AddPostToSeriesPayload; /** Adds a reply to a comment. */ @@ -2065,6 +2841,12 @@ export type Mutation = { * PRIVATE members are not visible on the members page while PUBLIC members are visible. */ changePublicationMemberVisibility: ChangePublicationMemberVisibilityPayload; + createDocumentationApiReference: CreateDocumentationApiReferencePayload; + createDocumentationGuide: CreateDocumentationGuidePayload; + createDocumentationLink: CreateDocumentationLinkPayload; + createDocumentationPageDraft: CreateDocumentationPageDraftPayload; + createDocumentationProject: CreateDocumentationProjectPayload; + createDocumentationSection: CreateDocumentationSectionPayload; /** Creates a new draft for a post. */ createDraft: CreateDraftPayload; createRedirectionRule: CreateRedirectionRulePayload; @@ -2076,6 +2858,24 @@ export type Mutation = { /** Deletes a role based invite. */ deleteRoleBasedInvite: DeleteRoleBasedInvitePayload; deleteWebhook: DeleteWebhookPayload; + /** Mutation to disable AI search for a documentation project */ + disableDocumentationProjectAISearch: DisableDocumentationProjectAiSearchPayload; + disableDocumentationProjectHeadlessCms: DisableDocumentationProjectHeadlessCmsPayload; + /** Mutation to enable AI search for a documentation project */ + enableDocumentationProjectAISearch: EnableDocumentationProjectAiSearchPayload; + enableDocumentationProjectHeadlessCms: EnableDocumentationProjectHeadlessCmsPayload; + /** + * Will generate a authorization JWT to preview a docs project. + * A token is required to generate the JWT. + */ + generateDocumentationProjectPreviewAuthorizationToken: GenerateDocumentationProjectPreviewAuthorizationTokenPayload; + /** + * Will generate a token that can be exchanged as a JWT to preview a docs project. + * Only the owner or editors of the project can generate the token. + */ + generateDocumentationProjectPreviewToken: GenerateDocumentationProjectPreviewTokenPayload; + /** Mutation to invite an user to a documentation project */ + inviteDocumentationProjectAdmin: InviteDocumentationProjectAdminPayload; /** Invites users to a publication. Either by username or email. */ inviteUsersToPublication: InviteUsersToPublicationPayload; /** Likes a comment. */ @@ -2084,6 +2884,11 @@ export type Mutation = { likePost: LikePostPayload; /** Likes a reply. */ likeReply: LikeReplyPayload; + mapDocumentationProjectCustomDomainWwwRedirect: MapDocumentationProjectCustomDomainWwwRedirectPayload; + moveDocumentationSidebarItem: MoveDocumentationSidebarItemPayload; + publishDocumentationApiReference: PublishDocumentationApiReferencePayload; + publishDocumentationGuide: PublishDocumentationGuidePayload; + publishDocumentationPageDraft: PublishDocumentationPageDraftPayload; /** Publishes an existing draft as a post. */ publishDraft: PublishDraftPayload; /** Creates a new post. */ @@ -2093,6 +2898,11 @@ export type Mutation = { reinviteUserToPublication: ReinviteUserToPublicationPayload; /** Removes a comment from a post. */ removeComment: RemoveCommentPayload; + removeDocumentationGuide: RemoveDocumentationGuidePayload; + removeDocumentationProjectCustomDomain: RemoveDocumentationProjectCustomDomainPayload; + /** Mutation to remove a Member from a Documentation Project */ + removeDocumentationProjectMember: RemoveDocumentationProjectMemberPayload; + removeDocumentationSidebarItem: RemoveDocumentationSidebarItemPayload; /** Removes a post. */ removePost: RemovePostPayload; /** Removes a user from a teams publication. */ @@ -2103,15 +2913,24 @@ export type Mutation = { removeReply: RemoveReplyPayload; /** Removes a series. */ removeSeries: RemoveSeriesPayload; + renameDocumentationGuide: RenameDocumentationGuideItemPayload; + renameDocumentationSidebarItem: RenameDocumentationSidebarItemPayload; /** Reschedule a draft. */ rescheduleDraft: RescheduleDraftPayload; resendWebhookRequest: ResendWebhookRequestPayload; /** Restores a deleted post. */ restorePost: RestorePostPayload; + retryDocumentationProjectCustomDomainVerification: RetryDocumentationProjectCustomDomainVerificationPayload; + /** Mutation to revoke documentation project invite */ + revokeInviteToDocumentationProject: RevokeInviteToDocumentationProjectPayload; /** Revokes a user invitation that was sent to join a publication. */ revokeUserInviteToPublication: RevokeUserInviteToPublicationPayload; + saveDocumentationPageDraftContent: SaveDocumentationPageDraftContentPayload; scheduleDraft: ScheduleDraftPayload; + setDocumentationSidebarItemVisibility: SetDocumentationSidebarItemVisibilityPayload; subscribeToNewsletter: SubscribeToNewsletterPayload; + /** Mutation to sync documentation API reference definition */ + syncDocumentationProjectApiDefinition: SyncDocumentationProjectApiDefinitionPayload; /** Toggle allowContributorEdits flag to allow or restrict external contributors to further edit published articles. */ toggleAllowContributorEdits: ToggleAllowContributorEditsPayload; /** @@ -2131,6 +2950,15 @@ export type Mutation = { unsubscribeFromNewsletter: UnsubscribeFromNewsletterPayload; /** Updates a comment on a post. */ updateComment: UpdateCommentPayload; + updateDocumentationAppearance: UpdateDocumentationAppearancePayload; + updateDocumentationGeneralSettings: UpdateDocumentationGeneralSettingsPayload; + updateDocumentationGuide: UpdateDocumentationGuidePayload; + updateDocumentationIntegrations: UpdateDocumentationIntegrationsPayload; + updateDocumentationLink: UpdateDocumentationLinkPayload; + updateDocumentationPageSettings: UpdateDocumentationPageSettingsPayload; + updateDocumentationProjectSubdomain: UpdateDocumentationProjectSubdomainPayload; + /** Mutation to update a section in a guide */ + updateDocumentationSection: UpdateDocumentationSectionPayload; updatePost: UpdatePostPayload; updateRedirectionRule: UpdateRedirectionRulePayload; /** Updates a reply */ @@ -2140,6 +2968,12 @@ export type Mutation = { /** Updates a series. */ updateSeries: UpdateSeriesPayload; updateWebhook: UpdateWebhookPayload; + verifyDocumentationProjectCustomDomain: VerifyDocumentationProjectCustomDomainPayload; +}; + + +export type MutationAcceptInviteToDocumentationProjectArgs = { + input: AcceptInviteToDocumentationProjectInput; }; @@ -2158,6 +2992,16 @@ export type MutationAddCommentArgs = { }; +export type MutationAddDocumentationProjectCustomDomainArgs = { + input: AddDocumentationProjectCustomDomainInput; +}; + + +export type MutationAddDocumentationProjectMemberArgs = { + input: AddDocumentationProjectMemberInput; +}; + + export type MutationAddPostToSeriesArgs = { input: AddPostToSeriesInput; }; @@ -2183,6 +3027,36 @@ export type MutationChangePublicationMemberVisibilityArgs = { }; +export type MutationCreateDocumentationApiReferenceArgs = { + input: CreateDocumentationApiReferenceInput; +}; + + +export type MutationCreateDocumentationGuideArgs = { + input: CreateDocumentationGuideInput; +}; + + +export type MutationCreateDocumentationLinkArgs = { + input: CreateDocumentationLinkInput; +}; + + +export type MutationCreateDocumentationPageDraftArgs = { + input: CreateDocumentationPageDraftInput; +}; + + +export type MutationCreateDocumentationProjectArgs = { + input: CreateDocumentationProjectInput; +}; + + +export type MutationCreateDocumentationSectionArgs = { + input: CreateDocumentationSectionInput; +}; + + export type MutationCreateDraftArgs = { input: CreateDraftInput; }; @@ -2218,6 +3092,41 @@ export type MutationDeleteWebhookArgs = { }; +export type MutationDisableDocumentationProjectAiSearchArgs = { + input: DisableDocumentationProjectAiSearchInput; +}; + + +export type MutationDisableDocumentationProjectHeadlessCmsArgs = { + input: DisableDocumentationProjectHeadlessCmsInput; +}; + + +export type MutationEnableDocumentationProjectAiSearchArgs = { + input: EnableDocumentationProjectAiSearchInput; +}; + + +export type MutationEnableDocumentationProjectHeadlessCmsArgs = { + input: EnableDocumentationProjectHeadlessCmsInput; +}; + + +export type MutationGenerateDocumentationProjectPreviewAuthorizationTokenArgs = { + input: GenerateDocumentationProjectPreviewAuthorizationTokenInput; +}; + + +export type MutationGenerateDocumentationProjectPreviewTokenArgs = { + input: GenerateDocumentationProjectPreviewTokenInput; +}; + + +export type MutationInviteDocumentationProjectAdminArgs = { + input: InviteDocumentationProjectAdminInput; +}; + + export type MutationInviteUsersToPublicationArgs = { input: InviteUsersToPublicationInput; }; @@ -2238,6 +3147,31 @@ export type MutationLikeReplyArgs = { }; +export type MutationMapDocumentationProjectCustomDomainWwwRedirectArgs = { + input: MapDocumentationProjectCustomDomainWwwRedirectInput; +}; + + +export type MutationMoveDocumentationSidebarItemArgs = { + input: MoveDocumentationSidebarItemInput; +}; + + +export type MutationPublishDocumentationApiReferenceArgs = { + input: PublishDocumentationApiReferenceInput; +}; + + +export type MutationPublishDocumentationGuideArgs = { + input: PublishDocumentationGuideInput; +}; + + +export type MutationPublishDocumentationPageDraftArgs = { + input: PublishDocumentationPageDraftInput; +}; + + export type MutationPublishDraftArgs = { input: PublishDraftInput; }; @@ -2263,6 +3197,26 @@ export type MutationRemoveCommentArgs = { }; +export type MutationRemoveDocumentationGuideArgs = { + input: RemoveDocumentationGuideInput; +}; + + +export type MutationRemoveDocumentationProjectCustomDomainArgs = { + input: RemoveDocumentationProjectCustomDomainInput; +}; + + +export type MutationRemoveDocumentationProjectMemberArgs = { + input: RemoveDocumentationProjectMemberInput; +}; + + +export type MutationRemoveDocumentationSidebarItemArgs = { + input: RemoveDocumentationSidebarItemInput; +}; + + export type MutationRemovePostArgs = { input: RemovePostInput; }; @@ -2293,6 +3247,16 @@ export type MutationRemoveSeriesArgs = { }; +export type MutationRenameDocumentationGuideArgs = { + input: RenameDocumentationGuideItemInput; +}; + + +export type MutationRenameDocumentationSidebarItemArgs = { + input: RenameDocumentationSidebarItemInput; +}; + + export type MutationRescheduleDraftArgs = { input: RescheduleDraftInput; }; @@ -2308,21 +3272,46 @@ export type MutationRestorePostArgs = { }; +export type MutationRetryDocumentationProjectCustomDomainVerificationArgs = { + input: RetryDocumentationProjectCustomDomainVerificationInput; +}; + + +export type MutationRevokeInviteToDocumentationProjectArgs = { + input: RevokeInviteToDocumentationProjectInput; +}; + + export type MutationRevokeUserInviteToPublicationArgs = { input: RevokeUserInviteToPublicationInput; }; +export type MutationSaveDocumentationPageDraftContentArgs = { + input: SaveDocumentationPageDraftContentInput; +}; + + export type MutationScheduleDraftArgs = { input: ScheduleDraftInput; }; +export type MutationSetDocumentationSidebarItemVisibilityArgs = { + input: SetDocumentationSidebarItemVisibilityInput; +}; + + export type MutationSubscribeToNewsletterArgs = { input: SubscribeToNewsletterInput; }; +export type MutationSyncDocumentationProjectApiDefinitionArgs = { + input: SyncDocumentationProjectApiDefinitionInput; +}; + + export type MutationToggleAllowContributorEditsArgs = { input: ToggleAllowContributorEditsInput; }; @@ -2354,13 +3343,53 @@ export type MutationTriggerWebhookTestArgs = { }; -export type MutationUnsubscribeFromNewsletterArgs = { - input: UnsubscribeFromNewsletterInput; +export type MutationUnsubscribeFromNewsletterArgs = { + input: UnsubscribeFromNewsletterInput; +}; + + +export type MutationUpdateCommentArgs = { + input: UpdateCommentInput; +}; + + +export type MutationUpdateDocumentationAppearanceArgs = { + input: UpdateDocumentationAppearanceInput; +}; + + +export type MutationUpdateDocumentationGeneralSettingsArgs = { + input: UpdateDocumentationGeneralSettingsInput; +}; + + +export type MutationUpdateDocumentationGuideArgs = { + input: UpdateDocumentationGuideInput; +}; + + +export type MutationUpdateDocumentationIntegrationsArgs = { + input: UpdateDocumentationIntegrationsInput; +}; + + +export type MutationUpdateDocumentationLinkArgs = { + input: UpdateDocumentationLinkInput; +}; + + +export type MutationUpdateDocumentationPageSettingsArgs = { + input: UpdateDocumentationPageSettingsInput; +}; + + +export type MutationUpdateDocumentationProjectSubdomainArgs = { + input: UpdateDocumentationProjectSubdomainInput; }; -export type MutationUpdateCommentArgs = { - input: UpdateCommentInput; +export type MutationUpdateDocumentationSectionArgs = { + input: UpdateDocumentationSectionInput; }; @@ -2393,6 +3422,11 @@ export type MutationUpdateWebhookArgs = { input: UpdateWebhookInput; }; + +export type MutationVerifyDocumentationProjectCustomDomainArgs = { + input: VerifyDocumentationProjectCustomDomainInput; +}; + /** * Basic information about the authenticated user. * User must be authenticated to use this type. @@ -2625,6 +3659,15 @@ export type PageConnection = { pageInfo: OffsetPageInfo; }; +/** + * An edge that contains a node and is used in page based pagination. + * This is a common interface for all edges in page based pagination. + */ +export type PageEdge = { + /** A node in the connection. */ + node: Node; +}; + /** Contains information to help in pagination. */ export type PageInfo = { __typename?: 'PageInfo'; @@ -3049,12 +4092,215 @@ export type ProjectViewEdge = Edge & { node: DocsViews; }; +export type ProjectViewsConnection = Connection & { + __typename?: 'ProjectViewsConnection'; + edges: Array; + pageInfo: PageInfo; +}; + +/** + * Filter for project views. + * + * Individual filters are combined with an AND condition whereas multiple values for the same filter are combined with an OR condition. + * + * Example: `documentationGuideIds: ["1", "2"], operatingSystems: ["Mac OS"]` will return views for posts with ID 1 or 2 AND operating system Mac OS. + */ +export type ProjectViewsFilter = { + /** + * Filter by one or multiple api reference guide IDs. + * + * If multiple IDs are provided, the filter will be applied as an OR condition. + */ + apiReferenceGuideIds?: InputMaybe>; + /** + * Filter by one or multiple browsers. + * + * If multiple browsers are provided, the filter will be applied as an OR condition. + */ + browsers?: InputMaybe>; + /** + * Filter by one or multiple countries. + * + * If multiple countries are provided, the filter will be applied as an OR condition. + */ + countries?: InputMaybe>; + /** + * Filter by one or multiple device types. + * + * If multiple device types are provided, the filter will be applied as an OR condition. + */ + deviceTypes?: InputMaybe>; + /** + * Filter by one or multiple documentation guide IDs. + * + * If multiple IDs are provided, the filter will be applied as an OR condition. + */ + documentationGuideIds?: InputMaybe>; + /** + * Filter by one or multiple operating systems. + * + * If multiple operating systems are provided, the filter will be applied as an OR condition. + */ + operatingSystems?: InputMaybe>; + /** + * Filter by one or multiple page IDs. + * + * If multiple IDs are provided, the filter will be applied as an OR condition. + */ + pageIds?: InputMaybe>; + /** + * Filter by one or multiple paths. + * + * If multiple paths are provided, the filter will be applied as an OR condition. + */ + paths?: InputMaybe>; + /** + * Filter by one or multiple referrer hosts. + * + * If multiple referrer hosts are provided, the filter will be applied as an OR condition. + */ + referrerHosts?: InputMaybe>; + /** Filter based on time range. */ + time?: InputMaybe; +}; + +export type ProjectViewsGroupBy = { + /** + * Group by one analytics dimensions. + * + * Can not be used together with `granularity`. + */ + dimension?: InputMaybe; + /** + * Group by time. Without this, all views over time will be aggregated. + * + * Can not be used together with `dimension`. + */ + granularity?: InputMaybe; +}; + +export type ProjectViewsOptions = { + /** + * The timezone that is used for grouping the views by time. + * E.g. if you group by day, the timezone will be used to determine the start of the day as indicated by `to` and `from`. + * + * It has no effect outside of time grouping. + * + * Default is `UTC`. + */ + groupingTimezone?: InputMaybe; +}; + +export type ProjectViewsSortBy = { + /** Sort the views by the total number of views. Can only be used when grouped by `dimension`. */ + viewCount: SortOrder; +}; + +export type ProjectVisitorsConnection = Connection & { + __typename?: 'ProjectVisitorsConnection'; + edges: Array; + pageInfo: PageInfo; +}; + export type ProjectVisitorsEdge = Edge & { __typename?: 'ProjectVisitorsEdge'; cursor: Scalars['String']['output']; node: DocsVisitors; }; +/** + * Filter for project visitors. + * + * Individual filters are combined with an AND condition whereas multiple values for the same filter are combined with an OR condition. + * + * Example: `documentationGuideIds: ["1", "2"], operatingSystems: ["Mac OS"]` will return visitors for posts with ID 1 or 2 AND operating system Mac OS. + */ +export type ProjectVisitorsFilter = { + /** + * Filter by one or multiple api reference guide IDs. + * + * If multiple IDs are provided, the filter will be applied as an OR condition. + */ + apiReferenceGuideIds?: InputMaybe>; + /** + * Filter by one or multiple browsers. + * + * If multiple browsers are provided, the filter will be applied as an OR condition. + */ + browsers?: InputMaybe>; + /** + * Filter by one or multiple countries. + * + * If multiple countries are provided, the filter will be applied as an OR condition. + */ + countries?: InputMaybe>; + /** + * Filter by one or multiple device types. + * + * If multiple device types are provided, the filter will be applied as an OR condition. + */ + deviceTypes?: InputMaybe>; + /** + * Filter by one or multiple documentation guide IDs. + * + * If multiple IDs are provided, the filter will be applied as an OR condition. + */ + documentationGuideIds?: InputMaybe>; + /** + * Filter by one or multiple operating systems. + * + * If multiple operating systems are provided, the filter will be applied as an OR condition. + */ + operatingSystems?: InputMaybe>; + /** + * Filter by one or multiple page IDs. + * + * If multiple IDs are provided, the filter will be applied as an OR condition. + */ + pageIds?: InputMaybe>; + /** + * Filter by one or multiple paths. + * + * If multiple paths are provided, the filter will be applied as an OR condition. + */ + paths?: InputMaybe>; + /** + * Filter by one or multiple referrer hosts. + * + * If multiple referrer hosts are provided, the filter will be applied as an OR condition. + */ + referrerHosts?: InputMaybe>; + /** Filter based on time range. */ + time?: InputMaybe; +}; + +export type ProjectVisitorsGroupBy = { + /** + * Group by one analytics dimensions. + * + * Can not be used together with `granularity`. + */ + dimension?: InputMaybe; + /** + * Group by time. Without this, all views over time will be aggregated. + * + * Can not be used together with `dimension`. + */ + granularity?: InputMaybe; +}; + +export type ProjectVisitorsOptions = { + /** + * The timezone that is used for grouping the views by time. + * E.g. if you group by day, the timezone will be used to determine the start of the day as indicated by `to` and `from`. + * + * It has no effect outside of time grouping. + * + * Default is `UTC`. + */ + groupingTimezone?: InputMaybe; +}; + /** * Contains basic information about the publication. * A publication is a blog that can be created for a user or a team. @@ -3619,6 +4865,38 @@ export type PublicationVisitorsEdge = Edge & { node: Visitors; }; +export type PublishDocumentationApiReferenceInput = { + guideSlug: Scalars['String']['input']; + projectId: Scalars['ID']['input']; +}; + +export type PublishDocumentationApiReferencePayload = { + __typename?: 'PublishDocumentationApiReferencePayload'; + guide?: Maybe; +}; + +export type PublishDocumentationGuideInput = { + guideSlug: Scalars['String']['input']; + projectId: Scalars['ID']['input']; +}; + +export type PublishDocumentationGuidePayload = { + __typename?: 'PublishDocumentationGuidePayload'; + guide?: Maybe; +}; + +export type PublishDocumentationPageDraftInput = { + guideSlug: Scalars['String']['input']; + pageId: Scalars['ID']['input']; + projectId: Scalars['ID']['input']; +}; + +export type PublishDocumentationPageDraftPayload = { + __typename?: 'PublishDocumentationPageDraftPayload'; + guide?: Maybe; + page?: Maybe; +}; + export type PublishDraftInput = { /** The id of the draft that should be published */ draftId: Scalars['ObjectId']['input']; @@ -3712,6 +4990,9 @@ export type PublishPostTagInput = { export type Query = { __typename?: 'Query'; + checkCustomDomainAvailability: CheckCustomDomainAvailabilityResult; + checkSubdomainAvailability: CheckSubdomainAvailabilityResult; + documentationProject?: Maybe; /** * Returns a draft by ID. * Draft is a post that is not published yet. @@ -3744,6 +5025,22 @@ export type Query = { }; +export type QueryCheckCustomDomainAvailabilityArgs = { + input: CheckCustomDomainAvailabilityInput; +}; + + +export type QueryCheckSubdomainAvailabilityArgs = { + subdomain: Scalars['String']['input']; +}; + + +export type QueryDocumentationProjectArgs = { + host?: InputMaybe; + id?: InputMaybe; +}; + + export type QueryDraftArgs = { id: Scalars['ObjectId']['input']; }; @@ -3863,6 +5160,13 @@ export type ReinviteUserToPublicationPayload = { success: Scalars['Boolean']['output']; }; +export type RelativeTimeRange = { + /** The number of time periods to go back in time. */ + n: Scalars['Int']['input']; + /** The type of time range to be used. */ + relative: TimePeriod; +}; + export type RemoveCommentInput = { id: Scalars['ID']['input']; }; @@ -3872,6 +5176,48 @@ export type RemoveCommentPayload = { comment?: Maybe; }; +export type RemoveDocumentationGuideInput = { + guideSlug: Scalars['String']['input']; + projectId: Scalars['ID']['input']; +}; + +export type RemoveDocumentationGuidePayload = { + __typename?: 'RemoveDocumentationGuidePayload'; + guide?: Maybe; +}; + +export type RemoveDocumentationProjectCustomDomainInput = { + projectId: Scalars['ID']['input']; +}; + +export type RemoveDocumentationProjectCustomDomainPayload = { + __typename?: 'RemoveDocumentationProjectCustomDomainPayload'; + project?: Maybe; +}; + +/** The input for the removal of a member from a documentation */ +export type RemoveDocumentationProjectMemberInput = { + projectId: Scalars['ID']['input']; + userId: Scalars['ID']['input']; +}; + +export type RemoveDocumentationProjectMemberPayload = { + __typename?: 'RemoveDocumentationProjectMemberPayload'; + project?: Maybe; + removedMember?: Maybe; +}; + +export type RemoveDocumentationSidebarItemInput = { + guideSlug: Scalars['String']['input']; + itemId: Scalars['ID']['input']; + projectId: Scalars['ID']['input']; +}; + +export type RemoveDocumentationSidebarItemPayload = { + __typename?: 'RemoveDocumentationSidebarItemPayload'; + guide?: Maybe; +}; + export type RemovePostInput = { /** The ID of the post to remove. */ id: Scalars['ID']['input']; @@ -3939,6 +5285,30 @@ export type RemoveSeriesPayload = { series: Series; }; +export type RenameDocumentationGuideItemInput = { + guideSlug: Scalars['String']['input']; + name: Scalars['String']['input']; + projectId: Scalars['ID']['input']; +}; + +export type RenameDocumentationGuideItemPayload = { + __typename?: 'RenameDocumentationGuideItemPayload'; + guide?: Maybe; +}; + +export type RenameDocumentationSidebarItemInput = { + guideSlug: Scalars['String']['input']; + itemId: Scalars['ID']['input']; + label: Scalars['String']['input']; + projectId: Scalars['ID']['input']; +}; + +export type RenameDocumentationSidebarItemPayload = { + __typename?: 'RenameDocumentationSidebarItemPayload'; + guide?: Maybe; + item?: Maybe; +}; + /** * Contains basic information about the reply. * A reply is a response to a comment. @@ -3996,6 +5366,32 @@ export type RestorePostPayload = { post?: Maybe; }; +export type RetryDocumentationProjectCustomDomainVerificationInput = { + projectId: Scalars['ID']['input']; +}; + +export type RetryDocumentationProjectCustomDomainVerificationPayload = { + __typename?: 'RetryDocumentationProjectCustomDomainVerificationPayload'; + project?: Maybe; +}; + +/** Input to revoke a user invitation to join a documentation project. */ +export type RevokeInviteToDocumentationProjectInput = { + /** The ID of the invite to revoke. */ + inviteId: Scalars['ID']['input']; + /** The ID of the documentation project. */ + projectId: Scalars['ID']['input']; +}; + +/** Response to revoking an invitation to join a documentation project. */ +export type RevokeInviteToDocumentationProjectPayload = { + __typename?: 'RevokeInviteToDocumentationProjectPayload'; + /** The documentation project that was associated with the invite. */ + project?: Maybe; + /** Signifies the success of the mutation. */ + success: Scalars['Boolean']['output']; +}; + /** Input to revoke a user invitation to a publication. */ export type RevokeUserInviteToPublicationInput = { /** The invite ID to revoke. */ @@ -4051,6 +5447,21 @@ export type Seo = { title?: Maybe; }; +export type SaveDocumentationPageDraftContentInput = { + content?: InputMaybe; + description?: InputMaybe; + guideId?: InputMaybe; + guideSlug?: InputMaybe; + pageId: Scalars['ID']['input']; + projectId: Scalars['ID']['input']; + title?: InputMaybe; +}; + +export type SaveDocumentationPageDraftContentPayload = { + __typename?: 'SaveDocumentationPageDraftContentPayload'; + page?: Maybe; +}; + export type ScheduleDraftInput = { /** The Author ID of the draft that should be published */ authorId: Scalars['ID']['input']; @@ -4097,6 +5508,7 @@ export enum Scope { DocsAdminOrOwner = 'docs_admin_or_owner', DocsOwner = 'docs_owner', ImportSubscribersToPublication = 'import_subscribers_to_publication', + InvitedDocsAdmin = 'invited_docs_admin', InvitedTeamUser = 'invited_team_user', MoveDraft = 'move_draft', PublicationAdmin = 'publication_admin', @@ -4238,6 +5650,19 @@ export type SeriesPostConnection = Connection & { totalDocuments: Scalars['Int']['output']; }; +export type SetDocumentationSidebarItemVisibilityInput = { + guideSlug: Scalars['String']['input']; + itemId: Scalars['ID']['input']; + projectId: Scalars['ID']['input']; + visibility: DocumentationSidebarItemVisibility; +}; + +export type SetDocumentationSidebarItemVisibilityPayload = { + __typename?: 'SetDocumentationSidebarItemVisibilityPayload'; + guide?: Maybe; + item?: Maybe; +}; + /** Available social media links. */ export type SocialMediaLinks = { __typename?: 'SocialMediaLinks'; @@ -4333,6 +5758,23 @@ export type SubscribeToNewsletterPayload = { status?: Maybe; }; +/** The input for syncing API reference definitions */ +export type SyncDocumentationProjectApiDefinitionInput = { + /** The ID of the docs API reference */ + apiReferenceId: Scalars['ID']['input']; + /** The ID of the documentation project */ + projectId: Scalars['ID']['input']; + /** The ID of the reference version */ + versionId: Scalars['ID']['input']; +}; + +/** The response to syncing documentation project API Reference definition */ +export type SyncDocumentationProjectApiDefinitionPayload = { + __typename?: 'SyncDocumentationProjectApiDefinitionPayload'; + /** Signifies if the mutation was successful. */ + success: Scalars['Boolean']['output']; +}; + export type TableOfContentsFeature = Feature & { __typename?: 'TableOfContentsFeature'; /** Whether or not the user has chosen to show a table of contents on the post. */ @@ -4419,6 +5861,37 @@ export type TextSelectionSharerFeature = Feature & { isEnabled: Scalars['Boolean']['output']; }; +export type TimeFilter = { + /** + * Narrow the time range to a specific period. + * + * Can't be used with `relative`. + */ + absolute?: InputMaybe; + /** + * Narrow the time range to a specific period. + * + * Can't be used with `absolute`. + */ + relative?: InputMaybe; +}; + +export enum TimeGranularity { + Daily = 'DAILY', + Hourly = 'HOURLY', + Monthly = 'MONTHLY', + Weekly = 'WEEKLY', + Yearly = 'YEARLY' +} + +export enum TimePeriod { + LastNDays = 'LAST_N_DAYS', + LastNHours = 'LAST_N_HOURS', + LastNMonths = 'LAST_N_MONTHS', + LastNWeeks = 'LAST_N_WEEKS', + LastNYears = 'LAST_N_YEARS' +} + export type ToggleAllowContributorEditsInput = { publicationId: Scalars['ID']['input']; }; @@ -4523,6 +5996,108 @@ export type UpdateCommentPayload = { comment?: Maybe; }; +export type UpdateDocumentationAppearanceInput = { + appearance: DocumentationProjectAppearanceInput; + projectId: Scalars['ID']['input']; +}; + +export type UpdateDocumentationAppearancePayload = { + __typename?: 'UpdateDocumentationAppearancePayload'; + project?: Maybe; +}; + +export type UpdateDocumentationGeneralSettingsInput = { + description?: InputMaybe; + links?: InputMaybe; + name?: InputMaybe; + projectId: Scalars['ID']['input']; + settings?: InputMaybe; +}; + +export type UpdateDocumentationGeneralSettingsPayload = { + __typename?: 'UpdateDocumentationGeneralSettingsPayload'; + project?: Maybe; +}; + +export type UpdateDocumentationGuideInput = { + guideId: Scalars['ID']['input']; + metaTags?: InputMaybe; + name?: InputMaybe; + projectId: Scalars['ID']['input']; + slug?: InputMaybe; +}; + +export type UpdateDocumentationGuidePayload = { + __typename?: 'UpdateDocumentationGuidePayload'; + guide?: Maybe; +}; + +export type UpdateDocumentationIntegrationsInput = { + integrations: DocumentationProjectIntegrationsInput; + projectId: Scalars['ID']['input']; +}; + +export type UpdateDocumentationIntegrationsPayload = { + __typename?: 'UpdateDocumentationIntegrationsPayload'; + project?: Maybe; +}; + +export type UpdateDocumentationLinkInput = { + guideSlug: Scalars['String']['input']; + label: Scalars['String']['input']; + linkId: Scalars['ID']['input']; + projectId: Scalars['ID']['input']; + url?: InputMaybe; +}; + +export type UpdateDocumentationLinkPayload = { + __typename?: 'UpdateDocumentationLinkPayload'; + guide?: Maybe; + link?: Maybe; +}; + +export type UpdateDocumentationPageSettingsInput = { + guideSlug: Scalars['String']['input']; + label?: InputMaybe; + metaTags?: InputMaybe; + pageId: Scalars['ID']['input']; + projectId: Scalars['ID']['input']; + slug?: InputMaybe; + visibility?: InputMaybe; +}; + +export type UpdateDocumentationPageSettingsPayload = { + __typename?: 'UpdateDocumentationPageSettingsPayload'; + guide?: Maybe; + page?: Maybe; + sidebarItem?: Maybe; +}; + +export type UpdateDocumentationProjectSubdomainInput = { + projectId: Scalars['ID']['input']; + subdomain: Scalars['String']['input']; +}; + +export type UpdateDocumentationProjectSubdomainPayload = { + __typename?: 'UpdateDocumentationProjectSubdomainPayload'; + project?: Maybe; +}; + +export type UpdateDocumentationSectionInput = { + guideSlug: Scalars['String']['input']; + label?: InputMaybe; + projectId: Scalars['ID']['input']; + sectionId: Scalars['ID']['input']; + slug?: InputMaybe; + visibility?: InputMaybe; +}; + +export type UpdateDocumentationSectionPayload = { + __typename?: 'UpdateDocumentationSectionPayload'; + guide?: Maybe; + section?: Maybe; +}; + export type UpdatePostInput = { /** * Update co-authors of the post. @@ -4825,6 +6400,11 @@ export type UserInviteInput = { username?: InputMaybe; }; +export enum UserInviteStatus { + Invited = 'INVITED', + NotInvited = 'NOT_INVITED' +} + /** * Connection for posts written by a single user. Contains a list of edges containing nodes. * Each node is a post. @@ -4982,6 +6562,24 @@ export enum ValidationMethod { Id = 'ID' } +export type VerifyDocumentationProjectCustomDomainInput = { + projectId: Scalars['ID']['input']; +}; + +export type VerifyDocumentationProjectCustomDomainPayload = { + __typename?: 'VerifyDocumentationProjectCustomDomainPayload'; + /** + * Additional DNS entries required to verify the domain. + * There are cases where additional records in the DNS config are required to successfully verify the domain. + */ + dnsVerificationEntries: Array; + /** + * The documentation project where the custom domain should be verified. + * Note, that the verification can also fail. + */ + project?: Maybe; +}; + /** * Contains the flag indicating if the view count feature is enabled or not. * User can enable or disable the view count feature from the publication settings. diff --git a/packages/blog-starter-kit/themes/enterprise/generated/schema.graphql b/packages/blog-starter-kit/themes/enterprise/generated/schema.graphql index 13da83f1..e5258373 100644 --- a/packages/blog-starter-kit/themes/enterprise/generated/schema.graphql +++ b/packages/blog-starter-kit/themes/enterprise/generated/schema.graphql @@ -13,6 +13,37 @@ directive @requireAuth(scopes: [Scope!]) on FIELD_DEFINITION | OBJECT directive @validate(message: String, method: ValidationMethod!) on ARGUMENT_DEFINITION | INPUT_FIELD_DEFINITION +input AbsoluteTimeRange { + """ + The start date of the views. + The time range will include this date (using >=). + + Defaults to the unix epoch start (1970-01-01). + """ + from: DateTime + """ + The end date of the views. + The time range will include this date (using <=). + + Defaults to the current date. + """ + to: DateTime +} + +"""The input for accepting an invitation to join a documentation project.""" +input AcceptInviteToDocumentationProjectInput { + """The invitation token to accept.""" + inviteToken: String! +} + +"""Response to accepting an invitation to join a documentation project.""" +type AcceptInviteToDocumentationProjectPayload { + """The documentation project that the user has been invited to.""" + project: DocumentationProject + """Signifies the success of the mutation.""" + success: Boolean! +} + input AcceptInviteToPublicationInput { """The invitation token to accept.""" inviteToken: String! @@ -45,6 +76,32 @@ type AddCommentPayload { comment: Comment } +input AddDocumentationProjectCustomDomainInput { + domain: String! + projectId: ID! + wwwDomain: Boolean! +} + +type AddDocumentationProjectCustomDomainPayload { + """ + Additional DNS entries required to verify the domain. + There are cases where additional records in the DNS config are required to successfully verify the domain. + """ + dnsVerificationEntries: [DnsVerificationEntry!]! + project: DocumentationProject + wwwRedirectDnsVerificationEntries: [DnsVerificationEntry!]! +} + +input AddDocumentationProjectMemberInput { + projectId: ID! + userId: ID! +} + +type AddDocumentationProjectMemberPayload { + member: DocumentationProjectMember + project: DocumentationProject +} + input AddPostToSeriesInput { """The ID of the post to be added to the series.""" postId: ObjectId! @@ -186,6 +243,27 @@ type ChangePublicationMemberVisibilityPayload { member: PublicationMember! } +input CheckCustomDomainAvailabilityInput { + domain: String! + withWWWRedirect: Boolean! +} + +type CheckCustomDomainAvailabilityResult { + domainAvailable: Boolean! +} + +type CheckSubdomainAvailabilityResult { + subdomainAvailable: Boolean! +} + +""" +Contains the flag indicating if the collaboration feature is enabled or not. +""" +type CollaborationFeature implements Feature { + """A flag indicating if the collaboration feature is enabled or not.""" + isEnabled: Boolean! +} + """ Contains basic information about the comment. A comment is a response to a post. @@ -803,6 +881,80 @@ input CoverImageOptionsInput { stickCoverToBottom: Boolean } +input CreateDocumentationApiReferenceInput { + name: String + projectId: ID! + slug: String + url: String! +} + +type CreateDocumentationApiReferencePayload { + guide: DocumentationApiReference! +} + +input CreateDocumentationGuideInput { + name: String! + projectId: ID! + slug: String +} + +type CreateDocumentationGuidePayload { + guide: DocumentationGuide! +} + +input CreateDocumentationLinkInput { + guideSlug: String! + label: String! + projectId: ID! + url: String! +} + +type CreateDocumentationLinkPayload { + guide: DocumentationGuide + link: DocumentationLink +} + +input CreateDocumentationPageDraftInput { + content: String + description: String + guideSlug: String! + label: String = "Untitled Page" + parentId: ID + projectId: ID! + title: String = "Untitled Page" +} + +type CreateDocumentationPageDraftPayload { + guide: DocumentationGuide + page: DocumentationPage +} + +input CreateDocumentationProjectInput { + description: String + favIconUrl: String + links: DocumentationProjectLinksInput + logoDarkThemeUrl: String + logoUrl: String + name: String! + settings: DocumentationProjectSettingsInput + subdomain: String! +} + +type CreateDocumentationProjectPayload { + project: DocumentationProject! +} + +input CreateDocumentationSectionInput { + guideSlug: String! + label: String = "Untitled Section" + projectId: ID! +} + +type CreateDocumentationSectionPayload { + guide: DocumentationGuide + section: DocumentationSection +} + input CreateDraftInput { """Ids of the co-authors of the resulting draft.""" coAuthors: [ObjectId!] @@ -1007,6 +1159,11 @@ A date-time string at UTC, such as 2007-12-03T10:15:30Z, compliant with the `dat """ scalar DateTime +enum DefaultDocsTheme { + DARK + LIGHT +} + """Input to delete a role based invite.""" input DeleteRoleBasedInviteInput { """The ID of the role based invite.""" @@ -1031,6 +1188,58 @@ enum DeviceType { TABLET } +"""The input for disabling AI search for a documentation project""" +input DisableDocumentationProjectAISearchInput { + """The ID of the documentation project""" + projectId: ID! +} + +"""The response to disabling AI search for a documentation project""" +type DisableDocumentationProjectAISearchPayload { + project: DocumentationProject +} + +input DisableDocumentationProjectHeadlessCmsInput { + projectId: ID! +} + +type DisableDocumentationProjectHeadlessCmsPayload { + project: DocumentationProject +} + +type DnsVerificationEntry { + name: String! + type: DnsVerificationType! + value: String! +} + +enum DnsVerificationType { + A_RECORD + CNAME_RECORD + TXT_RECORD +} + +enum DocsAnalyticsDimension { + API_REFERENCE_GUIDE + BROWSER + COUNTRY + DEVICE_TYPE + DOCUMENTATION_GUIDE + OPERATING_SYSTEM + PAGE + PATH + REFERRER_HOST +} + +type DocsProjectInvitedMembers { + email: String! + role: DocumentationMemberRole! + """ + Invited Hashnode user, returns null if the user is not a Hashnode user. + """ + user: User +} + interface DocsViews implements Node { id: ID! """The aggregated views.""" @@ -1043,6 +1252,28 @@ interface DocsVisitors implements Node { total: Int! } +type DocumentationApiReference implements IGuide { + """The parsed Swagger Definition of the API Reference.""" + definition: JSONObject + id: ID! + lastModified: DateTime! + name: String! + """ + OG meta-data of the page. Contains image url used in open graph meta tags. + """ + ogMetaData: OpenGraphMetaData + """Url of the published api reference.""" + publishedUrl: String + """ + SEO information of the page. Contains title and description used in meta tags. + """ + seo: SEO + slug: String! + status: DocumentationGuideItemStatus! + url: String! + versionId: String +} + type DocumentationGuide implements IGuide { hasChanges: Boolean! id: ID! @@ -1055,6 +1286,7 @@ type DocumentationGuide implements IGuide { page(id: ID, path: String): DocumentationPage publishedPage(id: ID, path: String): DocumentationPage publishedSidebarItems: [DocumentationSidebarItem!]! + redirectedPublishedPage(id: ID, path: String): DocumentationPage """ SEO information of the page. Contains title and description used in meta tags. """ @@ -1067,7 +1299,7 @@ type DocumentationGuide implements IGuide { versionId: String } -union DocumentationGuideItem = DocumentationGuide +union DocumentationGuideItem = DocumentationApiReference | DocumentationGuide enum DocumentationGuideItemStatus { DELETED @@ -1085,9 +1317,62 @@ type DocumentationLink implements IDocumentationSidebarItem { visibility: DocumentationSidebarItemVisibility! } +enum DocumentationMemberRole { + ADMIN + OWNER +} + +"""A column for the navigation. Used in the footer""" +type DocumentationNavbarColumn implements Node { + """The date the column was created.""" + createdAt: DateTime! + """The ID of the column.""" + id: ID! + """The navigation items in the column.""" + items: [DocumentationNavbarItem!]! + """The label of the column.""" + label: String! + """The date the column was last updated.""" + updatedAt: DateTime +} + +union DocumentationNavbarItem = DocumentationNavbarItemGuide | DocumentationNavbarItemLink + +"""A navigation item pointing to a guide.""" +type DocumentationNavbarItemGuide implements Node { + """The date the item was created.""" + createdAt: DateTime! + """The guide the item points to.""" + guide: DocumentationGuideItem! + """The ID of the item.""" + id: ID! + """The label of the item.""" + label: String! + """The date the item was last updated.""" + updatedAt: DateTime +} + +"""A navigation item pointing to an external URL.""" +type DocumentationNavbarItemLink implements Node { + """The date the item was created.""" + createdAt: DateTime! + """The ID of the item.""" + id: ID! + """The label of the item.""" + label: String! + """Indicates if the link should open in a new tab.""" + openInNewTab: Boolean! + """The date the item was last updated.""" + updatedAt: DateTime + """The URL the item points to.""" + url: String! +} + type DocumentationPage { + content: DocumentationPageContent! createdAt: DateTime! description: String + draft: DocumentationPageDraft! guideSlug: String! id: ID! """ @@ -1107,11 +1392,351 @@ type DocumentationPage { visibility: DocumentationSidebarItemVisibility! } +type DocumentationPageContent { + mdx: String! +} + +type DocumentationPageDraft { + content: DocumentationPageContent! + description: String + title: String! +} + +type DocumentationProject implements Node { + ai: DocumentationProjectAIPreference + analytics: DocumentationProjectAnalytics! + appearance: DocumentationProjectAppearance! + createdAt: DateTime! + defaultGuide: DocumentationGuideItem + description: String + domain: DocumentationProjectDomainSettings + """ + Object containing information about beta features enabled for the documentation project. + """ + features: DocumentationProjectFeatures! + guide(id: ID, slug: String): DocumentationGuideItem + guides: [DocumentationGuideItem!]! + id: ID! + integrations: DocumentationProjectIntegrations + links: DocumentationProjectLinks! + members: [DocumentationProjectMember!]! @deprecated(reason: "Use membersV2") + membersV2( + """Filters to be applied to the member list.""" + filter: DocumentationProjectMemberConnectionFilter + """The page number that should be returned.""" + page: Int! + """The number of members to return on a single page.""" + pageSize: Int! + ): DocumentationProjectMemberConnection! + name: String! + """The navigation configuration for the documentation project.""" + navigation: DocumentationProjectNavigation! + """The Owner of the documentation project.""" + owner: User! + """ + Details of publication invites. Returns null if publication is not a team publication. + """ + pendingInvites( + """The page number that should be returned.""" + page: Int! + """The number of pending invites to return on a single page.""" + pageSize: Int! + ): DocumentationProjectPendingInviteConnection! + publishedGuide(id: ID, slug: String): DocumentationGuideItem + publishedGuides: [DocumentationGuideItem!]! + """A user search to find users with a specific status""" + searchUsers(input: DocumentationProjectSearchUsersInput!): DocumentationProjectSearchUserConnection! + settings: DocumentationProjectSettings! + subscription: DocumentationProjectSubscription + updatedAt: DateTime + """Url of the documentation project.""" + url: String! +} + +type DocumentationProjectAIPreference { + """ + The prompts for the documentation project. These prompts are shown to the user when AI Search chatbot is opened. + """ + prompts: [DocumentationProjectAIPrompt!]! + """The settings for the AI feature.""" + settings: DocumentationProjectAISettings! +} + +type DocumentationProjectAIPrompt { + """The date the prompt was created.""" + createdAt: DateTime! + """The ID of the prompt.""" + id: ID! + """The prompt text.""" + prompt: String! +} + +type DocumentationProjectAISettings { + """A flag to indicate if the AI search feature is enabled.""" + isSearchEnabled: Boolean! +} + +type DocumentationProjectAnalytics { + views( + """A cursor to the last item of the previous page.""" + after: String + filter: ProjectViewsFilter + """The number of view nodes to be returned per page.""" + first: Int! + groupBy: ProjectViewsGroupBy + options: ProjectViewsOptions + sortBy: ProjectViewsSortBy + ): ProjectViewsConnection + visitors( + """A cursor to the last item of the previous page.""" + after: String + filter: ProjectVisitorsFilter + """The number of view nodes to be returned per page.""" + first: Int! + groupBy: ProjectVisitorsGroupBy + options: ProjectVisitorsOptions + ): ProjectVisitorsConnection! +} + +type DocumentationProjectAppearance { + defaultDocsTheme: DefaultDocsTheme! + favIconUrl: String + getStarted: DocumentationProjectGetStarted + logoDarkThemeUrl: String + logoUrl: String + primaryColor: String +} + +input DocumentationProjectAppearanceInput { + defaultDocsTheme: DefaultDocsTheme + favIconUrl: String + getStarted: DocumentationProjectGetStartedInput + logoDarkThemeUrl: String + logoUrl: String + primaryColor: String +} + +type DocumentationProjectCustomDomain { + domain: String! + status: CustomDomainStatus! + verifiedAt: DateTime + wwwDomain: DocumentationProjectCustomWwwDomain +} + +type DocumentationProjectCustomWwwDomain { + status: CustomDomainStatus! + verifiedAt: DateTime +} + +type DocumentationProjectDomainSettings { + customDomain: DocumentationProjectCustomDomain + hashnodeSubDomain: String! +} + +"""Contains the documentation project's beta features.""" +type DocumentationProjectFeatures { + """ + Collaboration feature for the docs project which enables collaborative editing in the page editor. + """ + collaboration: CollaborationFeature! +} + +type DocumentationProjectGetStarted { + label: String! + url: URL! +} + +input DocumentationProjectGetStartedInput { + label: String + url: URL +} + +type DocumentationProjectIntegrations { + """FB Pixel ID for integration with Facebook Pixel.""" + fbPixelID: String + """Google Tag Manager ID for integration with Google Tag Manager.""" + gTagManagerID: String + """Google Analytics Tracking ID for integration with Google Analytics.""" + gaTrackingID: String + """Hotjar Site ID for integration with Hotjar.""" + hotjarSiteID: String + """Intercom ID for integration with Intercom""" + intercomID: String + """The meta tags associated with the documentation project.""" + metaTags: String +} + +input DocumentationProjectIntegrationsInput { + fbPixelID: String + gTagManagerID: String + gaTrackingID: String + hotjarSiteID: String + intercomID: String + metaTags: String +} + +"""Contains the pending invite information.""" +type DocumentationProjectInvite implements Node { + """The ID of the pending invite.""" + id: ID! + """The role assigned to the user in the publication.""" + role: DocumentationMemberRole! + """ + Invited Hashnode user, returns null if the user is not a Hashnode user. + """ + user: User! +} + +type DocumentationProjectLinks { + """Daily.dev URL of the documentation project.""" + dailydev: String + """GitHub URL of the documentation project.""" + github: String + """The GitHub repository of the documentation project.""" + githubRepository: String + """Hashnode profile of author of the documentation project.""" + hashnode: String + """Instagram URL of the documentation project.""" + instagram: String + """LinkedIn URL of the documentation project.""" + linkedin: String + """Mastodon URL of the documentation project.""" + mastodon: String + """Twitter URL of the documentation project.""" + twitter: String + """Website URL of the documentation project.""" + website: String + """YouTube URL of the documentation project.""" + youtube: String +} + +input DocumentationProjectLinksInput { + dailydev: String + github: String + githubRepository: String + hashnode: String + instagram: String + linkedin: String + mastodon: String + twitter: String + website: String + youtube: String +} + +type DocumentationProjectMember { + """The role of the member in the documentation project.""" + role: DocumentationMemberRole! + """The user who is a member of the documentation project.""" + user: User! +} + +type DocumentationProjectMemberConnection implements PageConnection { + """A list of members.""" + nodes: [DocumentationProjectMemberV2!]! + """Information to aid in pagination.""" + pageInfo: OffsetPageInfo! + """Total number of nodes available i.e. number of members.""" + totalDocuments: Int! +} + +"""The filter for the documentation member connection.""" +input DocumentationProjectMemberConnectionFilter { + """ + Search filter can be used to filter members by their username or email. + """ + searchTerm: String +} + +type DocumentationProjectMemberV2 implements Node { + """The ID of the member.""" + id: ID! + """The role of the member in the documentation project.""" + role: DocumentationMemberRole! + """The user who is a member of the documentation project.""" + user: User! +} + +""" +Contains the header and footer navigation for the documentation project. +""" +type DocumentationProjectNavigation { + """The columns in the footer navigation.""" + footer: [DocumentationNavbarColumn!]! + """The items in the header navigation.""" + header: [DocumentationNavbarItem!]! +} + +"""A connection for the user search result.""" +type DocumentationProjectPendingInviteConnection implements PageConnection { + """A list of invites""" + nodes: [DocumentationProjectInvite!]! + """Information to aid in pagination.""" + pageInfo: OffsetPageInfo! + """The total number of invites.""" + totalDocuments: Int! +} + +enum DocumentationProjectProductName { + ENTERPRISE + STARTUP +} + +"""A connection for the user search result.""" +type DocumentationProjectSearchUserConnection implements PageConnection { + """The edges containing the user and the status of the user.""" + edges: [DocumentationProjectSearchUserEdge!]! + """A list user nodes.""" + nodes: [User!]! + """Information to aid in pagination.""" + pageInfo: OffsetPageInfo! + """Total number of nodes available i.e. number of user search results.""" + totalDocuments: Int! +} + +type DocumentationProjectSearchUserEdge implements PageEdge { + node: User! + status: UserInviteStatus! +} + +input DocumentationProjectSearchUsersInput { + """The page number that should be returned.""" + page: Int! + """The number of users to return on a single page.""" + pageSize: Int! + searchTerm: String! + status: UserInviteStatus! +} + +type DocumentationProjectSettings { + isHashnodeLoginAllowed: Boolean! + """A flag to indicate if the documentation project is using Headless CMS.""" + isHeadless: Boolean! + isRobotsAllowed: Boolean! +} + +input DocumentationProjectSettingsInput { + allowHashnodeLogin: Boolean + allowRobots: Boolean +} + +type DocumentationProjectSubscription { + productName: DocumentationProjectProductName! + status: DocumentationProjectSubscriptionStatus! +} + +enum DocumentationProjectSubscriptionStatus { + ACTIVE + CANCELED + PAST_DUE + UNPAID +} + type DocumentationSection implements IDocumentationNestableSidebarItem & IDocumentationSidebarItem { createdAt: DateTime! id: ID! label: String! pages: [DocumentationSidebarItemPage!]! + path: String! status: DocumentationSidebarItemStatus! updatedAt: DateTime visibility: DocumentationSidebarItemVisibility! @@ -1219,6 +1844,10 @@ type Draft implements Node { """The publication the draft belongs to.""" publication: Publication publishAs: User + """ + Returns the published post when the draft is published, returns null otherwise + """ + publishedPost: Post readTimeInMinutes: Int! """The date the draft is scheduled to be published.""" scheduledDate: DateTime @@ -1403,6 +2032,25 @@ type EmailNotificationPreferences { weeklyNewsletterEmails: Boolean! } +"""The input for enabling AI search for a documentation project""" +input EnableDocumentationProjectAISearchInput { + """The ID of the documentation project""" + projectId: ID! +} + +"""The response to enabling AI search for a documentation project""" +type EnableDocumentationProjectAISearchPayload { + project: DocumentationProject +} + +input EnableDocumentationProjectHeadlessCmsInput { + projectId: ID! +} + +type EnableDocumentationProjectHeadlessCmsPayload { + project: DocumentationProject +} + """Invitations that failed to be sent to the user""" type FailedInvite { """The email of the user that failed to invite.""" @@ -1479,6 +2127,44 @@ type GPTBotCrawlingFeature implements Feature { isEnabled: Boolean! } +""" +The input for the exchange of token to a JWT to preview token for a documentation project. +""" +input GenerateDocumentationProjectPreviewAuthorizationTokenInput { + token: String! +} + +""" +The payload for the exchange of token to a JWT to preview token for a documentation project. +""" +type GenerateDocumentationProjectPreviewAuthorizationTokenPayload { + """The JWT that can be used to preview the documentation project.""" + authorizationToken: String + """ + The project for which the JWT is generated. With this request, authenticated fields are not accessible. + """ + project: DocumentationProject +} + +""" +The input for the generation of a exchangeable preview token for a documentation project. +""" +input GenerateDocumentationProjectPreviewTokenInput { + projectId: ID! +} + +""" +The payload for the generation of a exchangeable preview token for a documentation project. +""" +type GenerateDocumentationProjectPreviewTokenPayload { + """The project for which the token is generated.""" + project: DocumentationProject + """ + The token that can be exchanged for a JWT to preview the documentation project. + """ + token: String +} + """Views implementation that will be returned if grouping by browser.""" type GroupedByBrowserViews implements Node & Views { """The browser that these views belong to.""" @@ -1638,7 +2324,7 @@ type GroupedByDocsOperatingSystemVisitors implements DocsVisitors & Node { type GroupedByDocsPageViews implements DocsViews & Node { id: ID! """The page that these views belong to.""" - page: DocumentationPage! + page: DocumentationPage """The aggregated views.""" total: Int! } @@ -1649,7 +2335,7 @@ Visitors implementation that will be returned if grouping by docs page. type GroupedByDocsPageVisitors implements DocsVisitors & Node { id: ID! """The page that these views belong to.""" - page: DocumentationPage! + page: DocumentationPage """The aggregated number of visitors.""" total: Int! } @@ -1866,6 +2552,7 @@ interface IGuide { id: ID! lastModified: DateTime! name: String! + seo: SEO slug: String! versionId: String } @@ -1990,6 +2677,20 @@ interface IUser { username: String! } +input InviteDocumentationProjectAdminInput { + invites: [InviteDocumentationProjectAdminInputEmail!]! + projectId: ID! +} + +input InviteDocumentationProjectAdminInputEmail { + userId: ID! +} + +type InviteDocumentationProjectAdminPayload { + invitedMembers: [DocsProjectInvitedMembers!] + project: DocumentationProject +} + """Input to invite users to a publication.""" input InviteUsersToPublicationInput { """The publication ID to invite users to.""" @@ -2008,6 +2709,11 @@ type InviteUsersToPublicationPayload { successfulInviteCount: Int! } +""" +The `JSONObject` scalar type represents JSON objects as specified by [ECMA-404](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf). +""" +scalar JSONObject + input LikeCommentInput { commentId: ID! likesCount: Int = 1 @@ -2036,6 +2742,19 @@ type LikeReplyPayload { reply: Reply } +input MapDocumentationProjectCustomDomainWwwRedirectInput { + projectId: ID! +} + +type MapDocumentationProjectCustomDomainWwwRedirectPayload { + """ + Additional DNS entries required to verify the www redirect domain. + There are cases where additional records in the DNS config are required to successfully verify the domain. + """ + dnsVerificationEntries: [DnsVerificationEntry!]! + project: DocumentationProject +} + """Contains information about meta tags. Used for SEO purpose.""" input MetaTagsInput { """The description of the post used in og:description for SEO.""" @@ -2046,7 +2765,21 @@ input MetaTagsInput { title: String } +input MoveDocumentationSidebarItemInput { + guideSlug: String! + itemId: ID! + parentId: ID + position: Int + projectId: ID! +} + +type MoveDocumentationSidebarItemPayload { + guide: DocumentationGuide +} + type Mutation { + """Mutation to accept an invite to a documentation project""" + acceptInviteToDocumentationProject(input: AcceptInviteToDocumentationProjectInput!): AcceptInviteToDocumentationProjectPayload! """ Accepts an invitation to join a publication. The user is added as a member of the publication. """ @@ -2057,6 +2790,9 @@ type Mutation { acceptRoleBasedInvite(input: AcceptRoleBasedInviteInput!): AcceptRoleBasedInvitePayload! """Adds a comment to a post.""" addComment(input: AddCommentInput!): AddCommentPayload! + addDocumentationProjectCustomDomain(input: AddDocumentationProjectCustomDomainInput!): AddDocumentationProjectCustomDomainPayload! + """Mutation to add a Member to a Documentation Project""" + addDocumentationProjectMember(input: AddDocumentationProjectMemberInput!): AddDocumentationProjectMemberPayload! """Adds a post to a series.""" addPostToSeries(input: AddPostToSeriesInput!): AddPostToSeriesPayload! """Adds a reply to a comment.""" @@ -2069,6 +2805,12 @@ type Mutation { PRIVATE members are not visible on the members page while PUBLIC members are visible. """ changePublicationMemberVisibility(input: ChangePublicationMemberVisibilityInput!): ChangePublicationMemberVisibilityPayload! + createDocumentationApiReference(input: CreateDocumentationApiReferenceInput!): CreateDocumentationApiReferencePayload! + createDocumentationGuide(input: CreateDocumentationGuideInput!): CreateDocumentationGuidePayload! + createDocumentationLink(input: CreateDocumentationLinkInput!): CreateDocumentationLinkPayload! + createDocumentationPageDraft(input: CreateDocumentationPageDraftInput!): CreateDocumentationPageDraftPayload! + createDocumentationProject(input: CreateDocumentationProjectInput!): CreateDocumentationProjectPayload! + createDocumentationSection(input: CreateDocumentationSectionInput!): CreateDocumentationSectionPayload! """Creates a new draft for a post.""" createDraft( """Information about the draft to be created.""" @@ -2085,6 +2827,24 @@ type Mutation { """Deletes a role based invite.""" deleteRoleBasedInvite(input: DeleteRoleBasedInviteInput!): DeleteRoleBasedInvitePayload! deleteWebhook(id: ID!): DeleteWebhookPayload! + """Mutation to disable AI search for a documentation project""" + disableDocumentationProjectAISearch(input: DisableDocumentationProjectAISearchInput!): DisableDocumentationProjectAISearchPayload! + disableDocumentationProjectHeadlessCms(input: DisableDocumentationProjectHeadlessCmsInput!): DisableDocumentationProjectHeadlessCmsPayload! + """Mutation to enable AI search for a documentation project""" + enableDocumentationProjectAISearch(input: EnableDocumentationProjectAISearchInput!): EnableDocumentationProjectAISearchPayload! + enableDocumentationProjectHeadlessCms(input: EnableDocumentationProjectHeadlessCmsInput!): EnableDocumentationProjectHeadlessCmsPayload! + """ + Will generate a authorization JWT to preview a docs project. + A token is required to generate the JWT. + """ + generateDocumentationProjectPreviewAuthorizationToken(input: GenerateDocumentationProjectPreviewAuthorizationTokenInput!): GenerateDocumentationProjectPreviewAuthorizationTokenPayload! + """ + Will generate a token that can be exchanged as a JWT to preview a docs project. + Only the owner or editors of the project can generate the token. + """ + generateDocumentationProjectPreviewToken(input: GenerateDocumentationProjectPreviewTokenInput!): GenerateDocumentationProjectPreviewTokenPayload! + """Mutation to invite an user to a documentation project""" + inviteDocumentationProjectAdmin(input: InviteDocumentationProjectAdminInput!): InviteDocumentationProjectAdminPayload! """Invites users to a publication. Either by username or email.""" inviteUsersToPublication(input: InviteUsersToPublicationInput!): InviteUsersToPublicationPayload! """Likes a comment.""" @@ -2093,6 +2853,11 @@ type Mutation { likePost(input: LikePostInput!): LikePostPayload! """Likes a reply.""" likeReply(input: LikeReplyInput!): LikeReplyPayload! + mapDocumentationProjectCustomDomainWwwRedirect(input: MapDocumentationProjectCustomDomainWwwRedirectInput!): MapDocumentationProjectCustomDomainWwwRedirectPayload! + moveDocumentationSidebarItem(input: MoveDocumentationSidebarItemInput!): MoveDocumentationSidebarItemPayload! + publishDocumentationApiReference(input: PublishDocumentationApiReferenceInput!): PublishDocumentationApiReferencePayload! + publishDocumentationGuide(input: PublishDocumentationGuideInput!): PublishDocumentationGuidePayload! + publishDocumentationPageDraft(input: PublishDocumentationPageDraftInput!): PublishDocumentationPageDraftPayload! """Publishes an existing draft as a post.""" publishDraft( """Information about the draft to be published.""" @@ -2110,6 +2875,11 @@ type Mutation { reinviteUserToPublication(input: ReinviteUserToPublicationInput!): ReinviteUserToPublicationPayload! """Removes a comment from a post.""" removeComment(input: RemoveCommentInput!): RemoveCommentPayload! + removeDocumentationGuide(input: RemoveDocumentationGuideInput!): RemoveDocumentationGuidePayload! + removeDocumentationProjectCustomDomain(input: RemoveDocumentationProjectCustomDomainInput!): RemoveDocumentationProjectCustomDomainPayload! + """Mutation to remove a Member from a Documentation Project""" + removeDocumentationProjectMember(input: RemoveDocumentationProjectMemberInput!): RemoveDocumentationProjectMemberPayload! + removeDocumentationSidebarItem(input: RemoveDocumentationSidebarItemInput!): RemoveDocumentationSidebarItemPayload! """Removes a post.""" removePost(input: RemovePostInput!): RemovePostPayload! """Removes a user from a teams publication.""" @@ -2120,18 +2890,27 @@ type Mutation { removeReply(input: RemoveReplyInput!): RemoveReplyPayload! """Removes a series.""" removeSeries(input: RemoveSeriesInput!): RemoveSeriesPayload! + renameDocumentationGuide(input: RenameDocumentationGuideItemInput!): RenameDocumentationGuideItemPayload! + renameDocumentationSidebarItem(input: RenameDocumentationSidebarItemInput!): RenameDocumentationSidebarItemPayload! """Reschedule a draft.""" rescheduleDraft(input: RescheduleDraftInput!): RescheduleDraftPayload! resendWebhookRequest(input: ResendWebhookRequestInput!): ResendWebhookRequestPayload! """Restores a deleted post.""" restorePost(input: RestorePostInput!): RestorePostPayload! + retryDocumentationProjectCustomDomainVerification(input: RetryDocumentationProjectCustomDomainVerificationInput!): RetryDocumentationProjectCustomDomainVerificationPayload! + """Mutation to revoke documentation project invite""" + revokeInviteToDocumentationProject(input: RevokeInviteToDocumentationProjectInput!): RevokeInviteToDocumentationProjectPayload! """Revokes a user invitation that was sent to join a publication.""" revokeUserInviteToPublication(input: RevokeUserInviteToPublicationInput!): RevokeUserInviteToPublicationPayload! + saveDocumentationPageDraftContent(input: SaveDocumentationPageDraftContentInput!): SaveDocumentationPageDraftContentPayload! scheduleDraft( """Information about the draft to be published.""" input: ScheduleDraftInput! ): ScheduleDraftPayload! + setDocumentationSidebarItemVisibility(input: SetDocumentationSidebarItemVisibilityInput!): SetDocumentationSidebarItemVisibilityPayload! subscribeToNewsletter(input: SubscribeToNewsletterInput!): SubscribeToNewsletterPayload! + """Mutation to sync documentation API reference definition""" + syncDocumentationProjectApiDefinition(input: SyncDocumentationProjectApiDefinitionInput!): SyncDocumentationProjectApiDefinitionPayload! """ Toggle allowContributorEdits flag to allow or restrict external contributors to further edit published articles. """ @@ -2155,6 +2934,15 @@ type Mutation { unsubscribeFromNewsletter(input: UnsubscribeFromNewsletterInput!): UnsubscribeFromNewsletterPayload! """Updates a comment on a post.""" updateComment(input: UpdateCommentInput!): UpdateCommentPayload! + updateDocumentationAppearance(input: UpdateDocumentationAppearanceInput!): UpdateDocumentationAppearancePayload! + updateDocumentationGeneralSettings(input: UpdateDocumentationGeneralSettingsInput!): UpdateDocumentationGeneralSettingsPayload! + updateDocumentationGuide(input: UpdateDocumentationGuideInput!): UpdateDocumentationGuidePayload! + updateDocumentationIntegrations(input: UpdateDocumentationIntegrationsInput!): UpdateDocumentationIntegrationsPayload! + updateDocumentationLink(input: UpdateDocumentationLinkInput!): UpdateDocumentationLinkPayload! + updateDocumentationPageSettings(input: UpdateDocumentationPageSettingsInput!): UpdateDocumentationPageSettingsPayload! + updateDocumentationProjectSubdomain(input: UpdateDocumentationProjectSubdomainInput!): UpdateDocumentationProjectSubdomainPayload! + """Mutation to update a section in a guide""" + updateDocumentationSection(input: UpdateDocumentationSectionInput!): UpdateDocumentationSectionPayload! updatePost(input: UpdatePostInput!): UpdatePostPayload! updateRedirectionRule(input: UpdateRedirectionRuleInput!): UpdateRedirectionRulePayload! """Updates a reply""" @@ -2164,6 +2952,7 @@ type Mutation { """Updates a series.""" updateSeries(input: UpdateSeriesInput!): UpdateSeriesPayload! updateWebhook(input: UpdateWebhookInput!): UpdateWebhookPayload! + verifyDocumentationProjectCustomDomain(input: VerifyDocumentationProjectCustomDomainInput!): VerifyDocumentationProjectCustomDomainPayload! } """ @@ -2384,6 +3173,15 @@ interface PageConnection { pageInfo: OffsetPageInfo! } +""" +An edge that contains a node and is used in page based pagination. +This is a common interface for all edges in page based pagination. +""" +interface PageEdge { + """A node in the connection.""" + node: Node! +} + """Contains information to help in pagination.""" type PageInfo { """ @@ -2835,11 +3633,214 @@ type ProjectViewEdge implements Edge { node: DocsViews! } +type ProjectViewsConnection implements Connection { + edges: [ProjectViewEdge!]! + pageInfo: PageInfo! +} + +""" +Filter for project views. + +Individual filters are combined with an AND condition whereas multiple values for the same filter are combined with an OR condition. + +Example: `documentationGuideIds: ["1", "2"], operatingSystems: ["Mac OS"]` will return views for posts with ID 1 or 2 AND operating system Mac OS. +""" +input ProjectViewsFilter { + """ + Filter by one or multiple api reference guide IDs. + + If multiple IDs are provided, the filter will be applied as an OR condition. + """ + apiReferenceGuideIds: [ID!] + """ + Filter by one or multiple browsers. + + If multiple browsers are provided, the filter will be applied as an OR condition. + """ + browsers: [String!] + """ + Filter by one or multiple countries. + + If multiple countries are provided, the filter will be applied as an OR condition. + """ + countries: [String!] + """ + Filter by one or multiple device types. + + If multiple device types are provided, the filter will be applied as an OR condition. + """ + deviceTypes: [DeviceType!] + """ + Filter by one or multiple documentation guide IDs. + + If multiple IDs are provided, the filter will be applied as an OR condition. + """ + documentationGuideIds: [ID!] + """ + Filter by one or multiple operating systems. + + If multiple operating systems are provided, the filter will be applied as an OR condition. + """ + operatingSystems: [String!] + """ + Filter by one or multiple page IDs. + + If multiple IDs are provided, the filter will be applied as an OR condition. + """ + pageIds: [ID!] + """ + Filter by one or multiple paths. + + If multiple paths are provided, the filter will be applied as an OR condition. + """ + paths: [String!] + """ + Filter by one or multiple referrer hosts. + + If multiple referrer hosts are provided, the filter will be applied as an OR condition. + """ + referrerHosts: [String!] + """Filter based on time range.""" + time: TimeFilter +} + +input ProjectViewsGroupBy { + """ + Group by one analytics dimensions. + + Can not be used together with `granularity`. + """ + dimension: DocsAnalyticsDimension + """ + Group by time. Without this, all views over time will be aggregated. + + Can not be used together with `dimension`. + """ + granularity: TimeGranularity +} + +input ProjectViewsOptions { + """ + The timezone that is used for grouping the views by time. + E.g. if you group by day, the timezone will be used to determine the start of the day as indicated by `to` and `from`. + + It has no effect outside of time grouping. + + Default is `UTC`. + """ + groupingTimezone: TimeZone +} + +input ProjectViewsSortBy { + """ + Sort the views by the total number of views. Can only be used when grouped by `dimension`. + """ + viewCount: SortOrder! +} + +type ProjectVisitorsConnection implements Connection { + edges: [ProjectVisitorsEdge!]! + pageInfo: PageInfo! +} + type ProjectVisitorsEdge implements Edge { cursor: String! node: DocsVisitors! } +""" +Filter for project visitors. + +Individual filters are combined with an AND condition whereas multiple values for the same filter are combined with an OR condition. + +Example: `documentationGuideIds: ["1", "2"], operatingSystems: ["Mac OS"]` will return visitors for posts with ID 1 or 2 AND operating system Mac OS. +""" +input ProjectVisitorsFilter { + """ + Filter by one or multiple api reference guide IDs. + + If multiple IDs are provided, the filter will be applied as an OR condition. + """ + apiReferenceGuideIds: [ID!] + """ + Filter by one or multiple browsers. + + If multiple browsers are provided, the filter will be applied as an OR condition. + """ + browsers: [String!] + """ + Filter by one or multiple countries. + + If multiple countries are provided, the filter will be applied as an OR condition. + """ + countries: [CountryCodeAlpha2!] + """ + Filter by one or multiple device types. + + If multiple device types are provided, the filter will be applied as an OR condition. + """ + deviceTypes: [DeviceType!] + """ + Filter by one or multiple documentation guide IDs. + + If multiple IDs are provided, the filter will be applied as an OR condition. + """ + documentationGuideIds: [ID!] + """ + Filter by one or multiple operating systems. + + If multiple operating systems are provided, the filter will be applied as an OR condition. + """ + operatingSystems: [String!] + """ + Filter by one or multiple page IDs. + + If multiple IDs are provided, the filter will be applied as an OR condition. + """ + pageIds: [ID!] + """ + Filter by one or multiple paths. + + If multiple paths are provided, the filter will be applied as an OR condition. + """ + paths: [String!] + """ + Filter by one or multiple referrer hosts. + + If multiple referrer hosts are provided, the filter will be applied as an OR condition. + """ + referrerHosts: [String!] + """Filter based on time range.""" + time: TimeFilter +} + +input ProjectVisitorsGroupBy { + """ + Group by one analytics dimensions. + + Can not be used together with `granularity`. + """ + dimension: DocsAnalyticsDimension + """ + Group by time. Without this, all views over time will be aggregated. + + Can not be used together with `dimension`. + """ + granularity: TimeGranularity +} + +input ProjectVisitorsOptions { + """ + The timezone that is used for grouping the views by time. + E.g. if you group by day, the timezone will be used to determine the start of the day as indicated by `to` and `from`. + + It has no effect outside of time grouping. + + Default is `UTC`. + """ + groupingTimezone: TimeZone +} + """ Contains basic information about the publication. A publication is a blog that can be created for a user or a team. @@ -3340,6 +4341,35 @@ type PublicationVisitorsEdge implements Edge { node: Visitors! } +input PublishDocumentationApiReferenceInput { + guideSlug: String! + projectId: ID! +} + +type PublishDocumentationApiReferencePayload { + guide: DocumentationApiReference +} + +input PublishDocumentationGuideInput { + guideSlug: String! + projectId: ID! +} + +type PublishDocumentationGuidePayload { + guide: DocumentationGuide +} + +input PublishDocumentationPageDraftInput { + guideSlug: String! + pageId: ID! + projectId: ID! +} + +type PublishDocumentationPageDraftPayload { + guide: DocumentationGuide + page: DocumentationPage +} + input PublishDraftInput { """The id of the draft that should be published""" draftId: ObjectId! @@ -3438,6 +4468,9 @@ input PublishPostTagInput { } type Query { + checkCustomDomainAvailability(input: CheckCustomDomainAvailabilityInput!): CheckCustomDomainAvailabilityResult! + checkSubdomainAvailability(subdomain: String!): CheckSubdomainAvailabilityResult! + documentationProject(host: String, id: ID): DocumentationProject """ Returns a draft by ID. Draft is a post that is not published yet. @@ -3579,6 +4612,13 @@ type ReinviteUserToPublicationPayload { success: Boolean! } +input RelativeTimeRange { + """The number of time periods to go back in time.""" + n: Int! + """The type of time range to be used.""" + relative: TimePeriod! +} + input RemoveCommentInput { id: ID! } @@ -3587,6 +4627,44 @@ type RemoveCommentPayload { comment: Comment } +input RemoveDocumentationGuideInput { + guideSlug: String! + projectId: ID! +} + +type RemoveDocumentationGuidePayload { + guide: DocumentationGuideItem +} + +input RemoveDocumentationProjectCustomDomainInput { + projectId: ID! +} + +type RemoveDocumentationProjectCustomDomainPayload { + project: DocumentationProject +} + +"""The input for the removal of a member from a documentation""" +input RemoveDocumentationProjectMemberInput { + projectId: ID! + userId: ID! +} + +type RemoveDocumentationProjectMemberPayload { + project: DocumentationProject + removedMember: DocumentationProjectMember +} + +input RemoveDocumentationSidebarItemInput { + guideSlug: String! + itemId: ID! + projectId: ID! +} + +type RemoveDocumentationSidebarItemPayload { + guide: DocumentationGuide +} + input RemovePostInput { """The ID of the post to remove.""" id: ID! @@ -3648,6 +4726,28 @@ type RemoveSeriesPayload { series: Series! } +input RenameDocumentationGuideItemInput { + guideSlug: String! + name: String! + projectId: ID! +} + +type RenameDocumentationGuideItemPayload { + guide: DocumentationGuideItem +} + +input RenameDocumentationSidebarItemInput { + guideSlug: String! + itemId: ID! + label: String! + projectId: ID! +} + +type RenameDocumentationSidebarItemPayload { + guide: DocumentationGuide + item: DocumentationSidebarItem +} + """ Contains basic information about the reply. A reply is a response to a comment. @@ -3705,6 +4805,30 @@ type RestorePostPayload { post: Post } +input RetryDocumentationProjectCustomDomainVerificationInput { + projectId: ID! +} + +type RetryDocumentationProjectCustomDomainVerificationPayload { + project: DocumentationProject +} + +"""Input to revoke a user invitation to join a documentation project.""" +input RevokeInviteToDocumentationProjectInput { + """The ID of the invite to revoke.""" + inviteId: ID! + """The ID of the documentation project.""" + projectId: ID! +} + +"""Response to revoking an invitation to join a documentation project.""" +type RevokeInviteToDocumentationProjectPayload { + """The documentation project that was associated with the invite.""" + project: DocumentationProject + """Signifies the success of the mutation.""" + success: Boolean! +} + """Input to revoke a user invitation to a publication.""" input RevokeUserInviteToPublicationInput { """The invite ID to revoke.""" @@ -3758,6 +4882,20 @@ type SEO { title: String } +input SaveDocumentationPageDraftContentInput { + content: String + description: String + guideId: ID + guideSlug: String + pageId: ID! + projectId: ID! + title: String +} + +type SaveDocumentationPageDraftContentPayload { + page: DocumentationPage +} + input ScheduleDraftInput { """The Author ID of the draft that should be published""" authorId: ID! @@ -3808,6 +4946,7 @@ enum Scope { docs_admin_or_owner docs_owner import_subscribers_to_publication + invited_docs_admin invited_team_user move_draft publication_admin @@ -3948,6 +5087,18 @@ type SeriesPostConnection implements Connection { totalDocuments: Int! } +input SetDocumentationSidebarItemVisibilityInput { + guideSlug: String! + itemId: ID! + projectId: ID! + visibility: DocumentationSidebarItemVisibility! +} + +type SetDocumentationSidebarItemVisibilityPayload { + guide: DocumentationGuide + item: DocumentationSidebarItem +} + """Available social media links.""" type SocialMediaLinks { """The user's Facebook profile.""" @@ -4047,6 +5198,22 @@ type SubscribeToNewsletterPayload { status: NewsletterSubscribeStatus } +"""The input for syncing API reference definitions""" +input SyncDocumentationProjectApiDefinitionInput { + """The ID of the docs API reference""" + apiReferenceId: ID! + """The ID of the documentation project""" + projectId: ID! + """The ID of the reference version""" + versionId: ID! +} + +"""The response to syncing documentation project API Reference definition""" +type SyncDocumentationProjectApiDefinitionPayload { + """Signifies if the mutation was successful.""" + success: Boolean! +} + type TableOfContentsFeature implements Feature { """ Whether or not the user has chosen to show a table of contents on the post. @@ -4142,6 +5309,42 @@ type TextSelectionSharerFeature implements Feature { isEnabled: Boolean! } +input TimeFilter { + """ + Narrow the time range to a specific period. + + Can't be used with `relative`. + """ + absolute: AbsoluteTimeRange + """ + Narrow the time range to a specific period. + + Can't be used with `absolute`. + """ + relative: RelativeTimeRange +} + +enum TimeGranularity { + DAILY + HOURLY + MONTHLY + WEEKLY + YEARLY +} + +enum TimePeriod { + LAST_N_DAYS + LAST_N_HOURS + LAST_N_MONTHS + LAST_N_WEEKS + LAST_N_YEARS +} + +""" +A field whose value exists in the standard IANA Time Zone Database: https://www.iana.org/time-zones +""" +scalar TimeZone + input ToggleAllowContributorEditsInput { publicationId: ID! } @@ -4240,6 +5443,100 @@ type UpdateCommentPayload { comment: Comment } +input UpdateDocumentationAppearanceInput { + appearance: DocumentationProjectAppearanceInput! + projectId: ID! +} + +type UpdateDocumentationAppearancePayload { + project: DocumentationProject +} + +input UpdateDocumentationGeneralSettingsInput { + description: String + links: DocumentationProjectLinksInput + name: String + projectId: ID! + settings: DocumentationProjectSettingsInput +} + +type UpdateDocumentationGeneralSettingsPayload { + project: DocumentationProject +} + +input UpdateDocumentationGuideInput { + guideId: ID! + metaTags: MetaTagsInput + name: String + projectId: ID! + slug: String +} + +type UpdateDocumentationGuidePayload { + guide: DocumentationGuide +} + +input UpdateDocumentationIntegrationsInput { + integrations: DocumentationProjectIntegrationsInput! + projectId: ID! +} + +type UpdateDocumentationIntegrationsPayload { + project: DocumentationProject +} + +input UpdateDocumentationLinkInput { + guideSlug: String! + label: String! + linkId: ID! + projectId: ID! + url: String +} + +type UpdateDocumentationLinkPayload { + guide: DocumentationGuide + link: DocumentationLink +} + +input UpdateDocumentationPageSettingsInput { + guideSlug: String! + label: String + metaTags: MetaTagsInput + pageId: ID! + projectId: ID! + slug: String + visibility: DocumentationSidebarItemVisibility +} + +type UpdateDocumentationPageSettingsPayload { + guide: DocumentationGuide + page: DocumentationPage + sidebarItem: DocumentationSidebarItemPage +} + +input UpdateDocumentationProjectSubdomainInput { + projectId: ID! + subdomain: String! +} + +type UpdateDocumentationProjectSubdomainPayload { + project: DocumentationProject +} + +input UpdateDocumentationSectionInput { + guideSlug: String! + label: String + projectId: ID! + sectionId: ID! + slug: String + visibility: DocumentationSidebarItemVisibility +} + +type UpdateDocumentationSectionPayload { + guide: DocumentationGuide + section: DocumentationSection +} + input UpdatePostInput { """ Update co-authors of the post. @@ -4550,6 +5847,11 @@ input UserInviteInput { username: String } +enum UserInviteStatus { + INVITED + NOT_INVITED +} + """ Connection for posts written by a single user. Contains a list of edges containing nodes. Each node is a post. @@ -4722,6 +6024,23 @@ enum ValidationMethod { ID } +input VerifyDocumentationProjectCustomDomainInput { + projectId: ID! +} + +type VerifyDocumentationProjectCustomDomainPayload { + """ + Additional DNS entries required to verify the domain. + There are cases where additional records in the DNS config are required to successfully verify the domain. + """ + dnsVerificationEntries: [DnsVerificationEntry!]! + """ + The documentation project where the custom domain should be verified. + Note, that the verification can also fail. + """ + project: DocumentationProject +} + """ Contains the flag indicating if the view count feature is enabled or not. User can enable or disable the view count feature from the publication settings.