//////////////////////
 * Copyright (c) 2007-2012, Niclas Hedhman. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * http://www.apache.org/licenses/LICENSE-2.0
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
 * either express or implied.
 * See the License for the specific language governing permissions
 * and limitations under the License.
//////////////////////

[[core-api, Core API]]
= Core API =

[devstatus]
--------------
source=core/api/dev-status.xml
--------------

The Zest™ Core API is the primary interface for client application code during the main execution phase, i.e. after the
application has been activated.

include::../../build/docs/buildinfo/artifact.txt[]

:leveloffset: {level3}

include::composition.txt[]

:leveloffset: {level3}

include::structure.txt[]

:leveloffset: {level3}

include::valuecomposite.txt[]

:leveloffset: {level3}

include::servicecomposite.txt[]

:leveloffset: {level3}

include::configuration.txt[]

:leveloffset: {level3}

include::entitycomposite.txt[]

:leveloffset: {level3}

include::unitofwork.txt[]

:leveloffset: {level3}

include::transientcomposite.txt[]

:leveloffset: {level3}

// include::dependency-injection.txt[]

:leveloffset: {level3}

// include::property.txt[]

:leveloffset: {level3}

// include::association.txt[]

:leveloffset: {level3}

include::mixin.txt[]

:leveloffset: {level3}

include::concern.txt[]

:leveloffset: {level3}

include::constraint.txt[]

:leveloffset: {level3}

include::sideeffect.txt[]

:leveloffset: {level3}

include::decoratormixin.txt[]

:leveloffset: {level3}

// include::indexing.txt[]

:leveloffset: {level3}

// include::query.txt[]

:leveloffset: {level3}

include::type-lookup.txt[]

:leveloffset: {level3}

include::metrics.txt[]
