@APIHANDYMAN POSTMAN OPEN TECHNOLOGIES
OPENAPI DOES WHAT SWAGGER DON’T
IMPROVED STRUCTURE: IMPROVED SECURITY:
IMPROVED HOSTING:
IMPROVED CONTRACT: IMPROVED DOCUMENTATION:
Altered Specification The Revenge of Consistency Mortal Servers Streets of Security II
Data Force IV After Event II Phantasy Examples II Shining Documentation
2022 SERIES OF EVENTS
New York
JULY
(HYBRID)
Australia
SEPTEMBER
(HYBRID)
Singapore
APRIL
(VIRTUAL)
Helsinki & North
MARCH
(VIRTUAL)
Paris
DECEMBER
(HYBRID)
London
OCTOBER
(HYBRID)
Hong Kong
AUGUST
(VIRTUAL)
JUNE (VIRTUAL)
India
MAY
(VIRTUAL)
APRIL (VIRTUAL)
Dubai & Middle East
JUNE
(VIRTUAL)
Check out our API Conferences
www.a pida ys .globa l
Want to talk at one of our conferences?
apidays.typeform.com/to/ILJeAaV8
@APIHANDYMAN POSTMAN OPEN TECHNOLOGIES
API Handyman does what Arnaud Lauret does
ME: MY COMPANY:
MY BOOK:
Arnaud Lauret @apihandyman Postman Open Technologies
The Design of Web APIs Web APIの設計 웹 API 디자인 ПРОЕКТИРОВАНИЕ ВЕБ-AP
@APIHANDYMAN POSTMAN OPEN TECHNOLOGIES
The reference: Sega vs Nintendo 90s rivalry
@APIHANDYMAN POSTMAN OPEN TECHNOLOGIES
Previously in the APIverse
@APIHANDYMAN POSTMAN OPEN TECHNOLOGIES
It’s not Swagger vs OpenAPI
@APIHANDYMAN POSTMAN OPEN TECHNOLOGIES
It’s Swagger then OpenAPI
@APIHANDYMAN POSTMAN OPEN TECHNOLOGIES
2 versions of OpenAPI 3
@APIHANDYMAN POSTMAN OPEN TECHNOLOGIES
OPENAPI 3 IMPROVES SWAGGER 2
IMPROVED STRUCTURE: IMPROVED SECURITY:
IMPROVED HOSTING:
IMPROVED CONTRACT: IMPROVED DOCUMENTATION:
Altered Specification The Revenge of Consistency Mortal Servers Streets of Security II
Data Force IV After Event II Phantasy Examples II Shining Documentation
@APIHANDYMAN POSTMAN OPEN TECHNOLOGIES
swagger: “2.0”
Altered Specification (version)
openapi: “3.0.3”
@APIHANDYMAN POSTMAN OPEN TECHNOLOGIES
Altered Specification (reusable components)
swagger: “2.0”
info: …
paths: …
definitions: …
parameters: …
openapi: “3.0.3”
info: …
paths: …
components:
schemas: …
parameters: …
@APIHANDYMAN POSTMAN OPEN TECHNOLOGIES
The Revenge of Consistency (all data defined the same way)
swagger: “2.0”
paths:
/resources/{resourceId}:
parameters:
- name: resourceId
type: string
definitions:
# Only for bodies
openapi: “3.0.3”
paths:
/resources/{resourceId}:
parameters:
- name: resourceId
schema:
$ref: …/schemas/id
components:
schemas:
# For all data
@APIHANDYMAN POSTMAN OPEN TECHNOLOGIES
The Revenge of Consistency (more reusable components)
swagger: “2.0”
definitions: …
parameters: …
responses: …
securityDefinitions: …
openapi: “3.0.3”
components:
schemas: …
parameters: …
requestBodies: …
responses: …
securitySchemes: …
examples: …
headers: …
@APIHANDYMAN POSTMAN OPEN TECHNOLOGIES
Mortal Servers (multiple servers)
swagger: “2.0”
schemes:
- https
host: server.com
basePath: /name/v1
openapi: “3.0.3”
servers:
- description: production
url:
https://server.com/name/v1
- description: mock
url:
https://mock.com/name/v1
@APIHANDYMAN POSTMAN OPEN TECHNOLOGIES
Mortal Servers (server variables)
openapi: “3.0.3”
servers:
- description: production
url:
https://server.com/name/v1
- description: mock
url:
https://mock.com/name/v1
openapi: “3.0.3”
servers:
- description: production
url:
https://{type}.com/name/v1
variables:
type:
enum:
- server
- mock
@APIHANDYMAN POSTMAN OPEN TECHNOLOGIES
Streets of Security II (enhanced and new security modes)
swagger: “2.0”
securityDefinitions:
# Basic Authentication
# API Key
# Oauth2
openapi: “3.x.x”
components:
securitySchemes:
# HTTP (Basic, Bearer)
# API Key
# Oauth 2 (fixed)
# OpenId Connect
# Mutual TLS (3.1)
@APIHANDYMAN POSTMAN OPEN TECHNOLOGIES
Data Force IV (more versatile schemas)
swagger: “2.0”
definitions:
# JSON Schema Draft 4 (mod)
openapi: “3.0.3”
components:
schemas:
# JSON Schema Draft 5 (mod)
# Notable enhancements
# oneOf, anyOf, not
# writeOnly
@APIHANDYMAN POSTMAN OPEN TECHNOLOGIES
Data Force IV (choose your JSON Schema)
swagger: “2.0”
definitions:
# JSON Schema Draft 4 (mod)
openapi: “3.1.0”
components:
schemas:
# Default: JSON Schema
# Draft 2020-12
# Overridden by $schema
@APIHANDYMAN POSTMAN OPEN TECHNOLOGIES
Data Force IV (enhanced content negotiation)
swagger: “2.0”
# 1 schema for all media types
paths:
/resources:
get:
produces:
- application/json
- text/csv
responses:
200:
schema:
openapi: “3.0.3”
# Specific schemas for each
paths:
/resources:
get:
responses:
200:
content:
application/json:
schema: …
text/csv:
schema: …
@APIHANDYMAN POSTMAN OPEN TECHNOLOGIES
Data Force IV (enhanced parameter/header serialization)
swagger: “2.0”
parameters:
aParameter:
type: array
collectionFormat: …
openapi: “3.0.3”
components:
parameters:
aParameter:
# array or object
style: …
explode: …
@APIHANDYMAN POSTMAN OPEN TECHNOLOGIES
After Event II (webhooks & callbacks)
swagger: “2.0” openapi: “3.x.x”
paths:
/resources:
post:
callbacks: # 3.0
webhooks: # 3.1
/events:
post: …
@APIHANDYMAN POSTMAN OPEN TECHNOLOGIES
Phantasy Examples II (multiple examples)
swagger: “2.0”
# Example only on bodies
example:
# single undocumented
# example
openapi: “3.0.3”
# Examples on bodies,
# parameters, headers
examples:
anExample:
summary: …
description: …
value: …
# or
externalValue: …
@APIHANDYMAN POSTMAN OPEN TECHNOLOGIES
Shining Documentation (more summaries and descriptions)
swagger: “2.0”
info:
description: …
paths:
/resources:
openapi: “3.1.0”
info:
summary: …
description: …
paths:
/resources:
summary: …
description: …
@APIHANDYMAN POSTMAN OPEN TECHNOLOGIES
Thank you and goodbye Swagger 2
USE OPENAPI 3 NOW AND
GET ALL OF ITS EXCLUSIVE
NEW FEATURES FREE.
@APIHANDYMAN POSTMAN OPEN TECHNOLOGIES
The path to OpenAPI 3 upgrade
USE OPENAPI 3 NOW AND
GET ALL OF ITS EXCLUSIVE
NEW FEATURES FREE (almost).
@APIHANDYMAN POSTMAN OPEN TECHNOLOGIES
The path to OpenAPI 3 upgrade
Upgrade
your tools
Check third
party tools
compatibility
Convert existing
documents
@APIHANDYMAN POSTMAN OPEN TECHNOLOGIES

INTERFACE, by apidays - OpenAPI 3 does what Swagger 2.0 doesn't

  • 1.
    @APIHANDYMAN POSTMAN OPENTECHNOLOGIES OPENAPI DOES WHAT SWAGGER DON’T IMPROVED STRUCTURE: IMPROVED SECURITY: IMPROVED HOSTING: IMPROVED CONTRACT: IMPROVED DOCUMENTATION: Altered Specification The Revenge of Consistency Mortal Servers Streets of Security II Data Force IV After Event II Phantasy Examples II Shining Documentation
  • 2.
    2022 SERIES OFEVENTS New York JULY (HYBRID) Australia SEPTEMBER (HYBRID) Singapore APRIL (VIRTUAL) Helsinki & North MARCH (VIRTUAL) Paris DECEMBER (HYBRID) London OCTOBER (HYBRID) Hong Kong AUGUST (VIRTUAL) JUNE (VIRTUAL) India MAY (VIRTUAL) APRIL (VIRTUAL) Dubai & Middle East JUNE (VIRTUAL) Check out our API Conferences www.a pida ys .globa l Want to talk at one of our conferences? apidays.typeform.com/to/ILJeAaV8
  • 3.
    @APIHANDYMAN POSTMAN OPENTECHNOLOGIES API Handyman does what Arnaud Lauret does ME: MY COMPANY: MY BOOK: Arnaud Lauret @apihandyman Postman Open Technologies The Design of Web APIs Web APIの設計 웹 API 디자인 ПРОЕКТИРОВАНИЕ ВЕБ-AP
  • 4.
    @APIHANDYMAN POSTMAN OPENTECHNOLOGIES The reference: Sega vs Nintendo 90s rivalry
  • 5.
    @APIHANDYMAN POSTMAN OPENTECHNOLOGIES Previously in the APIverse
  • 6.
    @APIHANDYMAN POSTMAN OPENTECHNOLOGIES It’s not Swagger vs OpenAPI
  • 7.
    @APIHANDYMAN POSTMAN OPENTECHNOLOGIES It’s Swagger then OpenAPI
  • 8.
    @APIHANDYMAN POSTMAN OPENTECHNOLOGIES 2 versions of OpenAPI 3
  • 9.
    @APIHANDYMAN POSTMAN OPENTECHNOLOGIES OPENAPI 3 IMPROVES SWAGGER 2 IMPROVED STRUCTURE: IMPROVED SECURITY: IMPROVED HOSTING: IMPROVED CONTRACT: IMPROVED DOCUMENTATION: Altered Specification The Revenge of Consistency Mortal Servers Streets of Security II Data Force IV After Event II Phantasy Examples II Shining Documentation
  • 10.
    @APIHANDYMAN POSTMAN OPENTECHNOLOGIES swagger: “2.0” Altered Specification (version) openapi: “3.0.3”
  • 11.
    @APIHANDYMAN POSTMAN OPENTECHNOLOGIES Altered Specification (reusable components) swagger: “2.0” info: … paths: … definitions: … parameters: … openapi: “3.0.3” info: … paths: … components: schemas: … parameters: …
  • 12.
    @APIHANDYMAN POSTMAN OPENTECHNOLOGIES The Revenge of Consistency (all data defined the same way) swagger: “2.0” paths: /resources/{resourceId}: parameters: - name: resourceId type: string definitions: # Only for bodies openapi: “3.0.3” paths: /resources/{resourceId}: parameters: - name: resourceId schema: $ref: …/schemas/id components: schemas: # For all data
  • 13.
    @APIHANDYMAN POSTMAN OPENTECHNOLOGIES The Revenge of Consistency (more reusable components) swagger: “2.0” definitions: … parameters: … responses: … securityDefinitions: … openapi: “3.0.3” components: schemas: … parameters: … requestBodies: … responses: … securitySchemes: … examples: … headers: …
  • 14.
    @APIHANDYMAN POSTMAN OPENTECHNOLOGIES Mortal Servers (multiple servers) swagger: “2.0” schemes: - https host: server.com basePath: /name/v1 openapi: “3.0.3” servers: - description: production url: https://server.com/name/v1 - description: mock url: https://mock.com/name/v1
  • 15.
    @APIHANDYMAN POSTMAN OPENTECHNOLOGIES Mortal Servers (server variables) openapi: “3.0.3” servers: - description: production url: https://server.com/name/v1 - description: mock url: https://mock.com/name/v1 openapi: “3.0.3” servers: - description: production url: https://{type}.com/name/v1 variables: type: enum: - server - mock
  • 16.
    @APIHANDYMAN POSTMAN OPENTECHNOLOGIES Streets of Security II (enhanced and new security modes) swagger: “2.0” securityDefinitions: # Basic Authentication # API Key # Oauth2 openapi: “3.x.x” components: securitySchemes: # HTTP (Basic, Bearer) # API Key # Oauth 2 (fixed) # OpenId Connect # Mutual TLS (3.1)
  • 17.
    @APIHANDYMAN POSTMAN OPENTECHNOLOGIES Data Force IV (more versatile schemas) swagger: “2.0” definitions: # JSON Schema Draft 4 (mod) openapi: “3.0.3” components: schemas: # JSON Schema Draft 5 (mod) # Notable enhancements # oneOf, anyOf, not # writeOnly
  • 18.
    @APIHANDYMAN POSTMAN OPENTECHNOLOGIES Data Force IV (choose your JSON Schema) swagger: “2.0” definitions: # JSON Schema Draft 4 (mod) openapi: “3.1.0” components: schemas: # Default: JSON Schema # Draft 2020-12 # Overridden by $schema
  • 19.
    @APIHANDYMAN POSTMAN OPENTECHNOLOGIES Data Force IV (enhanced content negotiation) swagger: “2.0” # 1 schema for all media types paths: /resources: get: produces: - application/json - text/csv responses: 200: schema: openapi: “3.0.3” # Specific schemas for each paths: /resources: get: responses: 200: content: application/json: schema: … text/csv: schema: …
  • 20.
    @APIHANDYMAN POSTMAN OPENTECHNOLOGIES Data Force IV (enhanced parameter/header serialization) swagger: “2.0” parameters: aParameter: type: array collectionFormat: … openapi: “3.0.3” components: parameters: aParameter: # array or object style: … explode: …
  • 21.
    @APIHANDYMAN POSTMAN OPENTECHNOLOGIES After Event II (webhooks & callbacks) swagger: “2.0” openapi: “3.x.x” paths: /resources: post: callbacks: # 3.0 webhooks: # 3.1 /events: post: …
  • 22.
    @APIHANDYMAN POSTMAN OPENTECHNOLOGIES Phantasy Examples II (multiple examples) swagger: “2.0” # Example only on bodies example: # single undocumented # example openapi: “3.0.3” # Examples on bodies, # parameters, headers examples: anExample: summary: … description: … value: … # or externalValue: …
  • 23.
    @APIHANDYMAN POSTMAN OPENTECHNOLOGIES Shining Documentation (more summaries and descriptions) swagger: “2.0” info: description: … paths: /resources: openapi: “3.1.0” info: summary: … description: … paths: /resources: summary: … description: …
  • 24.
    @APIHANDYMAN POSTMAN OPENTECHNOLOGIES Thank you and goodbye Swagger 2 USE OPENAPI 3 NOW AND GET ALL OF ITS EXCLUSIVE NEW FEATURES FREE.
  • 25.
    @APIHANDYMAN POSTMAN OPENTECHNOLOGIES The path to OpenAPI 3 upgrade USE OPENAPI 3 NOW AND GET ALL OF ITS EXCLUSIVE NEW FEATURES FREE (almost).
  • 26.
    @APIHANDYMAN POSTMAN OPENTECHNOLOGIES The path to OpenAPI 3 upgrade Upgrade your tools Check third party tools compatibility Convert existing documents
  • 27.