@redocly/marketing-pages 0.1.34 → 0.1.35

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import e from"react";import{linearGradient as O}from"polished";import o from"styled-components";import{Link as g,ArrowRightIcon as p}from"@redocly/theme";import{Centered as d,GridSection as n,MediaBox as i,Skewed as f}from"../../components/PositionItems";import{OverflowImg as L}from"../../components/ImageComponents";import{Box as r}from"../../ui/Box";import{Button as x}from"../../components/Button/CustomButton";import{Circle as u,CircleWrapper as y}from"../../components/Circle/Circle";import{TextGradient as w}from"../../components/TextGradient/TextGradient";import{Card as T}from"../../components/Cards/Card";import{ResponsiveImg as l}from"../../components/ImageComponents";import{FeatureAdvertiseBoxLarge as D,FeatureAdvertiseBox as $}from"../../components/Feature/FeatureAdvertise";import{ThemeSection as q,FeaturesCard as b}from"../../components/Feature/Features";import{CallToAction as M}from"../../components/CallToAction/CallToAction";import{ListItem as N,List as z}from"../../components/List";import{FeaturesCard as v}from"@redocly/marketing-pages/pages/about/about.page.js";import{Avatar as C}from"@redocly/marketing-pages/components/FoundersQuoteWrapper.js";import{Cite as c}from"../../components/CIte/Cite";import{CustomerCard as X}from"../../components/Cards/CustomerCard";import{AuthorBio as k}from"../../components/AuthorBio/AuthorBio";import{breakpoints as m}from"@redocly/theme/core/utils";import R from"./images/img.png";import J from"./images/brex-flow.png";import U from"./images/pratik.png";import V from"./images/milo.png";import B from"./images/ernie.png";import K from"./images/heart.svg";import Q from"./images/redocly-white-logo.svg";import S from"./images/arrow-right.svg";import Y from"./images/code-first.svg";import Z from"./images/open-api.svg";import ee from"./images/public.svg";import{H1Title as te,H2Title as _,H3Title as h,H4Title as I,Paragraph as t,TextNormal as W}from"../../components/TypographyElements/TypographyElements";const Me={seo:{title:"Brex"},slug:"/customers/brex"};function Ne(){return e.createElement(e.Fragment,null,e.createElement(f,{angle:{_:0,medium:0},bg:O({colorStops:["rgb(0, 104, 251)","rgb(126, 65, 255)"],toDirection:"to right bottom"})},e.createElement(i,null,e.createElement(d,{maxWidth:"890px"},e.createElement(te,{color:"var(--secondary-color)",mt:{base:"6rem"},mb:{base:"30px"}},"API-forward fintech FTW. Brex & Redocly\u2019s two-way story")),e.createElement(d,{maxWidth:"690px"},e.createElement(t,{color:"var(--secondary-color)"},"How, and why, our own banking provider chose Redocly to power developer onboarding for their first API.")),e.createElement(r,{mt:"90px",mx:"auto",maxWidth:"930px"},e.createElement(L,{src:J})),e.createElement(r,{mx:"auto",mt:"24px",textAlign:"center"},e.createElement(ce,{to:"https://developer.brex.com/",target:"_blank"},"View Brex\u2019s Docs ",e.createElement(p,null))))),e.createElement(f,{angle:{_:0,medium:0},bg:"#F0F5FF",offsetTop:{_:"200px",medium:"270px",large:"400px"},pb:"88px",mt:5},e.createElement(i,null,e.createElement(n,{gridTemplateColumns:{base:"1fr",medium:"2fr 1fr"},gridColumnGap:4},e.createElement(r,null,e.createElement(t,{mt:0,color:"var(--color-text-dimmed)"},"Fintech might not save the world just yet, but it sure makes it a better place. Especially for the un-, under-, and over-banked among us. As the one-stop finance shop for fast-growing businesses,"," ",e.createElement(a,{to:"https://www.brex.com/",target:"_blank"},"Brex")," ","covers all of those, and then some."),e.createElement(t,{color:"var(--color-text-dimmed)"},"This time around we\u2019re talking to not one, but three awesome API hackers:"," ",e.createElement(a,{to:"https://www.linkedin.com/in/pratiktandel/",target:"_blank"},"Pratik Tandel"),", Brex\u2019s Principal Engineer responsible for building their API;"," ",e.createElement(a,{to:"https://www.linkedin.com/in/ernestipark/",target:"_blank"},"Ernie Park"),", the company\u2019s former leader of growth, now turned part time contractor (and"," ",e.createElement(a,{to:"https://www.parkfamilyfarm.com/",target:"_blank"},"sustainable farmer"),"!); and"," ",e.createElement(a,{to:"https://www.linkedin.com/in/milospirig/",target:"_blank"},"Milo Spirig"),", the API\u2019s Principal Product Manager."),e.createElement(c,{author:"Ernie",my:5,px:"24px",maxWidth:"705px"},"Day-to-day, we don\u2019t think too much about Redocly itself, which is exactly what we want! While we use it often, it feels just like using any other engineering tool that is very familiar to any front-end dev, which is great."),e.createElement(t,{color:"var(--color-text-dimmed)"},"Hearing that our users don\u2019t think about us is the biggest praise we can get. APIs and related tools should be like electricity: ever-present and yet invisible.")),e.createElement(X,{color:"#FFFFFF",backgroundColor:"#171717",description:"The software and services financial stack engineered for fast-growing companies.",logo:e.createElement(r,{maxWidth:"55%",m:"auto"},e.createElement(l,{src:R})),location:"Remote-first & global",serviceTypes:["Fintech","$12.3 billion valuation, 1000+ employees"],serviceName:"Developer portal, GitHub Workflows, Reference docs",action:e.createElement(x,{to:"https://auth.cloud.redocly.com/registration",variant:"outlined",size:"large"},"Start 30-day free trial")}))),e.createElement(y,{zIndex:-1},e.createElement(u,{size:"600px",top:"-150px",left:"-350px"}),e.createElement(u,{size:"800px",top:"-300px",left:"-500px"}))),e.createElement(f,{angle:0,bg:"#F8FAFF",offsetBottom:"300px",style:{overflowX:"clip"}},e.createElement(i,null,e.createElement(d,null,e.createElement(n,{justifyItems:{base:"center"},gridTemplateColumns:{base:"1fr",medium:"1fr 1fr 1fr"},gridRowGap:"5rem",gridColumnGap:"5px"},e.createElement(k,{size:{base:"70px"},name:"Pratik Tandel",authorPosition:"Principal Engineer",mt:{_:5,medium:"-40px"},descriptionSize:{height:{base:"90px"},width:{base:"260px",medium:"200px"}}},e.createElement(l,{maxWidth:"70px",src:U})),e.createElement(k,{size:{base:"70px"},name:"Ernie Park",authorPosition:"Engineering Manager, Growth",mt:{_:5,medium:"-40px"},descriptionSize:{height:{base:"90px"},width:{base:"260px",medium:"200px"}}},e.createElement(l,{maxWidth:"70px",src:B})),e.createElement(k,{size:{base:"70px"},name:"Milo Spirig",authorPosition:"Principal Product Manager",mt:{_:5,medium:"-40px"},descriptionSize:{height:{base:"90px"},width:{base:"260px",medium:"200px"}}},e.createElement(l,{maxWidth:"70px",src:V}))))),e.createElement(i,{pt:"22px"},e.createElement(d,null,e.createElement(E,null,"The customer becomes the customee*"),e.createElement(t,{mt:0,color:"black",fontStyle:"italic"},"* we\u2019re coining it. Just go along with it.")),e.createElement(n,{gridTemplateColumns:{base:"1fr",medium:"1fr 2fr"},gridColumnGap:6},e.createElement(c,{m:{_:3,medium:5},author:"Milo"},"As we were having issues with our existing solution, one of our engineers spotted that Redocly was a Brex customer and looked into it..."),e.createElement(r,null,e.createElement(t,{color:"var(--color-text-dimmed)"},"Brex is one of the world\u2019s fastest growing fintech companies. By integrating corporate cards, business accounts, and expense software into one solution, Brex helps businesses spend smarter and manage their money effortlessly from anywhere\u2014increasing productivity and accelerating growth."),e.createElement(t,{color:"var(--color-text-dimmed)"},"In 2021, they realized they wanted to create an API that would enable their customers to integrate Brex seamlessly into other apps and workflows."),e.createElement(t,{color:"var(--color-text-dimmed)"},"Taking that plunge wasn\u2019t easy, though, since they didn\u2019t start as a developer-focused company. \u201CGetting this \u2018cultural architecture\u2019 right,\u201D"," ",e.createElement(a,{to:"https://building.brex.com/building-the-brex-api-52dcb26cacc8",target:"_blank"},"writes")," ","the API\u2019s principal engineer Pratik Tandel, \u201Cis just as important as getting the technical architecture right.\u201D"),e.createElement(t,{color:"var(--color-text-dimmed)"},"Fortunately they did get it right, as well as a few other things, judging by their docs.")))),e.createElement(y,{style:{left:"100%",zIndex:-1}},e.createElement(u,{size:"500px",top:"-215px",right:"-270px"}),e.createElement(u,{size:"600px",top:"-230px",right:"-330px"})),e.createElement(i,null,e.createElement(n,{mt:5,gridTemplateColumns:{base:"1fr",medium:"1fr 2fr"},gridColumnGap:6,justifyItems:{base:"center"},alignItems:{base:"start"}},e.createElement(F,{maxWidth:"400px"},e.createElement(j,{m:0},"Issue with the old provider"),e.createElement(z,{mark:"cross"},e.createElement(s,null,"Incomplete support for the OpenAPI spec"),e.createElement(s,null,"Clunky process from spec to developer portal"),e.createElement(s,null,"No easy way to customize developer portal theme, designs, and layouts"),e.createElement(s,null,"Incorrectly generated documentation"))),e.createElement(r,null,e.createElement(h,{color:"var(--color-text-dark)"},"Switching API docs tools"),e.createElement(t,{color:"var(--color-text-dimmed)"},"Many companies build their first API docs manually (for example,"," ",e.createElement(a,{to:"/customers/checkr/",target:"_blank"},"Checkr"),"), but Brex already used a third-party tool to document their rapidly growing external APIs. Supposedly automated, this solution was however riddled with bugs and incomplete features that\u2026"),e.createElement(c,{author:"Pratik",m:{_:3,medium:5},px:"24px",maxWidth:"705px"},"made it so we had to manually intervene at many steps which defeated much of the purpose."),e.createElement(t,{color:"var(--color-text-dimmed)"},"The thing with API docs tools is, they need to be powerful enough to let you accomplish what you dream up, but also simple and seamless enough to get out of the way."),e.createElement(t,{color:"var(--color-text-dimmed)"},"In no time, Ernie, Pratik and team were on the hunt for a solution that would provide just that."),e.createElement(h,{color:"var(--color-text-dark)"},"Looking within (... your CRM)"),e.createElement(t,{color:"var(--color-text-dimmed)"},"A lot of our customers find Redocly via"," ",e.createElement(a,{to:"/blog/seo-api-docs/",target:"_blank"},"search engines"),", recommendations or, of course, our"," ",e.createElement(a,{to:"https://github.com/Redocly/redoc",target:"_blank"},"GitHub darling")," ","Redoc. But in this case, the Brex folks didn\u2019t have to look beyond their own CRM, as Redocly is a proud Brex customer:"),e.createElement(c,{author:"Adam Altman, Redocly\u2019s CEO",m:{_:3,medium:5},px:"24px",maxWidth:"705px"},"Brex is our all-in-one finance platform. We manage Redocly's cash flow, investor funds and corporate spending from our Brex account. It comes with built-in expense management, bill pay and the industry's best rewards."),e.createElement(t,{color:"var(--color-text-dimmed)"},"Recognizing us as a customer, an engineer reviewing API docs alternatives decided to give Redocly a shot. Getting started was easy, and before you know it they were testing & tweaking extensively.")))),e.createElement(i,{m:5},e.createElement(me,{py:"100px",px:"100px"},e.createElement(n,{gridTemplateColumns:{base:"1fr",medium:"1fr 1fr 1fr"},gridRowGap:6,gridColumnGap:3,justifyItems:{base:"center"},alignItems:{base:"center"}},e.createElement(l,{src:Q}),e.createElement(le,{src:K}),e.createElement(ie,{src:R})))),e.createElement(y,{style:{left:"100%",zIndex:-1}},e.createElement(u,{size:"800px",top:"-100px",left:"-500px"}),e.createElement(u,{size:"600px",top:"0",left:"-430px"})),e.createElement(i,{mt:5},e.createElement(d,null,e.createElement(E,null,"Getting started with Redocly")),e.createElement(n,{gridTemplateColumns:{base:"1fr",medium:"2fr 1fr"},justifyItems:{base:"center",medium:"unset"},mt:5,gridColumnGap:6,alignItems:{base:"start"}},e.createElement(r,null,e.createElement(t,{color:"var(--color-text-dimmed)"},"Because Brex was building their API capability and developer culture in one go, they needed as much familiarity and \u2018plug-and-play\u2019 as possible to get up to speed quickly. This is where our tech stack and obsession with OAS came in handy."),e.createElement(h,{color:"var(--color-text-dark)"},"Tools that feel like home"),e.createElement(t,{color:"var(--color-text-dimmed)"},"Learning curve is an important consideration when choosing developer documentation tooling. Nobody wants to spend weeks learning a new product and sifting through a tax code\u2019s worth of documentation (we obviously love documentation\u2026 but enough\u2019s enough)."),e.createElement(t,{color:"var(--color-text-dimmed)"},"Fortunately for Brex,"," ",e.createElement(a,{to:"/blog/tech-stack/",target:"_blank"},"Redocly\u2019s tech stack")," ","made it super easy to pick up and customize their portal:"),e.createElement(c,{author:"Ernie",m:{_:3,medium:5},px:"24px",maxWidth:"705px"},"Redocly has made that much easier as it is React based and on a stack that\u2019s very familiar to all our engineers and designers. It\u2019s basic React, CLI tools, CSS and some well-documented config.")),e.createElement(F,{maxWidth:"400px"},e.createElement(j,{m:0},"Feature faves"),e.createElement(ae,null," \u2B50\uFE0F"),e.createElement(z,{mark:"check"},e.createElement(s,null,"Easy UI customization"),e.createElement(s,null,"Familiar React-based stack"),e.createElement(s,null,"Full OAS 3.0 support"),e.createElement(s,null,"MDX markdown content"),e.createElement(s,null,"Automated GitHub pipeline")))),e.createElement(h,{m:0,color:"var(--color-text-dark)"},"Airtight OpenAPI"),e.createElement(n,{gridTemplateColumns:{base:"1fr",medium:"2fr 1fr"},gridColumnGap:6},e.createElement(t,{color:"var(--color-text-dimmed)"},"Implementing the OpenAPI (OAS 3.0) spec was crucial for Brex, as they\u2019d opted for the code-first approach: generating their OAS spec directly from their code. Redocly worked like a charm here, because our API registry serves as a"," ",e.createElement(a,{to:"docs-legacy/api-registry/overview/",target:"_blank"},"single source of truth")," ","for documentation, so whenever Brex developers add new parameters they\u2019re reflected in the OAS definition, which then automatically updates in the documentation with no human intervention required."),e.createElement(c,{author:"Ernie",m:{_:3,medium:5}},"The main thing is that our API reference is extremely easy to update. Engineers just worry about the code. Right now I can keep the docs up to date with very minimal work."))),e.createElement(i,null,e.createElement(re,null,e.createElement(n,{gridTemplateColumns:{base:"1fr",medium:"1fr 1fr 1fr 1fr 1fr"},gridRowGap:5,justifyItems:{base:"center"},alignItems:{base:"center"}},e.createElement(v,null,e.createElement(l,{src:Y}),e.createElement(t,{color:"var(--color-text-dimmed)"},"Code-first approach")),e.createElement(G,{src:S}),e.createElement(v,null,e.createElement(l,{src:Z}),e.createElement(t,{color:"var(--color-text-dimmed)"},"OAS 3.0 definition")),e.createElement(G,{src:S}),e.createElement(v,null,e.createElement(l,{src:ee}),e.createElement(t,{color:"var(--color-text-dimmed)"},"Public API docs"))))),e.createElement(i,null,e.createElement($,{gridTemplateColumns:{base:"1fr",medium:"2fr 1fr"},py:{base:6,medium:"88px"},px:5,mt:6,mb:3,position:"relative",zIndex:2},e.createElement(r,null,e.createElement(_,{color:"var(--secondary-color)",textAlign:{base:"center",medium:"left"}},"Get started with Redocly"),e.createElement(t,{color:"var(--secondary-color)",textAlign:{base:"center",medium:"left"}},"Build API docs you\u2019ll be proud of for free. Try all features for 14 days, no credit card required."," ")),e.createElement(ne,null,e.createElement(x,{to:"https://auth.cloud.redocly.com/registration",className:"landing-button",size:"large"},"Start 30-day free trial"),e.createElement(oe,{to:"/contact-sales/"},"Talk to sales",e.createElement(p,null)))),e.createElement(r,{maxWidth:"800px",m:"auto"},e.createElement(d,null,e.createElement(E,null,"Automagical GitHub-fueled docs")),e.createElement(t,{color:"var(--color-text-dimmed)"},"While customization and OAS support were important, collaboration and speed were make-or-break for Brex\u2019s growing API team. This is where our"," ",e.createElement(a,{to:"/workflows/",target:"_blank"},"Workflows")," ","integrations came into the picture:"),e.createElement(c,{author:"Pratik",m:{_:3,medium:5},px:"24px",maxWidth:"705px"},"The main deciding factor in choosing Redocly was the ability to build an automated pipeline from GitHub to customer-facing docs. This was critical to reducing friction in our developer flow."),e.createElement(t,{color:"var(--color-text-dimmed)"},"Brex\u2019s developer portal and API docs run in a GitHub repository forked from the Redocly"," ",e.createElement(a,{to:"https://github.com/Redocly/developer-portal-starter",target:"_blank"},"developer portal starter project"),". The repo syncs with their OpenAPI specs, and very little configuration is needed to keep everything working."),e.createElement(t,{color:"var(--color-text-dimmed)"},"The team writes developer guides in markdown files (including"," ",e.createElement(a,{to:"/docs-legacy/developer-portal/guides/mdx/#create-content-in-mdx",target:"_blank"},"React-powered MDX"),"), which everyone picked up quickly, as they\u2019re not all that different from simple text documents. All changes are submitted through a typical PR process, and the"," ",e.createElement(a,{to:"/docs-legacy/workflows/sources/github/#github",target:"_blank"},"GitHub integration")," ","makes it possible to validate and preview changes before submitting them to Redocly. Once the changes are merged into the main branch, Redocly picks them automatically, builds the docs, and deploys them to the production site. Changes can also be tested locally with just a few yarn commands."),e.createElement(h,{mt:{base:"5rem"},color:"var(--color-text-dark)"},"Lightweight flow; lightning-fast iterations"),e.createElement(t,{color:"var(--color-text-dimmed)"},"Brex accomplishes an extremely quick update lifecycle for their docs, primarily owing to Redocly being lightweight and simple enough to test and push small updates without overhead:"),e.createElement(n,{gridTemplateColumns:{base:"1fr",medium:"1fr 1fr"},justifyItems:{base:"center"},gridRowGap:5},e.createElement(r,{maxWidth:"200px",textAlign:"center"},e.createElement(H,{m:0},"4 min"),e.createElement(t,{fontSize:{base:"18px"},color:"var(--color-text-dimmed)"},"Time from pull request merge to production")),e.createElement(r,{maxWidth:"200px",textAlign:"center"},e.createElement(H,{m:0},"4"),e.createElement(t,{fontSize:{base:"18px"},color:"var(--color-text-dimmed)"},"Production deploys per week"))),e.createElement(c,{author:"Ernie",m:{_:3,medium:5},px:"24px",maxWidth:"705px"},"We can push changes even if they\u2019re very small and not have to do large, heavy-handed releases. This means docs stay fresh and we can iterate quickly."))),e.createElement(q,{mt:4,pt:6},e.createElement(_,{color:"var(--secondary-color)",textAlign:{base:"center"}},"How Brex is using Redocly"),e.createElement(i,null,e.createElement(n,{gridGap:6,gridTemplateColumns:{base:"1fr",medium:"1fr 1fr 1fr"},maxWidth:{base:"1060px"},mx:"auto"},e.createElement(b,{alignItems:{base:"center",medium:"flex-start"}},e.createElement(P,{src:require("../../images/img_3.svg"),alt:"Developer Portal",maxWidth:{_:"60px",medium:"65px"},minHeight:{_:"45px",medium:"75px"}}),e.createElement(I,{color:"var(--secondary-color)"},"GitHub Workflow"),e.createElement(t,{color:"var(--secondary-color)",textAlign:{base:"center",medium:"left"}},"Automated pipeline from GitHub to docs, reducing friction and development hours."),e.createElement(r,{pt:"2em"},e.createElement(A,{to:"/workflows/"},"Discover Workflows",e.createElement(p,null)))),e.createElement(b,{alignItems:{base:"center",medium:"flex-start"}},e.createElement(P,{src:require("../../images/img_2.svg"),alt:"Secure multi-auth",maxWidth:{_:"60px",medium:"65px"},minHeight:{_:"45px",medium:"75px"}}),e.createElement(I,{color:"var(--secondary-color)"},"Developer Portal"),e.createElement(t,{color:"var(--secondary-color)",textAlign:{base:"center",medium:"left"}},"On-brand developer onboarding with deep level React customization."),e.createElement(r,{pt:"2em"},e.createElement(A,{to:"/portals/"},"Discover Portals",e.createElement(p,null)))),e.createElement(b,{alignItems:{base:"center",medium:"flex-start"}},e.createElement(P,{src:require("../../images/search-docs-icon.svg"),alt:"On-premise",maxWidth:{_:"60px",medium:"65px"},minHeight:{_:"45px",medium:"75px"}}),e.createElement(I,{color:"var(--secondary-color)"},"Reference Docs"),e.createElement(t,{color:"var(--secondary-color)",textAlign:{base:"center",medium:"left"}},"API docs built and updated directly from OpenAPI definitions."),e.createElement(r,{pt:"2em"},e.createElement(A,{to:"/reference/"},"Discover reference",e.createElement(p,null))))))),e.createElement(i,null,e.createElement(r,{maxWidth:"800px",m:"0 auto"},e.createElement(d,null,e.createElement(E,{mt:{_:6,medium:7}},"We\u2019ll keep banking on APIs")),e.createElement(t,{color:"var(--color-text-dimmed)"},"Pervasive automation is perhaps the greatest achievement of our era, and the API economy is its most powerful driver. The new Brex API is a great step forward in this direction, and we are honored to be part of their API journey as both providers and customers."),e.createElement(t,{color:"var(--color-text-dimmed)"},"Automation superpowers are the reason we chose Brex as our finance provider at Redocly. Brex and fits into our workflow perfectly, just like we fit into theirs:"),e.createElement(n,{gridTemplateColumns:{_base:"1fr",medium:"1fr 1fr"},alignItems:{base:"center"},justifyContent:{base:"center"}},e.createElement(r,{my:5,display:"flex",flexDirection:"column",alignItems:"center",alignSelf:"end"},e.createElement(C,{height:"80px",width:"80px",src:B}),e.createElement(r,{maxWidth:"200px",textAlign:"center",mt:"10px"},e.createElement(W,{fontSize:{base:"18px",small:"22px",medium:"24px"},lineHeight:"1rem",color:"var(--color-text-dimmed)"},e.createElement("strong",null,"Ernie Park")),e.createElement(t,{lineHeight:"1rem",fontSize:{base:"18px",small:"22px",medium:"18px"},color:"var(--color-text-dimmed)"},"Engineering Growth at Brex"))),e.createElement(c,{my:{_:5,medium:3}},"Overall, the best thing about using Redocly is that it just works the way you expect it to. It fits seamlessly into our flow just like any other engineering tool."))))),e.createElement(f,{pb:"70px",angle:{_:0,medium:0},bg:"#F0F5FF",offsetTop:{_:"-200px",medium:"-350px"}},e.createElement(i,null,e.createElement(r,{maxWidth:"800px",m:"0 auto"},e.createElement(t,{color:"var(--color-text-dimmed)"},"But there\u2019s more than automation to this story. There\u2019s a unique kind of synergy \u2013 or more simply, \u2018magic\u2019 \u2013 when technology companies join forces as one another\u2019s customers. Camaraderie, developer-culture spillover, and pride, among many others. In the words of our CEO and co-founder:"),e.createElement(n,{gridTemplateColumns:{base:"1fr",medium:"1fr 1fr"},alignItems:{base:"center"},justifyContent:{base:"center"}},e.createElement(c,{my:{_:5,medium:3}},"The big bet of the APIs economy is making every technology a multi-way street. By melding our service both ways with Brex, we get a chance to learn how to create this future faster."),e.createElement(r,{my:5,display:"flex",flexDirection:"column",alignItems:"center",alignSelf:"end"},e.createElement(C,{height:"80px",width:"80px",src:require("../../images/redockers/adam-headshot.png")}),e.createElement(r,{textAlign:"center",maxWidth:"200px",mt:"10px"},e.createElement(W,{fontSize:{base:"18px",small:"22px",medium:"24px"},lineHeight:"1rem",color:"var(--color-text-dimmed)"},e.createElement("strong",null,"Adam Altman")),e.createElement(t,{lineHeight:"1rem",fontSize:{base:"18px",small:"22px",medium:"18px"},color:"var(--color-text-dimmed)"},"Redocly CEO")))),e.createElement(t,{color:"var(--color-text-dimmed)"},"We\u2019re with Brex as they continue their API-forward company. As you innovate the finance stack of the future, we\u2019re here to keep it neatly documented for everyone to enjoy and build upon.")))),e.createElement(M,{title:"Superpower your API lifecycle with Redocly"},e.createElement(x,{to:"https://auth.cloud.redocly.com/registration",size:"large",className:"landing-button"},"Start 30-day free trial"),e.createElement(x,{to:"/enterprise/",variant:"outlined",size:"large"},"Enterprise")))}const re=o(T).attrs({background:"rgba(248, 250, 255, .5)"})`
1
+ import e from"react";import{linearGradient as O}from"polished";import o from"styled-components";import{Link as g,ArrowRightIcon as p}from"@redocly/theme";import{Centered as d,GridSection as n,MediaBox as i,Skewed as f}from"../../components/PositionItems";import{OverflowImg as L}from"../../components/ImageComponents";import{Box as r}from"../../ui/Box";import{Button as x}from"../../components/Button/CustomButton";import{Circle as u,CircleWrapper as y}from"../../components/Circle/Circle";import{TextGradient as w}from"../../components/TextGradient/TextGradient";import{Card as T}from"../../components/Cards/Card";import{ResponsiveImg as l}from"../../components/ImageComponents";import{FeatureAdvertiseBoxLarge as D,FeatureAdvertiseBox as $}from"../../components/Feature/FeatureAdvertise";import{ThemeSection as q,FeaturesCard as b}from"../../components/Feature/Features";import{CallToAction as M}from"../../components/CallToAction/CallToAction";import{ListItem as N,List as z}from"../../components/List";import{FeaturesCard as v}from"@redocly/marketing-pages/pages/about/about.page.js";import{Avatar as C}from"@redocly/marketing-pages/components/FoundersQuoteWrapper.js";import{Cite as c}from"../../components/CIte/Cite";import{CustomerCard as X}from"../../components/Cards/CustomerCard";import{AuthorBio as k}from"../../components/AuthorBio/AuthorBio";import{breakpoints as m}from"@redocly/theme/core/utils";import R from"./images/img.png";import J from"./images/brex-flow.png";import U from"./images/pratik.png";import V from"./images/milo.png";import B from"./images/ernie.png";import K from"./images/heart.svg";import Q from"./images/redocly-white-logo.svg";import S from"./images/arrow-right.svg";import Y from"./images/code-first.svg";import Z from"./images/open-api.svg";import ee from"./images/public.svg";import{H1Title as te,H2Title as _,H3Title as h,H4Title as I,Paragraph as t,TextNormal as W}from"../../components/TypographyElements/TypographyElements";const Me={seo:{title:"Brex"},slug:"/customers/brex"};function Ne(){return e.createElement(e.Fragment,null,e.createElement(f,{angle:{_:0,medium:0},bg:O({colorStops:["rgb(0, 104, 251)","rgb(126, 65, 255)"],toDirection:"to right bottom"})},e.createElement(i,null,e.createElement(d,{maxWidth:"890px"},e.createElement(te,{color:"var(--secondary-color)",mt:{base:"6rem"},mb:{base:"30px"}},"API-forward fintech FTW. Brex & Redocly\u2019s two-way story")),e.createElement(d,{maxWidth:"690px"},e.createElement(t,{color:"var(--secondary-color)"},"How, and why, our own banking provider chose Redocly to power developer onboarding for their first API.")),e.createElement(r,{mt:"90px",mx:"auto",maxWidth:"930px"},e.createElement(L,{src:J})),e.createElement(r,{mx:"auto",mt:"24px",textAlign:"center"},e.createElement(ce,{to:"https://developer.brex.com/",target:"_blank"},"View Brex\u2019s Docs ",e.createElement(p,null))))),e.createElement(f,{angle:{_:0,medium:0},bg:"#F0F5FF",offsetTop:{_:"200px",medium:"270px",large:"400px"},pb:"88px",mt:5},e.createElement(i,null,e.createElement(n,{gridTemplateColumns:{base:"1fr",medium:"2fr 1fr"},gridColumnGap:4},e.createElement(r,null,e.createElement(t,{mt:0,color:"var(--color-text-dimmed)"},"Fintech might not save the world just yet, but it sure makes it a better place. Especially for the un-, under-, and over-banked among us. As the one-stop finance shop for fast-growing businesses,"," ",e.createElement(a,{to:"https://www.brex.com/",target:"_blank"},"Brex")," ","covers all of those, and then some."),e.createElement(t,{color:"var(--color-text-dimmed)"},"This time around we\u2019re talking to not one, but three awesome API hackers:"," ",e.createElement(a,{to:"https://www.linkedin.com/in/pratiktandel/",target:"_blank"},"Pratik Tandel"),", Brex\u2019s Principal Engineer responsible for building their API;"," ",e.createElement(a,{to:"https://www.linkedin.com/in/ernestipark/",target:"_blank"},"Ernie Park"),", the company\u2019s former leader of growth, now turned part time contractor (and"," ",e.createElement(a,{to:"https://www.parkfamilyfarm.com/",target:"_blank"},"sustainable farmer"),"!); and"," ",e.createElement(a,{to:"https://www.linkedin.com/in/milospirig/",target:"_blank"},"Milo Spirig"),", the API\u2019s Principal Product Manager."),e.createElement(c,{author:"Ernie",my:5,px:"24px",maxWidth:"705px"},"Day-to-day, we don\u2019t think too much about Redocly itself, which is exactly what we want! While we use it often, it feels just like using any other engineering tool that is very familiar to any front-end dev, which is great."),e.createElement(t,{color:"var(--color-text-dimmed)"},"Hearing that our users don\u2019t think about us is the biggest praise we can get. APIs and related tools should be like electricity: ever-present and yet invisible.")),e.createElement(X,{color:"#FFFFFF",backgroundColor:"#171717",description:"The software and services financial stack engineered for fast-growing companies.",logo:e.createElement(r,{maxWidth:"55%",m:"auto"},e.createElement(l,{src:R})),location:"Remote-first & global",serviceTypes:["Fintech","$12.3 billion valuation, 1000+ employees"],serviceName:"Developer portal, GitHub Workflows, Reference docs",action:e.createElement(x,{to:"https://auth.cloud.redocly.com/registration",variant:"outlined",size:"large"},"Start 30-day free trial")}))),e.createElement(y,{zIndex:-1},e.createElement(u,{size:"600px",top:"-150px",left:"-350px"}),e.createElement(u,{size:"800px",top:"-300px",left:"-500px"}))),e.createElement(f,{angle:0,bg:"#F8FAFF",offsetBottom:"300px",style:{overflowX:"clip"}},e.createElement(i,null,e.createElement(d,null,e.createElement(n,{justifyItems:{base:"center"},gridTemplateColumns:{base:"1fr",medium:"1fr 1fr 1fr"},gridRowGap:"5rem",gridColumnGap:"5px"},e.createElement(k,{size:{base:"70px"},name:"Pratik Tandel",authorPosition:"Principal Engineer",mt:{_:5,medium:"-40px"},descriptionSize:{height:{base:"90px"},width:{base:"260px",medium:"200px"}}},e.createElement(l,{maxWidth:"70px",src:U})),e.createElement(k,{size:{base:"70px"},name:"Ernie Park",authorPosition:"Engineering Manager, Growth",mt:{_:5,medium:"-40px"},descriptionSize:{height:{base:"90px"},width:{base:"260px",medium:"200px"}}},e.createElement(l,{maxWidth:"70px",src:B})),e.createElement(k,{size:{base:"70px"},name:"Milo Spirig",authorPosition:"Principal Product Manager",mt:{_:5,medium:"-40px"},descriptionSize:{height:{base:"90px"},width:{base:"260px",medium:"200px"}}},e.createElement(l,{maxWidth:"70px",src:V}))))),e.createElement(i,{pt:"22px"},e.createElement(d,null,e.createElement(E,null,"The customer becomes the customee*"),e.createElement(t,{mt:0,color:"black",fontStyle:"italic"},"* we\u2019re coining it. Just go along with it.")),e.createElement(n,{gridTemplateColumns:{base:"1fr",medium:"1fr 2fr"},gridColumnGap:6},e.createElement(c,{m:{_:3,medium:5},author:"Milo"},"As we were having issues with our existing solution, one of our engineers spotted that Redocly was a Brex customer and looked into it..."),e.createElement(r,null,e.createElement(t,{color:"var(--color-text-dimmed)"},"Brex is one of the world\u2019s fastest growing fintech companies. By integrating corporate cards, business accounts, and expense software into one solution, Brex helps businesses spend smarter and manage their money effortlessly from anywhere\u2014increasing productivity and accelerating growth."),e.createElement(t,{color:"var(--color-text-dimmed)"},"In 2021, they realized they wanted to create an API that would enable their customers to integrate Brex seamlessly into other apps and workflows."),e.createElement(t,{color:"var(--color-text-dimmed)"},"Taking that plunge wasn\u2019t easy, though, since they didn\u2019t start as a developer-focused company. \u201CGetting this \u2018cultural architecture\u2019 right,\u201D"," ",e.createElement(a,{to:"https://building.brex.com/building-the-brex-api-52dcb26cacc8",target:"_blank"},"writes")," ","the API\u2019s principal engineer Pratik Tandel, \u201Cis just as important as getting the technical architecture right.\u201D"),e.createElement(t,{color:"var(--color-text-dimmed)"},"Fortunately they did get it right, as well as a few other things, judging by their docs.")))),e.createElement(y,{style:{left:"100%",zIndex:-1}},e.createElement(u,{size:"500px",top:"-215px",right:"-270px"}),e.createElement(u,{size:"600px",top:"-230px",right:"-330px"})),e.createElement(i,null,e.createElement(n,{mt:5,gridTemplateColumns:{base:"1fr",medium:"1fr 2fr"},gridColumnGap:6,justifyItems:{base:"center"},alignItems:{base:"start"}},e.createElement(F,{maxWidth:"400px"},e.createElement(j,{m:0},"Issue with the old provider"),e.createElement(z,{mark:"cross"},e.createElement(s,null,"Incomplete support for the OpenAPI spec"),e.createElement(s,null,"Clunky process from spec to developer portal"),e.createElement(s,null,"No easy way to customize developer portal theme, designs, and layouts"),e.createElement(s,null,"Incorrectly generated documentation"))),e.createElement(r,null,e.createElement(h,{color:"var(--color-text-dark)"},"Switching API docs tools"),e.createElement(t,{color:"var(--color-text-dimmed)"},"Many companies build their first API docs manually (for example,"," ",e.createElement(a,{to:"/customers/checkr/",target:"_blank"},"Checkr"),"), but Brex already used a third-party tool to document their rapidly growing external APIs. Supposedly automated, this solution was however riddled with bugs and incomplete features that\u2026"),e.createElement(c,{author:"Pratik",m:{_:3,medium:5},px:"24px",maxWidth:"705px"},"made it so we had to manually intervene at many steps which defeated much of the purpose."),e.createElement(t,{color:"var(--color-text-dimmed)"},"The thing with API docs tools is, they need to be powerful enough to let you accomplish what you dream up, but also simple and seamless enough to get out of the way."),e.createElement(t,{color:"var(--color-text-dimmed)"},"In no time, Ernie, Pratik and team were on the hunt for a solution that would provide just that."),e.createElement(h,{color:"var(--color-text-dark)"},"Looking within (... your CRM)"),e.createElement(t,{color:"var(--color-text-dimmed)"},"A lot of our customers find Redocly via"," ",e.createElement(a,{to:"/blog/seo-api-docs/",target:"_blank"},"search engines"),", recommendations or, of course, our"," ",e.createElement(a,{to:"https://github.com/Redocly/redoc",target:"_blank"},"GitHub darling")," ","Redoc. But in this case, the Brex folks didn\u2019t have to look beyond their own CRM, as Redocly is a proud Brex customer:"),e.createElement(c,{author:"Adam Altman, Redocly\u2019s CEO",m:{_:3,medium:5},px:"24px",maxWidth:"705px"},"Brex is our all-in-one finance platform. We manage Redocly's cash flow, investor funds and corporate spending from our Brex account. It comes with built-in expense management, bill pay and the industry's best rewards."),e.createElement(t,{color:"var(--color-text-dimmed)"},"Recognizing us as a customer, an engineer reviewing API docs alternatives decided to give Redocly a shot. Getting started was easy, and before you know it they were testing & tweaking extensively.")))),e.createElement(i,{m:5},e.createElement(me,{py:"100px",px:"100px"},e.createElement(n,{gridTemplateColumns:{base:"1fr",medium:"1fr 1fr 1fr"},gridRowGap:6,gridColumnGap:3,justifyItems:{base:"center"},alignItems:{base:"center"}},e.createElement(l,{src:Q}),e.createElement(le,{src:K}),e.createElement(ie,{src:R})))),e.createElement(y,{style:{left:"100%",zIndex:-1}},e.createElement(u,{size:"800px",top:"-100px",left:"-500px"}),e.createElement(u,{size:"600px",top:"0",left:"-430px"})),e.createElement(i,{mt:5},e.createElement(d,null,e.createElement(E,null,"Getting started with Redocly")),e.createElement(n,{gridTemplateColumns:{base:"1fr",medium:"2fr 1fr"},justifyItems:{base:"center",medium:"unset"},mt:5,gridColumnGap:6,alignItems:{base:"start"}},e.createElement(r,null,e.createElement(t,{color:"var(--color-text-dimmed)"},"Because Brex was building their API capability and developer culture in one go, they needed as much familiarity and \u2018plug-and-play\u2019 as possible to get up to speed quickly. This is where our tech stack and obsession with OAS came in handy."),e.createElement(h,{color:"var(--color-text-dark)"},"Tools that feel like home"),e.createElement(t,{color:"var(--color-text-dimmed)"},"Learning curve is an important consideration when choosing developer documentation tooling. Nobody wants to spend weeks learning a new product and sifting through a tax code\u2019s worth of documentation (we obviously love documentation\u2026 but enough\u2019s enough)."),e.createElement(t,{color:"var(--color-text-dimmed)"},"Fortunately for Brex,"," ",e.createElement(a,{to:"/blog/tech-stack/",target:"_blank"},"Redocly\u2019s tech stack")," ","made it super easy to pick up and customize their portal:"),e.createElement(c,{author:"Ernie",m:{_:3,medium:5},px:"24px",maxWidth:"705px"},"Redocly has made that much easier as it is React based and on a stack that\u2019s very familiar to all our engineers and designers. It\u2019s basic React, CLI tools, CSS and some well-documented config.")),e.createElement(F,{maxWidth:"400px"},e.createElement(j,{m:0},"Feature faves"),e.createElement(ae,null," \u2B50\uFE0F"),e.createElement(z,{mark:"check"},e.createElement(s,null,"Easy UI customization"),e.createElement(s,null,"Familiar React-based stack"),e.createElement(s,null,"Full OAS 3.0 support"),e.createElement(s,null,"MDX markdown content"),e.createElement(s,null,"Automated GitHub pipeline")))),e.createElement(h,{m:0,color:"var(--color-text-dark)"},"Airtight OpenAPI"),e.createElement(n,{gridTemplateColumns:{base:"1fr",medium:"2fr 1fr"},gridColumnGap:6},e.createElement(t,{color:"var(--color-text-dimmed)"},"Implementing the OpenAPI (OAS 3.0) spec was crucial for Brex, as they\u2019d opted for the code-first approach: generating their OAS spec directly from their code. Redocly worked like a charm here, because our API registry serves as a"," ",e.createElement(a,{to:"docs-legacy/api-registry/overview/",target:"_blank"},"single source of truth")," ","for documentation, so whenever Brex developers add new parameters they\u2019re reflected in the OAS definition, which then automatically updates in the documentation with no human intervention required."),e.createElement(c,{author:"Ernie",m:{_:3,medium:5}},"The main thing is that our API reference is extremely easy to update. Engineers just worry about the code. Right now I can keep the docs up to date with very minimal work."))),e.createElement(i,null,e.createElement(re,null,e.createElement(n,{gridTemplateColumns:{base:"1fr",medium:"1fr 1fr 1fr 1fr 1fr"},gridRowGap:5,justifyItems:{base:"center"},alignItems:{base:"center"}},e.createElement(v,null,e.createElement(l,{src:Y}),e.createElement(t,{color:"var(--color-text-dimmed)"},"Code-first approach")),e.createElement(G,{src:S}),e.createElement(v,null,e.createElement(l,{src:Z}),e.createElement(t,{color:"var(--color-text-dimmed)"},"OAS 3.0 definition")),e.createElement(G,{src:S}),e.createElement(v,null,e.createElement(l,{src:ee}),e.createElement(t,{color:"var(--color-text-dimmed)"},"Public API docs"))))),e.createElement(i,null,e.createElement($,{gridTemplateColumns:{base:"1fr",medium:"2fr 1fr"},py:{base:6,medium:"88px"},px:5,mt:6,mb:3,position:"relative",zIndex:2},e.createElement(r,null,e.createElement(_,{color:"var(--secondary-color)",textAlign:{base:"center",medium:"left"}},"Get started with Redocly"),e.createElement(t,{color:"var(--secondary-color)",textAlign:{base:"center",medium:"left"}},"Build API docs you\u2019ll be proud of for free. Try all features for 14 days, no credit card required."," ")),e.createElement(ne,null,e.createElement(x,{to:"https://auth.cloud.redocly.com/registration",className:"landing-button",size:"large"},"Start 30-day free trial"),e.createElement(oe,{to:"/contact-sales/"},"Talk to sales",e.createElement(p,null)))),e.createElement(r,{maxWidth:"800px",m:"auto"},e.createElement(d,null,e.createElement(E,null,"Automagical GitHub-fueled docs")),e.createElement(t,{color:"var(--color-text-dimmed)"},"While customization and OAS support were important, collaboration and speed were make-or-break for Brex\u2019s growing API team. This is where our"," ",e.createElement(a,{to:"/workflows/",target:"_blank"},"Workflows")," ","integrations came into the picture:"),e.createElement(c,{author:"Pratik",m:{_:3,medium:5},px:"24px",maxWidth:"705px"},"The main deciding factor in choosing Redocly was the ability to build an automated pipeline from GitHub to customer-facing docs. This was critical to reducing friction in our developer flow."),e.createElement(t,{color:"var(--color-text-dimmed)"},"Brex\u2019s developer portal and API docs run in a GitHub repository forked from the Redocly"," ",e.createElement(a,{to:"https://github.com/Redocly/developer-portal-starter",target:"_blank"},"developer portal starter project"),". The repo syncs with their OpenAPI specs, and very little configuration is needed to keep everything working."),e.createElement(t,{color:"var(--color-text-dimmed)"},"The team writes developer guides in markdown files (including"," ",e.createElement(a,{to:"/docs-legacy/developer-portal/guides/mdx/#create-content-in-mdx",target:"_blank"},"React-powered MDX"),"), which everyone picked up quickly, as they\u2019re not all that different from simple text documents. All changes are submitted through a typical PR process, and the"," ",e.createElement(a,{to:"/docs-legacy/workflows/sources/github/#github",target:"_blank"},"GitHub integration")," ","makes it possible to validate and preview changes before submitting them to Redocly. Once the changes are merged into the main branch, Redocly picks them automatically, builds the docs, and deploys them to the production site. Changes can also be tested locally with just a few yarn commands."),e.createElement(h,{mt:{base:"5rem"},color:"var(--color-text-dark)"},"Lightweight flow; lightning-fast iterations"),e.createElement(t,{color:"var(--color-text-dimmed)"},"Brex accomplishes an extremely quick update lifecycle for their docs, primarily owing to Redocly being lightweight and simple enough to test and push small updates without overhead:"),e.createElement(n,{gridTemplateColumns:{base:"1fr",medium:"1fr 1fr"},justifyItems:{base:"center"},gridRowGap:5},e.createElement(r,{maxWidth:"200px",textAlign:"center"},e.createElement(H,{m:0},"4 min"),e.createElement(t,{fontSize:{base:"18px"},color:"var(--color-text-dimmed)"},"Time from pull request merge to production")),e.createElement(r,{maxWidth:"200px",textAlign:"center"},e.createElement(H,{m:0},"4"),e.createElement(t,{fontSize:{base:"18px"},color:"var(--color-text-dimmed)"},"Production deployments per week"))),e.createElement(c,{author:"Ernie",m:{_:3,medium:5},px:"24px",maxWidth:"705px"},"We can push changes even if they\u2019re very small and not have to do large, heavy-handed releases. This means docs stay fresh and we can iterate quickly."))),e.createElement(q,{mt:4,pt:6},e.createElement(_,{color:"var(--secondary-color)",textAlign:{base:"center"}},"How Brex is using Redocly"),e.createElement(i,null,e.createElement(n,{gridGap:6,gridTemplateColumns:{base:"1fr",medium:"1fr 1fr 1fr"},maxWidth:{base:"1060px"},mx:"auto"},e.createElement(b,{alignItems:{base:"center",medium:"flex-start"}},e.createElement(P,{src:require("../../images/img_3.svg"),alt:"Developer Portal",maxWidth:{_:"60px",medium:"65px"},minHeight:{_:"45px",medium:"75px"}}),e.createElement(I,{color:"var(--secondary-color)"},"GitHub Workflow"),e.createElement(t,{color:"var(--secondary-color)",textAlign:{base:"center",medium:"left"}},"Automated pipeline from GitHub to docs, reducing friction and development hours."),e.createElement(r,{pt:"2em"},e.createElement(A,{to:"/workflows/"},"Discover Workflows",e.createElement(p,null)))),e.createElement(b,{alignItems:{base:"center",medium:"flex-start"}},e.createElement(P,{src:require("../../images/img_2.svg"),alt:"Secure multi-auth",maxWidth:{_:"60px",medium:"65px"},minHeight:{_:"45px",medium:"75px"}}),e.createElement(I,{color:"var(--secondary-color)"},"Developer Portal"),e.createElement(t,{color:"var(--secondary-color)",textAlign:{base:"center",medium:"left"}},"On-brand developer onboarding with deep level React customization."),e.createElement(r,{pt:"2em"},e.createElement(A,{to:"/portals/"},"Discover Portals",e.createElement(p,null)))),e.createElement(b,{alignItems:{base:"center",medium:"flex-start"}},e.createElement(P,{src:require("../../images/search-docs-icon.svg"),alt:"On-premise",maxWidth:{_:"60px",medium:"65px"},minHeight:{_:"45px",medium:"75px"}}),e.createElement(I,{color:"var(--secondary-color)"},"Reference Docs"),e.createElement(t,{color:"var(--secondary-color)",textAlign:{base:"center",medium:"left"}},"API docs built and updated directly from OpenAPI definitions."),e.createElement(r,{pt:"2em"},e.createElement(A,{to:"/reference/"},"Discover reference",e.createElement(p,null))))))),e.createElement(i,null,e.createElement(r,{maxWidth:"800px",m:"0 auto"},e.createElement(d,null,e.createElement(E,{mt:{_:6,medium:7}},"We\u2019ll keep banking on APIs")),e.createElement(t,{color:"var(--color-text-dimmed)"},"Pervasive automation is perhaps the greatest achievement of our era, and the API economy is its most powerful driver. The new Brex API is a great step forward in this direction, and we are honored to be part of their API journey as both providers and customers."),e.createElement(t,{color:"var(--color-text-dimmed)"},"Automation superpowers are the reason we chose Brex as our finance provider at Redocly. Brex and fits into our workflow perfectly, just like we fit into theirs:"),e.createElement(n,{gridTemplateColumns:{_base:"1fr",medium:"1fr 1fr"},alignItems:{base:"center"},justifyContent:{base:"center"}},e.createElement(r,{my:5,display:"flex",flexDirection:"column",alignItems:"center",alignSelf:"end"},e.createElement(C,{height:"80px",width:"80px",src:B}),e.createElement(r,{maxWidth:"200px",textAlign:"center",mt:"10px"},e.createElement(W,{fontSize:{base:"18px",small:"22px",medium:"24px"},lineHeight:"1rem",color:"var(--color-text-dimmed)"},e.createElement("strong",null,"Ernie Park")),e.createElement(t,{lineHeight:"1rem",fontSize:{base:"18px",small:"22px",medium:"18px"},color:"var(--color-text-dimmed)"},"Engineering Growth at Brex"))),e.createElement(c,{my:{_:5,medium:3}},"Overall, the best thing about using Redocly is that it just works the way you expect it to. It fits seamlessly into our flow just like any other engineering tool."))))),e.createElement(f,{pb:"70px",angle:{_:0,medium:0},bg:"#F0F5FF",offsetTop:{_:"-200px",medium:"-350px"}},e.createElement(i,null,e.createElement(r,{maxWidth:"800px",m:"0 auto"},e.createElement(t,{color:"var(--color-text-dimmed)"},"But there\u2019s more than automation to this story. There\u2019s a unique kind of synergy \u2013 or more simply, \u2018magic\u2019 \u2013 when technology companies join forces as one another\u2019s customers. Camaraderie, developer-culture spillover, and pride, among many others. In the words of our CEO and co-founder:"),e.createElement(n,{gridTemplateColumns:{base:"1fr",medium:"1fr 1fr"},alignItems:{base:"center"},justifyContent:{base:"center"}},e.createElement(c,{my:{_:5,medium:3}},"The big bet of the APIs economy is making every technology a multi-way street. By melding our service both ways with Brex, we get a chance to learn how to create this future faster."),e.createElement(r,{my:5,display:"flex",flexDirection:"column",alignItems:"center",alignSelf:"end"},e.createElement(C,{height:"80px",width:"80px",src:require("../../images/redockers/adam-headshot.png")}),e.createElement(r,{textAlign:"center",maxWidth:"200px",mt:"10px"},e.createElement(W,{fontSize:{base:"18px",small:"22px",medium:"24px"},lineHeight:"1rem",color:"var(--color-text-dimmed)"},e.createElement("strong",null,"Adam Altman")),e.createElement(t,{lineHeight:"1rem",fontSize:{base:"18px",small:"22px",medium:"18px"},color:"var(--color-text-dimmed)"},"Redocly CEO")))),e.createElement(t,{color:"var(--color-text-dimmed)"},"We\u2019re with Brex as they continue their API-forward company. As you innovate the finance stack of the future, we\u2019re here to keep it neatly documented for everyone to enjoy and build upon.")))),e.createElement(M,{title:"Superpower your API lifecycle with Redocly"},e.createElement(x,{to:"https://auth.cloud.redocly.com/registration",size:"large",className:"landing-button"},"Start 30-day free trial"),e.createElement(x,{to:"/enterprise/",variant:"outlined",size:"large"},"Enterprise")))}const re=o(T).attrs({background:"rgba(248, 250, 255, .5)"})`
2
2
  padding: 60px;
3
3
  margin: 30px auto;
4
4
  max-width: 400px;
@@ -1,4 +1,4 @@
1
- import t from"react";import n from"styled-components";import{breakpoints as m}from"@redocly/theme/core/utils";import{CalculatorWrapper as d,Menu as f,TopCalculatorBlock as g}from"./components";import{Period as b,Plan as h,Product as P,ProductBundle as y}from"../pricing/types/types";import{BottomBanner as w,QuestionsSection as v}from"../pricing/components";import{ConfiguredLayout as O}from"../../components/PageWrapper/ConfiguredLayout";import{getPricePerSeats as j}from"./calculations/getPricePerSeats";import{getPricePerProjects as x}from"./calculations/getPricePerProjects";import{getPricePerPages as E}from"./calculations/getPricePerPages";import{detectBundle as N}from"../pricing/calculations/detectBundle";import{DownloadModal as C}from"./components/DownloadModal";const Q={seo:{title:"Calculator"},slug:"/calculator"};function $(){const[s,o]=t.useState(!1),[c,i]=t.useState(""),[l,p]=t.useState(""),u=[{name:"How do I estimate my pages?",text:'<p>A page is counted for every route served in the project. You can use the <a href="/docs/cli/commands/preview">preview command</a> to count the number of pages. Or, you can see the number of pages in the webview inside of the Reunite editor.</p>'},{name:"What if I exceed my pages count?",text:"<p>You can set a budget for the number of pages. You are billed monthly in arrears based on actual usage for the number of pages. You cannot exceed your number of pages count because Redocly blocks the deploy from completing to prevent exceeding your budget. You may adjust your budget up or down at any time from the billing portal.</p>"},{name:"What is a project?",text:"<p>A project maps to a website. You can add a custom domain for the project, such as <span>docs.example.com</span>. A single project can have multiple previews because each pull request (change) made to the default branch triggers a preview to build and deploy to a different non-production website. The purpose of that website is for you or your colleagues to be able to review prior to approving the changes.</p>"}],[e,r]=t.useState({coreProducts:[P.REDOC],productBundle:y.ONE,plan:h.PRO,period:b.MONTH,seatsPrice:0,numOfSeats:5,price:0,numOfPages:100,pagesPrice:0,projectsPrice:0,projectsNumber:1});t.useEffect(()=>{N(e.coreProducts,r)},[e.coreProducts]);let a={seats:j(e.plan,e.numOfSeats,e.productBundle,e.period),projects:x(e.projectsNumber,e.period),pages:E(e.plan,e.numOfPages,e.period)};return t.createElement(B,null,t.createElement(g,null),t.createElement(d,{calculatorProperties:e,setCalculatorProperties:r}),t.createElement(f,{calculatorProperties:e,prices:a,setIsOpenModal:o}),t.createElement(O,null,t.createElement(S,null,t.createElement(v,{questions:u})),t.createElement(w,null)),s&&t.createElement(C,{setIsOpenModal:o,orgName:c,setOrgName:i,clientName:l,setClientName:p,calculatorProperties:e,prices:a}))}const S=n.div`
1
+ import t from"react";import n from"styled-components";import{breakpoints as m}from"@redocly/theme/core/utils";import{CalculatorWrapper as d,Menu as f,TopCalculatorBlock as g}from"./components";import{Period as b,Plan as h,Product as P,ProductBundle as y}from"../pricing/types/types";import{BottomBanner as w,QuestionsSection as v}from"../pricing/components";import{ConfiguredLayout as O}from"../../components/PageWrapper/ConfiguredLayout";import{getPricePerSeats as j}from"./calculations/getPricePerSeats";import{getPricePerProjects as x}from"./calculations/getPricePerProjects";import{getPricePerPages as E}from"./calculations/getPricePerPages";import{detectBundle as N}from"../pricing/calculations/detectBundle";import{DownloadModal as C}from"./components/DownloadModal";const Q={seo:{title:"Calculator"},slug:"/calculator"};function $(){const[s,o]=t.useState(!1),[c,i]=t.useState(""),[l,p]=t.useState(""),u=[{name:"How do I estimate my pages?",text:'<p>A page is counted for every route served in the project. You can use the <a href="/docs/cli/commands/preview">preview command</a> to count the number of pages. Or, you can see the number of pages in the webview inside of the Reunite editor.</p>'},{name:"What if I exceed my pages count?",text:"<p>You can set a budget for the number of pages. You are billed monthly in arrears based on actual usage for the number of pages. You cannot exceed your number of pages count because Redocly blocks the deployment from completing to prevent exceeding your budget. You may adjust your budget up or down at any time from the billing portal.</p>"},{name:"What is a project?",text:"<p>A project maps to a website. You can add a custom domain for the project, such as <span>docs.example.com</span>. A single project can have multiple previews because each pull request (change) made to the default branch triggers a preview to build and deploy to a different non-production website. The purpose of that website is for you or your colleagues to be able to review prior to approving the changes.</p>"}],[e,r]=t.useState({coreProducts:[P.REDOC],productBundle:y.ONE,plan:h.PRO,period:b.MONTH,seatsPrice:0,numOfSeats:5,price:0,numOfPages:100,pagesPrice:0,projectsPrice:0,projectsNumber:1});t.useEffect(()=>{N(e.coreProducts,r)},[e.coreProducts]);let a={seats:j(e.plan,e.numOfSeats,e.productBundle,e.period),projects:x(e.projectsNumber,e.period),pages:E(e.plan,e.numOfPages,e.period)};return t.createElement(B,null,t.createElement(g,null),t.createElement(d,{calculatorProperties:e,setCalculatorProperties:r}),t.createElement(f,{calculatorProperties:e,prices:a,setIsOpenModal:o}),t.createElement(O,null,t.createElement(S,null,t.createElement(v,{questions:u})),t.createElement(w,null)),s&&t.createElement(C,{setIsOpenModal:o,orgName:c,setOrgName:i,clientName:l,setClientName:p,calculatorProperties:e,prices:a}))}const S=n.div`
2
2
  display: grid;
3
3
  position: relative;
4
4
  width: -webkit-fill-available;
@@ -1,4 +1,4 @@
1
- import e from"react";import d from"styled-components";import{Period as w,Plan as b,Product as P,ProductBundle as v}from"./types/types";import{PricingTitle as x,PlansSection as E,UpgradeSection as S,QuestionsSection as j,BottomBanner as I,RespectMonitoring as W}from"./components";import{breakpoints as o}from"@redocly/theme/core/utils";import{ConfiguredLayout as B}from"../../components/PageWrapper/ConfiguredLayout";import{detectBundle as C}from"./calculations/detectBundle";const $={seo:{title:"Pricing"},slug:"/pricing"};function L(){const[t,a]=e.useState({coreProducts:[P.REDOC],productBundle:v.ONE,plan:b.ENTERPRISE,period:w.MONTH,seatsPrice:0,numOfSeats:5,price:0,numOfPages:100,pagesPrice:0,projectsPrice:0,projectsNumber:1}),p=[{name:"What's a seat/user?",text:"<p>A user is someone with a Redocly account and whether the login occurs through the Redocly login provider or your own identity provider with single-sign-on (SSO).</p><p> Seats count for users who have the OWNER, MEMBER, or COMMITTER roles. Additional roles such as BILLING and VIEWER are users that do not count towards your seat limits.</p>"},{name:"Do you charge for readers?",text:"<p>We do not charge for readers. We call those roles viewers.</p>"},{name:"Do you charge for page views?",text:"<p>We do not charge for page views. Our cost of bandwidth is minimal and we do not need to charge for them.</p>"},{name:"Why do you charge for contributors?",text:"<p>We've gone to great lengths to make it easier to contribute. This includes meeting developers where they are, in their IDEs and Git tools.</p><p>At the same time, others can join in a web-based experience with a Webview and visual review tool. We've put a lot of time and effort into the project, and charge based on actual contributions.</p>"},{name:"Why do you charge for extra pages?",text:"<p>Pages in a project affect the resources we allocate to host your project. Unlike Redocly of the past, we run your project as a server which allows for amazingly rich user experiences and a lot of extensibility not available in a static site. This in turn consumes extra memory and CPU to run and grows as the number of pages grow. Fortunately, we also found that as the number of pages grow the value to you and your customers also grows. Paying for extra pages is not a penalty. We rather think of it as a win-win.</p>"},{name:"Can I set a budget for metered items?",text:"<p>There is one metered items: pages.</p><p>Your plan includes fair usage and 80% of customers should incur no additional costs. Additional metered usage can be restricted by setting a monthly budget in the billing center.</p>"},{name:"What happens if we hit a usage limit?",text:"<p>Budgets are set for metered items and usage limits are part of your paid-in-advance order configurations. This prevents any surprises on your billing statements.</p><ul><li>Seats: Once the project seats purchased is reached, you cannot invite another user. In the case that you use SSO with JIT sign up, the user cannot login successfully until additional seats are purchased. Seats are billed in advance.</li><li>Projects: your plan includes a certain number of projects. Once you reach that limit, you cannot create any additional projects unless you purchase additional projects. Projects are purchased in advance.</li><li>Pages: each route in your project website counts as a page. When you reach your page limit as set by your budget, no additional deploys are possible until you reduce your limit to at or below the allowed number of pages (or increase your budget).</li></ul></p>"},{name:"Can we get your W-9 tax ID?",text:'<p>Yes, you can download our W-9 with our tax ID on <a href="/billing/w-9">this page</a>.</p>'},{name:"How do I estimate the cost?",text:'<p>To make estimations for your project please visit the <a href="/calculator">pricing calculator page</a>.</p>'}],[r,s]=e.useState(5),[m,i]=e.useState("5"),[T,c]=e.useState(!1);e.useEffect(()=>{C(t.coreProducts,a)},[t.coreProducts]);const h=()=>{document.getElementById("selected-products")?.scrollIntoView({behavior:"smooth",block:"center"})},g=l=>{const u=l.target.value;i(u);const n=u.replace(/[^\d]/g,"");n===""||isNaN(Number(n))?s(1):s(Number(n))},f=()=>{c(!0)},y=()=>{c(!1),i(r.toString())};return e.createElement(R,null,e.createElement(B,null,e.createElement(x,null),e.createElement(E,{period:t.period,setCalculatorProperties:a,plan:t.plan,amountSelectedProjects:t.productBundle,onChange:g,onFocus:f,onBlur:y,seats:r,inputValue:m,calculatorProperties:t}),e.createElement(S,{selectedProducts:t.coreProducts,period:t.period,onClick:h,seats:r,amountSelectedProjects:t.productBundle,setCalculatorProperties:a}),e.createElement(W,null),e.createElement(O,null,e.createElement(j,{questions:p})),e.createElement(I,null)))}const O=d.div`
1
+ import e from"react";import d from"styled-components";import{Period as w,Plan as b,Product as P,ProductBundle as v}from"./types/types";import{PricingTitle as x,PlansSection as E,UpgradeSection as S,QuestionsSection as j,BottomBanner as I,RespectMonitoring as W}from"./components";import{breakpoints as o}from"@redocly/theme/core/utils";import{ConfiguredLayout as B}from"../../components/PageWrapper/ConfiguredLayout";import{detectBundle as C}from"./calculations/detectBundle";const $={seo:{title:"Pricing"},slug:"/pricing"};function L(){const[t,a]=e.useState({coreProducts:[P.REDOC],productBundle:v.ONE,plan:b.ENTERPRISE,period:w.MONTH,seatsPrice:0,numOfSeats:5,price:0,numOfPages:100,pagesPrice:0,projectsPrice:0,projectsNumber:1}),p=[{name:"What's a seat/user?",text:"<p>A user is someone with a Redocly account and whether the login occurs through the Redocly login provider or your own identity provider with single-sign-on (SSO).</p><p> Seats count for users who have the OWNER, MEMBER, or COMMITTER roles. Additional roles such as BILLING and VIEWER are users that do not count towards your seat limits.</p>"},{name:"Do you charge for readers?",text:"<p>We do not charge for readers. We call those roles viewers.</p>"},{name:"Do you charge for page views?",text:"<p>We do not charge for page views. Our cost of bandwidth is minimal and we do not need to charge for them.</p>"},{name:"Why do you charge for contributors?",text:"<p>We've gone to great lengths to make it easier to contribute. This includes meeting developers where they are, in their IDEs and Git tools.</p><p>At the same time, others can join in a web-based experience with a Webview and visual review tool. We've put a lot of time and effort into the project, and charge based on actual contributions.</p>"},{name:"Why do you charge for extra pages?",text:"<p>Pages in a project affect the resources we allocate to host your project. Unlike Redocly of the past, we run your project as a server which allows for amazingly rich user experiences and a lot of extensibility not available in a static site. This in turn consumes extra memory and CPU to run and grows as the number of pages grow. Fortunately, we also found that as the number of pages grow the value to you and your customers also grows. Paying for extra pages is not a penalty. We rather think of it as a win-win.</p>"},{name:"Can I set a budget for metered items?",text:"<p>There is one metered items: pages.</p><p>Your plan includes fair usage and 80% of customers should incur no additional costs. Additional metered usage can be restricted by setting a monthly budget in the billing center.</p>"},{name:"What happens if we hit a usage limit?",text:"<p>Budgets are set for metered items and usage limits are part of your paid-in-advance order configurations. This prevents any surprises on your billing statements.</p><ul><li>Seats: Once the project seats purchased is reached, you cannot invite another user. In the case that you use SSO with JIT sign up, the user cannot login successfully until additional seats are purchased. Seats are billed in advance.</li><li>Projects: your plan includes a certain number of projects. Once you reach that limit, you cannot create any additional projects unless you purchase additional projects. Projects are purchased in advance.</li><li>Pages: each route in your project website counts as a page. When you reach your page limit as set by your budget, no additional deployments are possible until you reduce your limit to at or below the allowed number of pages (or increase your budget).</li></ul></p>"},{name:"Can we get your W-9 tax ID?",text:'<p>Yes, you can download our W-9 with our tax ID on <a href="/billing/w-9">this page</a>.</p>'},{name:"How do I estimate the cost?",text:'<p>To make estimations for your project please visit the <a href="/calculator">pricing calculator page</a>.</p>'}],[r,s]=e.useState(5),[m,i]=e.useState("5"),[T,c]=e.useState(!1);e.useEffect(()=>{C(t.coreProducts,a)},[t.coreProducts]);const h=()=>{document.getElementById("selected-products")?.scrollIntoView({behavior:"smooth",block:"center"})},g=l=>{const u=l.target.value;i(u);const n=u.replace(/[^\d]/g,"");n===""||isNaN(Number(n))?s(1):s(Number(n))},f=()=>{c(!0)},y=()=>{c(!1),i(r.toString())};return e.createElement(R,null,e.createElement(B,null,e.createElement(x,null),e.createElement(E,{period:t.period,setCalculatorProperties:a,plan:t.plan,amountSelectedProjects:t.productBundle,onChange:g,onFocus:f,onBlur:y,seats:r,inputValue:m,calculatorProperties:t}),e.createElement(S,{selectedProducts:t.coreProducts,period:t.period,onClick:h,seats:r,amountSelectedProjects:t.productBundle,setCalculatorProperties:a}),e.createElement(W,null),e.createElement(O,null,e.createElement(j,{questions:p})),e.createElement(I,null)))}const O=d.div`
2
2
  display: grid;
3
3
  position: relative;
4
4
  width: -webkit-fill-available;
@@ -1 +1 @@
1
- import e from"react";import{Link as t}from"@redocly/theme";import{List as o,ListItem as r}from"../../components/List/List";import a from"../../images/logos/adobe.svg";import n from"../../images/logos/checkr.svg";import s from"../../images/logos/github.svg";import i from"../../images/logos/hpe.svg";import l from"../../images/logos/logo-adatree.png";import c from"../../images/logos/logo-viesure.png";import u from"../../images/logos/t-mobile.svg";import p from"../../images/logos/trend-micro.svg";import d from"../../images/logos/tripadvisor.svg";import m from"../checkr/images/img_1.png";import f from"../viesure/images/petra-herbst.png";import h from"../reference-docs/images/shane-doolan.png";const x={"API docs":[{name:"3-panel or stacked docs",info:"The industry's favorite design, fully responsive",starter:!0,basic:!0,pro:!0,enterprise:!0},{name:"Custom theming",info:"Easily theme the docs to match your brand",starter:!0,basic:!0,pro:!0,enterprise:!0},{name:"High speed",info:"Page loads up to 10x faster than the open-source version",starter:!0,basic:!0,pro:!0,enterprise:!0},{name:"\u201CTry It\u201D API console",info:"Let your viewers send API requests directly from the docs, with authentication options",starter:!0,basic:!0,pro:!0,enterprise:!0},{name:"Advanced search and Ctrl+F override",info:"Powerful search with detailed results, including request and response parameters, and descriptions",starter:!0,basic:!0,pro:!0,enterprise:!0},{name:"Version switcher",info:"A version switcher for different API versions, integrated into your API docs project",starter:!0,basic:!0,pro:!0,enterprise:!0},{name:"Private-labeled",info:"Remove the \u201CPowered by Redocly\u201D branding",starter:!1,basic:!1,pro:!0,enterprise:!0},{name:"Multiple APIs",info:"Document an entire catalog of APIs",starter:!1,basic:!1,pro:!0,enterprise:!0},{name:"Step-by-step guides",info:"Chain sequences of APIs and connect response data to subsequent requests",starter:!1,basic:!1,pro:!1,enterprise:!0},{name:"Prefill security credentials",info:`Simplify the "Try It" console by prefilling your users' security credentials based on their identity`,starter:!1,basic:!1,pro:!1,enterprise:!0}],"Contextual docs":[{name:"Reuse API code examples, try-it, and schemas",info:"Use components generated from your API definition as a single source of truth (use markdown snippets like you would $ref JSON)",starter:!1,basic:!1,pro:!1,enterprise:!0},{name:"Markdown docs",info:"Add tutorials, how-to, and other helpful contextual docs using Markdown files",starter:!1,basic:!1,pro:!1,enterprise:!0},{name:"Diagrams",info:"Insert Mermaid charts and diagrams directly into the documentation",starter:!1,basic:!1,pro:!1,enterprise:!0},{name:"Custom React components",info:"Create your own custom React components and easily insert them using MDX",starter:!1,basic:!1,pro:!1,enterprise:!0},{name:"Server-index search",info:"Enhanced search with more detailed results, including request and response parameters, and descriptions using the server index",starter:!1,basic:!1,pro:!1,enterprise:!0},{name:"SEO features",info:"Built-in descriptions, redirects, backlinks, lang tags and much more",starter:!1,basic:!1,pro:!0,enterprise:!0},{name:"Role-based content access",info:"Protect access to docs and authentication schemes using a range of SSO providers",starter:!1,basic:!1,pro:!1,enterprise:!0}],"API registry":[{name:"OpenAPI Spec 2 fka Swagger support",starter:!0,basic:!0,pro:!0,enterprise:!0},{name:"OpenAPI Spec 3.0 support",starter:!0,basic:!0,pro:!0,enterprise:!0},{name:"OpenAPI Spec 3.1 support",starter:!0,basic:!0,pro:!0,enterprise:!0},{name:"Validation with precise errors",info:"Find API spec errors by file, line, character number",starter:!0,basic:!0,pro:!0,enterprise:!0},{name:"Branches",info:"Multiple branches per API version",starter:!0,basic:!0,pro:!0,enterprise:!0},{name:"Versions",info:"An API can have multiple versions in the registry",starter:!0,basic:!0,pro:!0,enterprise:!0},{name:"Single source of truth",info:"Registers when the OpenAPI definition is used in other OpenAPI definitions, API docs and developer portals",starter:!0,basic:!0,pro:!0,enterprise:!0},{name:"Mock servers",info:"Mock servers for your primary and preview branches for APIs.",starter:!1,basic:!1,pro:!0,enterprise:!0}],Integrations:[{name:"URL or file upload",info:"Add your API definitions via URL or file upload",starter:!0,basic:!0,pro:!0,enterprise:!0},{name:"GitHub",starter:!0,basic:!0,pro:!0,enterprise:!0},{name:"GitHub Enterprise (cloud)",starter:!0,basic:!0,pro:!0,enterprise:!0},{name:"Bitbucket Cloud",starter:!0,basic:!0,pro:!0,enterprise:!0},{name:"CI/CD",info:"Link Workflows to your CI/CD pipeline with one command, without needing special permissions",starter:!0,basic:!0,pro:!0,enterprise:!0},{name:"GitLab",starter:!0,basic:!0,pro:!0,enterprise:!0},{name:"GitLab self-managed",starter:!1,basic:!1,pro:!0,enterprise:!0},{name:"Azure Repos",starter:!1,basic:!1,pro:!0,enterprise:!0},{name:"GitHub Enterprise (on-premise)",info:"Integrates with GitHub Enterprise on your local network using the familiar GitHub integration flow",starter:!1,basic:!1,pro:!1,enterprise:!0},{name:"Bitbucket Server / Data Center",starter:!1,basic:!1,pro:!1,enterprise:!0},{name:"Mulesoft",info:"Authorization proxy to make requests to the Mulesoft API",starter:!1,basic:!1,pro:!1,enterprise:!0},{name:"Apigee",info:"API catalog and developer onboarding and credentials integration",starter:!1,basic:!1,pro:!1,enterprise:!0}],Deployment:[{name:"Redocly global CDN",info:"Backed by AWS CloudFront",starter:!0,basic:!0,pro:!0,enterprise:!0},{name:"Instant cache invalidation",info:"Once your build is uploaded, we flip the switch and it goes live. Changes in your build are instantly pushed to our global CDN",starter:!0,basic:!0,pro:!0,enterprise:!0},{name:"Rollbacks",info:"Instantly rollback changes",starter:!0,basic:!0,pro:!0,enterprise:!0},{name:"Email notifications",info:"Receive email notifications confirming successful deployments",starter:!0,basic:!0,pro:!0,enterprise:!0},{name:"Public docs",info:"The public may access your API documentation",starter:!1,basic:!0,pro:!0,enterprise:!0},{name:"Custom domains",info:"Allows creation of custom domains",starter:!1,basic:!1,pro:!0,enterprise:!0},{name:"PR previews",info:"Generates preview builds of each pull request",starter:!1,basic:!1,pro:!0,enterprise:!0},{name:"Access control - Redocly users",info:"Your Redocly users may access your API documentation. User account limits apply",starter:!0,basic:!0,pro:!0,enterprise:!0},{name:"Access control - basic auth",info:"Control access with basic auth",starter:!1,basic:!1,pro:!0,enterprise:!0},{name:"Access control - SSO",info:"Control access via SSO (SAML2 or OIDC) to your documentation and Workflows",starter:!1,basic:!1,pro:!0,enterprise:!0},{name:"Docker container",info:"Allows deployment using Docker",starter:!1,basic:!1,pro:!1,enterprise:!0},{name:"On-premise",info:"Host Redocly documentation on your on-premise or data center servers",starter:!1,basic:!1,pro:!1,enterprise:!0}],Usage:[{name:"Users (viewers, members, owners)",info:"Invite team members and collaborate on creating your API documentation. Additional users available for $30 USD/month per user",starter:"2",basic:"3",pro:"10",enterprise:"Metered"},{name:"Custom domains",starter:"0",basic:"0",pro:"3",enterprise:"Metered"},{name:"API registry validations and bundles per month",info:"Number of validation and bundles of the API definitions in the registry (validation and bundle counts as one). Extra validations and bundles available in packs of 100 for $5 USD/month",starter:"50",basic:"120",pro:"500",enterprise:"1,000"},{name:"Doc builds per month",info:"Number of builds and deploys of the docs (API docs or developer portals) per month (for previews and production). Extra builds available in packs of 100 for $15 USD/month",starter:"20",basic:"120",pro:"500",enterprise:"1,000"},{name:"Public page views (monthly)",info:"Number of page views that you can have per month. We`ll contact you if you are approaching your limit",starter:"n/a",basic:"Unlimited",pro:"Unlimited",enterprise:"Unlimited"}],Support:[{name:"Email support",info:"Get direct email support from Redocly's professional staff",starter:!1,basic:!0,pro:!0,enterprise:!0},{name:"SLA",info:"Service-level agreement 99.99% for both docs and 99.9% for Workflows",starter:!1,basic:!1,pro:!0,enterprise:!0},{name:"Training/Integration specialist",info:"Work directly with our expert staff for training and integration assistance",starter:!1,basic:!1,pro:!1,enterprise:!0},{name:"Dedicated Slack channel",info:"Direct access to a dedicated Slack channel, if your organization uses Slack",starter:!1,basic:!1,pro:!1,enterprise:"optional"},{name:"Dedicated point of contact",info:"Direct access to a Redocly account representative to assist you in any of your needs",starter:!1,basic:!1,pro:!1,enterprise:"optional"},{name:"Professional services",info:"Setup, configuration and customization from our experts (free hours included in each enterprise plan)",starter:!1,basic:!1,pro:!1,enterprise:"optional"}]},L={starter:["API registry","Dabble with API docs","Learn OpenAPI"],basic:["API docs","10x loading speed","\u201CTry It\u201D API console","Unlimited API operations","3 users (3 roles: participants, members, owners)","File/Line/Character precise validation errors","Github integration","URL/file integration","Global CDN","Email notifications","Email support"],pro:["Private-labeled (Redocly branding removed)","Multiple APIs","Content protection: Basic auth, SSO, Redocly login","Up to 10 users (3 roles: participants, members, owners)","Up to 3 custom domains","Deployment access control","Deployment PR previews","SLA"],enterprise:["Advanced search (server index)","Content protection LDAP/SAML/SSO","Metered users (participants, members, owners)","Unlimited custom domains","Advanced role-based access controls","Governance of API design standards","Github Enterprise integration","Docker container deployment","On-Premise deployment","Access to training and integration specialist","Dedicated point of contact","Access to professional services"]},O=[{title:"What are the key differences between Redoc and Redocly?",description:e.createElement(e.Fragment,null,"Redoc Community Edition is a free open-source software. Redocly has developed extensive enhancements utilizing the Redoc open core, creating Redocly API docs and Portals.",e.createElement("br",null),e.createElement("br",null),"The ",e.createElement(t,{to:"/redoc-vs-reference/"},"Redoc vs Redocly page")," covers the main differences between Redoc and Redocly Reference Docs. To compare Redoc with API docs and Portals side by side, read Redoc's"," ",e.createElement(t,{to:"https://github.com/Redocly/redoc#redoc-vs-reference-vs-portals",target:"_blank"},"README on GitHub"),".")},{title:"Can I use Redocly on-premise?",description:e.createElement(e.Fragment,null,"You can run our products in your local environment to assist you in writing your docs or API definitions. However, the search function doesn't work in the local environment. With Redocly's enterprise plan, a license key is made available for you to run our software in your production on-premise or data center deployment."," ",e.createElement(t,{to:"/enterprise/"},"Learn more about enterprise")," or"," ",e.createElement(t,{to:"/contact-sales/"},"contact sales")," to get a proposal personalized to your needs.")},{title:"Which Git providers does Redocly support?",description:"Redocly currently integrates with GitHub, GitLab, and Bitbucket on all plans, including the cloud versions of GitHub Enterprise and Bitbucket. We also support CI/CD pipelines. The Professional also adds GitLab self-managed and Azure Repos/Devops. The Enterprise plans also add GitHub Enterprise on-premise and Bitbucket server to the mix. Enterprise also integrates with Mulesoft and Apigee."},{title:"Why is the developer portal in beta?",description:e.createElement(e.Fragment,null,"Our developer portal is not available to new customers at this time. We're working on a new suite of products which will be announced later in 2024. Read our"," ",e.createElement(t,{to:"/blog/"},"blog")," for announcements about new features, and be the first to celebrate the developer portal coming of age and out of beta \u{1F973}.")}],U=[{title:"Can I try Redocly for free?",description:"Redocly has a free starter plan. In addition, you can try the other plans for free with a 14-day free trial."},{title:"Can I upgrade or downgrade any time?",description:"Yes. Redocly is a pay-as-you-go service. You can upgrade, downgrade or cancel your renewal at any time with no cancellation fees. You are expected to pay any past-due invoices."},{title:"Do you offer annual billing?",description:e.createElement(e.Fragment,null,"Yes! You can access annual billing inside your Redocly profile or by contacting"," ",e.createElement(t,{to:"mailto:team@redocly.com"},"team@redocly.com"),". Our default billing cycle is monthly.")},{title:"What types of payment do you accept?",description:"We accept Visa, Mastercard, Discover, and American Express. At this time, we only accept online payments for the Basic and Professional plans. For purchases of over $30,000, we accept purchase orders and will be able to invoice. For invoice payments, we accept all the previously mentioned payment methods, as well as checks, wire transfers, and electronic funds transfers."},{title:"How many APIs and versions are allowed?",description:e.createElement(e.Fragment,null,"There is no limit on the number of APIs and versions for the plans mentioned above. Related usage limitations based on your plan are a number of monthly (a) validations and bundles, and (b) docs builds. An"," ",e.createElement(t,{to:"https://www.youtube.com/watch?v=CB8x_UY3Qbk&list=PLEVkfMy0QK9TYapZ5WyYeRa5P44tiPxZL&index=10"},"API catalog")," ","is available from the Professional plan which allows users to search for and access multiple APIs from within a single documentation website.")},{title:"Which types of users are included in per-user pricing?",description:"Paid users include owners, members and participants (usually with view-only permission), all of which can log in to Redocly\u2019s cloud app Workflows or your protected docs. Anonymous visitors who access your published documentation do not count towards this limit. In fact, all paid plans include unlimited page views."},{title:"What happens if I reach my usage limits?",description:e.createElement(e.Fragment,null,"If you reach your usage limit in an activity with a monthly cap, you can wait for the next billing cycle for that limit to reset, or you can buy add-ons to increase your monthly usage with the Pro or Enterprise plan:",e.createElement(o,{fontWeight:400},e.createElement(r,null,e.createElement("strong",null,"Validations and bundles:")," 100 for $5 USD/month"),e.createElement(r,null,e.createElement("strong",null,"Builds and deploys:")," 100 for $15 USD/month"),e.createElement(r,null,e.createElement("strong",null,"Additional users:")," $30 USD/month per user")),"For example, if you reach 500 docs builds on the Pro plan, you can buy 100 more for $15 USD/month. Subsequent months will reset at 600 builds, unless you cancel the add-on subscription.",e.createElement("br",null),e.createElement("br",null),"Static limits such as the total number of documentation pages or APIs and versions depend solely on your plan. Upgrade your plan to raise those limits.")},{title:"What kind of support does Redocly offer?",description:"Redocly offers direct email support on all paid plans. Enterprise plans come with additional access to training and integration specialists and optional premium support with a support SLA, as well as real-time Slack and phone/Zoom support, dedicated success managers, professional services, and response time under one day."},{title:"Do you offer discounts for fellow startups?",description:e.createElement(e.Fragment,null,"Yes! We offer 75% off one year of the Professional plan to early-stage startups. To qualify, your startup should be less than three years old, a new Redocly customer, have 10 employees or fewer, and no more than $1M in annual revenue.")}],T=[{title:"Is my data safe?",description:e.createElement(e.Fragment,null,"Yes. We take security very seriously across the board, from internal practices to third-party provider selection. We conduct penetration tests, train our people in security practices, and use AWS ECR to scan our containers. We also have an aggressive service availability policy, with frequent backups to protect your data. Learn more on our"," ",e.createElement(t,{to:"/security/"},"security overview page"),".")},{title:"Who owns my data?",description:e.createElement(e.Fragment,null,"You do. Your API definitions, docs and Portals are yours. Redocly will use your API definitions to provide you service, and you can export data at any time you choose. To learn more about data protection, read our ",e.createElement(t,{to:"/dpa/"},"data-processing agreement")," and"," ",e.createElement(t,{to:"/privacy-notice/"},"privacy notice"),".")},{title:"What security and compliance reports does Redocly have?",description:e.createElement(e.Fragment,null,"We understand that meeting compliance requirements is critical for modern API businesses. Therefore, we take effort to constantly upgrade our compliance and make this information readily available to you. The following reports are available for Redocly:",e.createElement(o,{fontWeight:400},e.createElement(r,null,e.createElement("strong",null,"CAIQ v4")," - Consensus Assessment Initiative Questionnaire, available on the"," ",e.createElement(t,{to:"https://cloudsecurityalliance.org/star/registry/redocly/services/redocly/",target:"_blank"},"CSA website")),e.createElement(r,null,e.createElement("strong",null,"PCI DSS compliance"),", available via our providers Stripe and Rebilly"),e.createElement(r,null,e.createElement("strong",null,"SOC 2 Type II")," - available only to logged-in users"),e.createElement(r,null,e.createElement("strong",null,"Penetration testing report")," - available only to logged-in users")),"You can find the complete overview on our ",e.createElement(t,{to:"/security/"},"security page"),". To access the protected reports, refer to these"," ",e.createElement(t,{to:"/docs-legacy/settings/security/"},"instructions")," in the documentation.")},{title:"Do you offer an SLA?",description:e.createElement(e.Fragment,null,"Yes, Redocly offers a Service-Level Agreement for customers on the Professional plan or higher, covering a 99.99% monthly uptime for docs and 99.9% monthly uptime for Redocly's cloud app Workflows. You can find our SLA"," ",e.createElement(t,{to:"/sla/"},"here"),".")}],G=[{logo:l,description:"Redocly has helped us win customers. I've been in demo meetings where prospects have said to me \u201CWe don't really have any more questions. We looked at your documentation and it's excellent\u201D.",author:{img:h,name:"Shane Doolan",position:"CTO"},link:"#",isOptions:!0},{logo:c,description:"Updates and bug fixes are live within a few minutes - who wouldn't like that? \u{1F609}",author:{img:f,name:"Petra Herbst",position:"Product Advocate & Technical Writer"},link:"/customers/viesure/",isOptions:!0},{logo:n,description:"Our developers can retain control of their docs while no longer having to maintain the proprietary software to publish them.",author:{img:m,name:"Beth Wright",position:"Senior Technical Writer"},link:"/customers/checkr/",isOptions:!1}],M=[s,i,a,u,p,d];export{U as BILLING_AND_USAGE_FAQ,G as COMPANIES,M as LOGOS,x as PLANS,L as PLANS_FEATURES,O as PRODUCT_FAQ,T as SECURITY_AND_PRIVACY_FAQ};
1
+ import e from"react";import{Link as t}from"@redocly/theme";import{List as o,ListItem as r}from"../../components/List/List";import a from"../../images/logos/adobe.svg";import n from"../../images/logos/checkr.svg";import s from"../../images/logos/github.svg";import i from"../../images/logos/hpe.svg";import l from"../../images/logos/logo-adatree.png";import c from"../../images/logos/logo-viesure.png";import u from"../../images/logos/t-mobile.svg";import p from"../../images/logos/trend-micro.svg";import d from"../../images/logos/tripadvisor.svg";import m from"../checkr/images/img_1.png";import f from"../viesure/images/petra-herbst.png";import h from"../reference-docs/images/shane-doolan.png";const x={"API docs":[{name:"3-panel or stacked docs",info:"The industry's favorite design, fully responsive",starter:!0,basic:!0,pro:!0,enterprise:!0},{name:"Custom theming",info:"Easily theme the docs to match your brand",starter:!0,basic:!0,pro:!0,enterprise:!0},{name:"High speed",info:"Page loads up to 10x faster than the open-source version",starter:!0,basic:!0,pro:!0,enterprise:!0},{name:"\u201CTry It\u201D API console",info:"Let your viewers send API requests directly from the docs, with authentication options",starter:!0,basic:!0,pro:!0,enterprise:!0},{name:"Advanced search and Ctrl+F override",info:"Powerful search with detailed results, including request and response parameters, and descriptions",starter:!0,basic:!0,pro:!0,enterprise:!0},{name:"Version switcher",info:"A version switcher for different API versions, integrated into your API docs project",starter:!0,basic:!0,pro:!0,enterprise:!0},{name:"Private-labeled",info:"Remove the \u201CPowered by Redocly\u201D branding",starter:!1,basic:!1,pro:!0,enterprise:!0},{name:"Multiple APIs",info:"Document an entire catalog of APIs",starter:!1,basic:!1,pro:!0,enterprise:!0},{name:"Step-by-step guides",info:"Chain sequences of APIs and connect response data to subsequent requests",starter:!1,basic:!1,pro:!1,enterprise:!0},{name:"Prefill security credentials",info:`Simplify the "Try It" console by prefilling your users' security credentials based on their identity`,starter:!1,basic:!1,pro:!1,enterprise:!0}],"Contextual docs":[{name:"Reuse API code examples, try-it, and schemas",info:"Use components generated from your API definition as a single source of truth (use markdown snippets like you would $ref JSON)",starter:!1,basic:!1,pro:!1,enterprise:!0},{name:"Markdown docs",info:"Add tutorials, how-to, and other helpful contextual docs using Markdown files",starter:!1,basic:!1,pro:!1,enterprise:!0},{name:"Diagrams",info:"Insert Mermaid charts and diagrams directly into the documentation",starter:!1,basic:!1,pro:!1,enterprise:!0},{name:"Custom React components",info:"Create your own custom React components and easily insert them using MDX",starter:!1,basic:!1,pro:!1,enterprise:!0},{name:"Server-index search",info:"Enhanced search with more detailed results, including request and response parameters, and descriptions using the server index",starter:!1,basic:!1,pro:!1,enterprise:!0},{name:"SEO features",info:"Built-in descriptions, redirects, backlinks, lang tags and much more",starter:!1,basic:!1,pro:!0,enterprise:!0},{name:"Role-based content access",info:"Protect access to docs and authentication schemes using a range of SSO providers",starter:!1,basic:!1,pro:!1,enterprise:!0}],"API registry":[{name:"OpenAPI Spec 2 fka Swagger support",starter:!0,basic:!0,pro:!0,enterprise:!0},{name:"OpenAPI Spec 3.0 support",starter:!0,basic:!0,pro:!0,enterprise:!0},{name:"OpenAPI Spec 3.1 support",starter:!0,basic:!0,pro:!0,enterprise:!0},{name:"Validation with precise errors",info:"Find API spec errors by file, line, character number",starter:!0,basic:!0,pro:!0,enterprise:!0},{name:"Branches",info:"Multiple branches per API version",starter:!0,basic:!0,pro:!0,enterprise:!0},{name:"Versions",info:"An API can have multiple versions in the registry",starter:!0,basic:!0,pro:!0,enterprise:!0},{name:"Single source of truth",info:"Registers when the OpenAPI definition is used in other OpenAPI definitions, API docs and developer portals",starter:!0,basic:!0,pro:!0,enterprise:!0},{name:"Mock servers",info:"Mock servers for your primary and preview branches for APIs.",starter:!1,basic:!1,pro:!0,enterprise:!0}],Integrations:[{name:"URL or file upload",info:"Add your API definitions via URL or file upload",starter:!0,basic:!0,pro:!0,enterprise:!0},{name:"GitHub",starter:!0,basic:!0,pro:!0,enterprise:!0},{name:"GitHub Enterprise (cloud)",starter:!0,basic:!0,pro:!0,enterprise:!0},{name:"Bitbucket Cloud",starter:!0,basic:!0,pro:!0,enterprise:!0},{name:"CI/CD",info:"Link Workflows to your CI/CD pipeline with one command, without needing special permissions",starter:!0,basic:!0,pro:!0,enterprise:!0},{name:"GitLab",starter:!0,basic:!0,pro:!0,enterprise:!0},{name:"GitLab self-managed",starter:!1,basic:!1,pro:!0,enterprise:!0},{name:"Azure Repos",starter:!1,basic:!1,pro:!0,enterprise:!0},{name:"GitHub Enterprise (on-premise)",info:"Integrates with GitHub Enterprise on your local network using the familiar GitHub integration flow",starter:!1,basic:!1,pro:!1,enterprise:!0},{name:"Bitbucket Server / Data Center",starter:!1,basic:!1,pro:!1,enterprise:!0},{name:"Mulesoft",info:"Authorization proxy to make requests to the Mulesoft API",starter:!1,basic:!1,pro:!1,enterprise:!0},{name:"Apigee",info:"API catalog and developer onboarding and credentials integration",starter:!1,basic:!1,pro:!1,enterprise:!0}],Deployment:[{name:"Redocly global CDN",info:"Backed by AWS CloudFront",starter:!0,basic:!0,pro:!0,enterprise:!0},{name:"Instant cache invalidation",info:"Once your build is uploaded, we flip the switch and it goes live. Changes in your build are instantly pushed to our global CDN",starter:!0,basic:!0,pro:!0,enterprise:!0},{name:"Rollbacks",info:"Instantly rollback changes",starter:!0,basic:!0,pro:!0,enterprise:!0},{name:"Email notifications",info:"Receive email notifications confirming successful deployments",starter:!0,basic:!0,pro:!0,enterprise:!0},{name:"Public docs",info:"The public may access your API documentation",starter:!1,basic:!0,pro:!0,enterprise:!0},{name:"Custom domains",info:"Allows creation of custom domains",starter:!1,basic:!1,pro:!0,enterprise:!0},{name:"PR previews",info:"Generates preview builds of each pull request",starter:!1,basic:!1,pro:!0,enterprise:!0},{name:"Access control - Redocly users",info:"Your Redocly users may access your API documentation. User account limits apply",starter:!0,basic:!0,pro:!0,enterprise:!0},{name:"Access control - basic auth",info:"Control access with basic auth",starter:!1,basic:!1,pro:!0,enterprise:!0},{name:"Access control - SSO",info:"Control access via SSO (SAML2 or OIDC) to your documentation and Workflows",starter:!1,basic:!1,pro:!0,enterprise:!0},{name:"Docker container",info:"Allows deployment using Docker",starter:!1,basic:!1,pro:!1,enterprise:!0},{name:"On-premise",info:"Host Redocly documentation on your on-premise or data center servers",starter:!1,basic:!1,pro:!1,enterprise:!0}],Usage:[{name:"Users (viewers, members, owners)",info:"Invite team members and collaborate on creating your API documentation. Additional users available for $30 USD/month per user",starter:"2",basic:"3",pro:"10",enterprise:"Metered"},{name:"Custom domains",starter:"0",basic:"0",pro:"3",enterprise:"Metered"},{name:"API registry validations and bundles per month",info:"Number of validation and bundles of the API definitions in the registry (validation and bundle counts as one). Extra validations and bundles available in packs of 100 for $5 USD/month",starter:"50",basic:"120",pro:"500",enterprise:"1,000"},{name:"Doc builds per month",info:"Number of builds and deployments of the docs (API docs or developer portals) per month (for previews and production). Extra builds available in packs of 100 for $15 USD/month",starter:"20",basic:"120",pro:"500",enterprise:"1,000"},{name:"Public page views (monthly)",info:"Number of page views that you can have per month. We`ll contact you if you are approaching your limit",starter:"n/a",basic:"Unlimited",pro:"Unlimited",enterprise:"Unlimited"}],Support:[{name:"Email support",info:"Get direct email support from Redocly's professional staff",starter:!1,basic:!0,pro:!0,enterprise:!0},{name:"SLA",info:"Service-level agreement 99.99% for both docs and 99.9% for Workflows",starter:!1,basic:!1,pro:!0,enterprise:!0},{name:"Training/Integration specialist",info:"Work directly with our expert staff for training and integration assistance",starter:!1,basic:!1,pro:!1,enterprise:!0},{name:"Dedicated Slack channel",info:"Direct access to a dedicated Slack channel, if your organization uses Slack",starter:!1,basic:!1,pro:!1,enterprise:"optional"},{name:"Dedicated point of contact",info:"Direct access to a Redocly account representative to assist you in any of your needs",starter:!1,basic:!1,pro:!1,enterprise:"optional"},{name:"Professional services",info:"Setup, configuration and customization from our experts (free hours included in each enterprise plan)",starter:!1,basic:!1,pro:!1,enterprise:"optional"}]},L={starter:["API registry","Dabble with API docs","Learn OpenAPI"],basic:["API docs","10x loading speed","\u201CTry It\u201D API console","Unlimited API operations","3 users (3 roles: participants, members, owners)","File/Line/Character precise validation errors","Github integration","URL/file integration","Global CDN","Email notifications","Email support"],pro:["Private-labeled (Redocly branding removed)","Multiple APIs","Content protection: Basic auth, SSO, Redocly login","Up to 10 users (3 roles: participants, members, owners)","Up to 3 custom domains","Deployment access control","Deployment PR previews","SLA"],enterprise:["Advanced search (server index)","Content protection LDAP/SAML/SSO","Metered users (participants, members, owners)","Unlimited custom domains","Advanced role-based access controls","Governance of API design standards","Github Enterprise integration","Docker container deployment","On-Premise deployment","Access to training and integration specialist","Dedicated point of contact","Access to professional services"]},O=[{title:"What are the key differences between Redoc and Redocly?",description:e.createElement(e.Fragment,null,"Redoc Community Edition is a free open-source software. Redocly has developed extensive enhancements utilizing the Redoc open core, creating Redocly API docs and Portals.",e.createElement("br",null),e.createElement("br",null),"The ",e.createElement(t,{to:"/redoc-vs-reference/"},"Redoc vs Redocly page")," covers the main differences between Redoc and Redocly Reference Docs. To compare Redoc with API docs and Portals side by side, read Redoc's"," ",e.createElement(t,{to:"https://github.com/Redocly/redoc#redoc-vs-reference-vs-portals",target:"_blank"},"README on GitHub"),".")},{title:"Can I use Redocly on-premise?",description:e.createElement(e.Fragment,null,"You can run our products in your local environment to assist you in writing your docs or API definitions. However, the search function doesn't work in the local environment. With Redocly's enterprise plan, a license key is made available for you to run our software in your production on-premise or data center deployment."," ",e.createElement(t,{to:"/enterprise/"},"Learn more about enterprise")," or"," ",e.createElement(t,{to:"/contact-sales/"},"contact sales")," to get a proposal personalized to your needs.")},{title:"Which Git providers does Redocly support?",description:"Redocly currently integrates with GitHub, GitLab, and Bitbucket on all plans, including the cloud versions of GitHub Enterprise and Bitbucket. We also support CI/CD pipelines. The Professional also adds GitLab self-managed and Azure Repos/Devops. The Enterprise plans also add GitHub Enterprise on-premise and Bitbucket server to the mix. Enterprise also integrates with Mulesoft and Apigee."},{title:"Why is the developer portal in beta?",description:e.createElement(e.Fragment,null,"Our developer portal is not available to new customers at this time. We're working on a new suite of products which will be announced later in 2024. Read our"," ",e.createElement(t,{to:"/blog/"},"blog")," for announcements about new features, and be the first to celebrate the developer portal coming of age and out of beta \u{1F973}.")}],U=[{title:"Can I try Redocly for free?",description:"Redocly has a free starter plan. In addition, you can try the other plans for free with a 14-day free trial."},{title:"Can I upgrade or downgrade any time?",description:"Yes. Redocly is a pay-as-you-go service. You can upgrade, downgrade or cancel your renewal at any time with no cancellation fees. You are expected to pay any past-due invoices."},{title:"Do you offer annual billing?",description:e.createElement(e.Fragment,null,"Yes! You can access annual billing inside your Redocly profile or by contacting"," ",e.createElement(t,{to:"mailto:team@redocly.com"},"team@redocly.com"),". Our default billing cycle is monthly.")},{title:"What types of payment do you accept?",description:"We accept Visa, Mastercard, Discover, and American Express. At this time, we only accept online payments for the Basic and Professional plans. For purchases of over $30,000, we accept purchase orders and will be able to invoice. For invoice payments, we accept all the previously mentioned payment methods, as well as checks, wire transfers, and electronic funds transfers."},{title:"How many APIs and versions are allowed?",description:e.createElement(e.Fragment,null,"There is no limit on the number of APIs and versions for the plans mentioned above. Related usage limitations based on your plan are a number of monthly (a) validations and bundles, and (b) docs builds. An"," ",e.createElement(t,{to:"https://www.youtube.com/watch?v=CB8x_UY3Qbk&list=PLEVkfMy0QK9TYapZ5WyYeRa5P44tiPxZL&index=10"},"API catalog")," ","is available from the Professional plan which allows users to search for and access multiple APIs from within a single documentation website.")},{title:"Which types of users are included in per-user pricing?",description:"Paid users include owners, members and participants (usually with view-only permission), all of which can log in to Redocly\u2019s cloud app Workflows or your protected docs. Anonymous visitors who access your published documentation do not count towards this limit. In fact, all paid plans include unlimited page views."},{title:"What happens if I reach my usage limits?",description:e.createElement(e.Fragment,null,"If you reach your usage limit in an activity with a monthly cap, you can wait for the next billing cycle for that limit to reset, or you can buy add-ons to increase your monthly usage with the Pro or Enterprise plan:",e.createElement(o,{fontWeight:400},e.createElement(r,null,e.createElement("strong",null,"Validations and bundles:")," 100 for $5 USD/month"),e.createElement(r,null,e.createElement("strong",null,"Builds and deployments:")," 100 for $15 USD/month"),e.createElement(r,null,e.createElement("strong",null,"Additional users:")," $30 USD/month per user")),"For example, if you reach 500 docs builds on the Pro plan, you can buy 100 more for $15 USD/month. Subsequent months will reset at 600 builds, unless you cancel the add-on subscription.",e.createElement("br",null),e.createElement("br",null),"Static limits such as the total number of documentation pages or APIs and versions depend solely on your plan. Upgrade your plan to raise those limits.")},{title:"What kind of support does Redocly offer?",description:"Redocly offers direct email support on all paid plans. Enterprise plans come with additional access to training and integration specialists and optional premium support with a support SLA, as well as real-time Slack and phone/Zoom support, dedicated success managers, professional services, and response time under one day."},{title:"Do you offer discounts for fellow startups?",description:e.createElement(e.Fragment,null,"Yes! We offer 75% off one year of the Professional plan to early-stage startups. To qualify, your startup should be less than three years old, a new Redocly customer, have 10 employees or fewer, and no more than $1M in annual revenue.")}],T=[{title:"Is my data safe?",description:e.createElement(e.Fragment,null,"Yes. We take security very seriously across the board, from internal practices to third-party provider selection. We conduct penetration tests, train our people in security practices, and use AWS ECR to scan our containers. We also have an aggressive service availability policy, with frequent backups to protect your data. Learn more on our"," ",e.createElement(t,{to:"/security/"},"security overview page"),".")},{title:"Who owns my data?",description:e.createElement(e.Fragment,null,"You do. Your API definitions, docs and Portals are yours. Redocly will use your API definitions to provide you service, and you can export data at any time you choose. To learn more about data protection, read our ",e.createElement(t,{to:"/dpa/"},"data-processing agreement")," and"," ",e.createElement(t,{to:"/privacy-notice/"},"privacy notice"),".")},{title:"What security and compliance reports does Redocly have?",description:e.createElement(e.Fragment,null,"We understand that meeting compliance requirements is critical for modern API businesses. Therefore, we take effort to constantly upgrade our compliance and make this information readily available to you. The following reports are available for Redocly:",e.createElement(o,{fontWeight:400},e.createElement(r,null,e.createElement("strong",null,"CAIQ v4")," - Consensus Assessment Initiative Questionnaire, available on the"," ",e.createElement(t,{to:"https://cloudsecurityalliance.org/star/registry/redocly/services/redocly/",target:"_blank"},"CSA website")),e.createElement(r,null,e.createElement("strong",null,"PCI DSS compliance"),", available via our providers Stripe and Rebilly"),e.createElement(r,null,e.createElement("strong",null,"SOC 2 Type II")," - available only to logged-in users"),e.createElement(r,null,e.createElement("strong",null,"Penetration testing report")," - available only to logged-in users")),"You can find the complete overview on our ",e.createElement(t,{to:"/security/"},"security page"),". To access the protected reports, refer to these"," ",e.createElement(t,{to:"/docs-legacy/settings/security/"},"instructions")," in the documentation.")},{title:"Do you offer an SLA?",description:e.createElement(e.Fragment,null,"Yes, Redocly offers a Service-Level Agreement for customers on the Professional plan or higher, covering a 99.99% monthly uptime for docs and 99.9% monthly uptime for Redocly's cloud app Workflows. You can find our SLA"," ",e.createElement(t,{to:"/sla/"},"here"),".")}],G=[{logo:l,description:"Redocly has helped us win customers. I've been in demo meetings where prospects have said to me \u201CWe don't really have any more questions. We looked at your documentation and it's excellent\u201D.",author:{img:h,name:"Shane Doolan",position:"CTO"},link:"#",isOptions:!0},{logo:c,description:"Updates and bug fixes are live within a few minutes - who wouldn't like that? \u{1F609}",author:{img:f,name:"Petra Herbst",position:"Product Advocate & Technical Writer"},link:"/customers/viesure/",isOptions:!0},{logo:n,description:"Our developers can retain control of their docs while no longer having to maintain the proprietary software to publish them.",author:{img:m,name:"Beth Wright",position:"Senior Technical Writer"},link:"/customers/checkr/",isOptions:!1}],M=[s,i,a,u,p,d];export{U as BILLING_AND_USAGE_FAQ,G as COMPANIES,M as LOGOS,x as PLANS,L as PLANS_FEATURES,O as PRODUCT_FAQ,T as SECURITY_AND_PRIVACY_FAQ};
@@ -1,4 +1,4 @@
1
- import e from"react";import t from"styled-components";import l from"../images/eye.svg";import x from"../images/edit.svg";import h from"../images/cloud.svg";import g from"../images/rocket.svg";import f from"../images/eye-active.svg";import u from"../images/edit-active.svg";import w from"../images/cloud-active.svg";import C from"../images/rocket-active.svg";import{Card as m}from"../../../components/Cards/Card";import{VisualReviewsCard as v}from"./VisualReviewsCard";import{EditorCard as I}from"./EditorCard";import{RemoteContentCard as b}from"./RemoteContentCard";import{DeploysCard as k}from"./DeploysCard";import{Cards as A}from"./Cards";import{breakpoints as i}from"@redocly/theme/core/utils";const Q=()=>{const o=[{id:1,title:"Visual reviews",description:"Approve changes quickly",image:l,activeImage:f,children:v},{id:2,title:"Editor",description:"Enhance your documents with ease",image:x,activeImage:u,children:I},{id:3,title:"Remote content",description:"Single source content",image:h,activeImage:w,children:b},{id:4,title:"Deploys",description:"Previews and production audit trail",image:g,activeImage:C,children:k}],[r,d]=e.useState(o[0]),p=n=>{d(n)},a=n=>{const s=(r.id-1+n+o.length)%o.length;d(o[s])};return e.createElement(S,null,e.createElement(A,{cards:o,selectedCard:r,onClick:p}),e.createElement($,null,r.children()),e.createElement(y,{onClick:()=>a(-1)},e.createElement("img",{src:require("../images/arrow-left.svg")})),e.createElement(E,{onClick:()=>a(1)},e.createElement("img",{src:require("../images/arrow-right.svg")})))},c=t.button`
1
+ import e from"react";import t from"styled-components";import l from"../images/eye.svg";import x from"../images/edit.svg";import h from"../images/cloud.svg";import g from"../images/rocket.svg";import f from"../images/eye-active.svg";import u from"../images/edit-active.svg";import w from"../images/cloud-active.svg";import C from"../images/rocket-active.svg";import{Card as m}from"../../../components/Cards/Card";import{VisualReviewsCard as v}from"./VisualReviewsCard";import{EditorCard as I}from"./EditorCard";import{RemoteContentCard as b}from"./RemoteContentCard";import{DeploymentsCard as k}from"./DeploymentsCard";import{Cards as A}from"./Cards";import{breakpoints as i}from"@redocly/theme/core/utils";const Q=()=>{const o=[{id:1,title:"Visual reviews",description:"Approve changes quickly",image:l,activeImage:f,children:v},{id:2,title:"Editor",description:"Enhance your documents with ease",image:x,activeImage:u,children:I},{id:3,title:"Remote content",description:"Single source content",image:h,activeImage:w,children:b},{id:4,title:"Deployments",description:"Previews and production audit trail",image:g,activeImage:C,children:k}],[r,d]=e.useState(o[0]),p=n=>{d(n)},a=n=>{const s=(r.id-1+n+o.length)%o.length;d(o[s])};return e.createElement(S,null,e.createElement(A,{cards:o,selectedCard:r,onClick:p}),e.createElement($,null,r.children()),e.createElement(y,{onClick:()=>a(-1)},e.createElement("img",{src:require("../images/arrow-left.svg")})),e.createElement(E,{onClick:()=>a(1)},e.createElement("img",{src:require("../images/arrow-right.svg")})))},c=t.button`
2
2
  width: 32px;
3
3
  height: 32px;
4
4
  border-radius: 6px;
@@ -0,0 +1,2 @@
1
+ import React from 'react';
2
+ export declare const DeploymentsCard: () => React.JSX.Element;
@@ -0,0 +1,44 @@
1
+ import e from"react";import t from"styled-components";import{Card as r}from"../../../components/Cards/Card";import{breakpoints as n}from"@redocly/theme/core/utils";const p=()=>e.createElement(o,null,e.createElement(i,null,e.createElement(a,null,"See a log of all ",e.createElement("a",null," project deployments ")," with links to corresponding Git branches or PRs. Instant rollbacks available too."))),i=t.div`
2
+ overflow: hidden;
3
+ width: 100%;
4
+ height: 100%;
5
+ padding: 32px;
6
+ min-height: 780px;
7
+ background-image: url(${require("../images/deployments-example-small.svg")});
8
+ object-fit: cover;
9
+ background-size: contain;
10
+ background-repeat: no-repeat;
11
+ background-position: right bottom;
12
+
13
+ @media screen and (min-width: ${n.small}) {
14
+ background-image: url(${require("../images/deployments-example.svg")});
15
+ background-position: center right;
16
+ min-height: 510px;
17
+ }
18
+ `,o=t.div`
19
+ background-image: url(${require("../images/deployments-bg.svg")});
20
+ background-repeat: no-repeat;
21
+ width: 100%;
22
+ height: 100%;
23
+ `,a=t(r)`
24
+ max-width: 272px;
25
+ border-radius: 12px;
26
+
27
+ box-shadow: 0px 8px 28px -6px #1A1C211F;
28
+
29
+ font-family: Inter;
30
+ font-weight: 400;
31
+ font-size: 16px;
32
+ line-height: 24px;
33
+
34
+ a {
35
+ font-weight: 500;
36
+ }
37
+
38
+ @media screen and (min-width: ${n.small}) {
39
+ max-width: 416px;
40
+ }
41
+ @media screen and (min-width: ${n.large}) {
42
+ max-width: 475px;
43
+ }
44
+ `;export{p as DeploymentsCard};
@@ -1,5 +1,5 @@
1
1
  export { Cards } from './Cards';
2
- export { DeploysCard } from './DeploysCard';
2
+ export { DeploymentsCard } from './DeploymentsCard';
3
3
  export { EditorCard } from './EditorCard';
4
4
  export { RemoteContentCard } from './RemoteContentCard';
5
5
  export { VisualReviewsCard } from './VisualReviewsCard';
@@ -1 +1 @@
1
- import{Cards as r}from"./Cards";import{DeploysCard as i}from"./DeploysCard";import{EditorCard as n}from"./EditorCard";import{RemoteContentCard as x}from"./RemoteContentCard";import{VisualReviewsCard as a}from"./VisualReviewsCard";import{CardsSection as C}from"./CardsSection";import{TopReuniteSection as s}from"./TopReuniteSection";import{BottomReuniteSection as S}from"./BottomReuniteSection";import{CenterReuniteSection as l}from"./CenterReuniteSection";import{ExternalGitFeedbackSection as b}from"./ExternalGitFeedbackSection";export{S as BottomReuniteSection,r as Cards,C as CardsSection,l as CenterReuniteSection,i as DeploysCard,n as EditorCard,b as ExternalGitFeedbackSection,x as RemoteContentCard,s as TopReuniteSection,a as VisualReviewsCard};
1
+ import{Cards as r}from"./Cards";import{DeploymentsCard as m}from"./DeploymentsCard";import{EditorCard as i}from"./EditorCard";import{RemoteContentCard as x}from"./RemoteContentCard";import{VisualReviewsCard as a}from"./VisualReviewsCard";import{CardsSection as C}from"./CardsSection";import{TopReuniteSection as s}from"./TopReuniteSection";import{BottomReuniteSection as S}from"./BottomReuniteSection";import{CenterReuniteSection as l}from"./CenterReuniteSection";import{ExternalGitFeedbackSection as b}from"./ExternalGitFeedbackSection";export{S as BottomReuniteSection,r as Cards,C as CardsSection,l as CenterReuniteSection,m as DeploymentsCard,i as EditorCard,b as ExternalGitFeedbackSection,x as RemoteContentCard,s as TopReuniteSection,a as VisualReviewsCard};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@redocly/marketing-pages",
3
- "version": "0.1.34",
3
+ "version": "0.1.35",
4
4
  "keywords": [],
5
5
  "author": "",
6
6
  "license": "UNLICENSED",
@@ -1,2 +0,0 @@
1
- import React from 'react';
2
- export declare const DeploysCard: () => React.JSX.Element;
@@ -1,44 +0,0 @@
1
- import e from"react";import t from"styled-components";import{Card as i}from"../../../components/Cards/Card";import{breakpoints as r}from"@redocly/theme/core/utils";const m=()=>e.createElement(n,null,e.createElement(o,null,e.createElement(a,null,"See a log of all ",e.createElement("a",null," project deploys ")," with links to corresponding Git branches or PRs. Instant rollbacks available too."))),o=t.div`
2
- overflow: hidden;
3
- width: 100%;
4
- height: 100%;
5
- padding: 32px;
6
- min-height: 780px;
7
- background-image: url(${require("../images/deploys-example-small.svg")});
8
- object-fit: cover;
9
- background-size: contain;
10
- background-repeat: no-repeat;
11
- background-position: right bottom;
12
-
13
- @media screen and (min-width: ${r.small}) {
14
- background-image: url(${require("../images/deploys-example.svg")});
15
- background-position: center right;
16
- min-height: 510px;
17
- }
18
- `,n=t.div`
19
- background-image: url(${require("../images/deploys-bg.svg")});
20
- background-repeat: no-repeat;
21
- width: 100%;
22
- height: 100%;
23
- `,a=t(i)`
24
- max-width: 272px;
25
- border-radius: 12px;
26
-
27
- box-shadow: 0px 8px 28px -6px #1A1C211F;
28
-
29
- font-family: Inter;
30
- font-weight: 400;
31
- font-size: 16px;
32
- line-height: 24px;
33
-
34
- a {
35
- font-weight: 500;
36
- }
37
-
38
- @media screen and (min-width: ${r.small}) {
39
- max-width: 416px;
40
- }
41
- @media screen and (min-width: ${r.large}) {
42
- max-width: 475px;
43
- }
44
- `;export{m as DeploysCard};