# OpenAPI Spec
Desenvolvendo, mantendo e evoluindo REST APIs
---
### Formatos de Descrição de API
* **OpenAPI Spec** (https://www.openapis.org/)
* API Blueprint (https://apiblueprint.org)
* RAML (https://raml.org)
* OData (https://www.odata.org/)
* GraphQL (https://graphql.org/):question:
* gRPC (https://grpc.io):question:
---
### OpenAPI 3.0
* Em 2011 SmartBear desenvolve o `Swagger`
* 2016 `Swagger` torna-se um formato aberto chamado `OpenAPI`
* 2017 a *OpenAPI initiative* lança o `OpenAPI 3.0`
---
### O Formato
[Especificação Oficial](https://swagger.io/specification/)
Esquema visual da especificação: https://openapi-map.apihandyman.io/
* Pode ser descrito em `json` ou `yaml`
* Especificação de paths/resources e modelos de autenticação
* Suporte a definição de esquema de entidades/componentes (semelhante a *JSON Schema*)
---
### Visualização e Edição
**SwaggerUI**: https://petstore.swagger.io/?url=https://raw.githubusercontent.com/OAI/OpenAPI-Specification/master/examples/v3.0/petstore-expanded.yaml#/default/findPets
**Swagger Editor**: https://editor.swagger.io/?url=https://raw.githubusercontent.com/OAI/OpenAPI-Specification/master/examples/v3.0/petstore-expanded.yaml
---
### Abordagens de Desenvolvimento de APIs
> Code-first development
Geração de especificação através do código da API (Introspecção, Metatags, Annotations)
> Contract-first API development
Geração de serviços/clientes baseados numa especificação bem-definida de API (*[Codegen](https://openapi-generator.tech)*)
---
### Tooling
https://openapi.tools/
### Survey
https://smartbear.com/resources/ebooks/the-state-of-api-2019-report/
https://www.businesswire.com/news/home/20190206005087/en/Global-Survey-Reveals-API-Standardization-No.-1
https://cloudsecurityalliance.org/blog/2019/09/11/open-api-survey-report/
https://www.enterpriseai.news/2019/02/06/survey-developers-want-api-standards/
{"metaMigratedAt":"2023-06-15T00:51:42.032Z","metaMigratedFrom":"YAML","title":"Open API Spec","breaks":true,"description":"View the slide with \"Slide Mode\".","contributors":"[{\"id\":\"f68e4433-ed93-4564-a6f2-82501df0c6ce\",\"add\":2632,\"del\":449}]"}