Suche senden
Hochladen
Building Self Documenting REST APIs
•
4 gefällt mir
•
4,520 views
Yan Pritzker
Folgen
How to build self documenting APIs with HAL and Swagger
Weniger lesen
Mehr lesen
Internet
Diashow-Anzeige
Melden
Teilen
Diashow-Anzeige
Melden
Teilen
1 von 37
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
Ultimate Guide to 30+ API Documentation Solutions
Ultimate Guide to 30+ API Documentation Solutions
Bill Doerrfeld
REST API Doc Best Practices
REST API Doc Best Practices
Marta Rauch
apiDoc Introduction
apiDoc Introduction
Peter Rottmann
Maintainable API Docs and Other Rainbow Colored Unicorns
Maintainable API Docs and Other Rainbow Colored Unicorns
Neil Mansilla
API Description Languages: Which is the Right One for Me?
API Description Languages: Which is the Right One for Me?
Akana
API Best Practices
API Best Practices
Sai Koppala
apidays LIVE Hong Kong 2021 - Multi-Protocol APIs at Scale in Adidas by Jesus...
apidays LIVE Hong Kong 2021 - Multi-Protocol APIs at Scale in Adidas by Jesus...
apidays
apidays LIVE Australia - Have your cake and eat it too: GraphQL? REST? Why no...
apidays LIVE Australia - Have your cake and eat it too: GraphQL? REST? Why no...
apidays
Empfohlen
Ultimate Guide to 30+ API Documentation Solutions
Ultimate Guide to 30+ API Documentation Solutions
Bill Doerrfeld
REST API Doc Best Practices
REST API Doc Best Practices
Marta Rauch
apiDoc Introduction
apiDoc Introduction
Peter Rottmann
Maintainable API Docs and Other Rainbow Colored Unicorns
Maintainable API Docs and Other Rainbow Colored Unicorns
Neil Mansilla
API Description Languages: Which is the Right One for Me?
API Description Languages: Which is the Right One for Me?
Akana
API Best Practices
API Best Practices
Sai Koppala
apidays LIVE Hong Kong 2021 - Multi-Protocol APIs at Scale in Adidas by Jesus...
apidays LIVE Hong Kong 2021 - Multi-Protocol APIs at Scale in Adidas by Jesus...
apidays
apidays LIVE Australia - Have your cake and eat it too: GraphQL? REST? Why no...
apidays LIVE Australia - Have your cake and eat it too: GraphQL? REST? Why no...
apidays
Scaling Your Team With GraphQL: Why Relationships Matter
Scaling Your Team With GraphQL: Why Relationships Matter
Joel Bowen
Api types
Api types
Sarah Maddox
Another API-Blueprint, RAML and Swagger Comparison
Another API-Blueprint, RAML and Swagger Comparison
SmartBear
Rest api best practices – comprehensive handbook
Rest api best practices – comprehensive handbook
Katy Slemon
apidays LIVE Paris - Exploring an API with Blocks by Larry Kluger
apidays LIVE Paris - Exploring an API with Blocks by Larry Kluger
apidays
Design-first API Development using Swagger and Node
Design-first API Development using Swagger and Node
Apigee | Google Cloud
Operational API design anti-patterns (Jason Harmon)
Operational API design anti-patterns (Jason Harmon)
Nordic APIs
apidays LIVE Paris - The Augmented API Design Reviewer by Arnaud Lauret
apidays LIVE Paris - The Augmented API Design Reviewer by Arnaud Lauret
apidays
Api application programming interface
Api application programming interface
Mohit Bishnoi
apidays LIVE LONDON - Discovering API Version differences with ease by Jaap B...
apidays LIVE LONDON - Discovering API Version differences with ease by Jaap B...
apidays
apidays LIVE New York 2021 - API tool chain for low budget programs by Paul K...
apidays LIVE New York 2021 - API tool chain for low budget programs by Paul K...
apidays
Create and Manage APIs with API Connect, Swagger and Bluemix
Create and Manage APIs with API Connect, Swagger and Bluemix
Dev_Events
Cloudy rec citygridlosangeleshackathon (1)
Cloudy rec citygridlosangeleshackathon (1)
Kin Lane
Oracle api gateway overview
Oracle api gateway overview
Oracle Corporation
Oracle API Platform Cloud Service Best Practices & Lessons Learnt
Oracle API Platform Cloud Service Best Practices & Lessons Learnt
luisw19
API Copyrights: New Considerations for Building or Using APIs
API Copyrights: New Considerations for Building or Using APIs
Apigee | Google Cloud
APIs Are Forever - How to Design Long-Lasting APIs
APIs Are Forever - How to Design Long-Lasting APIs
LaunchAny
The API Facade Pattern: Common Patterns - Episode 2
The API Facade Pattern: Common Patterns - Episode 2
Apigee | Google Cloud
A Connector, A Container and an API Walk into a Bar… Microservices Edition
A Connector, A Container and an API Walk into a Bar… Microservices Edition
Steven Willmott
Sliding away from Roy Fielding's REST model (Filippos Vasilakis)
Sliding away from Roy Fielding's REST model (Filippos Vasilakis)
Nordic APIs
Crafting APIs
Crafting APIs
Tatiana Al-Chueyr
Practical guide to building public APIs
Practical guide to building public APIs
Reda Hmeid MBCS
Weitere ähnliche Inhalte
Was ist angesagt?
Scaling Your Team With GraphQL: Why Relationships Matter
Scaling Your Team With GraphQL: Why Relationships Matter
Joel Bowen
Api types
Api types
Sarah Maddox
Another API-Blueprint, RAML and Swagger Comparison
Another API-Blueprint, RAML and Swagger Comparison
SmartBear
Rest api best practices – comprehensive handbook
Rest api best practices – comprehensive handbook
Katy Slemon
apidays LIVE Paris - Exploring an API with Blocks by Larry Kluger
apidays LIVE Paris - Exploring an API with Blocks by Larry Kluger
apidays
Design-first API Development using Swagger and Node
Design-first API Development using Swagger and Node
Apigee | Google Cloud
Operational API design anti-patterns (Jason Harmon)
Operational API design anti-patterns (Jason Harmon)
Nordic APIs
apidays LIVE Paris - The Augmented API Design Reviewer by Arnaud Lauret
apidays LIVE Paris - The Augmented API Design Reviewer by Arnaud Lauret
apidays
Api application programming interface
Api application programming interface
Mohit Bishnoi
apidays LIVE LONDON - Discovering API Version differences with ease by Jaap B...
apidays LIVE LONDON - Discovering API Version differences with ease by Jaap B...
apidays
apidays LIVE New York 2021 - API tool chain for low budget programs by Paul K...
apidays LIVE New York 2021 - API tool chain for low budget programs by Paul K...
apidays
Create and Manage APIs with API Connect, Swagger and Bluemix
Create and Manage APIs with API Connect, Swagger and Bluemix
Dev_Events
Cloudy rec citygridlosangeleshackathon (1)
Cloudy rec citygridlosangeleshackathon (1)
Kin Lane
Oracle api gateway overview
Oracle api gateway overview
Oracle Corporation
Oracle API Platform Cloud Service Best Practices & Lessons Learnt
Oracle API Platform Cloud Service Best Practices & Lessons Learnt
luisw19
API Copyrights: New Considerations for Building or Using APIs
API Copyrights: New Considerations for Building or Using APIs
Apigee | Google Cloud
APIs Are Forever - How to Design Long-Lasting APIs
APIs Are Forever - How to Design Long-Lasting APIs
LaunchAny
The API Facade Pattern: Common Patterns - Episode 2
The API Facade Pattern: Common Patterns - Episode 2
Apigee | Google Cloud
A Connector, A Container and an API Walk into a Bar… Microservices Edition
A Connector, A Container and an API Walk into a Bar… Microservices Edition
Steven Willmott
Sliding away from Roy Fielding's REST model (Filippos Vasilakis)
Sliding away from Roy Fielding's REST model (Filippos Vasilakis)
Nordic APIs
Was ist angesagt?
(20)
Scaling Your Team With GraphQL: Why Relationships Matter
Scaling Your Team With GraphQL: Why Relationships Matter
Api types
Api types
Another API-Blueprint, RAML and Swagger Comparison
Another API-Blueprint, RAML and Swagger Comparison
Rest api best practices – comprehensive handbook
Rest api best practices – comprehensive handbook
apidays LIVE Paris - Exploring an API with Blocks by Larry Kluger
apidays LIVE Paris - Exploring an API with Blocks by Larry Kluger
Design-first API Development using Swagger and Node
Design-first API Development using Swagger and Node
Operational API design anti-patterns (Jason Harmon)
Operational API design anti-patterns (Jason Harmon)
apidays LIVE Paris - The Augmented API Design Reviewer by Arnaud Lauret
apidays LIVE Paris - The Augmented API Design Reviewer by Arnaud Lauret
Api application programming interface
Api application programming interface
apidays LIVE LONDON - Discovering API Version differences with ease by Jaap B...
apidays LIVE LONDON - Discovering API Version differences with ease by Jaap B...
apidays LIVE New York 2021 - API tool chain for low budget programs by Paul K...
apidays LIVE New York 2021 - API tool chain for low budget programs by Paul K...
Create and Manage APIs with API Connect, Swagger and Bluemix
Create and Manage APIs with API Connect, Swagger and Bluemix
Cloudy rec citygridlosangeleshackathon (1)
Cloudy rec citygridlosangeleshackathon (1)
Oracle api gateway overview
Oracle api gateway overview
Oracle API Platform Cloud Service Best Practices & Lessons Learnt
Oracle API Platform Cloud Service Best Practices & Lessons Learnt
API Copyrights: New Considerations for Building or Using APIs
API Copyrights: New Considerations for Building or Using APIs
APIs Are Forever - How to Design Long-Lasting APIs
APIs Are Forever - How to Design Long-Lasting APIs
The API Facade Pattern: Common Patterns - Episode 2
The API Facade Pattern: Common Patterns - Episode 2
A Connector, A Container and an API Walk into a Bar… Microservices Edition
A Connector, A Container and an API Walk into a Bar… Microservices Edition
Sliding away from Roy Fielding's REST model (Filippos Vasilakis)
Sliding away from Roy Fielding's REST model (Filippos Vasilakis)
Ähnlich wie Building Self Documenting REST APIs
Crafting APIs
Crafting APIs
Tatiana Al-Chueyr
Practical guide to building public APIs
Practical guide to building public APIs
Reda Hmeid MBCS
Making Sense of Hypermedia APIs – Hype or Reality?
Making Sense of Hypermedia APIs – Hype or Reality?
Akana
REST: The Most Misunderstood Software Architecture Ever
REST: The Most Misunderstood Software Architecture Ever
Martín Soto
Api
Api
Zolzaya Erdenebaatar
Building REST APIs that don't suck for modern day SPAs
Building REST APIs that don't suck for modern day SPAs
Abati Adewale
API Conference 2021
API Conference 2021
José Haro Peralta
Apigility – Lightning Fast API Development - OSSCamp 2014
Apigility – Lightning Fast API Development - OSSCamp 2014
OSSCube
API Documentation.pptx
API Documentation.pptx
RahulCR31
API Documentation.pptx
API Documentation.pptx
RahulCR31
A Practical Guide to Automating End-to-End API Testing
A Practical Guide to Automating End-to-End API Testing
pCloudy
Web API with ASP.NET MVC by Software development company in india
Web API with ASP.NET MVC by Software development company in india
iFour Institute - Sustainable Learning
API Workshop: Deep dive into REST APIs
API Workshop: Deep dive into REST APIs
Tom Johnson
What’s a REST API and why should I care?
What’s a REST API and why should I care?
topher1kenobe
Alfresco Process Services REST API - Alfresco DevCon 2018
Alfresco Process Services REST API - Alfresco DevCon 2018
Dennis Koch
Web Clients for Ruby and What they should be in the future
Web Clients for Ruby and What they should be in the future
Toru Kawamura
Apitesting.pptx
Apitesting.pptx
NamanVerma88
RefCard API Architecture Strategy
RefCard API Architecture Strategy
OCTO Technology
Understanding API Architectures: Web API vs. Minimal API – An In-Depth Compar...
Understanding API Architectures: Web API vs. Minimal API – An In-Depth Compar...
Polyxer Systems
Your API is not a Website!
Your API is not a Website!
Apigee | Google Cloud
Ähnlich wie Building Self Documenting REST APIs
(20)
Crafting APIs
Crafting APIs
Practical guide to building public APIs
Practical guide to building public APIs
Making Sense of Hypermedia APIs – Hype or Reality?
Making Sense of Hypermedia APIs – Hype or Reality?
REST: The Most Misunderstood Software Architecture Ever
REST: The Most Misunderstood Software Architecture Ever
Api
Api
Building REST APIs that don't suck for modern day SPAs
Building REST APIs that don't suck for modern day SPAs
API Conference 2021
API Conference 2021
Apigility – Lightning Fast API Development - OSSCamp 2014
Apigility – Lightning Fast API Development - OSSCamp 2014
API Documentation.pptx
API Documentation.pptx
API Documentation.pptx
API Documentation.pptx
A Practical Guide to Automating End-to-End API Testing
A Practical Guide to Automating End-to-End API Testing
Web API with ASP.NET MVC by Software development company in india
Web API with ASP.NET MVC by Software development company in india
API Workshop: Deep dive into REST APIs
API Workshop: Deep dive into REST APIs
What’s a REST API and why should I care?
What’s a REST API and why should I care?
Alfresco Process Services REST API - Alfresco DevCon 2018
Alfresco Process Services REST API - Alfresco DevCon 2018
Web Clients for Ruby and What they should be in the future
Web Clients for Ruby and What they should be in the future
Apitesting.pptx
Apitesting.pptx
RefCard API Architecture Strategy
RefCard API Architecture Strategy
Understanding API Architectures: Web API vs. Minimal API – An In-Depth Compar...
Understanding API Architectures: Web API vs. Minimal API – An In-Depth Compar...
Your API is not a Website!
Your API is not a Website!
Mehr von Yan Pritzker
Bitcoin not Blockchain
Bitcoin not Blockchain
Yan Pritzker
CTO - Startup to Growth
CTO - Startup to Growth
Yan Pritzker
Outsource Everything
Outsource Everything
Yan Pritzker
Domain Driven Rails
Domain Driven Rails
Yan Pritzker
Pasted image-3237
Pasted image-3237
Yan Pritzker
Pasted image-1795
Pasted image-1795
Yan Pritzker
Pasted image-3237
Pasted image-3237
Yan Pritzker
Pasted image-1795
Pasted image-1795
Yan Pritzker
Pasted image-1706
Pasted image-1706
Yan Pritzker
Building Services on and off Rails
Building Services on and off Rails
Yan Pritzker
Virtualization and Cloud Computing with Elastic Server On Demand
Virtualization and Cloud Computing with Elastic Server On Demand
Yan Pritzker
Mehr von Yan Pritzker
(11)
Bitcoin not Blockchain
Bitcoin not Blockchain
CTO - Startup to Growth
CTO - Startup to Growth
Outsource Everything
Outsource Everything
Domain Driven Rails
Domain Driven Rails
Pasted image-3237
Pasted image-3237
Pasted image-1795
Pasted image-1795
Pasted image-3237
Pasted image-3237
Pasted image-1795
Pasted image-1795
Pasted image-1706
Pasted image-1706
Building Services on and off Rails
Building Services on and off Rails
Virtualization and Cloud Computing with Elastic Server On Demand
Virtualization and Cloud Computing with Elastic Server On Demand
Kürzlich hochgeladen
Dwarka Sector 26 Call Girls | Delhi | 9999965857 🫦 Vanshika Verma More Our Se...
Dwarka Sector 26 Call Girls | Delhi | 9999965857 🫦 Vanshika Verma More Our Se...
Call Girls In Delhi Whatsup 9873940964 Enjoy Unlimited Pleasure
Networking in the Penumbra presented by Geoff Huston at NZNOG
Networking in the Penumbra presented by Geoff Huston at NZNOG
APNIC
AWS Community DAY Albertini-Ellan Cloud Security (1).pptx
AWS Community DAY Albertini-Ellan Cloud Security (1).pptx
ellan12
VIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call Girl
VIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call Girl
aditipandeya
On Starlink, presented by Geoff Huston at NZNOG 2024
On Starlink, presented by Geoff Huston at NZNOG 2024
APNIC
Moving Beyond Twitter/X and Facebook - Social Media for local news providers
Moving Beyond Twitter/X and Facebook - Social Media for local news providers
Damian Radcliffe
Russian Call girl in Ajman +971563133746 Ajman Call girl Service
Russian Call girl in Ajman +971563133746 Ajman Call girl Service
gwenoracqe6
Call Girls Dubai Prolapsed O525547819 Call Girls In Dubai Princes$
Call Girls Dubai Prolapsed O525547819 Call Girls In Dubai Princes$
kojalkojal131
Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝
soniya singh
Challengers I Told Ya ShirtChallengers I Told Ya Shirt
Challengers I Told Ya ShirtChallengers I Told Ya Shirt
rahman018755
FULL ENJOY Call Girls In Mayur Vihar Delhi Contact Us 8377087607
FULL ENJOY Call Girls In Mayur Vihar Delhi Contact Us 8377087607
dollysharma2066
Russian Call Girls in Kolkata Ishita 🤌 8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls in Kolkata Ishita 🤌 8250192130 🚀 Vip Call Girls Kolkata
anamikaraghav4
AlbaniaDreamin24 - How to easily use an API with Flows
AlbaniaDreamin24 - How to easily use an API with Flows
Thierry TROUIN ☁
Low Rate Call Girls Kolkata Avani 🤌 8250192130 🚀 Vip Call Girls Kolkata
Low Rate Call Girls Kolkata Avani 🤌 8250192130 🚀 Vip Call Girls Kolkata
anamikaraghav4
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...
APNIC
VIP Kolkata Call Girl Kestopur 👉 8250192130 Available With Room
VIP Kolkata Call Girl Kestopur 👉 8250192130 Available With Room
divyansh0kumar0
VIP Kolkata Call Girl Dum Dum 👉 8250192130 Available With Room
VIP Kolkata Call Girl Dum Dum 👉 8250192130 Available With Room
divyansh0kumar0
Rohini Sector 6 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 6 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Call Girls In Delhi Whatsup 9873940964 Enjoy Unlimited Pleasure
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
soniya singh
Pune Airport ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready...
Pune Airport ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready...
tanu pandey
Kürzlich hochgeladen
(20)
Dwarka Sector 26 Call Girls | Delhi | 9999965857 🫦 Vanshika Verma More Our Se...
Dwarka Sector 26 Call Girls | Delhi | 9999965857 🫦 Vanshika Verma More Our Se...
Networking in the Penumbra presented by Geoff Huston at NZNOG
Networking in the Penumbra presented by Geoff Huston at NZNOG
AWS Community DAY Albertini-Ellan Cloud Security (1).pptx
AWS Community DAY Albertini-Ellan Cloud Security (1).pptx
VIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call Girl
VIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call Girl
On Starlink, presented by Geoff Huston at NZNOG 2024
On Starlink, presented by Geoff Huston at NZNOG 2024
Moving Beyond Twitter/X and Facebook - Social Media for local news providers
Moving Beyond Twitter/X and Facebook - Social Media for local news providers
Russian Call girl in Ajman +971563133746 Ajman Call girl Service
Russian Call girl in Ajman +971563133746 Ajman Call girl Service
Call Girls Dubai Prolapsed O525547819 Call Girls In Dubai Princes$
Call Girls Dubai Prolapsed O525547819 Call Girls In Dubai Princes$
Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝
Challengers I Told Ya ShirtChallengers I Told Ya Shirt
Challengers I Told Ya ShirtChallengers I Told Ya Shirt
FULL ENJOY Call Girls In Mayur Vihar Delhi Contact Us 8377087607
FULL ENJOY Call Girls In Mayur Vihar Delhi Contact Us 8377087607
Russian Call Girls in Kolkata Ishita 🤌 8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls in Kolkata Ishita 🤌 8250192130 🚀 Vip Call Girls Kolkata
AlbaniaDreamin24 - How to easily use an API with Flows
AlbaniaDreamin24 - How to easily use an API with Flows
Low Rate Call Girls Kolkata Avani 🤌 8250192130 🚀 Vip Call Girls Kolkata
Low Rate Call Girls Kolkata Avani 🤌 8250192130 🚀 Vip Call Girls Kolkata
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...
VIP Kolkata Call Girl Kestopur 👉 8250192130 Available With Room
VIP Kolkata Call Girl Kestopur 👉 8250192130 Available With Room
VIP Kolkata Call Girl Dum Dum 👉 8250192130 Available With Room
VIP Kolkata Call Girl Dum Dum 👉 8250192130 Available With Room
Rohini Sector 6 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 6 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Pune Airport ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready...
Pune Airport ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready...
Building Self Documenting REST APIs
1.
Self-Documenting APIs @skwp @reverbdotcom
2.
3.
What Makes a Good
API?
4.
Discoverable
5.
Self Documenting
6.
Standardized
7.
Discoverability
8.
Discoverability What can I
do with it?
9.
If the engine
of application state (and hence the API) is not being driven by hypertext, then it cannot be RESTful and cannot be a REST API. Period.
10.
http://martinfowler.com/articles/richardsonMaturityModel.html
11.
Hypermedia as the
Engine of Application State HATEOAS
12.
What Happens When
I GET reverb.com/api?
13.
What Happens When
I GET yahoo.com?
14.
curl https://reverb.com/api
15.
GET product._links.buy
16.
17.
18.
Evolvability
19.
Self-Documenting
20.
Self-Documenting How can I
do what I want to do?
21.
Minimize Documentation Drift
22.
Generate Docs, Clients,
even Servers from Code
23.
24.
25.
Standardized
26.
Standardized How is it
similar to other APIs?
27.
Simplicity Increases Likelihood of
Adoption
28.
Fewer Constructs is Simpler
29.
Siren • jsonapi.org
• HAL
30.
Siren • jsonapi.org
• HAL
31.
Siren • jsonapi.org
• HAL
32.
Winner: HAL http://stateless.co/hal_specification.html
33.
BONUS - Baked
into Roar
34.
Discoverable ✓HATEOAS ✓HAL Links ✓Grape+Roar
35.
Self Documenting ✓Swagger ✓Grape-Swagger ✓Swagger-UI
36.
Standardized ✓Swagger ✓HAL ✓REST
37.
Resources http://swagger.io/ https://github.com/swagger-api/swagger-spec http://api.opensupporter.org/hb2/browser.html#/api/v1 http://stateless.co/hal_specification.html https://github.com/swagger-api/swagger-ui http://roy.gbiv.com/untangled/2008/rest-apis-must-be- hypertext-driven @skwp @reverbdotcom https://github.com/swagger-api/swagger-codegen
Jetzt herunterladen