Skip to content
This repository has been archived by the owner on Oct 30, 2024. It is now read-only.

Clarify enterprise and premium #777

Merged
merged 15 commits into from
Feb 16, 2024
Merged
2 changes: 2 additions & 0 deletions .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,13 @@ module.exports = {
DirectiveCompositionRules: 'readonly',
Disclaimer: 'readonly',
EnterpriseFeature: 'readonly',
PremiumFeature: 'readonly',
Caution: 'readonly',
Note: 'readonly',
Tip: 'readonly',
ExperimentalFeature: 'readonly',
GraphOSEnterpriseRequired: 'readonly',
GraphOSRouterFeatures: 'readonly',
InconsistentCompositionRules: 'readonly',
ObtainGraphApiKey: 'readonly',
ObtainPersonalApiKey: 'readonly',
Expand Down
23 changes: 16 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -615,26 +615,35 @@ This completely replaces the text within the component.

##### Plan components

Currently, the only plan component is `<EnterpriseFeature />`.
Like the release stage components, this component should be put at the top of the relevant page or section.
If a feature has both a release stage component and the `<EnterpriseFeature />`, the `<EnterpriseFeature />` should come first.
There are two plan components: `<EnterpriseFeature />` and `<PremiumFeature />`.
The `<EnterpriseFeature />` component denotes a feature is only available with an Enterprise plan.
The `<PremiumFeature />` component denotes a feature is available with either the Dedicated or Enterprise plan.

Custom text for `<EnterpriseFeature />` can be provided by nesting Markdown within the component.
Like the release stage components, these components should be put at the top of the relevant page or section.
If a feature has both a release stage component and a plan component put the plan component first.

Custom text for plan components can be provided by nesting Markdown within the component.

By default, without any children, `<EnterpriseFeature />` renders this text:

> **This feature is only available with a [**GraphOS Enterprise plan\*\*](http://apollographql.com/graphos/enterprise/). If your organization doesn't currently have an Enterprise plan, you can test this functionality by signing up for a free [Enterprise trial](https://studio.apollographql.com/signup?type=enterprise-trial&referrer=docs-content).
> **This feature is only available with a [**GraphOS Enterprise plan\*\*](http://apollographql.com/graphos/enterprise/). You can test it out by signing up for a free [Enterprise trial](https://studio.apollographql.com/signup?type=enterprise-trial&referrer=docs-content).

If you include custom text, it completely replaces this text. Please make sure to include links to the Enterprise plan docs and Enterprise trial accordingly.
If you include custom text, it completely replaces this text. Please make sure to include links to the pricing page and Enterprise trial accordingly.

```mdx
<EnterpriseFeature>

This is some custom markdown text that still includes a link to the [GraphOS Enterprise plan\*\*](http://apollographql.com/graphos/enterprise/) and [Enterprise trial](https://studio.apollographql.com/signup?type=enterprise-trial&referrer=docs-content) docs.
This is some custom markdown text that still includes a link to the [pricing page](http://apollographql.com/pricing/) and [Enterprise trial](https://studio.apollographql.com/signup?type=enterprise-trial&referrer=docs-content) docs.

</EnterpriseFeature>
```

By default, without any children, `<PremiumFeature />` renders this text:

> **This feature is only available with a GraphOS Dedicated or Enterprise plan.** To compare GraphOS feature support across all plan types, see the [pricing page](http://apollographql.com/pricing/).

Like `<EnterpriseFeature>`, you can provide custom text by nesting Markdown.

##### Admonitions

Admonitions are designed to catch readers' attention and break the flow of the text. They're helpful to make a piece of information stand out, but should be used wisely and sparingly. Use them only for information that shouldn't be missed.
Expand Down
5 changes: 2 additions & 3 deletions src/components/EnterpriseFeature.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,13 +32,12 @@ export const EnterpriseFeature = ({children}) => {
<Text pl="1">
<strong>
This feature is only available with a{' '}
<Link color={'tertiary'} href="https://www.apollographql.com/docs/graphos/enterprise/">
<Link color={'tertiary'} href="https://www.apollographql.com/pricing/">
Meschreiber marked this conversation as resolved.
Show resolved Hide resolved
GraphOS Enterprise plan
</Link>
.{' '}
</strong>
If your organization doesn&apos;t have an Enterprise plan, you can
test this functionality by signing up for a free{' '}
You can test it out by signing up for a free{' '}
<Link
color={'tertiary'}
href="https://studio.apollographql.com/signup?type=enterprise-trial&referrer=docs-content"
Expand Down
2 changes: 2 additions & 0 deletions src/components/Page.js
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ import {
MultiCodeBlockContext
} from '@apollo/chakra-helpers';
import {EnterpriseFeature} from './EnterpriseFeature';
import { PremiumFeature } from './PremiumFeature';
import {ExperimentalFeature} from './ExperimentalFeature';
import {Link as GatsbyLink} from 'gatsby';
import {Global} from '@emotion/react';
Expand Down Expand Up @@ -211,6 +212,7 @@ const mdxComponents = {
MinVersionTag,
EnterpriseFeature,
ExperimentalFeature,
PremiumFeature,
PreviewFeature,
ApolloLogo,
ApolloMark,
Expand Down
51 changes: 51 additions & 0 deletions src/components/PremiumFeature.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
import PropTypes from 'prop-types';
import React from 'react';
import {Box, Center, Flex, Link, Text, chakra} from '@chakra-ui/react';
import {EnterpriseIcon} from './Icons';

export const PremiumFeature = ({children}) => {
return (
<Box
pl="2"
py="1"
borderLeftWidth="2px"
borderColor="primary"
fontSize="lg"
sx={{
'>': {
':not(:last-child)': {
mb: 2
}
}
}}
>
<Flex as="span">
<chakra.span pl="10px" pr="10px">
<Center h="100%">
<EnterpriseIcon />
</Center>
</chakra.span>

{children ? (
<Text pl="1">{children}</Text>
) : (
<Text pl="1">
<strong>This feature is only available with a GraphOS Dedicated or Enterprise plan.</strong>
<br/>To compare GraphOS feature support across all plan types, see the{' '}
<Link
color={'tertiary'}
href="https://www.apollographql.com/pricing/"
>
pricing page
</Link>
.
</Text>
)}
</Flex>
</Box>
);
};

PremiumFeature.propTypes = {
children: PropTypes.node
};
50 changes: 17 additions & 33 deletions src/content/graphos/enterprise/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,8 @@

See the left navigation for a list of all Enterprise-specific articles from across the GraphOS documentation.

<Tip>

To compare GraphOS feature support across all plan types, see the [pricing page](https://www.apollographql.com/pricing/).

</Tip>

## Enterprise trial

You can sign up for a GraphOS Enterprise trial to test out most Enterprise features for the duration of the trial period.
Expand Down Expand Up @@ -60,23 +56,11 @@

</Tip>

### Apollo Router features
### Premium GraphOS Router features

[The Apollo Router](/router/) supports a collection of features specific to GraphOS Enterprise organizations. These include:

- **Real-time updates** via [GraphQL subscriptions](/router/executing-operations/subscription-support/)
- **Authentication of inbound requests** via [JSON Web Token (JWT)](/router/configuration/authn-jwt/)
- [**Authorization** of specific fields and types](/router/configuration/authorization) through the [`@requiresScopes`](/router/configuration/authorization#requiresscopes), [`@authenticated`](/router/configuration/authorization#authenticated), and [`@policy`](/router/configuration/authorization#policy) directives
- Incremental migration between subgraphs through [the progressive `@override` directive](/federation/entities-advanced/#incremental-migration-with-progressive-override).
- Redis-backed [**distributed caching** of query plans and persisted queries](/router/configuration/distributed-caching/)
- **Custom request handling** in any language via [external coprocessing](/router/customizations/coprocessor/)
- **Mitigation of potentially malicious requests** via [operation limits](/router/configuration/operation-limits) and [safelisting](../operations/persisted-queries/)

<Tip>
<GraphOSRouterFeatures />

[Learn more about Enterprise features in the Apollo Router.](/router/enterprise-features/)

</Tip>
[Learn more about premium GraphOS features.](/router/enterprise-features/)

## Schema pipeline

Expand All @@ -93,15 +77,9 @@

This increased coordination improves design decisions and accountability, streamlining development cycles.

<Tip>

[Learn more about schema proposals.](../delivery/schema-proposals/)

</Tip>

### Schema filtering with contracts

GraphOS [**Contracts**](../delivery/contracts/) enable you to filter your supergraph schema's types and fields according to different inclusion and exclusion rules you define:
GraphOS [Contracts](../delivery/contracts/) enable you to filter your supergraph schema's types and fields according to different inclusion and exclusion rules you define:

```mermaid
graph LR;
Expand Down Expand Up @@ -137,12 +115,6 @@

Contracts are especially useful if you want to expose a subset of your supergraph as a public API.

<Tip>

[Learn more about GraphOS contracts.](../delivery/contracts/)

</Tip>

## Organization management

You can integrate GraphOS with your organization's identity provider (IdP) to enable single sign-on (SSO) for [GraphOS Studio](https://studio.apollographql.com/?referrer=docs-content).
Expand All @@ -153,6 +125,12 @@
- [Azure AD](../org/sso/azure-ad-integration-guide/)
- [Generic SAML](../org/sso/saml-integration-guide/)

<Note>

SSO is also available on the [Dedicated plan](https://www.apollographql.com/pricing/).

Check warning on line 130 in src/content/graphos/enterprise/index.mdx

View workflow job for this annotation

GitHub Actions / runner / vale

[vale] reported by reviewdog 🐶 [Google.Acronyms] Spell out 'SSO', if it's unfamiliar to the audience. Raw Output: {"message": "[Google.Acronyms] Spell out 'SSO', if it's unfamiliar to the audience.", "location": {"path": "src/content/graphos/enterprise/index.mdx", "range": {"start": {"line": 130, "column": 1}}}, "severity": "INFO"}

</Note>

Additionally, Enterprise organizations can export an [audit log](../org/audit-log/) of material actions taken by organization members.

## Metrics and reporting
Expand All @@ -161,4 +139,10 @@
The following features are only available to GraphOS Enterprise organizations:

- The [Apollo Datadog integration](../metrics/datadog-integration) lets you forward performance metrics to your Datadog account. Datadog supports an advanced function API, which enables you to create sophisticated visualizations and alerts for GraphQL metrics.
- [Build status notifications](../metrics/notifications/) let you notify your team via webhook whenever GraphOS attempts to build a new supergraph schema for your federated graph.
- [Build status notifications](../metrics/notifications/build-status-notification) let you notify your team via webhook whenever GraphOS attempts to build a new supergraph schema for your federated graph.

<Note>

Build status notifications are also available on the [Dedicated plan](https://www.apollographql.com/pricing/).

</Note>
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ subtitle: Receive webhook alerts whenever GraphOS attempts to build a new superg
description: Configure Apollo GraphOS to notify your team via webhook about schema build attempts in your federated graph.
---

<EnterpriseFeature />
<PremiumFeature />

<PreviewFeature />

Expand Down
9 changes: 4 additions & 5 deletions src/content/graphos/org/sso/azure-ad-integration-guide.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,12 @@
title: Setting up Apollo SSO with Azure AD
---

<EnterpriseFeature>
<PremiumFeature>

**Single sign-on (SSO) is available only for [Enterprise plans](https://www.apollographql.com/pricing/).**
**Single sign-on (SSO) is available only for [Dedicated and Enterprise plans](https://www.apollographql.com/pricing/).**

Check warning on line 7 in src/content/graphos/org/sso/azure-ad-integration-guide.mdx

View workflow job for this annotation

GitHub Actions / runner / vale

[vale] reported by reviewdog 🐶 [Google.Parens] Use parentheses judiciously. Raw Output: {"message": "[Google.Parens] Use parentheses judiciously.", "location": {"path": "src/content/graphos/org/sso/azure-ad-integration-guide.mdx", "range": {"start": {"line": 7, "column": 18}}}, "severity": "INFO"}

Check warning on line 7 in src/content/graphos/org/sso/azure-ad-integration-guide.mdx

View workflow job for this annotation

GitHub Actions / runner / vale

[vale] reported by reviewdog 🐶 [Google.Acronyms] Spell out 'SSO', if it's unfamiliar to the audience. Raw Output: {"message": "[Google.Acronyms] Spell out 'SSO', if it's unfamiliar to the audience.", "location": {"path": "src/content/graphos/org/sso/azure-ad-integration-guide.mdx", "range": {"start": {"line": 7, "column": 19}}}, "severity": "INFO"}
This feature is not available as part of an [Enterprise trial](../plans/#enterprise-trials).

Check warning on line 8 in src/content/graphos/org/sso/azure-ad-integration-guide.mdx

View workflow job for this annotation

GitHub Actions / runner / vale

[vale] reported by reviewdog 🐶 [Google.Contractions] Use 'isn't' instead of 'is not'. Raw Output: {"message": "[Google.Contractions] Use 'isn't' instead of 'is not'.", "location": {"path": "src/content/graphos/org/sso/azure-ad-integration-guide.mdx", "range": {"start": {"line": 8, "column": 14}}}, "severity": "INFO"}

Unlike most Enterprise features, this feature is not available as part of an [Enterprise trial](../plans/#enterprise-trials).

</EnterpriseFeature>
</PremiumFeature>

This guide walks through configuring Azure Active Directory (Azure AD) as your Apollo organization's identity provider (IdP) for single sign-on (SSO).

Expand Down
9 changes: 4 additions & 5 deletions src/content/graphos/org/sso/okta-integration-guide.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,12 @@
title: Setting up Apollo SSO with Okta
---

<EnterpriseFeature>
<PremiumFeature>

**Single sign-on (SSO) is available only for [Enterprise plans](https://www.apollographql.com/pricing/).**
**Single sign-on (SSO) is available only for [Dedicated and Enterprise plans](https://www.apollographql.com/pricing/).**

Check warning on line 7 in src/content/graphos/org/sso/okta-integration-guide.mdx

View workflow job for this annotation

GitHub Actions / runner / vale

[vale] reported by reviewdog 🐶 [Google.Parens] Use parentheses judiciously. Raw Output: {"message": "[Google.Parens] Use parentheses judiciously.", "location": {"path": "src/content/graphos/org/sso/okta-integration-guide.mdx", "range": {"start": {"line": 7, "column": 18}}}, "severity": "INFO"}

Check warning on line 7 in src/content/graphos/org/sso/okta-integration-guide.mdx

View workflow job for this annotation

GitHub Actions / runner / vale

[vale] reported by reviewdog 🐶 [Google.Acronyms] Spell out 'SSO', if it's unfamiliar to the audience. Raw Output: {"message": "[Google.Acronyms] Spell out 'SSO', if it's unfamiliar to the audience.", "location": {"path": "src/content/graphos/org/sso/okta-integration-guide.mdx", "range": {"start": {"line": 7, "column": 19}}}, "severity": "INFO"}
This feature is not available as part of an [Enterprise trial](../plans/#enterprise-trials).

Check warning on line 8 in src/content/graphos/org/sso/okta-integration-guide.mdx

View workflow job for this annotation

GitHub Actions / runner / vale

[vale] reported by reviewdog 🐶 [Google.Contractions] Use 'isn't' instead of 'is not'. Raw Output: {"message": "[Google.Contractions] Use 'isn't' instead of 'is not'.", "location": {"path": "src/content/graphos/org/sso/okta-integration-guide.mdx", "range": {"start": {"line": 8, "column": 14}}}, "severity": "INFO"}

Unlike most Enterprise features, this feature is not available as part of an [Enterprise trial](../plans/#enterprise-trials).

</EnterpriseFeature>
</PremiumFeature>

This guide walks through configuring Okta as your Apollo organization's identity provider (IdP) for single sign-on (SSO).
You can [use Okta's official GraphOS integration](#using-oktas-official-apollo-graphos-integration) (recommended) or create a custom SAML integration (legacy).
Expand Down
9 changes: 4 additions & 5 deletions src/content/graphos/org/sso/saml-integration-guide.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,12 @@
title: Setting up Apollo SSO with a SAML-based IdP
---

<EnterpriseFeature>
<PremiumFeature>

**Single sign-on (SSO) is available only for [Enterprise plans](https://www.apollographql.com/pricing/).**
**Single sign-on (SSO) is available only for [Dedicated and Enterprise plans](https://www.apollographql.com/pricing/).**

Check warning on line 7 in src/content/graphos/org/sso/saml-integration-guide.mdx

View workflow job for this annotation

GitHub Actions / runner / vale

[vale] reported by reviewdog 🐶 [Google.Parens] Use parentheses judiciously. Raw Output: {"message": "[Google.Parens] Use parentheses judiciously.", "location": {"path": "src/content/graphos/org/sso/saml-integration-guide.mdx", "range": {"start": {"line": 7, "column": 18}}}, "severity": "INFO"}

Check warning on line 7 in src/content/graphos/org/sso/saml-integration-guide.mdx

View workflow job for this annotation

GitHub Actions / runner / vale

[vale] reported by reviewdog 🐶 [Google.Acronyms] Spell out 'SSO', if it's unfamiliar to the audience. Raw Output: {"message": "[Google.Acronyms] Spell out 'SSO', if it's unfamiliar to the audience.", "location": {"path": "src/content/graphos/org/sso/saml-integration-guide.mdx", "range": {"start": {"line": 7, "column": 19}}}, "severity": "INFO"}
This feature is not available as part of an [Enterprise trial](../plans/#enterprise-trials).

Check warning on line 8 in src/content/graphos/org/sso/saml-integration-guide.mdx

View workflow job for this annotation

GitHub Actions / runner / vale

[vale] reported by reviewdog 🐶 [Google.Contractions] Use 'isn't' instead of 'is not'. Raw Output: {"message": "[Google.Contractions] Use 'isn't' instead of 'is not'.", "location": {"path": "src/content/graphos/org/sso/saml-integration-guide.mdx", "range": {"start": {"line": 8, "column": 14}}}, "severity": "INFO"}

Unlike most Enterprise features, this feature is not available as part of an [Enterprise trial](../plans/#enterprise-trials).

</EnterpriseFeature>
</PremiumFeature>

This guide walks through configuring a generic SAML-based identity provider (IdP) for use with Apollo single sign-on (SSO). These steps require administrative access to your IdP.

Expand Down
10 changes: 10 additions & 0 deletions src/content/shared/graphos-router-features.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@

[The Apollo Router](https://www.apollographql.com/docs/router/) supports a collection of premium features specific to GraphOS. These include:

- **Real-time updates** via [GraphQL subscriptions](/router/executing-operations/subscription-support/)
- **Authentication of inbound requests** via [JSON Web Token (JWT)](/router/configuration/authn-jwt/)
- [**Authorization** of specific fields and types](/router/configuration/authorization) through the [`@requiresScopes`](/router/configuration/authorization#requiresscopes), [`@authenticated`](/router/configuration/authorization#authenticated), and [`@policy`](/router/configuration/authorization#policy) directives
- Incremental migration between subgraphs through [the progressive `@override` directive](/federation/entities-advanced/#incremental-migration-with-progressive-override).
- Redis-backed [**distributed caching** of query plans and persisted queries](/router/configuration/distributed-caching/)
- **Custom request handling** in any language via [external coprocessing](/router/customizations/coprocessor/)
- **Mitigation of potentially malicious requests** via [operation limits](/router/configuration/operation-limits) and [safelisting](../operations/persisted-queries/)
1 change: 1 addition & 0 deletions src/content/shared/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ export {default as CreateSelfHostedSupergraph} from './create-self-hosted-superg
export {default as DedicatedPreview} from './dedicated-preview.mdx';
export {default as DirectiveCompositionRules} from './directive-composition-rules.mdx';
export {default as Disclaimer} from './disclaimer.mdx';
export {default as GraphOSRouterFeatures} from './graphos-router-features.mdx'
export {default as GraphOSEnterpriseRequired} from './graphos-enteprise-required.mdx';
export {default as InconsistentCompositionRules} from './inconsistent-composition-rules.mdx';
export {default as ObtainGraphApiKey} from './obtain-graph-api-key.mdx';
Expand Down
14 changes: 2 additions & 12 deletions src/content/technotes/TN0004-router-authentication.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -111,12 +111,7 @@ headers:

As of Apollo Router v1.13, you can use the [JWT Authentication plugin](/router/configuration/authn-jwt) to validate JWT-based authentication tokens in your supergraph.

<EnterpriseFeature>

This is an [Enterprise feature](/router/enterprise-features) of the Apollo Router.
It requires an organization with a [GraphOS Enterprise plan](https://www.apollographql.com/pricing/).

</EnterpriseFeature>
<PremiumFeature />

```mermaid
sequenceDiagram
Expand Down Expand Up @@ -149,12 +144,7 @@ Cons:

If you have a custom authentication strategy, you can use a [coprocessor](/router/customizations/coprocessor) to implement it.

<EnterpriseFeature>

This is an [Enterprise feature](/router/enterprise-features) of the Apollo Router.
It requires an organization with a [GraphOS Enterprise plan](https://www.apollographql.com/pricing/).

</EnterpriseFeature>
<PremiumFeature />

```mermaid
sequenceDiagram
Expand Down
10 changes: 5 additions & 5 deletions src/content/technotes/TN0013-monolith-to-federation.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,11 @@ Start the process by making a "federated graph of one." Your existing monolith c
```

1. Deploy an instance of the [Apollo Router](/router/) to your environment.
<EnterpriseFeature
text={
"Self-hosting the Apollo Router is limited to [GraphOS Enterprise plans](/graphos/enterprise/). Other plan types use [managed cloud routing with GraphOS](/graphos/cloud-routing). Check out the [pricing page](https://www.apollographql.com/pricing/) to learn more."
}
/>
<EnterpriseFeature>

Self-hosting the Apollo Router is limited to [GraphOS Enterprise plans](/graphos/enterprise/). Other plan types use [managed cloud routing with GraphOS](/graphos/cloud-routing). Check out the [pricing page](https://www.apollographql.com/pricing/) to learn more.

</EnterpriseFeature>
1. Set up [header propagation](/router/configuration/header-propagation/) so that the monolith receives any necessary headers from the router.
1. Set up internal routing rules to redirect client requests to the Apollo Router instead of your monolith.
1. Enable usage metrics reporting to GraphOS Studio.
Expand Down
1 change: 1 addition & 0 deletions styles/Apollo/Headings.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ exceptions:
- GDPR
- GitHub
- GraphOS
- Premium GraphOS Router features
- GraphOS Studio
- GraphQL Summit
- Go live
Expand Down
Loading