# Generic API topic types

The generic API topic types describe any application programming interface (API) library and can serve as a basis for deriving more specialized topic types for specific languages or other library environments.

#### Description

The general-purpose topic types layer can be specialized to provide language-specific or environment-specific topic types for an API reference. You should use the most specific set of topic types that match the language or environment for your library. For example, use the Java API topic type for Java language.

The API reference provides the following set of general purpose topic types for describing the interface provided by programmable libraries:

- apiRef module
  Provides the structure and elements for non language specific API reference topic types.
- apiPackage module
  Defines a top-level container for the general-purpose topic types for a library, package, header, module, namespace, class members, or other named grouping for the entities provided by the API.
- apiClassifier module
  Defines a top-level container for the generic topic types such as class, interface, typedef, or other named construct for typing values.
- apiOperation module
  Defines a top-level container for general-purpose topic types for a function, method, subroutine, procedure, event handler, or other named unit of executable code.
- apiValue module
  Defines a subordinate container to the <apiOperation> element for generic topic types such as constants, variables, enumerations, structures, or other named values.
- api-domain reference module
  Defines the elements referring to API items within API topics or other DITA topic types, such as concept or task.
- apiMap module
  Provides the relationships among a set of application programming interface (API) topic types, and can be used to create a Table of Contents (TOC), aggregate Java API topics into a PDF document, or to create links between topics in output.

Parent topic: DITA API specialization