# Content Types and Hierarchy

The `udala.tablon` package provides three custom Dexterity content types to structure the Electronic Notice Board in Plone. This architecture is strict to ensure valid data models are presented to citizens and APIs.

## 1. Tablon (Notice Board)
- **Role:** The container/folder that acts as the root of the Notice Board.
- **Hierarchy Rules:** `Tablon` allows *only* `DocumentoTablon` objects to be added as children.
- **Visibility:** Typically placed at the root of the site (for example, `/tablon`).

## 2. DocumentoTablon (Announcement Document)
- **Role:** Represents a single administrative announcement or publication.
- **Hierarchy Rules:** 
  - Cannot be added globally. Must be created inside a `Tablon`.
  - Allows *only* `AcreditedFile` objects to be added as children.
- **Fields:**
  - `origin`: A mandatory `Choice` field restricted to `"internal"` or `"external"`. It defines whether the document was generated by the organization itself or by an external body (like a higher-level government).
  - `origin_department` / `origin_details`
  - `publication_url`: Optional link to the original publication source (like an Official Gazette).

## 3. AcreditedFile (Accredited File)
- **Role:** An uploaded binary file (for example, PDF) that requires an external digital certificate or timestamping for legal verification.
- **Hierarchy Rules:** Cannot be added globally. Must be created inside a `DocumentoTablon`.
- **Fields:**
  - `file`: The `NamedBlobFile` containing the actual binary data.
  - `url`: A backend-managed URL linking to the generated external accreditation certificate.
