{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,3,26]],"date-time":"2025-03-26T02:05:21Z","timestamp":1742954721763,"version":"3.40.3"},"publisher-location":"Cham","reference-count":38,"publisher":"Springer International Publishing","isbn-type":[{"type":"print","value":"9783030587673"},{"type":"electronic","value":"9783030587680"}],"license":[{"start":{"date-parts":[[2020,1,1]],"date-time":"2020-01-01T00:00:00Z","timestamp":1577836800000},"content-version":"tdm","delay-in-days":0,"URL":"http:\/\/www.springer.com\/tdm"},{"start":{"date-parts":[[2020,1,1]],"date-time":"2020-01-01T00:00:00Z","timestamp":1577836800000},"content-version":"vor","delay-in-days":0,"URL":"http:\/\/www.springer.com\/tdm"}],"content-domain":{"domain":["link.springer.com"],"crossmark-restriction":false},"short-container-title":[],"published-print":{"date-parts":[[2020]]},"DOI":"10.1007\/978-3-030-58768-0_15","type":"book-chapter","created":{"date-parts":[[2020,9,11]],"date-time":"2020-09-11T12:02:48Z","timestamp":1599825768000},"page":"265-283","update-policy":"https:\/\/doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":2,"title":["Statically Checking REST API Consumers"],"prefix":"10.1007","author":[{"ORCID":"https:\/\/orcid.org\/0000-0001-6613-5192","authenticated-orcid":false,"given":"Nuno","family":"Burnay","sequence":"first","affiliation":[]},{"ORCID":"https:\/\/orcid.org\/0000-0003-0688-3521","authenticated-orcid":false,"given":"Ant\u00f3nia","family":"Lopes","sequence":"additional","affiliation":[]},{"ORCID":"https:\/\/orcid.org\/0000-0002-9539-8861","authenticated-orcid":false,"given":"Vasco T.","family":"Vasconcelos","sequence":"additional","affiliation":[]}],"member":"297","published-online":{"date-parts":[[2020,9,8]]},"reference":[{"key":"15_CR1","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"428","DOI":"10.1007\/11531142_19","volume-title":"ECOOP 2005 - Object-Oriented Programming","author":"C Anderson","year":"2005","unstructured":"Anderson, C., Giannini, P., Drossopoulou, S.: Towards type inference for JavaScript. In: Black, A.P. (ed.) ECOOP 2005. LNCS, vol. 3586, pp. 428\u2013452. Springer, Heidelberg (2005). \nhttps:\/\/doi.org\/10.1007\/11531142_19"},{"key":"15_CR2","doi-asserted-by":"publisher","unstructured":"Au\u00e9, J., Aniche, M.F., Lobbezoo, M., van Deursen, A.: An exploratory study on faults in web API integration in a large-scale payment company. In: Proceedings of the 40th International Conference on Software Engineering: Software Engineering in Practice, ICSE, pp. 13\u201322. ACM (2018). \nhttps:\/\/doi.org\/10.1145\/3183519.3183537","DOI":"10.1145\/3183519.3183537"},{"key":"15_CR3","unstructured":"Axios: Promise based HTTP client for the browser and node.js. \nhttps:\/\/github.com\/axios\/axios"},{"issue":"6","key":"15_CR4","doi-asserted-by":"publisher","first-page":"81","DOI":"10.1145\/1953122.1953145","volume":"54","author":"M Barnett","year":"2011","unstructured":"Barnett, M., F\u00e4hndrich, M., Leino, K.R.M., M\u00fcller, P., Schulte, W., Venter, H.: Specification and verification: the Spec# experience. Commun. ACM 54(6), 81\u201391 (2011)","journal-title":"Commun. ACM"},{"key":"15_CR5","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"364","DOI":"10.1007\/11804192_17","volume-title":"Formal Methods for Components and Objects","author":"M Barnett","year":"2006","unstructured":"Barnett, M., Chang, B.-Y.E., DeLine, R., Jacobs, B., Leino, K.R.M.: Boogie: a modular reusable verifier for object-oriented programs. In: de Boer, F.S., Bonsangue, M.M., Graf, S., de Roever, W.-P. (eds.) FMCO 2005. LNCS, vol. 4111, pp. 364\u2013387. Springer, Heidelberg (2006). \nhttps:\/\/doi.org\/10.1007\/11804192_17"},{"key":"15_CR6","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"257","DOI":"10.1007\/978-3-662-44202-9_11","volume-title":"ECOOP 2014 \u2013 Object-Oriented Programming","author":"GM Bierman","year":"2014","unstructured":"Bierman, G.M., Abadi, M., Torgersen, M.: Understanding TypeScript. In: Jones, R. (ed.) ECOOP 2014. LNCS, vol. 8586, pp. 257\u2013281. Springer, Heidelberg (2014). \nhttps:\/\/doi.org\/10.1007\/978-3-662-44202-9_11"},{"issue":"1","key":"15_CR7","doi-asserted-by":"publisher","first-page":"31","DOI":"10.1017\/S0956796812000032","volume":"22","author":"GM Bierman","year":"2012","unstructured":"Bierman, G.M., Gordon, A.D., Hritcu, C., Langworthy, D.E.: Semantic subtyping with an SMT solver. J. Funct. Program. 22(1), 31\u2013105 (2012). \nhttps:\/\/doi.org\/10.1017\/S0956796812000032","journal-title":"J. Funct. Program."},{"key":"15_CR8","unstructured":"Burnay, N., et al.: Communication contracts for distributed systems development. \nhttp:\/\/rss.di.fc.ul.pt\/confident"},{"key":"15_CR9","unstructured":"Burnay, N., Lopes, A., Vasconcelos, V.T.: SafeRESTScript: statically checking REST API consumers. \narXiv:2007.08048\n\n (2020). \nhttp:\/\/arxiv.org\/abs\/2007.08048"},{"key":"15_CR10","doi-asserted-by":"publisher","unstructured":"Chugh, R., Herman, D., Jhala, R.: Dependent types for JavaScript. In: Proceedings of the 27th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA, pp. 587\u2013606. ACM (2012). \nhttps:\/\/doi.org\/10.1145\/2384616.2384659","DOI":"10.1145\/2384616.2384659"},{"key":"15_CR11","unstructured":"Dart: The Dart programming language. \nhttps:\/\/www.dartlang.org\/"},{"key":"15_CR12","unstructured":"Dezfuli-Arjomandi, A.: Introducing RESTyped: end-to-end typing for REST APIs with TypeScript (2017). \nhttps:\/\/blog.falcross.com\/introducing-restyped-end-to-end-typing-for-rest-apis-with-typescript\/"},{"key":"15_CR13","doi-asserted-by":"publisher","unstructured":"Dunfield, J., Krishnaswami, N.R.: Complete and easy bidirectional typechecking for higher-rank polymorphism. In: ACM SIGPLAN International Conference on Functional Programming, ICFP, pp. 429\u2013442. ACM (2013). \nhttps:\/\/doi.org\/10.1145\/2500365.2500582","DOI":"10.1145\/2500365.2500582"},{"key":"15_CR14","unstructured":"Facebook: Flow: a static type checker for JavaScript. \nhttps:\/\/flow.org\/"},{"key":"15_CR15","doi-asserted-by":"publisher","unstructured":"Ferreira, F., Pientka, B.: Bidirectional elaboration of dependently typed programs. In: Proceedings of the 16th International Symposium on Principles and Practice of Declarative Programming, pp. 161\u2013174. ACM (2014). \nhttps:\/\/doi.org\/10.1145\/2643135.2643153","DOI":"10.1145\/2643135.2643153"},{"issue":"2","key":"15_CR16","doi-asserted-by":"publisher","first-page":"115","DOI":"10.1145\/514183.514185","volume":"2","author":"RT Fielding","year":"2002","unstructured":"Fielding, R.T., Taylor, R.N.: Principled design of the modern web architecture. ACM Trans. Internet Technol. 2(2), 115\u2013150 (2002). \nhttps:\/\/doi.org\/10.1145\/514183.514185","journal-title":"ACM Trans. Internet Technol."},{"key":"15_CR17","unstructured":"GitLab: GitLab OpenAPI documentation. \nhttps:\/\/gitlab.com\/gitlab-org\/gitlab-foss\/blob\/swagger-api\/doc\/api\/wikis.md"},{"key":"15_CR18","doi-asserted-by":"publisher","unstructured":"Gregorio, J., Fielding, R.T., Hadley, M., Nottingham, M., Orchard, D.: URI template. RFC 6570, pp. 1\u201334 (2012). \nhttps:\/\/doi.org\/10.17487\/RFC6570","DOI":"10.17487\/RFC6570"},{"key":"15_CR19","unstructured":"Harmony, A.: Instagram API. \nhttps:\/\/apiharmony-open.mybluemix.net\/public\/apis\/instagram#get_locations_search"},{"key":"15_CR20","unstructured":"Herman, M.: Instagram search app. \nhttps:\/\/github.com\/mjhea0\/thinkful-mentor\/blob\/master\/frontend\/instagram-search\/app.js"},{"issue":"10","key":"15_CR21","doi-asserted-by":"publisher","first-page":"576","DOI":"10.1145\/363235.363259","volume":"12","author":"CAR Hoare","year":"1969","unstructured":"Hoare, C.A.R.: An axiomatic basis for computer programming. Commun. ACM 12(10), 576\u2013580 (1969). \nhttps:\/\/doi.org\/10.1145\/363235.363259","journal-title":"Commun. ACM"},{"key":"15_CR22","unstructured":"JSHint: JSHint, a static code analysis tool for JavaScript. \nhttps:\/\/jshint.com\/about\/"},{"key":"15_CR23","series-title":"Lecture Notes in Computer Science (Lecture Notes in Artificial Intelligence)","doi-asserted-by":"publisher","first-page":"348","DOI":"10.1007\/978-3-642-17511-4_20","volume-title":"Logic for Programming, Artificial Intelligence, and Reasoning","author":"KRM Leino","year":"2010","unstructured":"Leino, K.R.M.: Dafny: an automatic program verifier for functional correctness. In: Clarke, E.M., Voronkov, A. (eds.) LPAR 2010. LNCS (LNAI), vol. 6355, pp. 348\u2013370. Springer, Heidelberg (2010). \nhttps:\/\/doi.org\/10.1007\/978-3-642-17511-4_20"},{"key":"15_CR24","unstructured":"Levin, G.: The rise of REST API (2015). \nhttps:\/\/blog.restcase.com\/the-rise-of-rest-api\/"},{"key":"15_CR25","volume-title":"Object-Oriented Software Construction","author":"B Meyer","year":"1997","unstructured":"Meyer, B.: Object-Oriented Software Construction, 2nd edn. Prentice-Hall, Upper Saddle River (1997)","edition":"2"},{"key":"15_CR26","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"337","DOI":"10.1007\/978-3-540-78800-3_24","volume-title":"Tools and Algorithms for the Construction and Analysis of Systems","author":"L de Moura","year":"2008","unstructured":"de Moura, L., Bj\u00f8rner, N.: Z3: an efficient SMT solver. In: Ramakrishnan, C.R., Rehof, J. (eds.) TACAS 2008. LNCS, vol. 4963, pp. 337\u2013340. Springer, Heidelberg (2008). \nhttps:\/\/doi.org\/10.1007\/978-3-540-78800-3_24"},{"key":"15_CR27","doi-asserted-by":"publisher","unstructured":"Oostvogels, N., Koster, J.D., Meuter, W.D.: Static typing of complex presence constraints in interfaces. In: 32nd European Conference on Object-Oriented Programming, ECOOP. LIPIcs, vol. 109, pp. 14:1\u201314:27. Schloss Dagstuhl - Leibniz-Zentrum f\u00fcr Informatik (2018). \nhttps:\/\/doi.org\/10.4230\/LIPIcs.ECOOP.2018.14","DOI":"10.4230\/LIPIcs.ECOOP.2018.14"},{"key":"15_CR28","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"238","DOI":"10.1007\/978-3-319-02654-1_13","volume-title":"Software Language Engineering","author":"DJ Pearce","year":"2013","unstructured":"Pearce, D.J., Groves, L.: Whiley: a platform for research in software verification. In: Erwig, M., Paige, R.F., Van Wyk, E. (eds.) SLE 2013. LNCS, vol. 8225, pp. 238\u2013248. Springer, Cham (2013). \nhttps:\/\/doi.org\/10.1007\/978-3-319-02654-1_13"},{"key":"15_CR29","doi-asserted-by":"publisher","unstructured":"Pierce, B.C., Turner, D.N.: Local type inference. In: POPL 1998, Proceedings of the 25th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, San Diego, CA, USA, 19\u201321 January 1998, pp. 252\u2013265. ACM (1998). \nhttps:\/\/doi.org\/10.1145\/268946.268967","DOI":"10.1145\/268946.268967"},{"key":"15_CR30","volume-title":"RESTful Web Services - Web Services for the Real World","author":"L Richardson","year":"2007","unstructured":"Richardson, L., Ruby, S.: RESTful Web Services - Web Services for the Real World. O\u2019Reilly, Sebastopol (2007)"},{"key":"15_CR31","doi-asserted-by":"publisher","unstructured":"Sun, K., Ryu, S.: Analysis of JavaScript programs: challenges and research trends. ACM Comput. Surv. 50(4), 59:1\u201359:34 (2017). \nhttps:\/\/doi.org\/10.1145\/3106741","DOI":"10.1145\/3106741"},{"key":"15_CR32","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"408","DOI":"10.1007\/978-3-540-31987-0_28","volume-title":"Programming Languages and Systems","author":"P Thiemann","year":"2005","unstructured":"Thiemann, P.: Towards a type system for analyzing JavaScript programs. In: Sagiv, M. (ed.) ESOP 2005. LNCS, vol. 3444, pp. 408\u2013422. Springer, Heidelberg (2005). \nhttps:\/\/doi.org\/10.1007\/978-3-540-31987-0_28"},{"key":"15_CR33","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"69","DOI":"10.1007\/978-3-319-66845-1_5","volume-title":"Integrated Formal Methods","author":"M Utting","year":"2017","unstructured":"Utting, M., Pearce, D.J., Groves, L.: Making Whiley boogie!. In: Polikarpova, N., Schneider, S. (eds.) IFM 2017. LNCS, vol. 10510, pp. 69\u201384. Springer, Cham (2017). \nhttps:\/\/doi.org\/10.1007\/978-3-319-66845-1_5"},{"key":"15_CR34","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"428","DOI":"10.1007\/978-3-030-21485-2_23","volume-title":"Models, Languages, and Tools for Concurrent and Distributed Programming","author":"VT Vasconcelos","year":"2019","unstructured":"Vasconcelos, V.T., Martins, F., Lopes, A., Burnay, N.: HeadREST: a specification language for RESTful APIs. In: Boreale, M., Corradini, F., Loreti, M., Pugliese, R. (eds.) Models, Languages, and Tools for Concurrent and Distributed Programming. LNCS, vol. 11665, pp. 428\u2013434. Springer, Cham (2019). \nhttps:\/\/doi.org\/10.1007\/978-3-030-21485-2_23"},{"key":"15_CR35","doi-asserted-by":"publisher","unstructured":"Vekris, P., Cosman, B., Jhala, R.: Refinement types for TypeScript. In: Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI, pp. 310\u2013325. ACM (2016). \nhttps:\/\/doi.org\/10.1145\/2908080.2908110","DOI":"10.1145\/2908080.2908110"},{"key":"15_CR36","doi-asserted-by":"publisher","unstructured":"Waye, L., Chong, S., Dimoulas, C.: Whip: higher-order contracts for modern services. PACMPL 1(ICFP), 36:1\u201336:28 (2017). \nhttps:\/\/doi.org\/10.1145\/3110280","DOI":"10.1145\/3110280"},{"key":"15_CR37","doi-asserted-by":"publisher","unstructured":"Wittern, E., Ying, A.T.T., Zheng, Y., Dolby, J., Laredo, J.A.: Statically checking web API requests in JavaScript. In: Proceedings of the 39th International Conference on Software Engineering, ICSE, pp. 244\u2013254. IEEE\/ACM (2017). \nhttps:\/\/doi.org\/10.1109\/ICSE.2017.30","DOI":"10.1109\/ICSE.2017.30"},{"key":"15_CR38","doi-asserted-by":"publisher","unstructured":"Wittern, E., et al.: Opportunities in software engineering research for web API consumption. In: 1st IEEE\/ACM International Workshop on API Usage and Evolution, WAPI@ICSE, pp. 7\u201310. IEEE Computer Society (2017). \nhttps:\/\/doi.org\/10.1109\/WAPI.2017.1","DOI":"10.1109\/WAPI.2017.1"}],"container-title":["Lecture Notes in Computer Science","Software Engineering and Formal Methods"],"original-title":[],"language":"en","link":[{"URL":"http:\/\/link.springer.com\/content\/pdf\/10.1007\/978-3-030-58768-0_15","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2020,9,11]],"date-time":"2020-09-11T12:04:41Z","timestamp":1599825881000},"score":1,"resource":{"primary":{"URL":"http:\/\/link.springer.com\/10.1007\/978-3-030-58768-0_15"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2020]]},"ISBN":["9783030587673","9783030587680"],"references-count":38,"URL":"https:\/\/doi.org\/10.1007\/978-3-030-58768-0_15","relation":{},"ISSN":["0302-9743","1611-3349"],"issn-type":[{"type":"print","value":"0302-9743"},{"type":"electronic","value":"1611-3349"}],"subject":[],"published":{"date-parts":[[2020]]},"assertion":[{"value":"8 September 2020","order":1,"name":"first_online","label":"First Online","group":{"name":"ChapterHistory","label":"Chapter History"}},{"value":"SEFM","order":1,"name":"conference_acronym","label":"Conference Acronym","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"International Conference on Software Engineering and Formal Methods","order":2,"name":"conference_name","label":"Conference Name","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"Amsterdam","order":3,"name":"conference_city","label":"Conference City","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"The Netherlands","order":4,"name":"conference_country","label":"Conference Country","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"2020","order":5,"name":"conference_year","label":"Conference Year","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"14 September 2020","order":7,"name":"conference_start_date","label":"Conference Start Date","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"18 September 2020","order":8,"name":"conference_end_date","label":"Conference End Date","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"18","order":9,"name":"conference_number","label":"Conference Number","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"sefm2020","order":10,"name":"conference_id","label":"Conference ID","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"https:\/\/event.cwi.nl\/sefm2020\/","order":11,"name":"conference_url","label":"Conference URL","group":{"name":"ConferenceInfo","label":"Conference Information"}}]}}