//////////////////////
 * 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 Polygene™ 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::objects.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::serialization.txt[]

:leveloffset: {level3}

// include::indexing.txt[]

:leveloffset: {level3}

// include::query.txt[]

:leveloffset: {level3}

include::type-lookup.txt[]

:leveloffset: {level3}

include::metrics.txt[]
