This page provides an overview
of the architecture of the Google Ad Manager API and describes general concepts and terms in Ad Manager.

## API Architecture

Here is a simplified diagram of the main classes in the Ad Manager API, and how they relate to each other:

![Main objects in the Ad Manager architecture.](https://developers.google.com/static/ad-manager/images/DFP_objects.png)

## Order

:   An `https://developers.google.com/ad-manager/api/reference/latest/OrderService.Order` object holds general information about the order such as the currency or salesperson, and contains one or more `LineItem` instances. In code, each `LineItem` holds the ID of its containing `Order`, rather than the `Order` holding a list of `LineItem` objects.

## LineItem

:   A `https://developers.google.com/ad-manager/api/reference/latest/LineItemService.LineItem` object describes a set of requirements for an ad to show, including how
    and when the ads should be shown, the sizes of the creatives it should show and
    the order in which to show them (in order, weighted, or according to their performance),
    the priority of these ads, and many properties describing the cost structure. A
    `LineItem` has one `InventoryTargeting` object that describes which `AdUnit` and `Placement` objects it can target, and optional additional `Targeting` subclass objects that represent geographical, custom, or other criteria.

## LineItemCreativeAssociation

:   A `https://developers.google.com/ad-manager/api/reference/latest/LineItemCreativeAssociationService.LineItemCreativeAssociation` (often called a LICA) links one `LineItem` to
    one `Creative`. Line items can be linked to more than one creative, and depending on your account type, you might be able to link a creative to more than one line item. When you create a `LineItemCreativeAssociation`,
    Ad Manager first checks whether both the creative and the line item are compatible;
    if the sizes differ, for instance, you'll get an error when you try to create
    or update the association. This object also lets you override some values in the associated `LineItem`,
    such as start/end dates, or size (if you have a creative that doesn't
    quite fit the size specified by the line item, but you are willing to let Ad Manager
    adjust the size of the creative to fit the ad unit on the fly). LICAs are not exposed in the Ad Manager user interface; they are an API convention.

## Creative

:   A `https://developers.google.com/ad-manager/api/reference/latest/CreativeService.Creative` represents the actual ad. If the ad is hosted by Ad Manager,
    this object holds the actual image bytes, flash files, or custom HTML tags stored
    on Ad Manager's servers; if the creative is hosted on a
    third-party site, the creative is a URL or HTML snippet that makes the
    request from the third-party server.

## InventoryTargeting and Targeting subclasses

:   The `https://developers.google.com/ad-manager/api/reference/latest/LineItemService.InventoryTargeting` object lists which ad units are associated with a specific `LineItem`. You can specify additional, optional targeting criteria using additional instances of an appropriate subclass of [`Targeting`](https://developers.google.com/ad-manager/api/reference/latest/LineItemService.Targeting).

## Placement

:   A `https://developers.google.com/ad-manager/api/reference/latest/PlacementService.Placement` object is a collection of one or more `AdUnit` objects.

## AdUnit

:   An `https://developers.google.com/ad-manager/api/reference/latest/InventoryService.AdUnit` represents an ad location on one or more pages. An `AdUnit` can be a target of either a `LineItem`'s `InventoryTargeting` object or a `Placement` object. An `AdUnit` object includes a size, an ID, and a unique name. The ID is used to identify other `AdUnit` objects within the API; the name is used as a unique identifier in the HTML tags to identify a specific `AdUnit` object, and is sent back to Ad Manager as part of the page request.