visit
Business Analyst: Our next user story involves creating an API (let’s call it “Customer API”).
Developer A: How novel! That’s what I did yesterday and the day before and the day before that.
Business Analyst: Great, should I let the clients know that it wouldn’t take as long to build it?
Developer A: Hold on. We haven’t even heard the requirements for Customer API.
Business Analyst: It’s just a couple of hundred fields that Customer API needs to send to another downstream API to perform the transaction.
Developer A: And how will we know the values for these fields that Customer API needs to send?
Business Analyst: I’ll take care of it. I have already spoken to the lead developer from the downstream API team, and he’s sent me a spreadsheet. It has all the fields and the values that need to be part of the request body. He’s also sent me a document with information on the headers and auth details required to call the downstream API.
Developer A: Is this downstream API available in a testing environment? A playground, maybe?
Business Analyst: They’re still working on building the downstream API, so they don’t have a working version yet.
How did Developer A and Developer B convert fields from the spreadsheet to data members of a class?
Developer B started by showing off some editing skills in his favorite integrated development environment (IDE). To be fair, he recently acquired these skills from another developer last week. Now was his chance to shine. He simply showed Developer A how to paste the fields from the spreadsheet to the class file and some shortcuts on the IDE to clean the copy/paste bit and replace it with Kotlin (the language they used) syntax for a class.How did they assign the values to the fields?
Not all fields had default values, so assigning defaults to specific fields became a manual process for them, which of course took a while and some patience to complete.Why are we saying they were in the soup?
Because here’s what happened over the course of the project. Integration failed due to:Incorrectly spelled fieldsCase sensitive fieldsMismatched data types: Some fields were represented as Boolean when they were actually StringsError parsing issues, since the document misrepresented itMissing responses (200 OK even) for some pathsRequestError:
type: object
properties:
type:
description: A URL that uniquely identifies the problem type.
type: string
example: "/problem/validation-error"
title:
description: A human readable description of the error.
type: string
example: "Your request parameters didn't validate"
status:
description: The HTTP response code.
type: number
example: 400
instance:
description: The URL of the call for which the error occurred.
type: string
example: "/media/analyze"
detail:
description: An optional field with more information depending on the type.
type: string
example: "job_id is required"
“Spreadsheets served us well in the information age, but as enterprise organizations wrestle with their digital transformation, they are realizing they need a much more precise set of human- and machine-readable tools that can track the exponentially increasing data being produced each day. Specifications now help teams keep up with the perpetual pace of change and remain competitive in today’s ever-evolving and shifting digital landscape.”To get started, you can define the API schema in Postman using the . Share your experiences with and without specifications, and then give us your feedback by leaving a comment below.
— Postman Chief Evangelist Kin Lane