  When designing a new API for a large project, developers need to make smart
design choices so that their code base can grow sustainably. To ensure that new
API components are well designed, developers can learn from existing API
components. However, the lack of standardized methods for comparing API designs
makes this learning process time-consuming and difficult. To address this gap
we developed API-Miner, to the best of our knowledge, one of the first
API-to-API specification recommendation engines. API-Miner retrieves relevant
specification components written in OpenAPI (a widely adopted language used to
describe web APIs). API-miner presents several significant contributions,
including: (1) novel methods of processing and extracting key information from
OpenAPI specifications, (2) innovative feature extraction techniques that are
optimized for the highly technical API specification domain, and (3) a novel
log-linear probabilistic model that combines multiple signals to retrieve
relevant and high quality OpenAPI specification components given a query
specification. We evaluate API-Miner in both quantitative and qualitative tasks
and achieve an overall of 91.7% recall@1 and 56.2% F1, which surpasses baseline
performance by 15.4% in recall@1 and 3.2% in F1. Overall, API-Miner will allow
developers to retrieve relevant OpenAPI specification components from a public
or internal database in the early stages of the API development cycle, so that
they can learn from existing established examples and potentially identify
redundancies in their work. It provides the guidance developers need to
accelerate development process and contribute thoughtfully designed APIs that
promote code maintainability and quality. Code is available on GitHub at
https://github.com/jpmorganchase/api-miner.
