001. Part 1 Describing APIs
002. Chapter 1. Introducing APIs and OpenAPI
003. Chapter 1. Where do OpenAPI definitions fit in
004. Chapter 1. When to use OpenAPI
005. Chapter 2. Getting set up to make API requests
006. Chapter 2. Adding a review to the FarmStall API
007. Chapter 3. Our first taste of OpenAPI definitions
008. Chapter 4. Using Swagger Editor to write OpenAPI definitions
009. Chapter 4. Writing in Swagger Editor
010. Chapter 5. Describing API responses
011. Chapter 5. Status codes
012. Chapter 5. Describing message, uuid, and userId
013. Chapter 6. Creating resources
014. Chapter 6. Adding examples to make try-it-out look pretty
015. Chapter 7. Adding authentication and authorization
016. Chapter 7. Adding the Authorization header
017. Chapter 8. Preparing and hosting API documentation
018. Chapter 8. Markdown basics
019. Chapter 8. Hosting our API documentation using Netlify.com and Swagger UI
020. Part 2 Design-first
021. Chapter 9. Designing a web application
022. Chapter 9. Domain modeling and APIs
023. Chapter 9. The Job and Dog models
024. Chapter 9. Mapping user stories
025. Chapter 10. Creating an API design using OpenAPI
026. Chapter 10. Creating the schemas
027. Chapter 10. The CRUD approach to API operations
028. Chapter 10. API operations for PetSitter
029. Chapter 10. JobApplication operations
030. Chapter 11. Building a change workflow around API design-first
031. Chapter 11. GitHub as our workflow engine
032. Chapter 11. Steps in our GitHub workflow
033. Chapter 12. Implementing frontend code and reacting to changes
034. Chapter 12. Adding multiple examples into your OpenAPI definition
035. Chapter 12. Choosing which mock data response to get from Prism
036. Chapter 13. Building a backend with Node.js and Swagger Codegen
037. Chapter 13. Investigating the structure
038. Chapter 13. Tagging API operations
039. Chapter 13. Testing input validation
040. Chapter 13. Configuring Mongoose in the project
041. Chapter 14. Integrating and releasing the web application
042. Chapter 14. Implementing authorization
043. Chapter 14. Managing repositories
044. Chapter 14. Server setup
045. Part 3 Extending APIs
046. Chapter 15. Designing the next API iteration
047. Chapter 15. Preparing for new features
048. Chapter 15. Reviewing user stories
049. Chapter 15. Improving the developer experience
050. Chapter 15. Input validation
051. Chapter 16. Designing schemas with composition in OpenAPI
052. Chapter 16. Polymorphism and inheritance in domain models
053. Chapter 16. Polymorphism and inheritance in OpenAPI
054. Chapter 16. Adding discriminators in OpenAPI
055. Chapter 17. Scaling collection endpoints with filters and pagination
056. Chapter 17. Designing filters
057. Chapter 17. Handling nested schemas
058. Chapter 17. Finding filter fields
059. Chapter 17. Adding filters to OpenAPI
060. Chapter 17. Offset-based and page-based pagination
061. Chapter 17. Pagination for PetSitter
062. Chapter 17. Multifield sorting
063. Chapter 18. Supporting the unhappy path Error handling with problem+json
064. Chapter 18. Finding unhappy paths
065. Chapter 18. Requirements for error responses
066. Chapter 18. The problem+json format
067. Chapter 18. Error-handling guidance
068. Chapter 19. Improving input validation with advanced JSON Schema
069. Chapter 19. Enforcing number constraints
070. Chapter 19. Updating PetSitter schemas
071. Chapter 20. Versioning an API and handling breaking changes
072. Chapter 20. Multiple API versions
073. Chapter 20. Using media types to version operations
074. Chapter 21. The API prerelease checklist
075. Chapter 21. End-to-end testing
076. Chapter 21. Getting your API consistent
077. Chapter 21. Getting a change strategy
078. Appendix A. Swagger 2.0, OpenAPI 3.0, and OpenAPI 3.1
079. Appendix A. Components and structure