OPEN-SOURCED ON
GITHUB
Visibility
https://github.com/adidas-group/api-guidelines
Slide 44
Slide 44 text
DESIGN
CONSISTENCY
Client DX
Fast
Delivery
HOW TO MAKE EVERYBODY FOLLOWS THE GUIDELINES
Slide 45
Slide 45 text
AUTOMATED DESIGN
CHECKS USING APIARY
STYLE GUIDE
Slide 46
Slide 46 text
AUTOMATIC DESIGN
GOVERNANCE
Slide 47
Slide 47 text
1
DESIGN
DEVELOP
DEPLOY
PUBLISH
CON
SUM
E
AN
ALYZE
2 3 4 5 6 7
UPDATE
DEVELOP &
TEST‐API
Slide 48
Slide 48 text
BOILERPLATES, TEMPLATES
&
GUIDELINES
Fast
Delivery
Server DX
Slide 49
Slide 49 text
SPRINGBOOT MICROSERVICE
MAVEN ARCHETYPE
Slide 50
Slide 50 text
CONTRACT
VERIFICATION
Fast
Delivery
Server DX
Slide 51
Slide 51 text
DREDD — HTTP‐API
TESTING FRAMEWORK
Slide 52
Slide 52 text
CONTRACT VERIFICATION
Dredd CLI
API Description API Implementation
Endpoint 1
Endpoint 2
Endpoint 3
Endpoint 4
Slide 53
Slide 53 text
JENKINS DREDD
PLUGIN
Slide 54
Slide 54 text
JENKINS DREDD+APIARY
PLUGIN
Slide 55
Slide 55 text
AUTOMATED SECURITY
CHECK
Security
Work in
Progress
SECURITY‐AT THE SOURCE
Slide 56
Slide 56 text
Performance
Fast
Delivery
Server DX
1
DESIGN
DEVELOP
DEPLOY
PUBLISH
CON
SUM
E
AN
ALYZE
2 3 4 5 6 7
UPDATE
DEPLOY
API
Slide 57
Slide 57 text
No content
Slide 58
Slide 58 text
Security Ownership
1
DESIGN
DEVELOP
DEPLOY
PUBLISH
CON
SUM
E
AN
ALYZE
2 3 4 5 6 7
UPDATE
PUBLISH
API
Slide 59
Slide 59 text
EXPOSE API USING
MASHERY
Slide 60
Slide 60 text
ARCHITECTURE
Slide 61
Slide 61 text
ADIDAS API
MANAGEMENT
GUIDELINES
NAMING CONVENTIONS, PACKAGING, THROTTLING,
AUTHENTICATION AND KEY POLICES
Slide 62
Slide 62 text
MASHERY TOOLBELT
Fast
Delivery
AUTOMATED API MANAGEMENT PROVISIONING USING THE
API DESCRIPTION. FOLLOWING API MANAGEMENT
GUIDELINES
Slide 63
Slide 63 text
MASHERY TOOLBELT
https://www.npmjs.com/package/mashery-toolbelt
Work in
Progress
https://github.com/adidas-group/mashery-toolbelt
Slide 64
Slide 64 text
Client DX
Stability
&
Extensibility
1
DESIGN
DEVELOP
DEPLOY
PUBLISH
CON
SUM
E
AN
ALYZE
2 3 4 5 6 7
UPDATE
CONSUME
API
Slide 65
Slide 65 text
API
DOCUMENTATION
INTERACTIVE, CODE SAMPLES & DEBUGGING PROXY
Client DX
Slide 66
Slide 66 text
DEVELOPER PORTAL
APPLICATION KEYS PROVISIONING, GETTING STARTED &
USAGE PRINCIPLES
Work in
Progress
Client DX
Slide 67
Slide 67 text
DEVELOPERS PORTAL
Work in
Progress
Slide 68
Slide 68 text
LOOSE COUPLING
CLIENT MUST FOLLOW ROBUSTNESS PRINCIPLE, AND ACT
INDEPENDENTL
Y, NOT‐ASSUMING ANY INTERNAL
IMPLEMENTATION OF THE SERVICE
Client DX
Stability
&
Extensibility
Slide 69
Slide 69 text
Visibility
1
DESIGN
DEVELOP
DEPLOY
PUBLISH
CON
SUM
E
AN
ALYZE
2 3 4 5 6 7
UPDATE
ANALYZE
API
Slide 70
Slide 70 text
ANALYZE
Slide 71
Slide 71 text
AUTOMATED API
AVAILABILITY TESTING
WITH RUNSCOPE
Slide 72
Slide 72 text
Stability
&
Extensibility
Client DX
1
DESIGN
DEVELOP
DEPLOY
PUBLISH
CON
SUM
E
AN
ALYZE
2 3 4 5 6 7
UPDATE
UPDATE
API
Slide 73
Slide 73 text
CHANGES
&
VERSIONING
Slide 74
Slide 74 text
–Mark Nottingham
“The fundamental principle is that you can’t break
existing clients, because you don’t know what they
implement, and you don’t control them. In doing so,
you need to turn a backwards-incompatible change
into a compatible one.”
Slide 75
Slide 75 text
NO URI VERSIONING
https://blog.goodapi.co/
https://blog.apisyouwonthate.com/
Slide 76
Slide 76 text
RULES FOR EXTENDING
• You MUST NOT take anything away (related: Minimal Surface
Principle , Robustness Principle)
• You MUST NOT change processing rules
• You MUST NOT make optional things required
• Anything you add MUST be optional (related Robustness
Principle)
Slide 77
Slide 77 text
CHANGE MANAGEMENT
• Resource identifier including any query parameters and their
semantics
• Resource metadata
• Action the resource affords
• Relation with other resources
• Representation format
ANY‐CHANGE TO
IS SUBJECT TO RULES FOR EXTENDING
Slide 78
Slide 78 text
BACKWARD
INCOMPATIBLE CHANGES
IMPLIES NEW RESOURCE VARIANT
/greeting?first=John&last=Appleseed
/named-greeting?first=John&last=Appleseed
first and last are optional but
first needs to be made required
Slide 79
Slide 79 text
ADIDAS API LIFECYCLE
1
DESIGN
DEVELOP
&
TEST
DEPLOY
PUBLISH
CON
SUM
E
AN
ALYZE
2 3 4 5 6 7
UPDATE
Prototype
Feedback
Slide 80
Slide 80 text
FULL PICTURE
Slide 81
Slide 81 text
AUTOMATED
CONTRACT-DRIVEN API
LIFECYCLE
Slide 82
Slide 82 text
Bitbucket
Apiary
Jenkins
Mashery API Gateway
Mashery Cloud
K8s Platfrom
API Consumer
Apiary Documentation
Apiary Mock Service
API Description
API Description
Service Implementation
Apiary Style Guide
Dredd Plug-in
Apiary Test Reporter
Apiary adidas team APIs
Apiary Documentation
Apiary Mock Service
Analytics
Admin
Mashery Toolbelt
2
3
4
5
6
7
1
1 Design 2 Develop 3 Deploy 4 Publish 5 Use 6 Analyze 7 Update
Security Checks
Runscope Kibana
Slide 83
Slide 83 text
http://goodapi.co/api-lifecycle
Slide 84
Slide 84 text
THE FUTURE: REDESIGN B2B
BUSINESS & ENABLE DIGITAL
CREATION THROUGH APIS
Slide 85
Slide 85 text
COMPLETE B2B
HAPPENING
THROUGH APIS
Slide 86
Slide 86 text
DIGITAL
CREATION:
CREATING
THE NEW
Slide 87
Slide 87 text
THANK YOU
ZDENEK “Z” NEMEC
OLDRICH NOVAK
https://goodapi.co
@zdne
GOOD
API
[email protected]
Slide 88
Slide 88 text
Q&A
ZDENEK “Z” NEMEC
OLDRICH NOVAK
https://goodapi.co
@zdne
GOOD
API
[email protected]