Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Visualizing API Patterns

Visualizing API Patterns

In this talk we will visually explore a large collection of real-world Web APIs looking for usage examples of Patterns for API Design.
We will reveal the diversity and variety of APIs while highlighting the fundamental nature of many API design patterns.
Among others, we will present which are the most common HTTP endpoint structures for publishing Information Holders, how HTTP methods have been mapped to English verbs in Processing Resources, which are common Version Identifier formats, and how frequent are "Two-in-Production" API releases.

pautasso

May 14, 2023
Tweet

More Decks by pautasso

Other Decks in Technology

Transcript

  1. Contents • API Landscape • API Visualization • API Design

    Patterns • Information Holders • Processing Resources • API Evolution Patterns • Version Identi er • Two in Production
  2. Abstract In this talk we will visually explore a large

    collection of real-world Web APIs looking for usage examples of Patterns for API Design. We will reveal the diversity and variety of APIs while highlighting the fundamental nature of many API design patterns. Among others, we will present which are the most common HTTP endpoint structures for publishing Information Holders, how HTTP methods have been mapped to English verbs in Processing Resources, which are common Version Identi er formats, and how frequent are "Two-in-Production" API releases.
  3. API Dataset Number of APIs mentioned on the blog post:

    100'000+ Number of OpenAPI descriptions in the tarball: 67'442 Number of valid OpenAPI descriptions: 62'039
  4. about a m enities.jso n ame nities.musta che am enities.sche

    ma amenities autocomplete calendar cancel contact c opyright.jso n cop yright.musta che co pyright.sche m a copyright c urrencies.jso n curr encies.must ache cur rencies.sche ma currencies currency customer direction follow footer.json fo oter.mustac he f ooter.schem a footer guest header.json he ader.mustac he h eader.schem a header horizontal hotel la nguages.jso n lang uages.must ache lan guages.sche ma languages logo.json lo go.mustach e l ogo.schema logo member modify my navigation package p ackages.jso n pac kages.musta che pa ckages.sche m a packages page privacy quick rate reservation room search site step s ubscribe.jso n sub scribe.musta che sub scribe.sche m a subscribe terms toll us.json us.mustache us.schema us search.json se arch.mustac he s earch.schem a search by search.json se arch.mustac he s earch.schem a search re servation.js on reser vation.must ache rese rvation.sch ema reservation us.json us.mustache us.schema us c onverter.jso n con verter.musta che co nverter.sche m a converter f eedback.jso n feed back.musta che fee dback.sche m a feedback survey.json su rvey.mustac he s urvey.schem a survey map.json m ap.mustach e m ap.schema map us.json us.mustache us.schema us n avigation.jso n navi gation.must ache nav igation.sche ma navigation details.json de tails.mustac he d etails.schem a details rooms.json ro oms.mustac he ro oms.schem a rooms n avigation.jso n navi gation.must ache nav igation.sche ma navigation quick de scription.js on desc ription.must ache des cription.sch ema description grid list sign guest your account links.json li nks.mustach e l inks.schema links addon.json ad don.mustac he a ddon.schem a addon bre adcrumbs.js on bread crumbs.mus tache brea dcrumbs.sch ema b readcrumb s 1.json 1.mustache 1.schema 1 2.json search.json se arch.mustac he s earch.schem a search details.json de tails.mustac he d etails.schem a details flexible rate tab s ummary.jso n sum mary.musta che su m mary.sche m a summary map.json m ap.mustach e m ap.schema map n avigation.jso n navi gation.must ache nav igation.sche ma navigation n ewsletter.jso n new sletter.must ache new sletter.sche ma newsletter and free room search.json se arch.mustac he s earch.schem a search results.json res ults.mustac he re sults.schem a results results.json res ults.mustac he re sults.schem a results in.json in.mustache in.schema in details.json de tails.mustac he d etails.schem a details search.json se arch.mustac he s earch.schem a search stay.json s tay.mustach e stay.schema stay address.json ad dress.musta che ad dress.schem a address create details.json de tails.mustac he d etails.schem a details email.json e m ail.mustac he e mail.schem a email footer.json fo oter.mustac he f ooter.schem a footer forgot header.json he ader.mustac he h eader.schem a header me m berships.j son memb erships.mu stache mem berships.sc hema memberships menu.json m enu.mustac he m enu.schem a menu n avigation.jso n navi gation.must ache nav igation.sche ma navigation p assword.jso n pass word.musta che pas sword.sche m a password phone.json ph one.mustac he p hone.schem a phone pr eferences.js on prefe rences.must ache pref erences.sch ema preferences profile.json pr ofile.mustac he p rofile.schem a profile res ervations.js on reser vations.mus tache rese rvations.sch ema reservations sign details.json d etails.schem a details results itions.must a con ditions.sche ma conditions number.json nu m ber.musta che nu mber.schem a number type.json ty pe.mustach e t ype.schema type user.json u ser.mustach e user.schema user p assword.jso n pass word.musta che pas sword.sche m a password u sername.jso n user name.must ache use rname.sche ma username st atement.jso n state ment.must ache sta tement.sche ma statement in.json in.mustache in.schema in details.json de tails.mustac he d etails.schem a details Read-Only 1.0 336 Paths 336 Ops
  5. api apk cms collection frame frameApi iap profile system taskUpload

    tasks un derContrust ion video {lang} {region} acce ptFriendReq uest addAlbum a ddAlbumIte m addAl lItemsIntoP laylist ad dCategoryIt em addConve rsionService ToMyCart addC ustomerFee dback addFrame addF rameAlbum Item ad dFrameVersi on addFriend addLa uncherVersi onItem addMeta a ddNewPlayli st addN ewPromotio nItem addOn SaleItemTo MyCart addP aymentReq uest addPhysi calFrameIte m sToCart addPlaylist addP laylistAlbum Item addP laylistFromF rame ad dPlaylistIte m s adminLogin a dminLogou t approv ePaymentR equest chec kAppNewVe rsion ch eckAppVersi on check IfConversio nExist checkIfEC ardCodeSer ialNoExist checkout c heckoutCar t checkou tCartWithou tAccount checkoutC onversionS erviceItem checkou tItemsByEC ardCode chec koutMemto Live chec koutMemto Order chec koutOnSale Item checkoutS naprintWith outAccount cleanTag cms AddAlbumI tem cmsCheckou tConversion ServiceItem cmsCh eckoutMem toLive c msSellItem s commis sionRecordF orChart com pleteDelete Item confir mInAppPur chase co ntributorLog in del eteAlbumA ndOnSaleIte m ByMembe rId d eleteCMSAl bumItemAn dOnSaleItem dele teMemtoBa nner didThisAlb umItemCon vertBefore d isableFram e exp ortEshopIm age expor tShopOnSal eItem fact oryResetFra me findF rameAndMe m ber fo rgetPasswo rd g enerateECar d g etAdminByI d g etAdminLis t getAlb umItemDet ailById getAlb umItemIma geById get AlbumItemL ist getAlbu m ItemListFro mFriend g etAlbumLis t getCMS AlbumByMe mberId g etCMSAlbu m ItemDetail ByMemberI d getCMSAlbu mItemListB yMemberId getC MSCategory List getCMSC onversionSe rviceList getC M SECardCod eList ge tCMSFrameL ist ge tCMSGemLi st getCM SOnSaleIte m ById CMSR edeemable Commission TotalByCont ributo getCat egoryItemBy Depth getC ategoryItem List ge tCategoryLi st get CmsMember List get CollectionB yId getCo llectionItem ById getC ollectionIte m List ge tCollectionL ist g etCommissi onRecordBy AlbumItemI d g etCommissi onRecordBy ContributorI d getComm issionReco rdByDate getCon versionServ iceList getCo nvertingIte m List getCus tomerFeedb ackList getDe faultPlaylist Name getDispl ayFrameVer sionById getDisplay FrameVersio nGroupList ge tDisplayFra m eVersionG roupListByI ds getDisp layFrameVer sionList getDispl ayPromotion ItemList g etFrameAllLi st ge tFrameIma ge getFrameIte m Transactio nByFrameId getFrameLis t ge tFrameSetti ng getFrame TransactionB yFrameId getFra m eTransacti onList getFriendLis t getF riendReque stId getFr iendReques tList getGemList getGr oupedComm issionRecor dByContrib utorId ge tHotArtistLi st g etHotTagLis t getIAPR ecordByDev iceType getInApp PurchasePr oductList getL auncherVer sion getMailById getMailList ge tMemberIn fo g etMemberItemLi st get M emberStor age get MemtoBan ner getMe m toBannerC ontrol getMe mtoFrameV ersion getMem toFrameVer sionList getM emtoOrder Total g etMemtoOr derTotalWit houtAccoun t ge tMetaConte nt getMetaList get MyCartItem List get M yCartItemT otal getMyCa rtItemsTotal Quantity getMy CartItemsTot alSum getMyPhys icalFrameC artItemList getM ySellingItem List g etNewestLis t getOn SaleItemBy ECard get OnSaleItemB yId getPMList getPayme ntRequestLi stByAdmin g etPaymentR equestListB yContributo r get PlaylistItem List g etPlaylistLis t ge tPlaylistNa m e Proces singCommi ssionRecord ByPayment Reque getPr omotionIte m List getPu rchaseHisto ryList getR ecentSearc hList ge tRecentTagL ist getS cheduleItem List getSche duleRepeat ItemList get SellingItem List getSn apPreviewI m age getSnap rintFrameVe rsionList g etSnaprintO rderTotalWi thoutAccoun t get StorePageB yId ge tStorePageL ist getS uggestedTo pList getS uggestingIt ems getTagList getTransactionList getWa rrantyRegist ration getWarr antyRegistra tionList indexing insertMail insertW arrantyRegi stration isA lbumItemEx ist is RedeemIte m login logout ma nualUploadF iles new AddAlbumI tem onS3 ResizeComp leted on S3ResizeFail ed previ ewAnAlbum Item pre viewOnSaleI tem readPM redeemE CardCodeBy Member redow nloadAlbu m Item register r egisterAdmi n reje ctFriendReq uest relo cateAlbumIt ems r emoveAdmi n rem oveAlbumIt ems re moveAlbum s remove AllItemsFrom Playlist remov eCategoryIte mById remo veFrameVe rsion r emoveFrien d removeLau ncherVersio nItemById re m oveMetaB yId rem oveMyCartIt ems removePM r emovePhys icalFrameIte msFromCar t re movePlayli st rem ovePlaylistIt ems remove PromotionC odeById remove PromotionIt emById replaceMa nualConver sionPhoto r esetPasswor d resto reInAppPurc hase se archFriendL ist searchItem sellItem se ndContactM ail sendMail set PlaylistToFra me setTa gPlaylistToF rame sh areAlbumIte m s snaPrintE cardCodeB yMember snapPreview test testRemo veAlbumIte mInLocal tryBase64 up dateAdminB yId upd ateAlbumCo ver up dateAlbumIc on updat eAlbumItem Detail upd ateAlbumN ame updat eCMSOnSal eItem upd ateCategory Item upd ateDeviceTo ken updat eECardCode Enable upd ateFrameSe tting upd ateFrameVer sion updateL auncherVer sionItem updateMail upd ateMember Info upda teMemberS etting upda teMemtoBa nner updateM emtoBanne rControl updateMeta up datePasswo rd u pdatePlaylis t upd atePlaylistC over upd atePlaylistN ame up datePromot ion upda tePromotion Code updatePro m otionCode CoverPhoto updateP romotionCo verPhoto updat ePromotion Enable uplo adMemtoBa nner websi teInsertIAPR ecord n ewdownloadLaunche r { coverPhoto } {fr ameBGImag e} ameToUpg icon {memberId} as kFrameToUpgra de c heckFrameSocke t ki llTheFrameSock et {albumItemId} Pr oductSuppo rt aboutGOXD aboutMemto application cart cartWithoutAccount contactUs contributorBlog download faq getBannerVideo impres sion-of-hon g-kong memto m emtoLogou t m emtoWorl d npmFrame order privacy productDetail r entalService ship ping-and-ret urns snaprint snaprintCheckout store storeNPM storeNew t hreeDFrame twoDFrame tw oDFrame13in ch warranty warr antyRegistra tion {lang} {filename} {frameVersionId} {blogId} {groupId} {id} {link} checkout me mberT ype tran sactonT ype s ourc e rsio t oken ha rdwar eId ha rdwar eId ha rdwar eId m embe rId t oken {quantity} fi lenam e {chosenSku} pr oductLi nk {promotionCode} {arrItems} Read-Write GOXD beta 335 Paths 335 Ops
  6. api AccountManager Affiliate Campaign CompaRecycle Contract Country Currency DataField DimensionGroup

    GradingForm GradingStepChecks InventoryItem Item ItemGroup ItemVariant Language Localization Logistic Manufacturer ModelMatcher Partner Pricelist PurchaseOrder Quote Reports TradeIn Valuation Vendor VendorDomain VendorForwardingTool VendorMinPrice VendorPricelist VendorRetailTool Creat eAccountMa nager Remov eAccountM anager Updat eAccountMa nager C reateAffiliat e R emoveAffilia te U pdateAffiliat e AddCa mpaignToTr adeIn BulkUps ertCampaig nsOffers C opyCampaig n Cr eateCampai gn G etCampaig n GetC ampaignDe tails Get CampaignOf fers G etCampaign s GetTra deInCampai gnInfo Re m oveCampa ign RemoveC ampaignFro mTradeIn Remo veCampaign Offer Up dateCampai gn Upda teCampaign Offer CheckVen dorForCom paRecycle Ge tCurrencyIn fo G etFakeTrad eInValuation sForVendor s GetGra dingForValu ations GetGrad ingFormCo efficient GetPriceList GetRece ivedTradeIn Devices Ge tVatCoeffici ent R egisterTrade In C reateContra ct Re moveContra ct U pdateContra ct C reateCountr y U pdateCount ry Cr eateCurren cy Crea teExchange Rate G etCurrencie s Re moveCurren cy Rem oveExchang eRate U pdateCurren cy Upda teExchange Rate Upda teExchange Rates Cr eateDataFie ld CreateD ataFieldList Option GetDa taFieldListO ptions G etDataField s Re m oveDataFi eld Remove DataFieldLis tOptions Up dateDataFie ld Update DataFieldLis tOption Creat eDimension Group Remov eDimension Group Updat eDimension Group Activate GradingForm Version AssociateGr adingFormV endorUsage CreateGrade Cre ateGradingF orm CreateG radingForm Version Ed itGradingFo rm GetAvailab leGradingIt emGroups GetGrades GetGradi ngFormActiv eVersion GetGra dingFormV endorUsage sByGradingF ormId GetGr adingFormV ersion GetGr adingFormV ersionsInfo ByGradingFo rmId Ge tGradingFor m s GetMappi ngsForActiv eVersions G etVendorGr adingFormV endorUsage s RemoveDr aftGradingFo rmVersion RemoveGra dingFormVe ndorUsages SaveGr adingFormV ersion UpdateGrad e Update GradingForm Version AddRequi redGradingS tepCheck A ddVendorRe quiredGrad ingStepChec k Ge tAvailableRe quiredGrad ingStepChe cks GetRequ iredGradingStepC heckById GetRequir edGradingS tepChecks G etVendorRe quiredGradi ngStepChec ks RemoveReq uiredGradin gStepCheck Rem oveVendor RequiredGr adingStepCh eck UpdateReq uiredGradin gStepCheck AddInve ntoryItemC omment geDev iceIdentifier ForInventor yItemWithou tRegr C hangeInven toryItemPur chaseOrderI d ngeIt emVariantFo rInventoryIt emWithoutR egrad Ch angeItemVar iantInInven toryItemDev ice hange ItemVariant InInventoryI temForFake TradeI GetInven toryItemIdsB yTradeIn CreateItem DeleteItem UpdateItem Cre ateItemGro up De leteItemGro up G etVendorFix edAdjustme ntItemGrou ps Up dateItemGro up AddItem VariantProd uctCodes Cre ateItemVari ant Del eteItemVari ant RemoveItem VariantFrom AllPricelists Upda teCostItemV ariant Upd ateItemVari ant Cr eateLangua ge G etLanguage s G etLanguage s GetLocal izedEntityPr operties GetL ocalizedRes ource GetLoc alizedResou rceKey GetLoc alizedResou rceKeys GetLo calizedReso urces GetLocalize dResources KeysValues ImportLoc alizedResou rceValues R emoveLoca lizedEntityP ropertyStrin g RemoveL ocalizedRes ourceKey UpdateLoc alizedEntity Properties Update LocalizedRe source UpdateL ocalizedRes ourceKey GetTr adeInDevice State Crea teManufact urer Dele teManufact urer Upd ateManufact urer FindItem VariantsById entifiers GetAllM atcherType Names GetMatch erScoresByI dentifiers UpdateA ppleWatche sMatcher Update AppleiPadM atcher Upd ateMacBook ProSerialNu mberV1Mat cher Upd ateMacBook ProSerialNu mberV2Mat cher C reatePartne r Get PartnerLoca tion R emovePartn er U pdatePartn er C reatePricelis t Del istPricelistLi nes Enl istPricelistLi nes Re movePricel ist U pdatePriceli st Upd atePricelist Line Upd atePricelistL ines GetQuote G etQuoteLine s GetAff iliateRetailR eport GetVe ndorRetailR eport Cre ateTradeInF ake Del eteTradeInF ake adeInInform Ma nualMatchD evic Ge tReceiveIte m s GetShi pmentInfor m ation Pro cessingTrad eIn E valuateErpP riceForGrade dItemVaria nt UpdatePart nerGradingI nformation d VendorData Fie CopyVendor Creat eVendorLoc ation Get VendorBran ding GetV endorDataF ields GetV endorLocat ions Ge tVendorUse rs GetV endorUsers Info R emoveVend or Remov eVendorLoc ations Rem oveVendorU sers U pdateVendo r Updat eVendorBra nding Upda teVendorLoc ation Up dateVendorT ool Upd ateVendorU ser do rUsersExter nal Vendor HasAtLeastOneL ocation Creat eVendorDo m ain Get VendorDom ain Get VendorDom ains Remo veVendorDo mains Upda teVendorDo main dorUserRes t GetVen dorForward ingTool GetVen dorUserRest rictions RemoveV endorUserR estrictions UpdateV endorForwa rdingTool GetVe ndorItemMi nPrice Get VendorMinP rice UpdateVen dorItemGro upMinPrice Update VendorItem M inPrice Upda teVendorMi nPrice Creat eVendorPri celist DelistV endorPriceli stLines EnlistV endorPriceli stLines Remo veVendorPri celists Upda teVendorPri celist UpdateVen dorPricelistC ostPercent Update VendorPrice listLine Update VendorPrice listLines GetV endorRetail Tool GetVend orsGdprConf iguration Updat eVendorRet ailTool re quiredG radingSt epCheck Id v endor Id Remote Procedure Call Nextgen Integration Api 1.0.0 250 Paths 250 Ops
  7. Actions → Methods list, update, delete, add, search, create, save,

    count, get, register, upload, detail, export, edit, download, cancel, refresh, remove, query, activate, report, order, test, verify, batch, validate, import, reset, start, lter, ping, page, send, check, view, pro le, con rm, state, bulk, disable, email, enable, preview, account, submit, sync, scheme, nish, insert, request, archive, authenticate, index, invite, inventory, score, deactivate, image, notify, stop, publish, log, comment, read, revoke, le, nd, approve, change, last, content, audit, complete, snooze, accept, set, contour, range, generate, message, copy, close, grant, apply, run, refund, address, modify, reject, restore, clone, project, default, excel, contact, install, balance, name, restart, subscribe, result, group, trace, clear, pay, move, map, code, process, push, share, tree, ticket, traf c, schedule, resume, post, type, sign, pause, control, assign, issue, nalize, unlock, discover, catalog, lock, join, paginate, review, like, fetch, authorize, replace, select, execute, load, decline, phone, home, rename, dump, tag, transfer, calculate, resolve, stream, top, open, total, document, merge, invoice, form, alert, link, purchase, bind, connect, feed, show, google, record, trigger, reorder, key, reboot, card, charge, withdraw, store, duplicate, cache, block, source, action, swagger, release, time, terminate, task, campaign, commit, redeem, team, put, service, receive, GET, POST, PUT, DELETE, PATCH, OPTIONS OPTIONS
  8. add create update list delete save register upload search remove

    cancel refresh get import order batch reset edit start verify query lter export validate activate detail report test page download count ping 0 5,000 10,000 15,000 20,000 25,000 30,000 35,000 GET POST PUT DELETE PATCH
  9. GET POST PUT DELETE PATCH {id} user users order auth

    admin device account search payment {userId} member report profile emailsubscription app item {uuid} actions list update delete add search create save count get register upload detail export edit download cancel refresh remove query activate
  10. G ETviagen s agencias agendas agentes ano apps atendimentos boletos

    call categorias checkins cockpit colaboradores colegio c ontrole-acess o custos dashboard ddp destinos detalhes escolas feriados filiacoes generateFile ginfes hoteis hotelaria html idiomas jobs juridico listaEspera lojas mailer menu modulos monitores monitoria monteasua mural new-horizons notificacoes pagamentos passageiro passageiros passeiosBaladas pax payments pedido planilhadevoo play preCheckin promocao propostas ryu sac saude search smartPass sms status tabelao templates temporario tlscheck transportes usuarios util viagem viagens voucher zapier age nciasFili ais agentes filias listagem destinos detalhes dias eq uipamen to escolas horas local tipos {agendaId} {id} {col aboradorAgent eId} checkin viagem versao status {ate ndiment oId} pendentes push filas webhook forfun {categoriaId} ValidaVoucher atu alizarAd icionalA partame nto brindes c ongelad o cortesia cortesias desligamento notaFiscal ocorrencias r eembols o ree m bolsoP ago remessas tipoPassageiro tr ansport es t rocoPag o voucher {checkinId} hoteis c ontaCorrente s cor funcionarios sellers tipos {colaboradorId} {id} p roposta s teste bancos c ategoria s o peracoe s inscricoes form source table types validation values comunicacao viagens {destinoId} {id} passageiro {id} tarifas {id} history xmlNf {fileId} CallA tualizaVa lores Canc elaNfseG infes ZipD ownload Xml co nsultaEr ro cons ultaLote Rps consu ltaLoteS tatus enviaRps en viarLoteR ps e xcluirLot e fotos { colaboradorHotelId } {id} alt erarAces so {id} app curso destinos forfun simply tiopatinhas contrato contratos fila pax proposta tip oCadast ro {idLista} {id} campanhas mai lVerifica tion origem profile tracking modulos icones relatorioColuna {moduloId} bonusPorCursos cursos escalas login qtdCursos cupons ficha co laborad or {id} {monteASuaId} recados b uscar-p assageir o-por-id s detalh e-pre-c heckin informaco es-adicionais- passageiro permisso es-por- modulos tr ansport es cartao-de-credito cartao erros ve rificaBaix as {pagamentoId} documento agenda checkin checkins datas pacotes {passeioBaladaId} comunicacaoSms formafone foto sAtualiza das gra uParente sco login n omeSex o resetarsenha resp saude {documentoId} {id} {paxId} app cart order or derBole to p laceOrd er transactions pagamento voo {id} {vooId} acesso acessos apresentacoes downloads n otificaco es usuarios pagamento {id} {paxId} { viagemId } {id} ListaDeEspera addon colaboradores comissao condicao condicoes conhecer datas destinos excluidas hotel lista noites pacote parcelas passeios periodos servicos validade valor viagem buckets createSa cEmailC obranca atendimento enfermeiros ligacoes medicamentos medicos preConsultas recomendacoes sintoma sintomas {moduloId} rr egarGru po carr egarMon itoresEs calasGru pos controles contro lesAtual izados log logoff ping pulseiras pulsei rasAtual izadas versoes at ualizasm s empresas resposta totais valores viagens {id} relatorio cia conexao pax tipo viagem vinculados volta voo {id} {vooId} login logout p ermisso es tipos trocarSenha {id} ca lculaIda de u ploadFil e {idPraca} checkins dados transferencia {id} boleto tipos v2 {id} {nome} {id} {dias} {id} {id} {id} destinos escolas local detalhes agencias {idApp} dados p endente s {c heckinI d} {i dChecki n} inc onsisten cia utilizada textos motivos empresaPrestadora erro lote anexo tipos {id} {ocorrenciaId} notasFiscais topRps {id} {ti poPassageiroI d} app dataHotel cancelamento cortesia endereco pgc tipoAcomodacao agenda checklists destinos {co laborad orConta Corrente Id} {id} cargos departamentos motivoDemissao {funcionarioId} app sku anexos foto funcionarios lojas sellers contaCorrentes lojas cancelamentos {formId} {id} {id} {id} {id} {id} {id} tipo periodos comunicacao {paxId} contato detalhes {id} {h otelFotoI d} fotos verif icaRoom List logs pedid osPreCh eckin precheckin boletos handling invoice rel atorioDia rio handling invoice lista p rechecki n a tualizarD ocumen tosStatu s envia rDocum entos comissaometa app vigente {id} destinos m etodoPg to passageiro {idLista} d isponive l tipoPgto {id} {id} {id} clicks delivered opened {m aillerTick et} {trackingId} {id} relatorioColuna { colaboradorId } alcance categorias faq inscricoes vagas {cursoId} {id} colaboradores registro {id} checkout gerar {id} {in scricaoI D} resposta {idPax} finalizar b andeira s {id} o bservaca o {do cument oId} Url editar PushPen dente proposta p ushPendent e reuniao {p ropostaI d} G ETpedid os pedidos {checkinId} pedidos valores dash passeiosBaladas viagens {id} custo {id} {paxId} {telefone} login fi chaAnex a do cument os ad itivos-financei ros app buscar- proxima -viagem documentos foto redeSocial resp resp2 r espFinanceiro saude termos-transferencia viagens pedido {id} forfun {cu rsoPedi do} cancelar { viagemId } count abertura aberturas ab erturasD ia destinos releases count {pagamentoId} atu alizaSta tus contrato {viagemId} {listaEsperaId} {id} { colaboradorId } aluno destino escola {comissaoId} {id} comercial comerciais checkins custos pagamentos texto valores {propostaId} ac omodac ao ocupacao {hotelId} {id} preco {id} {hotelId} vinculados vinculos {id} {id} {id} {pro postaVal orId} {id} { bucketId } r atament o {id} {id} entregas fr equenci a posologia tipo {id} {medicamentoId} {id} { preConsultaId } {id} palavras {id} {sintomaId} column labels cores distribuicao {e mpresaI d} {s msTicke t} notaFiscal {id} viagem pax {id} {id} pedidos solicitacao {tipo} {idC olabora dor} {id} {id} {id} {id} {id} {id} {id} ligacao {id} app boleto calculo i nconsistencia reativar checklists anexos equipe {h otelChecklistI d} {id} checklists {id} {id} {id} cargos departamentos dependentes horarios salarios timeline valeTransporte proposta {sellerId} app { colaboradorId } {id} {id} {fu ncionario Id} {colab oradorL ojaId} sku {idCo ntaCorr ente} {ano} column {id} {id} {contatoId} beta duplicidade vencidos {forf unPedid oId} relatorio transmissao textos {id} posicao prazo proposta {id} colaborador {tipoPgtoId} details {id} { destinoId } {id} {id} espera site {i dCursoInscrica o} {id} alcance diarias parcelas proposta alcance diarias parcelas primeiraViagem {cursoId} {status} { agendaId } reembolso {id} pedidos remessa viagens {id} b loqueio s {viagemId} {id Chamad a} pdf ficha liberar pdf {forf unPedid oId} count textos {i dDestin o} cartao cortesia observacao oculto pagamento observacao v endedo r {id} {id} {id} aluno destino escola vigente {id} {id} {id} {id} destino hotel ocupacao {id} {vinculoId} {id} posologia recomendacoes ficha Atendim ento {id} posologia pref {rps} {id} remessa passageiros {id} {solicitacaoId} anexos {hote lAgendaCheck listId} {id} {id} {id} anexos {id} {fun cionario CargoCo laborad orId} cion arioDepa rtamen toColabo rad {id} {id} {fun cionarioSalar ioId} {id} app agrupamento {id} beta {id} {idLista} {colaboradorId} metodo {id} transfo rmarEm Monitor can celarBol eto fichas inativar v erificaca o {id} {id} {id} checkin {id} {id} {id} bloqueios {idA presenta cao} {rel easeText oId} {id} {id} {id} {id} {id} {id} {id} {id} {hotelId} {id} {p asseioI d} {id} {id} {id} {id} {paxId} p assageir os passageiros {id} anexos {ag rupamen to} {totalVagas} {metodo} { statusInscricao } {tipo} {paxId} { viagemId } {col aborado rId} {statu sPagam ento} n otificaca o GET,POST:DELETE,GET,PUT Documentação da API Forma Turismo (production) 1.6.7 719 Paths 1092 Ops
  11. Version Identifier Metadata 0 100 200 300 400 500 600

    700 800 900 1,000 0 50 100 150 200 Days since the first commit API Size (Operations) OpenStorageSDK 188 commits, 97 versions
  12. app v1 v2 v3 v4 csh init add _reference_ file

    af ter_job_delivered_paylo ad appro val_awaitin g_job a pproval_jo b appr oval_job_lo okup app roval_quote _job appr ove_task_re view as sign_review er assig n_reviewer_l ocale audit_tr ails_add_co mment audit_trails_job_group cancel_tr anslation_d ocument cancel_tr anslation_j oblookup cascad e_delivered _for_fs cas cade_delive red_for_fs_c ache_postb ack comment compl ete_locale_r eview connector c onnector_notification_confi g connector wise_translations_ summary create_job create_p d_review_su bmission decrypt_url download_source dow nload_targe t_zip file_count_stats generat e_review_re port_zip get_co llateral_stre am_url get_connector_config get_search_config get_system_config get_task_segment job job_lookup_details jo b_search_metada ta jobgr oups_search_met adata j obtasks_search_metadat a li st_job_group_filte rs list_language_jobs list_lookup_languages list_nodes list_org_goups login logs rvices_v pd_webhook remov e_reviewer_ locale res et_submissi on r etry_deliver y set _system_co nfig sync_c ancelled_ta sk_pd target task trial_account trigger_s ubmission_ chaining update_ due_date_b ackend updat e_polling_cr ieteria upd ate_target_r ules connectors content context datastore jobs log notification session submissions tasks connector content context cron-end datastore job login segment string submission task connector content context cron-end datastore gis-utils job node segment string submission task util init {co nnector_typ e} create delete update connections list review_status submit wordcount token token_response token to ken_respon se {c onnector_ke y} token to ken_respon se create request v alidate_toke n config key-data-store key_data_store poll data file history reference string config html path xslt zip entry keys approve cancel status tasks wordcount start terminate approve cancel create down load-delive rable down load_delive rable jobs status submit tasks wordcount cancel c onfirm-canc el confirm co nfirm_canc el download error pdphase config info list-nodes list poll reset istory list submit config path upload key cancel list status tasks wordcount update submit upload append-pd attribute cancel create download jobs list status tag tasks wordcount cancel download error list metadata config info list-pd list poll reset history list submit upload config path upload key submission cancel list status tasks wordcount list search update submit upload attribute cancel create download jobs list status tag tasks wordcount cancel download error list metadata log notify ecto user _session _key job _lookup _id pag e_num ber p age_si ze se arch_s tr user _session _key se gment _id t ask_i d j ob_id job _lookup _id pag e_num ber p age_si ze pagina tion_dis abled all_ch ild_com ments user _session _key con nector _id user _session _key user _session _key jo b_task_ id j ob_id user _session _key con nector _id user _session _key con nector _id rem ote_n ode user _session _key user _session _key t ask_i d files nodes user _session _key job _lookup _id user _session _key user _session _key user _session _key j ob_id user _session _key user _session _key se arch_s tr con nector _id cr eated_ by jo b_stat us org _locale _id pag e_num ber p age_si ze r docu su bmitt er user _session _key job _lookup _id user _session _key con nector _id rem ote_n ode pag e_num ber retu rn_all_c hild_dire ctories_ only c ache d org_id con nector_t ype sou rce_loc ale pag e_num ber p age_si ze tr anslate-strin g tr anslate_stri ng key run html xslt zip list con nector_ key deliverable confirm confirm key run data file reference html xslt zip list con nector_ key claim download async sync deliverable confirm confirm user _session _key j ob_id user _session _key con nector _id rem ote_n ode pag e_num ber retu rn_all_c hild_dire ctories_ only c ache d user _session _key con nector _id list_ nodes_t oken dat astore_k eys j ob_id j ob_id pag e_num ber p age_si ze j ob_id sub mission _id pag e_num ber p age_si ze sub mission _id sub mission _id pag e_num ber p age_si ze sub mission _id t ask_i d con nector_ key list con nector_ key rem ote_n ode pag e_num ber retu rn_all_c hild_dire ctories_ only c ache d con nector_ key con nector_t ype con nector_ key sou rce_loc ale pag e_num ber p age_si ze con nector_ key con nector_ key con nector_ key dat astore_k eys con nector_ key j ob_id con nector_ key j ob_id pag e_num ber p age_si ze con nector_ key include _conten t_node j ob_id con nector_ key sub mission _id pag e_num ber p age_si ze con nector_ key sub mission _id con nector_ key sub mission _id con nector_ key sub mission _id pag e_num ber p age_si ze con nector_ key sub mission _id con nector_ key t ask_i d con nector_ key con nector_ key list con nector_ key proje ct_short code p d_ur l con nector_t ype con nector_ key sou rce_loc ale pag e_num ber p age_si ze con nector_ key con nector_ key con nector_ key dat astore_k eys con nector_ key j ob_id con nector_ key j ob_id pag e_num ber p age_si ze con nector_ key include _conten t_node j ob_id con nector_ key status con nector_ key se arch_s tr rem ote_n ode pag e_num ber sub mission _id pag e_num ber p age_si ze con nector_ key sub mission _id con nector_ key sub mission _id con nector_ key sub mission _id pag e_num ber p age_si ze con nector_ key sub mission _id con nector_ key t ask_i d con nector_ key con nector_ key conne ctor_info _keys con nector_ key con nector_ key conne ctor_info _keys con nector_ key con nector_ key rem ote_n ode pag e_num ber retu rn_all_c hild_dire ctories_ only c ache d rem ote_n ode pag e_num ber retu rn_all_c hild_dire ctories_ only c ache d con nector_ key con nector_ key con nector_ key con nector_ key list_ nodes_t oken v1,v2,v3,v4 CD API Documentation (STAGING) 2019.5_RC2 307 Paths 322 Ops
  13. Olaf Zimmerman Mirko Stocker Daniel Lübke Uwe Zdun Cesare Pautasso

    Patterns for API Design Simplifying Integration with Loosely Coupled Message Exchanges December 2022 ISBN: 978-0-13767010-9
  14. References • Souhaila Serbout, Cesare Pautasso, , 23rd International Conference

    on Web Engineering (ICWE 2023), Alicante, Spain, June, 2023. • Souhaila Serbout, Fabio Di Lauro, Cesare Pautasso, , 19th IEEE International Conference on Software Architecture (ICSA 2022), Honululu, Hawaii, IEEE, March, 2022. • Souhaila Serbout, Cesare Pautasso, Uwe Zdun, Olaf Zimmermann, , Proc. of the European Conference on Pattern Languages of Programs (EuroPLoP 2021), Kloster Irsee, Germany, July 2021 • Fabio Di Lauro, Souhaila Serbout, Cesare Pautasso, , Proc. 21st International Conference on Web Engineering (ICWE2021), Biarritz, France, Springer, May 2021 (Best Paper Award) • Cesare Pautasso, Ana Ivanchikj, Silvia Schreier, , Proc. of the 21st European Conference on Pattern Languages of Programs (EuroPLoP 2016), Kloster Irsee, Germany, July 2016, pp. 4:1-4:22 • Daniel Lübke, Olaf Zimmermann, Cesare Pautasso, Uwe Zdun, Mirko Stocker, , Proc. of the 24th European Conference on Pattern Languages of Programs (EuroPLoP 2019), Irsee, Germany, July 2019 • Mike Ralphson, , Postman Blog, 23.8.2021 • Olaf Zimmermann, Mirko Stocker, Uwe Zdun, Daniel Lübke, Cesare Pautasso, , Joint Post-proceedings of the First and Second International Conference on Microservices (Microservices 2017/2019) An empirical study of Web API versioning practices Web APIs Structures and Data Models Analysis From OpenAPI Fragments to API Pattern Primitives and Smells Towards Large-scale Empirical Assessment of Web APIs Evolution A Pattern Language for RESTful Conversations Interface Evolution Patterns - Balancing Compatibility and Flexibility across Microservices Lifecycles What We Learned from 200,000 OpenAPI Files Introduction to Microservice API Patterns (MAP)