API Intersection

As programmers and global travelers, we understand the importance of being well-versed in multiple languages. However, there's one language that holds a special place in our hearts: the language of API Design

It's a skill that requires a delicate balance of consistency, developer experience, and stakeholder involvement. In our quest for knowledge, we came across the enlightening API Design Matters Substack by David Biesack, a renowned expert in the field. We couldn't resist inviting him to our API Intersection podcast to share his invaluable insights on all things design-related.

As the Chief API Officer at Apiture, David focuses on API design and utilizes OpenAPI. Let's look at some of the benefits of OpenAPI for documenting and designing APIs and the importance of consistency in API design.

Catch David's series on the language of api design at apidesignmatters.substack.com and check out his LinkedIn

*disclaimer (31:24): When discussing application/problem+json, the wrong RFC is cited. The correct one is RFC 7807 -- see https://datatracker.ietf.org/doc/html/rfc7807 (Erik Wilde is one of the authors)
_____
To subscribe to the podcast, visit https://stoplight.io/podcast

--- API Intersection Podcast listeners are invited to sign up for Stoplight and save up to $650! Use code INTERSECTION10 to get 10% off a new subscription to Stoplight Platform Starter or Pro.

Offer good for annual or monthly payment option for first-time subscribers. 10% off an annual plan ($650 savings for Pro and $94.80 for Starter) or 10% off your first month ($9.99 for Starter and $39 for Pro).

What is API Intersection?

Building a successful API requires more than just coding.

It starts with collaborative design, focuses on creating a great developer experience, and ends with getting your company on board, maintaining consistency, and maximizing your API’s profitability.

In the API Intersection, you’ll learn from experienced API practitioners who transformed their organizations, and get tangible advice to build quality APIs with collaborative API-first design.

Jason Harmon brings over a decade of industry-recognized REST API experience to discuss topics around API design, governance, identity/auth versioning, and more.

They’ll answer listener questions, and discuss best practices on API design (definition, modeling, grammar), Governance (multi-team design, reviewing new API’s), Platform Transformation (culture, internal education, versioning) and more.

They’ll also chat with experienced API practitioners from a wide array of industries to draw out practical takeaways and insights you can use.

Have a question for the podcast? DM us or tag us on Twitter at @stoplightio.

Everybody
wants their stuff to be successful.

They want their APIs to be used.

They want their user interfaces
and programs and applications

to be used, etc..

So that's the primary thing, is
can you solve real problems with it,

and can you get the feedback
from those consumers and developers

early enough to tell you
you're on the right path?

I'm Jason Harmon
and this is API intersection,

where you'll get insights from experienced
API practitioners to learn best

practices on things
like API design, governance, identity,

versioning and more.

Welcome back to API intersection.

I'm your host Jason Harmon,
CTO at Stoplight and

today is one of those days where you know,

I don't get as much time
as I like to go read and learn new stuff.

But every now
and then when I do get the chance,

there's people I trip across that
I just think I want to meet these people.

So our guest today, David Biesack,
I hope I said your name right.

I forgot to ask before. All right.

Chief API Officer

-cool title at Apiture
is going to join us today

and we'll kind of talk about,
you know, talk shop, talk API stuff.

So thanks for coming. David.

Tell us a little bit about yourself
and what you guys do.

Yeah, thanks for inviting me.
So I'm Dave Biesack.

I as Jason mentioned, I'm
the chief API officer at Apiture.

I joined the company when it was founded
a little over five years ago

and they set out
to become a banking API platform.

So they want to build APIs
around their banking solutions

and brought me on board
to help build the API program there.

So I started out as an API architect
and then eventually moved up to where I am

now as chief API officer.

So I'm responsible for the design
and architecture of our APIs.

Most of the time I spend in doing that
analysis and design,

I work with the products

folks who come up with feature requirement
and then we map them into APIs.

And then I do API design along
with another API architect on the team.

His name is Aaron.

So we convert all the basic feature
requirements into APIs

and then the engineering teams
go in, implement all those APIs,

deploy them and help us secure them, etc..

So most of my work is around
designing those APIs,

but all the ancillary things
that go along with that as well.

So training other folks on what it means
to be an API first company

and what it means to,
you know, tried to design APIs upfront.

And really what we do

is try to gather those requirements and

make them separate from
just UI requirements or API requirements,

but just be feature requirements
and then build APIs around that.

So I've been doing that ever since.

Very cool.

You're you're are people, you're amongst
good company.

I think there's a lot of folks like,
you know,

trying to do
the sort of thing that you're doing

and the thing that I've done before,
which I think is very similar,

I think in our audience.

So you're in good company

and you did a heck of a stint at,
I guess, S.A.T.s before this, right?

Yeah, I worked at SAS for 28 years
before coming to Aperture,

built a whole career there,

doing all kinds of things.

But I spent my entire time
in R&D organization.

When Java came out in 96,
I helped SAS adopt the Java platform.

So I was my role there was similar what
I do at Aperture as Chief API officer.

I was the R&D Java strategist,
so I helped define Java standards

for the entire organization
and did a lot of training on

Java adoption and building libraries
and things like that.

And then the last five years at SAS,
I ran the API Center of Excellence,

which was a governing body,
so we helped shape

the rest API standards for SAS and worked

as a consulting organization and helped
all the teams design their rest.

APIs according to those standards, worked

on tooling around APIs
and things like that.

So it helped with the adoption of of APIs
throughout the R&D organization.

And in those five years,

we we had an API review process
and we had about 120 different APIs

that we brought through that
that design and review process.

While I was there. I

so I guess
bringing it back to kind of what

caught my attention as you had started
this blog post series

that you titled The Language of API
is that I think somewhat hubs around open

API, but I feel like
you touched on a bunch of other stuff too.

So I mean, kind of
what do you feel like is the big point

that you're working
to get across in the series?

Yeah,

so I've always been kind of a language
geek for my entire professional career,

so I was always interested
in programing languages,

as I mentioned, you know, helping
with the adoption of Java at SAS, etc.

I was always intrigued
by the expressiveness of languages,

how well they can capture your intent
as a developer, as a programmer,

how concise versus how verbose
those languages are.

New job is is kind of known
as a relatively verbose language,

but certain language attributes
can help improve

that with with type inference
and things like that.

But basically, how do they
how do they work as languages

for communicating ideas?

You know, our human language is used
for expressing ideas and communicating

with each other.

Programing languages are used
for communicating with the compiler

and the back end and the runtime, but
also for communicating with other people

who are going to be reading those programs
and reading that code later.

And so the idea of how
well you can express your ideas

in those languages is really intriguing

to me, and more
so how those languages change over time

and the way we use those languages
changes over time.

And in fact,
it comes to be that that oftentimes

those languages influence
the way you think about things.

So the solutions to a programing task
using

Java are very different from the solutions
you might come up with.

Using a functional language like Eve Sharp
or Scala or even TypeScript and stuff.

So that's what I'm really interested
in, is this notion of languages,

how they capture ideas, how
well you can express your ideas in them,

how they grow,

and how you as a programmer or developer
grow along with those languages.

As you acquire
those languages, become more fluent.

You know, it's funny,
I think for a kind of fundamentally

technology oriented podcast,
I think we probably, if we could ever

figure it out,
might have set a record for the number of

professionally trained linguists
and just language geeks.

It's I feel like it's a it's
an occupational hazard of when you work

with APIs too much, all of a sudden words
take on a whole new meaning.

Yeah, I mean, like my favorite
example is like when someone says

the word metadata, the word means nothing.

It's just an empty, vacuous,
full of meaning.

You have to describe what it means

and it usually means
you didn't think about what to call it.

You get hang ups, right?

So I love this this focus on language.

I think one thing we've heard a lot

from other practitioners
is the idea that the words

so you're
talking about kind of programing languages

and that expressiveness, which
is fascinating and we might come back to.

But in terms of describing your platform,
when you think about

not just designing one API,
but designing a whole portfolio of things

that the words that you use carry greater
meaning

and that a lot of folks, when we ask them,
you know, what would you do

if you started from scratch,
they said, Find that language.

So I'm curious, like in terms of domain
definition or capability definition,

whatever you want to call it, you know,
how do you approach that sort of thing?

Right.

And this was one of the

the most widely read and shared articles
that I wrote in this series.

I wrote about,
you know, using domain driven design.

And a lot of what we do
at Aperture is based off of James

Higginbotham, this book,
where he talks about this ADR process and

the title of that article that I wrote

was that API design
first is not API design first.

You know, everybody hears about API
design, API first, there's API first that.

But that's really a misnomer
or mischaracterization

because you don't start with the API
no matter what you're doing.

You have to go back

to business requirements
and what problem are you trying to solve?

What problems do your users or

potential users have that can be solved?

You know, hopefully with an API
and really it's understanding that

and using the techniques of domain driven
design to characterize those problems.

And then an important part of that process
is building the ubiquitous language.

You know, what is the set of terms,
the vocabulary of your problem domain,

and then making sure everybody understands
and agrees on what those terms mean

so that you're removing ambiguity as you
as you move forward.

You go through the rest of the process.

So it's really important
to build that vocabulary

so that everybody understands
things from the get go.

I mean, it starts with with that,
you know, the product requirements

and understanding the domain
in which this problem resides

and understanding what those terms are.

And then you have to codify those
in some way.

So they actually become names of,
you know, when you do API modeling,

they will filter down and often become
names of resources in your API model,

or they may become the names of
operations in your API model.

But, but

that's where I really want people to start
is is going back to the source.

What is the problem
you're trying to solve?

And then how do you capture that
with the language?

And you know, design patterns were really
popular thing 20, 30 years ago.

And really what's important about design
patterns was this whole notion of

of the pattern language,
which is what you use to document

the problems in the forces
and then the patterns that you use

to solve those particular problems.

And I like to see the same mappings

happen with with APIs
as they do with just general software

development is you build a language
and you have a way of expressing

either the problem set or the solution
set with with specific languages.

And some languages are good for that
and some languages need need some work.

But, but that's really what intrigues me
about this and understanding what

how languages influence people
in the way you think.

Yeah, I was.

I think when I've tried to describe this
to people, I'm like,

if, if you had to draw a very naive sort

of graph of the conceptual names of things
in what you intend to build,

and you just put it on a big marker board
and you walked customers in the room,

would they point and go,
Oh yeah, that's my stuff.

You know what they recognize is quickly

conceptually what it is
that they intend to do out of

just the language
without anything further diffuse.

And you mentioned kind of DDT is sort
of the methodology that you're using.

Are there any sort of specific tools
that make that process of aligning around

language easier for, you.

Know, specific tools?

You know,

James, in his book, he outlines some
some tools and techniques for doing things

with like spreadsheets and tables of,
you know, defining various things.

And we've kind of extended that.

To me, spreadsheets are a little bit

awkward to work with versus
we as a wiki primarily.

So our product team uses various

tools that that product managers
like to use for capturing,

you know, epics and higher level goals
and things like that.

So this is what this product
or this feature is going to do.

And then they break it down
into components

and they use various tools for that
and eventually things filter down

from from that method down into things
that become, you know, JIRA tickets.

We use JIRA for tracking
activities and our our

sprint cycles and things like that.

So a lot of things
come down as as JIRA tickets.

But what I do is
I have to consolidate all that information

from all these different sources, from
interviews with with the product people.

And we we sit down

and have meetings and we go over
and ask questions and things like that.

And then we just basically capture
everything into an API model

that we capture
just on a confluence page as a wiki page.

And it's very easy to collaborate on that.

So we can we can go in here
and we can kind of give a high level view.

What I do is
I do this translation exercise.

I take what they give me
as product requirements and then

I rephrase it
and kind of speak it back to them and say,

Is this the right way of picturing this
or representing this?

Do I have all the elements captured?

Is this a correct representation
of what you've told me?

And we iterate on that.

And because when I write things down
this way, then it will of course often

raise a lot of questions.

And so I will write those questions down
and then we can iterate on that confidence

page and people can add questions
and write responses in there

and then evolves over time.

It it's pretty easy to to modify

and extend that API model
as we learn more and more.

And the topic that the top of the document
is where I list,

you know, the vocabulary and list
what are the common terms for this

domain model?

And we make sure people have
a kind of understanding of that.

And then that filters down into the lower
level

of what
those API resources are going to be.

And that's tends to work
really, really well

versus something like JIRA, which tends to

fragment your knowledge
and put in lots of different places

that it's oftentimes

really hard to get the bigger picture
of how things interrelate.

You can have an epic
that's got 20 or 30 stories in it

and you have to click on each one,

open a page, read what's in there, read
the acceptance criteria,

and then go back to the next page
and the next page in the next page.

By time you get through the whole thing,
you've kind of lost track of where you are

and trying to figure out where did I read
that initial requirement about this

one specific attribute
or this one specific behavior?

It gets lost in my mind.

So by consolidating the domain model,
the knowledge base

into the conference page really helps me

and is guided by again
with with domain driven design

as these bounded contexts that really kind
of fit naturally into your API models.

So you have an API and you focus really on

what is the core element of that API,
what is the primary resource

and what are the pieces necessary
to pull that together.

And you can
certainly have related resources

and you can have sub resources, etc.

and you can explain all that.

But usually that that one wiki page talks
about that one specific domain model

and it tried to try to coalesce
all the information we need there

in order to then once we narrow that down
and we got the basic

API model worked out,
then we can transcribe that directly

into an open API document and start
building that and that becomes more of,

you know, the design art

of how you capture that into one
or more API documents.

We have a multi document design,
so we have a, an API

that's just called common,
which is one open

API document that has a bunch of common
reusable components.

So we've got schema components in there,
We've got standard

query parameters that might be used
elsewhere, we've got

standard response objects
and things like that.

So those are all part of those components.

And then each individual API,
whether it's a, an accounts

API for, for viewing your accounts
in your account balances

or it's a transfer's API
for making transfers or transactions

API that lets
you look at those transaction history

for individual accounts and various
other elements.

You know, we do digital banking, so it's
all kinds of banking related resources.

Each one of those will have its own
API model and so an API definition,

an open API, but they can reference
schemas and other things from each other

quite naturally.

And that works really well

with the composition model
that's supported with open API.

Yeah, for sure.

And I got to double down here and say
that,

you know, we're certainly big fans
of James Higginbotham in this process.

And you mentioned ADR
and this is a lion defined design refine.

And I think what a lot of what
you just described is kind of the align

and define part, right?

It's like before you internally
it stopped by you know,

we tend to refer to this
as like the homework that happens

before you design.

And it's like a lot of it is just marker
boards and spreadsheets and mirror charts.

And it's kind of a loosely defined thing

that you can't point to and say, Well,
go use that tool and we'll do it.

It's about the discussion

and about the alignment
and having a user definition of it.

Yeah, it's very much communication
is just so, so central and key to that.

And the notion of collaboration
is really, really critical there.

Yeah,

because it's,

you know, when I worked at SAS SAS, it was

and is hugely based on analytics, right?

That's their bread
and butter is analytics.

But I never really learned
or became an analytics expert.

I didn't really know the domain model
very well.

I just I just kind of knew APIs

and interfaces
and kind of software design.

But all the work that I did as asked
really wasn't analytics based.

There were a lot of other
people were way smarter in that.

And PhDs in analytics.

ET cetera, you know who did all that work?

And then at Aperture,

I came into the company
without any banking experience at all.

So I relied very heavily
on the domain experts

to teach me the domain ideas, you know.

And so I learned quite a bit
about banking,

but I'm not a banker
and I'm not a financial person.

I'm an API person.

But it's important
for us to be able to communicate and work

because,
you know, these banking domain people,

they don't really know APIs,
They don't know what's

what's possible with APIs
or they don't know good ways to structure

and manage an API program for evolution
and things like that.

And so it has to be teamwork there.

And we kind of teach each other as we go
along.

Yeah, I think it's one of the funnier
aspects of working on kind of,

you know, platform engineering
APIs kind of topics is

you find yourself in all kinds of things.

And these days it's like,

look around the room, there's API,
it's getting called right now, right?

It's everywhere.

It's in everything.

You know, your fridge
and your washer are talking.

This stuff.

You know, we're reminded of this
a lot at a stoplight where it's like,

you know,
our top customers make like beer,

electrical parts,
shipping, automation, stuff.

Like very,
you know, traditional business lines.

And you go, Well, yeah, like at its core,
integration was always about supply

chain automation, right?

So it's really interesting that,

you know, I did a stint in fintech

and that sort of stuff and I came away
with a better understanding of it.

But if someone said, you know, describe

how the payment stack of the world
works, I'd be like,

I'll tell you to talk to you.

But, you know,

I trusted them in the definition
and just created the right guardrails

so that it looked and smelled
and felt like the other things.

And so I'm with you on that.

I think back to our sort

of language of APIs arc here.

You know,
we touched on programing languages

and some of that expressiveness
and kind of how to define these domains.

But I guess you mentioned in the course of

that open API is sort of the way
that you're expressing those things

and sort of
kicking off the development process.

So how do you see that sort of fitting in?

So we adopted Open

API at Aperture when I came in, you know,
I kind of said

this is probably the best representation
of how to capture an API design.

There were lots of other competing
standards at the time.

You know, there's Ramle and there's API
blueprints and all kinds of other things.

But but Open API
kind of had the momentum going in

an open API 3.0 had been out
and the tooling around

that specification
was really kind of the kicker.

You know, by having a
well defined and constrained language

for expressing an API design
really enables the tools and stuff.

So I have lots of issues with open API
that I would like to change if I could.

But you know, there's lots of ways
that I would really like to extend open

API and it goes back to
I think if you go back to like issue like

182 and the GitHub repo is one an idea

that I put in there many, many years ago
that hasn't been adopted yet.

But there's a lot of people
who seem to like

that idea of just extending it
a little bit in a different direction.

But it's interesting
because it has constraints and

constraints are really kind of important.

You know, if open API adopted
everybody's wish

and made all these changes,
it would become untenable.

It would become unusable.

So those constraints are really
what are interesting.

And it was actually one of the

it was my last post
that I got and published on my my blog

and the Substack
was about growing a language.

And this is the 25th anniversary of Guy
Steel's seminal talk of the same name

I was recording. That was at the

OOP slot,

who was object oriented

programing systems, languages
and Applications and ACM conference

that was held every year
and they bring him to splash since then.

But 25 years ago he gave this really great
talk about growing a language.

And he was he was on staff at Sun
Microsystems at the time.

Java was was growing in popularity.

And there were all these requests
to extend job at this direction

or extend Java in that direction
to add this new feature here.

And he talked about, you know, how you go
about growing a language like Java

in this applies
directly to growing a language

like the open API specification
or growing a language like JSON schemas.

He talked about the forces
that come to play

and how you have to weigh all those forces
and think about the long term evolution

and what's going to be sustainable
and things.

So it's it's a fabulous talk.

If people have not watched it,
it's really it's really good to to to see.

I think anybody who does
any kind of software design,

especially around languages,
should really be familiar with that.

So so we adopted open API

and you know, haven't regretted that in
any by any means

because of the expressiveness that it has,
even though it's constrained.

Sometimes those constraints
are really helpful to help you focus

on what it is you're really trying to say

and with it with constrained language,

you can still have quite
a bit of expressiveness

and it's kind of nice
because it leads itself

to a much more consistent view
of what your APIs will look like

because you can't express completely wild
and crazy different things.

So anybody who's looking at an open API
definition understands its structure

and they understand the meaning
of all the constructs in that document

and and things.

So it helps
with, with the understanding of the API.

So that's what's really beneficial
about it.

In addition to it
being, you know, adjacent document

that can be passed
and processed and analyzed, you can use it

for co-generation,
you can use it for for creating marks,

you can use it for creating your,

your documentation
and you can use it for creating stickers

and all manner of deployment
methods and everything else.

So it's really beneficial there
and it's proven to be pretty powerful

and expressive
given that constraint that it has.

Yeah, I mean, to some extent
what you're really describing

is the design by constraints methodology
applied to HTP in general, right?

Like Fielding was trying

to sort of express the possibilities
with HTP programmatically.

So I think it even goes beyond that.

I have to comment to on like the
maintaining open API and how hard it is.

I was actually part of the founding crew
on the Open API initiative

and alongside Ron Rutkowski was supposed
to be the referee for the group.

And yeah, when you see all of the world's
perspectives

on how to design an API
and have to make choices, it's hard.

It's really hard
and my favorite example is

stuff like Discriminator and Open API
and like the fact

that it's never really quite
worked right in any tooling.

For my money, it's like
it's probably should've never been there.

The yes, people want to do that,
but it's like every time I've worked

with folks on Why are you trying
to build a polymer morphic API?

Write something that changes its meaning
depending on what you're doing.

Usually there's a cleaner way to do it,

and I think even to connect back
to your earlier point that like

there's so many languages
that express different things,

the API designer's
job is often to think about how to get rid

of all that flavor and come back
to really just the foundations of object

oriented principles, things
that are applicable in every language.

And it's a really tough set of constraints
to work with,

but it's kind of what makes it all work.

So yeah, right. Tricky for sure.

Yeah.

So, you know,
we're, we're taking into account

all these, you know, sort of open API
and expressing things and all that.

And, you know, I know one of the struggles
historically has always been,

you know, you write down a bunch of rules
and standard and then you ask,

you know, all the developers in a company
and really large ones, it's

hard to even communicate
that, that, hey, do it this way right?

And to to

sort of produce this feeling
that a bunch of APIs

feel like one thing,
They feel like one platform.

So but that's hard, right?

So like, what's your approach to sort of
building that consistency of design?

Well, you mentioned guardrails earlier,
and I think that's

that's an important aspect.

So when I worked at SAS,
it was a very large organization.

So it was it was very hard to

have people kind of
have the same mindsets,

which is really kind of what's necessary

if you want to have
a consistent set of APIs,

you know, and we had marginal success
there, you know,

so, you know,
we had kind of API design standards.

We said, you know,
you should do it this way.

You should avoid this particular practice.

This is how you should name things
and things like that, you know,

which only goes so far
until you can really

you can't codify a mindset
in an API style guide,

but you
can certainly try to communicate again.

And really the best way to do
that is two examples.

Now at Aperture, it was it was much
simpler job because I was for a long time,

for four years

I was the only API architect,
I was the only person designing the APIs.

So I, you know,
I was able to just kind of use

the same style throughout
and had that consistent voice.

It's good to be the king, right?

I'm sorry.

It's good to be the king.
Yeah, yeah, yeah.

But but even even over time,
you know, that that voice changes.

And I can see where

there are
things that I designed for years ago

that were designed
completely differently today.

And that's a really hard thing
to, to really manage,

especially for a larger organization.

So but the best way to go
is, is try to, to, you know,

keep in mind,
you know, who you writing these APIs for,

they're they're written to be used
and written to be consumed.

They're not written
to be put up on a pedestal and say,

look how beautiful
this API is, isn't it elegant looking?

Right.

The real judge of that is can developers
solve problems with the API?

Can they actually consume
it and use it? Can they

adopt it quickly?

Do they know how to use it?

Can they infer how to use it
because it's consistent, for example?

So if you do something in one place,
the way you do pagination, one

part of the API should be the same
as what you do in another part of the API.

So selling people on that and really wants
their software to be used.

So in order to get people to kind of buy
into any kind of governance product

or a program or anything like that, it's

the same thing
as with user interfaces, right?

If it's inconsistent,

it's going to be harder for people to use.

It's not going to be as successful.

Somebody wants their stuff
to be successful.

They want their APIs to be used.

They want to use interfaces and programs
and applications to be used, etc..

So that's the primary thing, is
can you solve real problems with it

and can you get the feedback
from those consumers and developers

early enough to tell you
you're on the right path?

Or at least later on you get the feedback
that yes, I am using it

and it is successful and then you use that
as a showcase for other people.

So when you have new people
coming into the company,

you can point them to your history
and say, You know, this style of API

works really well.

This one that we put out there
two years ago, no one's really using it.

You know, maybe it's
design is isn't really kind of

doesn't
really meet the need and things like that.

So there's a lot of good information
coming about now around governance.

So I know I know Laura over at Postman
is doing a lot of stuff

writing about governance
and he takes a, you know, kind of a

I don't want to say it's
a non-intrusive approach to governance.

It's really you have some guardrails,
but you're really trying to lead

rather than push,
you know, lead by example,

rather than forcing people
to go down a specific path.

But basically, if everybody is on board
with with the goals of the organization

and why you're doing this work to begin
with, then then that's really

what you used to incent people to,
to come up with good consistent APIs.

Yeah.

And you had mentioned and written

about kind of,
you know, thinking in dry terms, right?

Don't repeat yourself.

And I think that's a big part
of what you're describing here.

And I like to express it that

your code base being

dry is far less important
than the community of consumption

around that API
and how drive that code is set.

To your point on, can you can
you have common consistent patterns

that are used across

the whole portfolio of APIs means that
the clients are using more than one API.

Just write up a bunch of their code and

you know, working at like pay per hour.

We have like a million developer
network, right?

I'm like, you add one line of code to that
and you just added

10,000 lines of code next month
for all the clients writing against us.

So if it's harder for you, fine.

Like that's the way I think for the broad
audience, because at the end of the day,

their time is more valuable than ours
in terms of growing the business.

So that's that's an important that's an
important point because I have to kind of

sometimes clarify it to the engineers
who are building the APIs.

You know, they asked me,
why do you make my job so hard?

And same because we're trying
to make the developers job easier,

you know, making the APIs easy to use

pays over multiple times in the effort
that we put forth initially.

You know, and a good example of that is so
we adopted

our see was a 4707

the problem plus JSON application problem
plus JSON standard

for, you know, a standard error response
or they call it a problem response

because it doesn't have to be an error,
could just be a problem.

And we adopted that pretty early

in our in our current cycle

of of new APIs
that we're doing for our platform.

And you know, we,
we use it, but we extended it

so you know you have these

types deal on the air, which is a URL
that describes what that type means.

And so we have lots of different ways
of expressing lots of different type

types of errors. So when you have a 422

that says unprocessed entity,
right, syntactically valid.

But but there's something inside of it
that I can't deal with.

It's,
it's internally inconsistent or whatever,

you know,
So we have lots of different error types

that can be associated with a 422
And sometimes people think

it's really kind of hard to manage

all those in the code base and generates
write errors and things like that.

But, but it yields
so many benefits to the developer who,

if you just returned back 422
without explaining why

they're just lost right in
or if it's a 400, why is it a 400?

We'll give them some hints.

And what we even do is we go beyond just
describing what the areas with the detail.

We also have like a remediation thing.

How do you actually fix
this particular error?

So with every error type that we have,

we also have remediation that says
what you can do to to rectify it.

And that's there for the developers
to make the developers job easier

so they get back reasonable errors
from the system

rather than just generic things that don't
tell them any information at all.

And the other part of this is,
as you said, consistency.

So since open API is a standard document

format, we also have a whole bunch
of templates that we use

and we have a tool to generate open
API definitions from from these templates.

So you can really bootstrap an entire API

by just adding a couple annotations

to say, okay, I've got a,

I've got a resource here and I want to
generate some basic crystal operations

or I've got another resource over here and
I want to add some actions to modify it.

Or here's a singleton
object over here, doesn't

have all the crystal operations around it,
but it but it's managed this way.

And so we have a

we have, you know, five or six
different patterns that we can express

with a simple annotation.

And then and you just code that briefly
and push a button and it generates

all the kind of standard boilerplate
around all those operations

and it puts in the security requirements
for each of the operations

and it puts the tags in there and it gives
you response and requester response

schema placeholders, and it just generates
all this boilerplate for you

and then lets you work on
what's important, right?

Because all that boilerplate, all that
standard stuff, that's always the same.

You shouldn't have to deal with.
You shouldn't have to write that.

You shouldn't
even have to copy and paste it.

But something else, do it.

And that's what this tool does,

and that gives you a standard layout
for all of your APIs.

And then you just have to kind of fill
in what's different,

adding new query parameters

to this operation or define your
your schemas over here, etc..

And then you can concentrate on the more
interesting parts of writing an API,

which is really kind of what you're doing
and what what the messages look like.

All right, I'm going to have to talk you
into give me a demo of this thing.

Letter. It sounds cool.

Shout out to Eric Velda, a

wild for for the Anglicized pronunciation

friend of the show
who helped develop that.

The problem details
for each of the papers.

And I totally second that advice
like don't make up error models. It's

so hard to do from scratch and I really
feel like this solved the problem.

And it's like the number one thing
people screw up when they first build

an API is don't think better. It's so.

Wonderful.

Yeah, it's it's, it's a standard like meme
that we see on all these different forms

APIs is return of 200 error equals true.

To totally don't break the basic rules
that.

HTP API.

Yeah cool.

So I guess as you know
we're kind of hit in time here.

I'm sure we're losing listeners
with boredom and other things to do

and any other sort of parting words
of for us here.

And I'm always empathetic to folks

listening who are like overwhelmed
by all the things you just said to do.

Where would they get started? Yeah.

So we're really fortunate in that
the API community

is so open and accepting.

So there's lots of different places
that you can jump in.

There's a lot of different Slack instances
out there.

APIs you won't hate is a good one.

There's Discord servers and stuff
and then there are conferences.

So API days is going next week.

I'm not going to that
but but Aaron, our API architect is

but there's API specification conference
usually in the fall every year

hopefully they'll they'll do that again
this year.

I haven't heard anything about that but
get involved with the community in one way

or another and follow what's going on
with the open API specification session

and project moonwalk,
which is, you know, the next version,

the next rev of that specification, jump
in and make your voice heard.

The more

perspectives that we have, the better off
the environment is going to be.

But there's so many people
that you can call on and,

and if you don't have someone
at your own company that can be a mentor,

you know,

look outside your company and reach out
in those other communities and say,

hey, I'm kind of new at this.

I know there's a lot to learn.

Is there anybody who could kind of help me

walk through my journey with me
and help me grow

and understand, you know,
the good ways of building an API program,

the good ways of designing an API,
the good ways of of gathering requirements

and sharing that align and define face
with my product team.

You know, how do I succeed
with all these elements of API design?

There's a lot of people out there

reach out
and as I said, they're very welcoming and.

People really do
want to help each other out.

So join the community.

Don't don't be afraid of jumping in

and you'll probably reap lots of benefits.

Of that advice. It's instead true.

I think it's part of what suck me into
the API vortex is just,

you know, I don't know.

People speak my language,
you know, and people who somehow

if if they stay in it, have this
innate will to try to describe the world.

Right?

This is what we've been talking about
is now

that APIs are everywhere,
we have to describe the world.

So how do we do it?

How are we going to put our heads
together?

Charlottesville surgeon for his API,
As you will hate

former stop writer and regular contributor
Levy you feel

well, David, thanks so much for being on.

Tell folks where they can find out
about all your writing stuff.

You're kind of mentioned in there,
but where do they go?

Find it online.

Yeah, so it's on API
design matters, dot substack dot com.

It's all one word.

So the general the general Substack
is called API design matters.

So it's all matters
related to APIs large and small.

And right now this,

the series that I'm doing
is the, the language of API design,

but that's just a short series
that'll conclude.

But the broader one, it's just API design

matters.

Not well, thanks for sharing everything
with the community

and we'll all follow along.

Except for Schade.

It's been a pleasure talking with you.

Thanks for listening.

If you have a question you want to ask,
look in the description of whichever

platform you're viewing or listening on
and there should be a link there

so you can go submit a question
and we'll do our best to find out

the right answer for you.

API Intersection Podcast listeners

are invited to sign up for Stoplight
and save up to $650.

Use the code intersection
ten to get 10% off a new subscription

to Stoplight Platform starter or pro.

Take a look at this episode's
description for more details.