{"id":23946,"date":"2022-12-28T12:29:04","date_gmt":"2022-12-28T12:29:04","guid":{"rendered":"https:\/\/document360.com\/?p=23946"},"modified":"2025-03-14T10:40:14","modified_gmt":"2025-03-14T10:40:14","slug":"openapi","status":"publish","type":"post","link":"https:\/\/document360.com\/pt-br\/blog\/openapi\/","title":{"rendered":"O que \u00e9 OpenAPI? Vantagens, Desvantagens &amp; Exemplos"},"content":{"rendered":"<h2>O que \u00e9 OpenAPI?<\/h2>\r\n<p>De acordo com o SmartBear, a empresa-m\u00e3e do Swagger:<\/p>\r\n<p><em>\u201c<strong>A Especifica\u00e7\u00e3o do OpenAPI<\/strong> (EOA) define uma interface padr\u00e3o, independente da linguagem, para APIs RESTful que permite que humanos e computadores descubram e compreendam as capacidades do servi\u00e7o sem acesso ao c\u00f3digo-fonte, \u00e0 documenta\u00e7\u00e3o ou \u00e0 inspe\u00e7\u00e3o do tr\u00e1fego de rede.\u201d<\/em><\/p>\r\n<p>Esta defini\u00e7\u00e3o \u00e9 um pouco complicada. Vamos decompor a descri\u00e7\u00e3o do SmartBear em peda\u00e7os menores:<\/p>\r\n<p><strong>1.\u201c\u2026define uma intercafe padr\u00e3o\u2026\u201d:<\/strong><\/p>\r\n<p>A especifica\u00e7\u00e3o do OpenAPI define a estrutura de uma API que tamb\u00e9m descreve a API.<\/p>\r\n<p><strong>2. \u201c\u2026interface padr\u00e3o de linguagem para APIs RESTful\u2026\u201d:<\/strong><\/p>\r\n<ul>\r\n\t<li>REST APIs usam protocolo HTTP para transmiss\u00e3o de dados. Este protocolo permite que plataformas e sistemas escritos em diferentes linguagens de programa\u00e7\u00e3o interajam.<\/li>\r\n\t<li>O OpenAPI lida apenas com APIs RESTful e n\u00e3o com outros tipos de APIs.<\/li>\r\n<\/ul>\r\n<p><strong>3. \u201c\u2026Que permite que pessoas e computadores descubram e compreendam as capacidades do servi\u00e7o\u2026\u201d:<\/strong><\/p>\r\n<ul>\r\n\t<li>As pessoas podem ler a documenta\u00e7\u00e3o gerada diretamente a partir da defini\u00e7\u00e3o da OAS de uma API.<\/li>\r\n\t<li>Um cliente entende como pode enviar solicita\u00e7\u00f5es e como os servidores API respondem a essas solicita\u00e7\u00f5es com base na defini\u00e7\u00e3o de API.<\/li>\r\n<\/ul>\r\n<p><strong>4. \u201c\u2026Sem acesso ao c\u00f3digo-fonte, \u00e0 documenta\u00e7\u00e3o ou \u00e0 inspe\u00e7\u00e3o do tr\u00e1fego de rede.\u201d<\/strong><\/p>\r\n<p>Com a OpenAPI, o aplicativo do cliente e o servidor de API s\u00e3o separados. A defini\u00e7\u00e3o de API de um servi\u00e7o define como os clientes podem interagir com ele sem a necessidade de o cliente ler seu c\u00f3digo-fonte.<\/p>\r\n<p>Em resumo, a OpenAPI \u00e9 uma <a href=\"\/blog\/what-is-rest-api\/\" target=\"_blank\" rel=\"noopener\">especifica\u00e7\u00e3o de API RESTful<\/a> que descreve APIs em conformidade com a arquitetura RESTful. Uma especifica\u00e7\u00e3o fornece uma interface para permitir que humanos e computadores entendam uma API e como interagir com ela.<\/p>\r\n<h2>Hist\u00f3ria da OpenAPI<\/h2>\r\n<p>As origens da OpenAPI come\u00e7aram com o engenheiro Tony Tam, da empresa Wordnik, em 2009. Tony criou uma especifica\u00e7\u00e3o (chamada Swagger na \u00e9poca) que descreveria a API JSON do dicion\u00e1rio on-line da Wordnik.<\/p>\r\n<p>O Swagger foi submetido a v\u00e1rias itera\u00e7\u00f5es por Tony nos anos seguintes. No entanto, o Swagger 2.0 registrou um aumento na ado\u00e7\u00e3o da especifica\u00e7\u00e3o e desencadeou a cria\u00e7\u00e3o de ferramentas para analisar a especifica\u00e7\u00e3o.<\/p>\r\n<p>Em 2015, a SmartBear adquiriu o Swagger. A SmartBear \u00e9 a empresa que atualmente \u00e9 propriet\u00e1ria do Swagger. A especifica\u00e7\u00e3o Swagger foi renomeada como \u201cOpenAPI\u201d para refletir a nova iniciativa OpenAPI. Essa renomea\u00e7\u00e3o \u00e9 a raz\u00e3o pela qual o \u201cSwagger\u201d \u00e9 confundido com o padr\u00e3o \u201cOpenAPI\u201d.<\/p>\r\n<p>Na \u00e9poca, um grupo de empresas reconheceu que o setor precisava de uma forma padronizada e neutra em rela\u00e7\u00e3o aos fornecedores para descrever as APIs. O setor precisava fornecer \u201cpr\u00e1ticas recomendadas\u201d para o setor e supervisionar as atualiza\u00e7\u00f5es da OpenAPI ao longo do tempo.<\/p>\r\n<p>Essas empresas estabeleceram a Iniciativa OpenAPI como um programa de governan\u00e7a da Linux Foundation que mant\u00e9m o padr\u00e3o OpenAPI e fornece orienta\u00e7\u00f5es pr\u00e1ticas. As empresas fundadoras que formaram a iniciativa OpenAPI foram CapitalOne, PayPal, SmartBear, IBM, 3Scale, Google, Apigee, Intuit, Microsoft e Restlet. Desde ent\u00e3o, o n\u00famero de empresas que participam da iniciativa cresceu consideravelmente.<\/p>\r\n<p>O Comit\u00ea de Dire\u00e7\u00e3o T\u00e9cnica agora gerencia a OpenAPI e continua a lan\u00e7ar novas vers\u00f5es com base no feedback da comunidade.<\/p>\r\n<h2>Por que o OpenAPI \u00e9 um padr\u00e3o popular?<\/h2>\r\n<p>Existem v\u00e1rias especifica\u00e7\u00f5es dispon\u00edveis que descrevem APIs RESTful. O OpenAPI est\u00e1 entre os mais bem conhecidos e amplamente utilizados. Os outros dois formatos usados para REST APIs s\u00e3o RAML e API Blueprint. Abordaremos as vantagens e desvantagens do OpenAPI mais tarde. Embora o OpenAPI possa ser considerado o padr\u00e3o da ind\u00fastria, no final, as empresas muitas vezes escolhem o formato que melhor se adapta \u00e0s suas necessidades de neg\u00f3cios.<\/p>\r\n<p>Ent\u00e3o, isso requer a pergunta: se h\u00e1 v\u00e1rios formatos dispon\u00edveis para descrever REST APIs, por que a OpenAPI \u00e9 t\u00e3o especial? Um fator chave para porque o OpenAPI \u00e9 t\u00e3o popular \u00e9 a sua ado\u00e7\u00e3o. Mais ado\u00e7\u00e3o leva a mais apoio comunit\u00e1rio, ferramentas robustas e uma governa\u00e7\u00e3o mais eficaz.<\/p>\r\n<p>Uma empresa pode usar a especifica\u00e7\u00e3o do OpenAPI para sua portabilidade e simplicidade. A OpenAPI \u00e9 &#8220;language-agnostic&#8221; e define uma linguagem comum para a comunica\u00e7\u00e3o cliente-servidor. \u00c9 altamente compat\u00edvel com sistemas escritos em diferentes linguagens de programa\u00e7\u00e3o. A OpenAPI tamb\u00e9m \u00e9 altamente leg\u00edvel para seres humanos e computadores e tem o apoio de uma grande comunidade em crescimento.<\/p>\r\n<p>Outro formato popular \u00e9 o RAML, uma linguagem de modelagem de API com foco na defini\u00e7\u00e3o e no design de APIs (embora voc\u00ea possa projetar APIs com OpenAPI). Os recursos da RAML podem parecer inferiores aos da OpenAPI. Ela tem a vantagem de ser hier\u00e1rquica e suportar a heran\u00e7a do modelo de dados. No entanto, a RAML n\u00e3o \u00e9 t\u00e3o amplamente adotada quanto a OpenAPI. Embora a RAML tenha uma comunidade dedicada, ela tem menos suporte da comunidade. A RAML tem ferramentas, mas h\u00e1 algumas indica\u00e7\u00f5es de que as vers\u00f5es mais recentes n\u00e3o t\u00eam o suporte necess\u00e1rio.<\/p>\r\n<p>Al\u00e9m da RAML, o API Blueprint \u00e9 outra alternativa \u00e0 OpenAPI. O API Blueprint se concentra em uma documenta\u00e7\u00e3o clara com base no formato markdown, em vez de JSON (como OpenAPI) ou YAML (como OpenAPI e RAML). Devido \u00e0 sua baixa ado\u00e7\u00e3o, o API Blueprint n\u00e3o tem suporte da comunidade e ferramentas robustas para OpenAPI. A integra\u00e7\u00e3o do API Blueprint em todo o<a href=\"\/blog\/api-lifecycle-management\/\" target=\"_blank\" rel=\"noopener\"> ciclo de vida da API<\/a> \u00e9 dif\u00edcil porque seu \u00fanico foco \u00e9 a documenta\u00e7\u00e3o.<\/p>\r\n<p>Em resumo, a OpenAPI \u00e9 o padr\u00e3o mais popular para a descri\u00e7\u00e3o de APIs. Embora tenha desvantagens, a ado\u00e7\u00e3o da OpenAPI provavelmente crescer\u00e1, enquanto a viabilidade de longo prazo de outros tipos de especifica\u00e7\u00e3o \u00e9 incerta.<\/p>\r\n<h2>Como o OpenAPI define uma API?<\/h2>\r\n<p>Pense em um documento de especifica\u00e7\u00e3o de legado que voc\u00ea leria no formato Microsoft Word (.docx). Esse documento de especifica\u00e7\u00e3o de legado fornece o contexto geral de um sistema e descreve seus componentes e intera\u00e7\u00f5es com outros sistemas.<\/p>\r\n<p>A estrutura das especifica\u00e7\u00f5es do legado geralmente varia. Uma especifica\u00e7\u00e3o de API, como a OpenAPI, \u00e9 estritamente estruturada. Se uma especifica\u00e7\u00e3o de API estiver em conformidade com outro formato, como RAML ou API Blueprint, a documenta\u00e7\u00e3o ter\u00e1 uma estrutura que adere a esse formato.<\/p>\r\n<p>Voltando \u00e0 forma como a OpenAPI define uma API, voc\u00ea ouvir\u00e1 com frequ\u00eancia \u201cespecifica\u00e7\u00e3o\u201d e \u201cdefini\u00e7\u00e3o\u201d usadas como sin\u00f4nimos. Uma especifica\u00e7\u00e3o de API \u201cdefine\u201d uma API. Ao ler uma especifica\u00e7\u00e3o de API, voc\u00ea aprende sobre os tipos de solicita\u00e7\u00f5es que pode enviar e as respostas que espera receber da API. Al\u00e9m disso, a especifica\u00e7\u00e3o descreve as op\u00e7\u00f5es dispon\u00edveis que afetam as informa\u00e7\u00f5es retornadas. Como em uma especifica\u00e7\u00e3o herdada, voc\u00ea aprende sobre um sistema, seus componentes e suas intera\u00e7\u00f5es.<\/p>\r\n<p>Outra diferen\u00e7a entre as especifica\u00e7\u00f5es de legado e as especifica\u00e7\u00f5es de API \u00e9 que as especifica\u00e7\u00f5es de API s\u00e3o din\u00e2micas. Sempre que o c\u00f3digo-fonte subjacente de uma API \u00e9 alterado, a documenta\u00e7\u00e3o \u00e9 atualizada. Os documentos de especifica\u00e7\u00e3o herdados exigem a atualiza\u00e7\u00e3o manual de documentos do Word sempre que o sistema \u00e9 alterado.<\/p>\r\n<h2>Formato do OpenAPI<\/h2>\r\n<p>Antes de entender a estrutura de uma especifica\u00e7\u00e3o da OpenAPI, voc\u00ea deve entender o formato de um documento da OpenAPI. Ao contr\u00e1rio das especifica\u00e7\u00f5es legado escritas em Word, o formato da OpenAPI \u00e9 JSON. Embora a discuss\u00e3o das nuances do JSON esteja fora do escopo desta postagem do blog, pense no JSON como uma forma de representar os dados de uma API como pares de valores-chave.<\/p>\r\n<p>Por exemplo, em especifica\u00e7\u00f5es legadas, voc\u00ea escreveria o t\u00edtulo de uma especifica\u00e7\u00e3o (incluindo o nome do sistema) usando um estilo de t\u00edtulo na p\u00e1gina de rosto. Para escrever o t\u00edtulo de uma especifica\u00e7\u00e3o da OpenAPI, por outro lado, voc\u00ea escreveria o t\u00edtulo como um par de valores-chave JSON.<\/p>\r\n<p>Agora, pense em todas as informa\u00e7\u00f5es sobre uma API. Seus m\u00e9todos, opera\u00e7\u00f5es, respostas, etc. Imagine todas essas propriedades documentadas em uma s\u00e9rie desses pares de valores-chave que seguem a estrutura da OpenAPI.<\/p>\r\n<p><strong>Observa\u00e7\u00e3o:<\/strong> embora o JSON seja o formato padr\u00e3o da OpenAPI, \u00e9 poss\u00edvel representar a OpenAPI em YAML (um acr\u00f4nimo que significa YAML n\u00e3o \u00e9 linguagem de markup) mais simples.<\/p>\r\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium\" src=\"https:\/\/document360.com\/wp-content\/uploads\/2022\/12\/title_of_specification.png\" alt=\"t\u00edtulo da especifica\u00e7\u00e3o\" width=\"1268\" height=\"192\" \/><\/p>\r\n<h2>Tipos de Dados<\/h2>\r\n<p>Como um objeto JSON, a especifica\u00e7\u00e3o OpenAPI \u00e9 compat\u00edvel com os tipos de dados definidos na especifica\u00e7\u00e3o mais ampla do esquema JSON. Os prim\u00f3rdios incluem inteiros, n\u00fameros, booleanos e cadeias de caracteres. Voc\u00ea pode declarar o formato de um tipo de dados usando o formato da propriedade modificadora. Por exemplo, voc\u00ea pode declarar um inteiro como formato int32 ou int64, um n\u00famero como float ou double, ou uma cadeia de caracteres como formato bin\u00e1rio, de dados, de data e hora ou de senha. A OpenAPI tamb\u00e9m oferece suporte a modelos (objetos) definidos na especifica\u00e7\u00e3o JSON mais ampla como objetos de esquema.<\/p>\r\n<p>\u00c9 importante observar que o JSON \u00e9 o principal formato que as APIs REST usam para enviar e receber informa\u00e7\u00f5es.<\/p>\r\n<h2>Estrutura<\/h2>\r\n<p>At\u00e9 agora, compreendemos que:<\/p>\r\n<ul>\r\n\t<li>Uma especifica\u00e7\u00e3o do OpenAPI \u00e9 um objeto JSON.<\/li>\r\n\t<li>As propriedades de uma API s\u00e3o um conjunto de pares de valor-chave.<\/li>\r\n\t<li>Valores s\u00e3o tipos de dados definidos pela especifica\u00e7\u00e3o JSON mais ampla.<\/li>\r\n<\/ul>\r\n<p>Agora, \u00e9 hora de discutir a estrutura do OpenAPI.<\/p>\r\n<p>Como mencionado anteriormente, um documento OpenAPI est\u00e1 estritamente estruturado. Objetos ou matrizes de objetos de pares de chave-valor relacionados. Os objetos de alto n\u00edvel de uma especifica\u00e7\u00e3o do OpenAPI s\u00e3o como os cap\u00edtulos de um documento de especifica\u00e7\u00e3o legado.<\/p>\r\n<p>Abaixo est\u00e1 um modelo <strong>OpenAPI<\/strong> com se\u00e7\u00f5es recolhidas para mostrar a estrutura geral. Toda se\u00e7\u00e3o tem propriedades, ou pares de valor chave, que fornecem metadados sobre a API.<\/p>\r\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium\" src=\"https:\/\/document360.com\/wp-content\/uploads\/2022\/12\/API_template_with_structure.png\" alt=\"Modelo de API com estrutura\" width=\"1278\" height=\"804\" \/><\/p>\r\n<p>O n\u00edvel superior do OpenAPI, indicado pelos primeiros conjuntos de par\u00eanteses { }, \u00e9 chamado de &#8220;objeto de documento&#8221;, porque cont\u00e9m todas as propriedades da OpenAPI.<\/p>\r\n<p>Enquanto os documentos do OpenAPI devem estar de acordo com uma estrutura b\u00e1sica, o OpenAPI oferece alguma flexibilidade. Algumas das se\u00e7\u00f5es de alto n\u00edvel s\u00e3o necess\u00e1rias, enquanto outras n\u00e3o. Voc\u00ea vai notar especifica\u00e7\u00f5es do OpenAPI para diferentes APIs podem se parecer um pouco diferentes.<\/p>\r\n<p>Um documento OpenAPI pode conter as seguintes se\u00e7\u00f5es:<\/p>\r\n<ul>\r\n\t<li><strong>Openapi<\/strong> &#8211; Um campo obrigat\u00f3rio definindo a vers\u00e3o espec\u00edfica do OpenAPI da API. Ferramentas usam o n\u00famero da vers\u00e3o para analisar a especifica\u00e7\u00e3o do OpenAPI para gerar documenta\u00e7\u00e3o, por exemplo.<\/li>\r\n\t<li><strong>Info<\/strong> &#8211; Um campo obrigat\u00f3rio contendo metadados. Ferramentas podem alavancar metadados de maneiras diferentes.<\/li>\r\n\t<li><strong>Servers<\/strong> &#8211; Um array de objetos de servidor. Cada objeto de servidor cont\u00e9m os detalhes da conex\u00e3o a um servidor. Este objeto cont\u00e9m a URL para o host do servidor e uma descri\u00e7\u00e3o do servidor.<\/li>\r\n\t<li><strong>Paths<\/strong>&#8211; Um objeto obrigat\u00f3rio que cont\u00e9m os caminhos relativos para os pontos de extremidade separados da API. Um determinado caminho tem opera\u00e7\u00f5es dispon\u00edveis para intera\u00e7\u00e3o com a API como POST, GET, PUT, ou DELETE.<\/li>\r\n\t<li><strong>Components<\/strong>&#8211; um objeto que cont\u00e9m esquemas reutiliz\u00e1veis para corpos, esquemas de resposta e esquemas de seguran\u00e7a. Esquemas nesta se\u00e7\u00e3o s\u00e3o referenciados em certas partes da especifica\u00e7\u00e3o, como o objeto de caminho, usando a tag $ref.<\/li>\r\n\t<li><strong>Security<\/strong>&#8211; um objeto que declara o tipo de esquema de seguran\u00e7a que autoriza requisi\u00e7\u00f5es. Um objeto de seguran\u00e7a \u00e9 definido globalmente ou sobrescrito por opera\u00e7\u00f5es individuais (esquema de seguran\u00e7a substitu\u00eddo).<\/li>\r\n\t<li><strong>Tags<\/strong> &#8211; um objeto que cont\u00e9m metadados. Ferramentas que analisam a especifica\u00e7\u00e3o podem alavancar este objeto. Por exemplo, voc\u00ea pode especificar a ordem que voc\u00ea gostaria que cada recurso API fosse exibido na documenta\u00e7\u00e3o da sua API (em vez de em ordem alfab\u00e9tica).<\/li>\r\n\t<li><strong>ExternalDocs<\/strong> &#8211; um objeto que fornece links para documenta\u00e7\u00e3o adicional. Voc\u00ea pode usar este objeto para adicionar um link aos seus guias de usu\u00e1rio.<\/li>\r\n<\/ul>\r\n<h2>Schemas<\/h2>\r\n<p>Na parte inferior da sua documenta\u00e7\u00e3o da API, existe normalmente uma se\u00e7\u00e3o Schemas que corresponde ao esquema descrito na se\u00e7\u00e3o de componentes da defini\u00e7\u00e3o da API.<br \/>\r\nEsta se\u00e7\u00e3o \u00e9 um gloss\u00e1rio r\u00e1pido para quando o leitor precisa ver os esquemas gerais no contexto mais amplo da API (n\u00e3o a sua utiliza\u00e7\u00e3o em opera\u00e7\u00f5es espec\u00edficas). Esquemas s\u00e3o objetos que cont\u00eam propriedades\/metadados.<br \/>\r\nA se\u00e7\u00e3o de esquemas seguintes para a Swagger Petstore apresenta esquemas espec\u00edficos. <strong>Order<\/strong> \u00e9 um esquema que representa uma ordem feita para um animal de estima\u00e7\u00e3o na Swagger Petstore. Cada pedido tem seus metadados, incluindo seu Id, a data que foi enviada e o status <strong>do pedido<\/strong>.<\/p>\r\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium\" src=\"https:\/\/document360.com\/wp-content\/uploads\/2022\/12\/spec_wide_schemas.png\" alt=\"esquemas espec\u00edficos\" width=\"1343\" height=\"665\" \/><\/p>\r\n<h2>Pontos fortes do OpenAPI<\/h2>\r\n<p>O OpenAPI tem as seguintes vantagens:<\/p>\r\n<ul>\r\n\t<li><strong>Limpar documenta\u00e7\u00e3o<\/strong> &#8211; o OpenAPI \u00e9 conhecido por sua documenta\u00e7\u00e3o leg\u00edvel para humanos e computadores.<\/li>\r\n\t<li><strong>Idioma-agn\u00f3stico<\/strong> &#8211; Os clientes podem interagir com servidores da API sem saber a implementa\u00e7\u00e3o do servidor. Outros formatos como Diagrama da API exigem c\u00f3digo de terceiros no servidor e n\u00e3o fornecem nenhum deste c\u00f3digo para voc\u00ea.<\/li>\r\n\t<li><strong>Governan\u00e7a<\/strong> &#8211; A iniciativa OpenAPI mant\u00e9m o padr\u00e3o OpenAPI e \u00e9 moderada pelos l\u00edderes da ind\u00fastria.<\/li>\r\n\t<li><strong>Ampla ado\u00e7\u00e3o<\/strong> &#8211; OpenAPI \u00e9 o formato mais popular para descrever APIs REST. A extens\u00e3o de sua ado\u00e7\u00e3o indica que a OpenAPI est\u00e1 aqui para o longo prazo. Uma especifica\u00e7\u00e3o, como o Diagrama da API, sofre de falta de ado\u00e7\u00e3o.<\/li>\r\n\t<li><strong>Ferramentas<\/strong> &#8211; Sendo o formato mais amplamente suportado, existe agora uma prolifera\u00e7\u00e3o de ferramentas que alavancam o OpenAPI para gerar documenta\u00e7\u00e3o, testes, etc. Outras especifica\u00e7\u00f5es n\u00e3o t\u00eam suporte e manuten\u00e7\u00e3o do OpenAPI para ferramentas.<\/li>\r\n<\/ul>\r\n<h2>Fraquezas do OpenAPI<\/h2>\r\n<p>Cada tipo de especifica\u00e7\u00e3o tem suas for\u00e7as e fraquezas. Aqui, vamos nos concentrar nas desvantagens da OpenAPI em compara\u00e7\u00e3o com seu rival mais pr\u00f3ximo, RAML.<\/p>\r\n<h3>Menos \u00fatil para design e planejamento da API<\/h3>\r\n<p>Voc\u00ea pode adotar uma abordagem \u201cspec-first\u201d para projetar uma API com base na OpenAPI. Essa abordagem envolve escrever a especifica\u00e7\u00e3o da OpenAPI para uma API \u201c\u00e0 m\u00e3o\u201d ou usar uma ferramenta de design. Usando essa abordagem, voc\u00ea projeta a especifica\u00e7\u00e3o de uma API e, em seguida, usa a especifica\u00e7\u00e3o como um \u201ccontrato\u201d ao criar a API. O oposto de \u201cspec-first\u201d \u00e9 usar a OpenAPI para gerar documenta\u00e7\u00e3o sem us\u00e1-la como uma ferramenta de design.<\/p>\r\n<p>Embora a abordagem \u201cspec-first\u201d tenha muitas vantagens, a OpenAPI geralmente n\u00e3o vem antes do desenvolvimento da API.<\/p>\r\n<p>A estrutura hier\u00e1rquica da RAML pode se prestar mais a ser uma ferramenta de projeto e planejamento. Dessa forma, a RAML pode ser mais compat\u00edvel com a abordagem \u201cspec-first\u201d do que a REST. No final, a RAML \u00e9 comercializada como uma ferramenta de \u201cmodelagem de dados\u201d e \u201cdescri\u00e7\u00e3o\u201d de API, enquanto o Swagger \u00e9 a \u00faltima. O modelo hier\u00e1rquico do RAML ser\u00e1 discutido com mais detalhes na pr\u00f3xima se\u00e7\u00e3o.<\/p>\r\n<h3>N\u00e3o Hier\u00e1rquica<\/h3>\r\n<p>Um dos conceitos principais para os padr\u00f5es de defini\u00e7\u00e3o de API como OpenAPI e RAML \u00e9 a capacidade de criar objetos de dados e relacion\u00e1-los entre si. O OpenAPI usa esquemas para este prop\u00f3sito e suporta os tipos de dados integrados do JSON. RAML usa um sistema de tipos para salvar propriedades associadas e promover a reutiliza\u00e7\u00e3o em toda a especifica\u00e7\u00e3o. Tamb\u00e9m suporta os mesmos tipos de dados internos que o OpenAPI.<\/p>\r\n<p>A OpenAPI n\u00e3o tem uma estrutura hier\u00e1rquica \u201cverdadeira\u201d. O que voc\u00ea deseja de uma estrutura hier\u00e1rquica que descreva sua API? Idealmente, voc\u00ea quer um sistema para associar seus modelos de dados que seja:<\/p>\r\n<ul>\r\n\t<li>leg\u00edvel\/compreens\u00edvel facilmente<\/li>\r\n\t<li>permite definir rela\u00e7\u00f5es entre modelos de dados usando heran\u00e7a<\/li>\r\n\t<li>reduz a repeti\u00e7\u00e3o de propriedades compartilhadas<\/li>\r\n\t<li>maximiza a reutiliza\u00e7\u00e3o de c\u00f3digo<\/li>\r\n<\/ul>\r\n<p>O sistema de tipos da RAML se presta a ser um sistema mais hier\u00e1rquico do que o REST. De acordo com o Readme da RAML no GitHub, O uso da RAML de \u201ctipos de recursos e caracter\u00edsticas minimiza a repeti\u00e7\u00e3o em um RESTful design API e promove a consist\u00eancia dentro e atrav\u00e9s das APIs. Discutiremos a seguir o sistema de tipos da RAML.<\/p>\r\n<h2>N\u00e3o suporta a heran\u00e7a do modelo de dados<\/h2>\r\n<p>Tipos de objeto RAML podem herdar outros tipos de objetos. Enquanto os esquemas OpenAPI podem &#8220;referenciar&#8221; esquemas, ele n\u00e3o suporta tecnicamente a heran\u00e7a como a RAML. Digo &#8220;tecnicamente&#8221; porque voc\u00ea pode ligar um esquema a outro usando uma refer\u00eancia do esquema (o marcador $ref). No entanto, a RAML vai mais longe. Voc\u00ea pode estabelecer rela\u00e7\u00f5es entre modelos de dados e evitar a repeti\u00e7\u00e3o de propriedades compartilhadas. Com OpenAPI, esquemas n\u00e3o est\u00e3o associados uns aos outros de forma hier\u00e1rquica como a RAML. Tipos RAML t\u00eam heran\u00e7a &#8220;verdadeira&#8221;, onde voc\u00ea pode estabelecer rela\u00e7\u00f5es entre pais e filhos entre modelos de dados.<\/p>\r\n<h3>N\u00e3o \u00e9 uma ferramenta &#8220;visual&#8221;<\/h3>\r\n<p>O uso dos tipos RAML como modelos de dados o torna mais visual e facilmente leg\u00edvel do que o OpenAPI. Voc\u00ea pode ver facilmente a rela\u00e7\u00e3o entre tipos e suas propriedades compartilhadas.<\/p>\r\n<p>RAML, como uma ferramenta mais visual, promove um planejamento a longo prazo para coisas como respostas simuladas no servidor, consoles API e muito mais. Pode ser tamb\u00e9m antecipar e planejar futuras melhorias na API utilizando a RAML.<\/p>\r\n<h3>Falta de suporte para outras arquiteturas<\/h3>\r\n<p>A OpenAPI s\u00f3 pode descrever APIs RESTful. A RAML tem o benef\u00edcio adicional de oferecer suporte a outras arquiteturas al\u00e9m da REST, como RPC ou SOAP, desde que usem o protocolo HTTP. A flexibilidade do RAML permite que voc\u00ea o use como uma ferramenta de documenta\u00e7\u00e3o para arquiteturas al\u00e9m da REST.<\/p>\r\n<h2>Exemplo da OpenAPI &#8211; Swagger Petstore<\/h2>\r\n<p>A melhor maneira de aprender a OpenAPI \u00e9 adoptar uma abordagem pr\u00e1tica. Algumas ferramentas permitem editar especifica\u00e7\u00f5es do OpenAPI e, em seguida, gerar documenta\u00e7\u00e3o da API. A especifica\u00e7\u00e3o Swagger Petstore \u00e9 um exemplo de um documento OpenAPI.<\/p>\r\n<p>SwaggerUI \u00e9 uma ferramenta que analisa uma defini\u00e7\u00e3o de API para gerar documenta\u00e7\u00e3o. SwaggerUI tem um editor baseado no navegador (mostrado abaixo). Voc\u00ea pode experimentar o editor SwaggerUI aqui: https:\/\/editor.swagger.io\/<\/p>\r\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium\" src=\"https:\/\/document360.com\/wp-content\/uploads\/2022\/12\/Swagger_UI_examples.png\" alt=\"Swagger UI examples\" width=\"1999\" height=\"1102\" \/><\/p>\r\n<p>No lado esquerdo, a especifica\u00e7\u00e3o OpenAPI no formato YAML \u00e9 vis\u00edvel. Sempre que voc\u00ea fizer altera\u00e7\u00f5es na especifica\u00e7\u00e3o, essas altera\u00e7\u00f5es geram nova documenta\u00e7\u00e3o no painel do lado direito. O painel do lado direito \u00e9 o documento Swagger gerado diretamente a partir da especifica\u00e7\u00e3o OpenAPI para o Petstore (painel do lado esquerdo). Por exemplo, mudar a descri\u00e7\u00e3o de um caminho faz com que o documento Swagger atualize com as novas altera\u00e7\u00f5es.<\/p>\r\n<p>Se voc\u00ea olhar a especifica\u00e7\u00e3o do <a href=\"\/blog\/swagger-api\/\" target=\"_blank\" rel=\"noopener\">Swagger OpenAPI<\/a> \u00e0 esquerda, voc\u00ea ver\u00e1 todas as se\u00e7\u00f5es descritas neste artigo do blog, incluindo openapi, informa\u00e7\u00f5es, servidores, caminhos, componentes, tags, etc.<\/p>\r\n<p>Swagger gera um erro quando voc\u00ea se desvia da estrutura do OpenAPI ou inserir algo inv\u00e1lido. A manipula\u00e7\u00e3o de erros do Swagger refor\u00e7a o conceito que voc\u00ea deve aderir ao formato OpenAPI para exibir corretamente. Quando voc\u00ea se familiarizar com o Swagger Petstore, voc\u00ea pode colar a especifica\u00e7\u00e3o para outra API no Swagger Editor para ver como suas informa\u00e7\u00f5es s\u00e3o exibidas na SwaggerUI.<\/p>\r\n<p>Em resumo, O Swagger Editor \u00e9 uma \u00f3tima maneira de se familiarizar com como escrever defini\u00e7\u00f5es de API e como ferramentas analisam a especifica\u00e7\u00e3o para gerar documenta\u00e7\u00e3o.<\/p>\r\n<h2>Leitura adicional<\/h2>\r\n<p>Para uma documenta\u00e7\u00e3o mais aprofundada sobre o padr\u00e3o OpenAPI, leia a documenta\u00e7\u00e3o oficial do SmartBear para o OpenAPI: https:\/\/swagger.io\/specification\/.<strong><em><br \/>\r\n<\/em><\/strong><\/p>\r\n<p><strong><em>Al\u00e9m disso, confira nosso guia para lan\u00e7ar <a href=\"\/blog\/public-api-launch\/\" target=\"_blank\" rel=\"noopener\">API p\u00fablica<\/a><\/em><\/strong><\/p>\r\n<div class=\"call_to_action border-0 bg-secondary\">\r\n<div class=\"call_to_text\">\r\n<p>Pronto para levar sua documenta\u00e7\u00e3o de API para o pr\u00f3ximo n\u00edvel? Reserve uma demonstra\u00e7\u00e3o com o Document360 hoje!<\/p>\r\n<a class=\"cta\" href=\"https:\/\/document360.com\/request-demo\/\" target=\"_blank\" rel=\"noopener\">Reserve uma demonstra\u00e7\u00e3o<\/a><\/div>\r\n<div class=\"call_to_img\"><img decoding=\"async\" class=\"alignnone size-full wp-image-2957\" src=\"https:\/\/document360.com\/wp-content\/themes\/document360\/images\/blog-call-to-action.png\" alt=\"Documento360\" \/><\/div>\r\n<\/div>\r\n<div class=\"d360-faq\">\r\n<div class=\"row justify-content-center\">\r\n<div class=\"col-xl-12\">\r\n<h2 class=\"mb-lg-4\">Perguntas Frequentes<\/h2>\r\n<ul id=\"FaqAccordion\" class=\"accordion mb-0\">\r\n\t<li class=\"mb-9\">\r\n<h3 class=\"mb-9\"><a data-bs-toggle=\"collapse\" data-bs-target=\"#FaqItem_9\" aria-expanded=\"true\" aria-controls=\"FaqItem_9\"> O que \u00e9 um OpenAPI? <\/a><\/h3>\r\n<div id=\"FaqItem_9\" class=\"collapse show\" data-parent=\"#FaqAccordion\">\r\n<p>Uma API aberta (tamb\u00e9m conhecida como uma API p\u00fablica) \u00e9 uma interface de programa\u00e7\u00e3o de aplicativos publicamente dispon\u00edvel que permite que desenvolvedores acessem um aplicativo de software propriet\u00e1rio ou um servi\u00e7o on-line de forma program\u00e1tica.<\/p>\r\n<\/div>\r\n<\/li>\r\n\t<li class=\"mb-10\">\r\n<h3 class=\"mb-10\"><a data-bs-toggle=\"collapse\" data-bs-target=\"#FaqItem_10\" aria-expanded=\"false\" aria-controls=\"FaqItem_10\"> Qual \u00e9 a diferen\u00e7a entre a API privada e aberta? <\/a><\/h3>\r\n<div id=\"FaqItem_10\" class=\"collapse\" data-parent=\"#FaqAccordion\">\r\n<p>Uma API aberta tem restri\u00e7\u00f5es de acesso porque est\u00e1 aberta ao p\u00fablico e pode ser chamada de qualquer lugar na internet. Uma API fechada, tamb\u00e9m conhecida como uma API privada, por outro lado, n\u00e3o est\u00e1 dispon\u00edvel publicamente na internet.<\/p>\r\n<\/div>\r\n<\/li>\r\n\t<li class=\"mb-12\">\r\n<h3 class=\"mb-12\"><a data-bs-toggle=\"collapse\" data-bs-target=\"#FaqItem_12\" aria-expanded=\"false\" aria-controls=\"FaqItem_12\"> O que \u00e9 OpenAPI e API REST? <\/a><\/h3>\r\n<div id=\"FaqItem_12\" class=\"collapse\" data-parent=\"#FaqAccordion\">\r\n<p>O OpenAPI Standard (OAS), anteriormente conhecido como a Especifica\u00e7\u00e3o Swagger, \u00e9 um formato para descri\u00e7\u00e3o, produ\u00e7\u00e3o, consumo e visualiza\u00e7\u00e3o de RESTful web services. O padr\u00e3o da API REST descreve a estrutura e a sintaxe.<\/p>\r\n<\/div>\r\n<\/li>\r\n<\/ul>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<p><script type=\"application\/ld+json\">\r\n  {\r\n    \"@context\": \"https:\/\/schema.org\",\r\n    \"@type\": \"FAQPage\",\r\n    \"mainEntity\": [{\r\n      \"@type\": \"Question\",\r\n      \"name\": \"What is an OpenAPI?\",\r\n      \"acceptedAnswer\": {\r\n        \"@type\": \"Answer\",\r\n        \"text\": \"An open API (also known as a public API) is a publicly available application programming interface that allows developers to access a proprietary software application or online service programmatically.\"\r\n      }\r\n    },{\r\n      \"@type\": \"Question\",\r\n      \"name\": \"What is the difference between private and Open API?\",\r\n      \"acceptedAnswer\": {\r\n        \"@type\": \"Answer\",\r\n        \"text\": \"An open API has access constraints because it is open to the public and can be invoked from anywhere on the open internet. A closed API, also known as a private API, on the other hand, is not publicly available on the internet.\"\r\n      }\r\n    },{\r\n      \"@type\": \"Question\",\r\n      \"name\": \"What is OpenAPI and REST API?\",\r\n      \"acceptedAnswer\": {\r\n        \"@type\": \"Answer\",\r\n        \"text\": \"The OpenAPI Standard (OAS), formerly known as the Swagger Specification, is a format for describing, producing, consuming, and visualising RESTful web services. The REST API standard describes the structure and syntax.\"\r\n      }\r\n    }]\r\n  }\r\n  <\/script><\/p>","protected":false},"excerpt":{"rendered":"De acordo com o SmartBear, a empresa-m\u00e3e do Swagger: \u201cA Especifica\u00e7\u00e3o do OpenAPI &#8230;","protected":false},"author":48,"featured_media":16236,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[773],"tags":[],"class_list":["post-23946","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-api-dokumentacao"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>O que \u00e9 OpenAPI? Vantagens, Desvantagens &amp; Exemplos<\/title>\n<meta name=\"description\" content=\"Saiba mais sobre API aberta, hist\u00f3rico de API, formato de API, tipos de dados, estruturas, esquemas, pontos fortes e exemplos\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/document360.com\/pt-br\/blog\/openapi\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"O que \u00e9 OpenAPI? Vantagens, Desvantagens &amp; Exemplos\" \/>\n<meta property=\"og:description\" content=\"Saiba mais sobre API aberta, hist\u00f3rico de API, formato de API, tipos de dados, estruturas, esquemas, pontos fortes e exemplos\" \/>\n<meta property=\"og:url\" content=\"https:\/\/document360.com\/pt-br\/blog\/openapi\/\" \/>\n<meta property=\"og:site_name\" content=\"Document360\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/document360\/\" \/>\n<meta property=\"article:published_time\" content=\"2022-12-28T12:29:04+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-03-14T10:40:14+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/document360.com\/wp-content\/uploads\/2022\/12\/What_is_Open_API-scaled.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1456\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Shakeer Hussain\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@document360\" \/>\n<meta name=\"twitter:site\" content=\"@document360\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Shakeer Hussain\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"16 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/document360.com\/pt-br\/blog\/openapi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/document360.com\/pt-br\/blog\/openapi\/\"},\"author\":{\"name\":\"Shakeer Hussain\",\"@id\":\"https:\/\/document360.com\/pt-br\/#\/schema\/person\/981b34cea40c496ec278f9ce14f9f1af\"},\"headline\":\"O que \u00e9 OpenAPI? Vantagens, Desvantagens &amp; Exemplos\",\"datePublished\":\"2022-12-28T12:29:04+00:00\",\"dateModified\":\"2025-03-14T10:40:14+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/document360.com\/pt-br\/blog\/openapi\/\"},\"wordCount\":3516,\"publisher\":{\"@id\":\"https:\/\/document360.com\/pt-br\/#organization\"},\"image\":{\"@id\":\"https:\/\/document360.com\/pt-br\/blog\/openapi\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/document360.com\/wp-content\/uploads\/2022\/12\/What_is_Open_API-scaled.jpg\",\"articleSection\":[\"API-Dokumenta\u00e7\u00e3o\"],\"inLanguage\":\"pt-BR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/document360.com\/pt-br\/blog\/openapi\/\",\"url\":\"https:\/\/document360.com\/pt-br\/blog\/openapi\/\",\"name\":\"O que \u00e9 OpenAPI? Vantagens, Desvantagens &amp; Exemplos\",\"isPartOf\":{\"@id\":\"https:\/\/document360.com\/pt-br\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/document360.com\/pt-br\/blog\/openapi\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/document360.com\/pt-br\/blog\/openapi\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/document360.com\/wp-content\/uploads\/2022\/12\/What_is_Open_API-scaled.jpg\",\"datePublished\":\"2022-12-28T12:29:04+00:00\",\"dateModified\":\"2025-03-14T10:40:14+00:00\",\"description\":\"Saiba mais sobre API aberta, hist\u00f3rico de API, formato de API, tipos de dados, estruturas, esquemas, pontos fortes e exemplos\",\"breadcrumb\":{\"@id\":\"https:\/\/document360.com\/pt-br\/blog\/openapi\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/document360.com\/pt-br\/blog\/openapi\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/document360.com\/pt-br\/blog\/openapi\/#primaryimage\",\"url\":\"https:\/\/document360.com\/wp-content\/uploads\/2022\/12\/What_is_Open_API-scaled.jpg\",\"contentUrl\":\"https:\/\/document360.com\/wp-content\/uploads\/2022\/12\/What_is_Open_API-scaled.jpg\",\"width\":2560,\"height\":1456},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/document360.com\/pt-br\/blog\/openapi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/document360.com\/pt-br\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"O que \u00e9 OpenAPI? Vantagens, Desvantagens &amp; Exemplos\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/document360.com\/pt-br\/#website\",\"url\":\"https:\/\/document360.com\/pt-br\/\",\"name\":\"Document360\",\"description\":\"The knowledge base that scales with your product.\",\"publisher\":{\"@id\":\"https:\/\/document360.com\/pt-br\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/document360.com\/pt-br\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/document360.com\/pt-br\/#organization\",\"name\":\"Document360\",\"url\":\"https:\/\/document360.com\/pt-br\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/document360.com\/pt-br\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/document360.com\/wp-content\/uploads\/2018\/06\/logo.png\",\"contentUrl\":\"https:\/\/document360.com\/wp-content\/uploads\/2018\/06\/logo.png\",\"width\":270,\"height\":35,\"caption\":\"Document360\"},\"image\":{\"@id\":\"https:\/\/document360.com\/pt-br\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/document360\/\",\"https:\/\/x.com\/document360\",\"https:\/\/www.linkedin.com\/company\/document360\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/document360.com\/pt-br\/#\/schema\/person\/981b34cea40c496ec278f9ce14f9f1af\",\"name\":\"Shakeer Hussain\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/92a3b5699bd8f23b4a8e7eb8ac3d527754a27ef947e70c469eb8e09d279c1bd0?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/92a3b5699bd8f23b4a8e7eb8ac3d527754a27ef947e70c469eb8e09d279c1bd0?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/92a3b5699bd8f23b4a8e7eb8ac3d527754a27ef947e70c469eb8e09d279c1bd0?s=96&d=mm&r=g\",\"caption\":\"Shakeer Hussain\"},\"description\":\"Shakeer is the Lead Product Manager at Document360. Passionate product management professional and Certified Scrum Product Owner (CSPO). Actively collaborate across the organization creating product strategies, roadmaps and plans focused on supporting the business strategy.\",\"url\":\"https:\/\/document360.com\/pt-br\/blog\/author\/shakeer-hussainkovai-co\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"O que \u00e9 OpenAPI? Vantagens, Desvantagens &amp; Exemplos","description":"Saiba mais sobre API aberta, hist\u00f3rico de API, formato de API, tipos de dados, estruturas, esquemas, pontos fortes e exemplos","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/document360.com\/pt-br\/blog\/openapi\/","og_locale":"pt_BR","og_type":"article","og_title":"O que \u00e9 OpenAPI? Vantagens, Desvantagens &amp; Exemplos","og_description":"Saiba mais sobre API aberta, hist\u00f3rico de API, formato de API, tipos de dados, estruturas, esquemas, pontos fortes e exemplos","og_url":"https:\/\/document360.com\/pt-br\/blog\/openapi\/","og_site_name":"Document360","article_publisher":"https:\/\/www.facebook.com\/document360\/","article_published_time":"2022-12-28T12:29:04+00:00","article_modified_time":"2025-03-14T10:40:14+00:00","og_image":[{"width":2560,"height":1456,"url":"https:\/\/document360.com\/wp-content\/uploads\/2022\/12\/What_is_Open_API-scaled.jpg","type":"image\/jpeg"}],"author":"Shakeer Hussain","twitter_card":"summary_large_image","twitter_creator":"@document360","twitter_site":"@document360","twitter_misc":{"Escrito por":"Shakeer Hussain","Est. tempo de leitura":"16 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/document360.com\/pt-br\/blog\/openapi\/#article","isPartOf":{"@id":"https:\/\/document360.com\/pt-br\/blog\/openapi\/"},"author":{"name":"Shakeer Hussain","@id":"https:\/\/document360.com\/pt-br\/#\/schema\/person\/981b34cea40c496ec278f9ce14f9f1af"},"headline":"O que \u00e9 OpenAPI? Vantagens, Desvantagens &amp; Exemplos","datePublished":"2022-12-28T12:29:04+00:00","dateModified":"2025-03-14T10:40:14+00:00","mainEntityOfPage":{"@id":"https:\/\/document360.com\/pt-br\/blog\/openapi\/"},"wordCount":3516,"publisher":{"@id":"https:\/\/document360.com\/pt-br\/#organization"},"image":{"@id":"https:\/\/document360.com\/pt-br\/blog\/openapi\/#primaryimage"},"thumbnailUrl":"https:\/\/document360.com\/wp-content\/uploads\/2022\/12\/What_is_Open_API-scaled.jpg","articleSection":["API-Dokumenta\u00e7\u00e3o"],"inLanguage":"pt-BR"},{"@type":"WebPage","@id":"https:\/\/document360.com\/pt-br\/blog\/openapi\/","url":"https:\/\/document360.com\/pt-br\/blog\/openapi\/","name":"O que \u00e9 OpenAPI? Vantagens, Desvantagens &amp; Exemplos","isPartOf":{"@id":"https:\/\/document360.com\/pt-br\/#website"},"primaryImageOfPage":{"@id":"https:\/\/document360.com\/pt-br\/blog\/openapi\/#primaryimage"},"image":{"@id":"https:\/\/document360.com\/pt-br\/blog\/openapi\/#primaryimage"},"thumbnailUrl":"https:\/\/document360.com\/wp-content\/uploads\/2022\/12\/What_is_Open_API-scaled.jpg","datePublished":"2022-12-28T12:29:04+00:00","dateModified":"2025-03-14T10:40:14+00:00","description":"Saiba mais sobre API aberta, hist\u00f3rico de API, formato de API, tipos de dados, estruturas, esquemas, pontos fortes e exemplos","breadcrumb":{"@id":"https:\/\/document360.com\/pt-br\/blog\/openapi\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/document360.com\/pt-br\/blog\/openapi\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/document360.com\/pt-br\/blog\/openapi\/#primaryimage","url":"https:\/\/document360.com\/wp-content\/uploads\/2022\/12\/What_is_Open_API-scaled.jpg","contentUrl":"https:\/\/document360.com\/wp-content\/uploads\/2022\/12\/What_is_Open_API-scaled.jpg","width":2560,"height":1456},{"@type":"BreadcrumbList","@id":"https:\/\/document360.com\/pt-br\/blog\/openapi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/document360.com\/pt-br\/"},{"@type":"ListItem","position":2,"name":"O que \u00e9 OpenAPI? Vantagens, Desvantagens &amp; Exemplos"}]},{"@type":"WebSite","@id":"https:\/\/document360.com\/pt-br\/#website","url":"https:\/\/document360.com\/pt-br\/","name":"Document360","description":"The knowledge base that scales with your product.","publisher":{"@id":"https:\/\/document360.com\/pt-br\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/document360.com\/pt-br\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/document360.com\/pt-br\/#organization","name":"Document360","url":"https:\/\/document360.com\/pt-br\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/document360.com\/pt-br\/#\/schema\/logo\/image\/","url":"https:\/\/document360.com\/wp-content\/uploads\/2018\/06\/logo.png","contentUrl":"https:\/\/document360.com\/wp-content\/uploads\/2018\/06\/logo.png","width":270,"height":35,"caption":"Document360"},"image":{"@id":"https:\/\/document360.com\/pt-br\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/document360\/","https:\/\/x.com\/document360","https:\/\/www.linkedin.com\/company\/document360"]},{"@type":"Person","@id":"https:\/\/document360.com\/pt-br\/#\/schema\/person\/981b34cea40c496ec278f9ce14f9f1af","name":"Shakeer Hussain","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/secure.gravatar.com\/avatar\/92a3b5699bd8f23b4a8e7eb8ac3d527754a27ef947e70c469eb8e09d279c1bd0?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/92a3b5699bd8f23b4a8e7eb8ac3d527754a27ef947e70c469eb8e09d279c1bd0?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/92a3b5699bd8f23b4a8e7eb8ac3d527754a27ef947e70c469eb8e09d279c1bd0?s=96&d=mm&r=g","caption":"Shakeer Hussain"},"description":"Shakeer is the Lead Product Manager at Document360. Passionate product management professional and Certified Scrum Product Owner (CSPO). Actively collaborate across the organization creating product strategies, roadmaps and plans focused on supporting the business strategy.","url":"https:\/\/document360.com\/pt-br\/blog\/author\/shakeer-hussainkovai-co\/"}]}},"_links":{"self":[{"href":"https:\/\/document360.com\/pt-br\/wp-json\/wp\/v2\/posts\/23946","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/document360.com\/pt-br\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/document360.com\/pt-br\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/document360.com\/pt-br\/wp-json\/wp\/v2\/users\/48"}],"replies":[{"embeddable":true,"href":"https:\/\/document360.com\/pt-br\/wp-json\/wp\/v2\/comments?post=23946"}],"version-history":[{"count":0,"href":"https:\/\/document360.com\/pt-br\/wp-json\/wp\/v2\/posts\/23946\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/document360.com\/pt-br\/wp-json\/wp\/v2\/media\/16236"}],"wp:attachment":[{"href":"https:\/\/document360.com\/pt-br\/wp-json\/wp\/v2\/media?parent=23946"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/document360.com\/pt-br\/wp-json\/wp\/v2\/categories?post=23946"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/document360.com\/pt-br\/wp-json\/wp\/v2\/tags?post=23946"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}