Conference paper Open Access

From OpenAPI Fragments to API Pattern Primitives and Design Smells

Serbout, Souhaila; Pautasso, Cesare; Zdun, Uwe; Zimmermann, Olaf


JSON Export

{
  "files": [
    {
      "links": {
        "self": "https://zenodo.org/api/files/10c4cd23-7d94-47e7-9730-340aa97f93bb/main.pdf"
      }, 
      "checksum": "md5:15df08091f1decf9cb0a89cab434ca93", 
      "bucket": "10c4cd23-7d94-47e7-9730-340aa97f93bb", 
      "key": "main.pdf", 
      "type": "pdf", 
      "size": 3435165
    }
  ], 
  "owners": [
    38987
  ], 
  "doi": "10.1145/3489449.3489998", 
  "stats": {
    "version_unique_downloads": 89.0, 
    "unique_views": 65.0, 
    "views": 70.0, 
    "version_views": 70.0, 
    "unique_downloads": 89.0, 
    "version_unique_views": 65.0, 
    "volume": 322905510.0, 
    "version_downloads": 94.0, 
    "downloads": 94.0, 
    "version_volume": 322905510.0
  }, 
  "links": {
    "doi": "https://doi.org/10.1145/3489449.3489998", 
    "latest_html": "https://zenodo.org/record/5727094", 
    "bucket": "https://zenodo.org/api/files/10c4cd23-7d94-47e7-9730-340aa97f93bb", 
    "badge": "https://zenodo.org/badge/doi/10.1145/3489449.3489998.svg", 
    "html": "https://zenodo.org/record/5727094", 
    "latest": "https://zenodo.org/api/records/5727094"
  }, 
  "created": "2021-11-25T11:59:26.117251+00:00", 
  "updated": "2021-11-26T01:48:46.794801+00:00", 
  "conceptrecid": "5727093", 
  "revision": 2, 
  "id": 5727094, 
  "metadata": {
    "access_right_category": "success", 
    "doi": "10.1145/3489449.3489998", 
    "description": "<p>In the past few years, the OpenAPI Specification (OAS) has emerged<br>\nas a standard description language for accurately modeling Web<br>\nAPIs. Today, thousands of OpenAPI descriptions can be found by<br>\nmining open source repositories. In this paper, we attempt to exploit<br>\nthese artifacts to extract commonly occurring building blocks used<br>\ninWeb API structures, in order to assistWeb API designers in their<br>\nmodelling task. Our work is based on a fragmentation mechanism,<br>\nthat starts from OpenAPI descriptions ofWeb APIs to extract their<br>\nstructures, then fragment these structures into smaller blocks. This<br>\napproach enabled us to extract a large dataset of reoccurring fragments<br>\nfrom a collection of 6619 API specifications. Such fragments<br>\nhave been found multiple times in the same or across different APIs.<br>\nWe have classified the most reoccurring fragments into four pattern<br>\nprimitives used to expose in the API access to collections of items.<br>\nWe distinguish for each primitive variants from design smells. This<br>\nclassification is based on the specific combinations of operations<br>\nassociated with the collection items and on an in-depth analysis of<br>\ntheir natural language labels and descriptions. The resulting pattern<br>\nprimitives are intended to support designers who would like to introduce<br>\none or more collections for a specific class of items in their<br>\nHTTP-based API.</p>", 
    "language": "eng", 
    "title": "From OpenAPI Fragments to API Pattern Primitives and Design Smells", 
    "license": {
      "id": "CC-BY-4.0"
    }, 
    "relations": {
      "version": [
        {
          "count": 1, 
          "index": 0, 
          "parent": {
            "pid_type": "recid", 
            "pid_value": "5727093"
          }, 
          "is_last": true, 
          "last_child": {
            "pid_type": "recid", 
            "pid_value": "5727094"
          }
        }
      ]
    }, 
    "grants": [
      {
        "code": "200021L_184692", 
        "links": {
          "self": "https://zenodo.org/api/grants/10.13039/501100001711::200021L_184692"
        }, 
        "title": "API-ACE: Analytics-based Continuous Design and Evolution of Microservice APIs", 
        "acronym": "", 
        "program": "Project funding - Project funding (Div. I-III)", 
        "funder": {
          "doi": "10.13039/501100001711", 
          "acronyms": [], 
          "name": "Schweizerischer Nationalfonds zur F\u00f6rderung der Wissenschaftlichen Forschung", 
          "links": {
            "self": "https://zenodo.org/api/funders/10.13039/501100001711"
          }
        }
      }, 
      {
        "code": "I 4268", 
        "links": {
          "self": "https://zenodo.org/api/grants/10.13039/501100002428::I 4268"
        }, 
        "title": "Analytics-centric Continuous Design of Microservice APIs", 
        "acronym": "", 
        "program": "Internationale Projekte", 
        "funder": {
          "doi": "10.13039/501100002428", 
          "acronyms": [], 
          "name": "Austrian Science Fund", 
          "links": {
            "self": "https://zenodo.org/api/funders/10.13039/501100002428"
          }
        }
      }
    ], 
    "keywords": [
      "Application Programming Interfaces", 
      "API Patterns", 
      "API Design Smells", 
      "API Structural Fragments", 
      "Pattern Minning", 
      "OpenAPI"
    ], 
    "publication_date": "2021-11-25", 
    "creators": [
      {
        "affiliation": "Software Institute, USI", 
        "name": "Serbout, Souhaila"
      }, 
      {
        "affiliation": "Software Institute, USI", 
        "name": "Pautasso, Cesare"
      }, 
      {
        "orcid": "0000-0002-6233-2591", 
        "affiliation": "University of Vienna", 
        "name": "Zdun, Uwe"
      }, 
      {
        "affiliation": "University of Applied Sciences of Eastern Switzerland", 
        "name": "Zimmermann, Olaf"
      }
    ], 
    "access_right": "open", 
    "resource_type": {
      "subtype": "conferencepaper", 
      "type": "publication", 
      "title": "Conference paper"
    }
  }
}
70
94
views
downloads
Views 70
Downloads 94
Data volume 322.9 MB
Unique views 65
Unique downloads 89

Share

Cite as