{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,6,30]],"date-time":"2026-06-30T19:45:02Z","timestamp":1782848702673,"version":"3.54.5"},"reference-count":47,"publisher":"Association for Computing Machinery (ACM)","issue":"FSE","license":[{"start":{"date-parts":[[2026,6,30]],"date-time":"2026-06-30T00:00:00Z","timestamp":1782777600000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by-nc-nd\/4.0\/legalcode"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Proc. ACM Softw. Eng."],"published-print":{"date-parts":[[2026,6,30]]},"abstract":"<jats:p>GraphQL provides a schema-based, strongly typed query language that enables highly efficient client-server communication. This paper introduces GraphQLify, an automated framework designed to migrate existing REST APIs to GraphQL. Unlike prior approaches that rely on relational databases, resource description frameworks (RDF), or machine-parsable specifications, GraphQLify leverages static source code analysis for precise type inference. This novel technique generates GraphQL schemas that guarantee end-to-end type safety, preserving a core advantage of adopting GraphQL. Furthermore, existing migration tools typically generate separate adapter servers, which introduce performance overhead via dynamic request binding and network latency. GraphQLify eliminates this by generating an embedded server that directly invokes the underlying API code, significantly improving performance. We evaluated GraphQLify on 834 APIs across nine popular open-source projects, where it successfully converted 100% of the APIs with zero type mismatches. In contrast, the current state-of-the-art tool, OASGraph, exhibited a 3.5% failure rate and a 42% type mismatch rate on the same dataset. Finally, our performance evaluation demonstrates that for workflows requiring five sequential API calls, clients using GraphQLify reduce data fetching time by a factor of 2 to 4 compared to their REST counterparts.<\/jats:p>","DOI":"10.1145\/3797141","type":"journal-article","created":{"date-parts":[[2026,6,30]],"date-time":"2026-06-30T17:06:14Z","timestamp":1782839174000},"page":"299-320","source":"Crossref","is-referenced-by-count":0,"title":["GraphQLify: Automated and Type Safety-Preserving GraphQL API Adoption"],"prefix":"10.1145","volume":"3","author":[{"ORCID":"https:\/\/orcid.org\/0009-0001-8490-161X","authenticated-orcid":false,"given":"Saleh","family":"Amareen","sequence":"first","affiliation":[{"name":"Wayne State University, Computer Science, Detroit, USA"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0009-0009-5895-998X","authenticated-orcid":false,"given":"Arif","family":"Rahman","sequence":"additional","affiliation":[{"name":"Wayne State University, Computer Science, Detroit, USA"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-1258-6470","authenticated-orcid":false,"given":"Sazzadur","family":"Rahaman","sequence":"additional","affiliation":[{"name":"University of Arizona, Computer Science, Tuscon, USA"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-3178-6232","authenticated-orcid":false,"given":"Amiangshu","family":"Bosu","sequence":"additional","affiliation":[{"name":"Wayne State University, Computer Science, Detroit, USA"}],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"320","published-online":{"date-parts":[[2026,6,30]]},"reference":[{"key":"e_1_2_1_1_1","unstructured":"Altair GraphQL Client. Retrieved 2026-04-01 from https:\/\/altairgraphql.dev\/"},{"key":"e_1_2_1_2_1","unstructured":"Building REST services with Spring. Retrieved 2026-04-08 from https:\/\/spring.io\/guides\/tutorials\/rest"},{"key":"e_1_2_1_3_1","unstructured":"DGraph. Retrieved 2026-04-08 from https:\/\/dgraph.io\/"},{"key":"e_1_2_1_4_1","unstructured":"GraphQL Authorization. Retrieved 2026-04-08 from https:\/\/graphql.org\/learn\/authorization\/"},{"key":"e_1_2_1_5_1","unstructured":"GraphQL Foundation. Retrieved 2026-04-08 from https:\/\/graphql.org\/community\/foundation\/"},{"key":"e_1_2_1_6_1","unstructured":"GraphQL Java -The Java implementation of GraphQL. Retrieved 2026-04-08 from https:\/\/www.graphql-java.com\/"},{"key":"e_1_2_1_7_1","unstructured":"GraphQL-Mesh. Retrieved 2026-04-08 from https:\/\/the-guild.dev\/graphql\/mesh"},{"key":"e_1_2_1_8_1","unstructured":"Hasura Instant GraphQL APIs on your data. Retrieved 2026-04-08 from https:\/\/hasura.io\/"},{"key":"e_1_2_1_9_1","unstructured":"OpenAPI Inititive. Retrieved 2026-04-08 from https:\/\/www.openapis.org\/"},{"key":"e_1_2_1_10_1","unstructured":"n.d.]. Package javax.annotation.processing. Retrieved 2026-04-08 from https:\/\/docs.oracle.com\/javase\/8\/docs\/api\/ javax\/annotation\/processing\/package-summary.html"},{"key":"e_1_2_1_11_1","unstructured":"PostGraphile Instant GraphQL API. Retrieved 2026-04-08 from https:\/\/www.graphile.org\/postgraphile\/"},{"key":"e_1_2_1_12_1","unstructured":"Prisma. Retrieved 2026-04-08 from https:\/\/www.prisma.io\/"},{"key":"e_1_2_1_13_1","unstructured":"Spring Framework Documentation. Retrieved 2026-04-08 from https:\/\/docs.spring.io\/spring-framework\/reference\/ index.html"},{"key":"e_1_2_1_14_1","unstructured":"StepZen an IBM Company. Retrieved 2026-04-08 from https:\/\/dashboard.ibm.stepzen.com\/ [15] [n.d.]."},{"key":"e_1_2_1_15_1","unstructured":"Swagger API Development forEveryone. Retrieved 2026-04-08 from https:\/\/swagger.io\/"},{"key":"e_1_2_1_16_1","unstructured":"n.d.]. Swagger-to-GraphQL. Retrieved 2026-04-08 from https:\/\/github.com\/yarax\/swagger-to-graphql [17] [n.d.]. Welcome to Apache Maven. Retrieved 2026-04-08 from https:\/\/maven.apache.org\/"},{"key":"e_1_2_1_17_1","unstructured":"2021. GraphQL Specification. Retrieved 2026-04-08 from https:\/\/spec.graphql.org\/October2021\/"},{"key":"e_1_2_1_18_1","doi-asserted-by":"publisher","DOI":"10.1145\/3520304.3528952"},{"key":"e_1_2_1_19_1","doi-asserted-by":"publisher","DOI":"10.1145\/3609427"},{"key":"e_1_2_1_20_1","doi-asserted-by":"publisher","DOI":"10.1109\/saner.2019.8667986"},{"key":"e_1_2_1_21_1","doi-asserted-by":"publisher","DOI":"10.1109\/icsa47634.2020.00016"},{"key":"e_1_2_1_22_1","doi-asserted-by":"publisher","DOI":"10.1145\/3368089.3409670"},{"key":"e_1_2_1_23_1","doi-asserted-by":"publisher","DOI":"10.1142\/s0218194020400070"},{"key":"e_1_2_1_24_1","unstructured":"Roy Derks. 2023. Seven key insights on GraphQL trends."},{"key":"e_1_2_1_25_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-030-32065-2_13"},{"key":"e_1_2_1_26_1","first-page":"119","volume-title":"International Semantic Web Conference (ISWC)","author":"Gleim Lars Christoph","year":"2020","unstructured":"Lars Christoph Gleim, Tim Holzheim, Istv\u00e1n Koren, and Stefan Decker. 2020. Automatic bootstrapping of GraphQL endpoints for RDF triple stores. In International Semantic Web Conference (ISWC) 2020. 119-134."},{"key":"e_1_2_1_27_1","doi-asserted-by":"publisher","DOI":"10.1145\/3178876.3186014"},{"key":"e_1_2_1_28_1","doi-asserted-by":"publisher","DOI":"10.46298\/lmcs-22(1:18)2026"},{"key":"e_1_2_1_29_1","doi-asserted-by":"publisher","DOI":"10.1145\/161494.161501"},{"key":"e_1_2_1_30_1","volume-title":"Enterprise Programming Languages for","author":"Lesjak Ziga","year":"2024","unstructured":"Ziga Lesjak. 2024. Enterprise Programming Languages for 2024. https:\/\/tridenstechnology.com\/enterpriseprogramming-languages\/."},{"key":"e_1_2_1_31_1","doi-asserted-by":"publisher","DOI":"10.3233\/sw-233550"},{"key":"e_1_2_1_32_1","volume-title":"DR. CHECKER: A Soundy Analysis for Linux Kernel Drivers. In 26th USENIX Security Symposium, USENIX Security 2017","author":"Machiry Aravind","year":"2017","unstructured":"Aravind Machiry, Chad Spensky, Jake Corina, Nick Stephens, Christopher Kruegel, and Giovanni Vigna. 2017. DR. CHECKER: A Soundy Analysis for Linux Kernel Drivers. In 26th USENIX Security Symposium, USENIX Security 2017, Vancouver, BC, Canada, August 16-18, 2017, Engin Kirda and Thomas Ristenpart (Eds.). USENIX Association, 1007-1024."},{"key":"e_1_2_1_33_1","doi-asserted-by":"publisher","DOI":"10.1109\/ase51524.2021.9678513"},{"key":"e_1_2_1_34_1","doi-asserted-by":"publisher","DOI":"10.1109\/spw63631.2024.00012"},{"key":"e_1_2_1_35_1","doi-asserted-by":"publisher","DOI":"10.1002\/spe.2346"},{"key":"e_1_2_1_36_1","volume-title":"Jax-rs: Java\u2122 api for restful web services","author":"Pericas-Geertsen Santiago","year":"2013","unstructured":"Santiago Pericas-Geertsen and Marek Potociar. 2013. Jax-rs: Java\u2122 api for restful web services. Oracle Corporation (2013), 1-84."},{"key":"e_1_2_1_37_1","doi-asserted-by":"publisher","DOI":"10.1145\/3561818"},{"key":"e_1_2_1_38_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-030-96043-8_2"},{"key":"e_1_2_1_39_1","doi-asserted-by":"publisher","DOI":"10.1145\/3319535.3345659"},{"key":"e_1_2_1_40_1","doi-asserted-by":"publisher","DOI":"10.1109\/tsp49548.2020.9163501"},{"key":"e_1_2_1_41_1","doi-asserted-by":"publisher","DOI":"10.1145\/3357766.3359541"},{"key":"e_1_2_1_42_1","volume-title":"ISWC2018","author":"Taelman Ruben","year":"2018","unstructured":"Ruben Taelman, Miel Vander Sande, and Ruben Verborgh. 2018. GraphQL-LD: linked data querying with GraphQL. In ISWC2018, the 17th International Semantic Web Conference. 1-4."},{"key":"e_1_2_1_43_1","doi-asserted-by":"publisher","DOI":"10.1109\/ser-ip52554.2021.00009"},{"key":"e_1_2_1_44_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-030-"},{"key":"e_1_2_1_45_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-319-91662-0_5"},{"key":"e_1_2_1_46_1","volume-title":"GitHub data exposure and accessing blocked data using the GraphQL security design flaw. arXiv preprint arXiv:2005.13448","author":"Yazdipour Shahriar","year":"2020","unstructured":"Shahriar Yazdipour. 2020. GitHub data exposure and accessing blocked data using the GraphQL security design flaw. arXiv preprint arXiv:2005.13448 (2020)."},{"key":"e_1_2_1_47_1","doi-asserted-by":"publisher","DOI":"10.1109\/icst53961.2022.00014"}],"container-title":["Proceedings of the ACM on Software Engineering"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3797141","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2026,6,30]],"date-time":"2026-06-30T18:54:39Z","timestamp":1782845679000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3797141"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2026,6,30]]},"references-count":47,"journal-issue":{"issue":"FSE","published-print":{"date-parts":[[2026,6,30]]}},"alternative-id":["10.1145\/3797141"],"URL":"https:\/\/doi.org\/10.1145\/3797141","relation":{},"ISSN":["2994-970X"],"issn-type":[{"value":"2994-970X","type":"electronic"}],"subject":[],"published":{"date-parts":[[2026,6,30]]}}}