Skip to main content
Educational services (ServiciosEducativos) represent the hands-on programs offered at Parque Marino del Pacífico Sur. These include environmental awareness workshops, guided marine tours, and other interactive experiences designed for children and young students. The structure mirrors the Exhibits resource: a core record plus nested images, facts, descriptions, and buttons. The frontend Servicios_Educativos component fetches this data from GET /api/servicios_educativos/ and renders it alongside ticket pricing information.
GET endpoints are publicly accessible without authentication. POST, PUT, and DELETE operations require an authenticated session with the IsAuthenticatedOrReadOnly permission policy (write operations require authentication; sub-resource writes additionally require IsAuthenticatedAndRole).

The ServiciosEducativos object

id
integer
Unique identifier for the educational service.
value
string
Internal machine-readable key (unique, max 255 characters). Used as a programmatic identifier.
label
string
Short display label (unique, max 255 characters). Shown in navigation tabs and cards.
title
string
Full title of the educational service (unique, max 255 characters). Rendered as a heading.
images
string[]
Array of absolute URLs to the service’s images. Files are stored under the servicios-educativos/ media path.
facts
string[]
Array of plain-text fact strings describing key highlights of the service.
descriptions
string[]
Array of paragraph-length description strings. Rendered as body copy in the service detail view.
buttons
object[]
Array of call-to-action button objects.

List educational services

GET /api/servicios_educativos/
Returns all educational services with nested images, facts, descriptions, and buttons. No authentication required. Example response
[
  {
    "id": 1,
    "value": "taller-contaminacion",
    "label": "Taller de Contaminación",
    "title": "Taller de Contaminación Marina",
    "images": [
      "https://api.example.com/media/servicios-educativos/contaminacion_01.jpg"
    ],
    "facts": [
      "Más de 8 millones de toneladas de plástico ingresan al océano cada año.",
      "El taller incluye actividades prácticas de limpieza simulada."
    ],
    "descriptions": [
      "Los participantes aprenden sobre el impacto del plástico en los ecosistemas marino-costeros a través de dinámicas grupales y experimentos visuales."
    ],
    "buttons": [
      { "label": "Reservar", "link": "/servicios-educativos/taller-contaminacion" }
    ]
  }
]

Create an educational service

Requires authentication.
POST /api/servicios_educativos/create/
value
string
required
Internal key. Must be unique and no longer than 255 characters.
label
string
required
Short display label. Must be unique and no longer than 255 characters.
title
string
required
Full service title. Must be unique and no longer than 255 characters.
Example request body
{
  "value": "visita-guiada",
  "label": "Visita Guiada",
  "title": "Visita Guiada al Parque Marino"
}
Example response201 Created
{
  "id": 2,
  "value": "visita-guiada",
  "label": "Visita Guiada",
  "title": "Visita Guiada al Parque Marino",
  "images": [],
  "facts": [],
  "descriptions": [],
  "buttons": []
}

Retrieve an educational service

GET /api/servicios_educativos/{id}/
id
integer
required
The numeric ID of the educational service.

Update an educational service

Requires authentication.
PUT /api/servicios_educativos/{id}/update/
id
integer
required
The numeric ID of the service to update.
value
string
Updated internal key.
label
string
Updated display label.
title
string
Updated title.

Delete an educational service

Requires authentication. Cascades to all associated images, facts, descriptions, and buttons.
DELETE /api/servicios_educativos/{id}/delete/
id
integer
required
The numeric ID of the service to delete.
Returns 204 No Content on success.

Sub-resources

Each educational service has four independently managed sub-resources. Sub-resource write operations (POST, PUT, DELETE) require IsAuthenticatedAndRole.

Images — ServiciosEducativosImage

MethodEndpointDescription
GET/api/servicios_educativos/imagenes/List all service images
POST/api/servicios_educativos/imagenes/create/Upload a new image (admin)
GET/api/servicios_educativos/imagenes/{id}/Retrieve a single image record
PUT/api/servicios_educativos/imagenes/{id}/update/Replace an image (admin)
DELETE/api/servicios_educativos/imagenes/{id}/delete/Remove an image (admin)
id
integer
Image record ID.
servicios_educativos
integer
Foreign key to the parent ServiciosEducativos.
image
string
Relative media path under servicios-educativos/.
created_at
datetime
ISO 8601 upload timestamp.
updated_at
datetime
ISO 8601 last-updated timestamp.

Facts — ServiciosEducativosFacts

MethodEndpointDescription
GET/api/servicios_educativos/facts/List all facts
POST/api/servicios_educativos/facts/create/Add a fact (admin)
GET/api/servicios_educativos/facts/{id}/Retrieve a single fact
PUT/api/servicios_educativos/facts/{id}/update/Update a fact (admin)
DELETE/api/servicios_educativos/facts/{id}/delete/Remove a fact (admin)
id
integer
Fact record ID.
servicios_educativos
integer
Foreign key to the parent ServiciosEducativos.
fact
string
Plain-text fact content.

Descriptions — ServiciosEducativosDescription

MethodEndpointDescription
GET/api/servicios_educativos/description/List all descriptions
POST/api/servicios_educativos/description/create/Add a description (admin)
GET/api/servicios_educativos/description/{id}/Retrieve a description
PUT/api/servicios_educativos/description/{id}/update/Update a description (admin)
DELETE/api/servicios_educativos/description/{id}/delete/Remove a description (admin)
id
integer
Description record ID.
servicios_educativos
integer
Foreign key to the parent ServiciosEducativos.
description
string
Paragraph-length description text.

Buttons — ServiciosEducativosButtons

MethodEndpointDescription
GET/api/servicios_educativos/buttons/List all buttons
POST/api/servicios_educativos/buttons/create/Add a button (admin)
GET/api/servicios_educativos/buttons/{id}/Retrieve a button
PUT/api/servicios_educativos/buttons/{id}/update/Update a button (admin)
DELETE/api/servicios_educativos/buttons/{id}/delete/Remove a button (admin)
id
integer
Button record ID.
servicios_educativos
integer
Foreign key to the parent ServiciosEducativos.
label
string
Button display text (unique, max 255 characters).
Target URL or internal route. Defaults to an empty string.

Build docs developers (and LLMs) love