# Content types

Content types allow you to provide custom schemas and content to your services.

Out-of-the-box, `guillotina` ships with simple `Container`, `Folder` and `Item` content types.
The `Container` content type is the main content type to hold your data in. It is
the starting point for applications and other things to operate within.

The `Folder` type allows someone to add items inside of it. Both types only have
simple Dublin Core fields by default.


## Defining content types

A content type consists of a class and optionally, a schema to define the custom
fields you want your class to use.

A simple type will look like this::

```python
from guillotina import configure
from guillotina.content import Folder
from guillotina.interfaces import IItem
from guillotina import schema

class IMySchema(IItem):
    foo = schema.Text()

@configure.contenttype(
    type_name="MyType",
    schema=IMySchema,
    behaviors=["guillotina.behaviors.dublincore.IDublinCore"])
class MyType(Folder):
    pass
```

This example creates a schema and assigns it to the `MyType` content
type.


```eval_rst
.. include:: ./_scanning.rst
```
