# idp-template.yaml — da posizionare nella root di ogni repo Gitea # di tipo "template". Questo è l'esempio compilato per un template # "REST API sincrona Java/Spring Boot". id: tpl-java-springboot-rest-api name: "Java Spring Boot — REST API sincrona" version: "2.1.0" status: active # active | beta | deprecated last_updated: "2026-09-01" maintainer: "platform-engineering@pigreco66.it" repo_url: "https://gitea.pigreco66.it/idp-templates/java-springboot-rest-api" # --- Classificazione, usata dall'agente per il primo filtro --- category: api-service workload_type: - sync-api - rest tech_stack: language: Java 21 framework: Spring Boot 3.3 build_tool: Maven tags: ["java", "spring-boot", "rest", "sync", "stateless"] description: > Template per esporre una REST API sincrona stateless. Include healthcheck, metrics endpoint Prometheus-ready, struttura a layer controller/service/repository, logging strutturato JSON. # --- Cosa contiene esattamente la struttura del repo --- components_included: kubernetes: - Deployment (con probe readiness/liveness preconfigurate) - Service (ClusterIP) - HorizontalPodAutoscaler - NetworkPolicy (default-deny + regole minime) containers: - Dockerfile multi-stage (build + runtime minimale distroless) src: - hello-world Spring Boot funzionante, con un endpoint /health e un endpoint di esempio /api/v1/ping env: - application-dev.properties - application-staging.properties - application-prod.properties # --- Integrazione con servizi cross della piattaforma --- # Fondamentale: dice all'agente COSA NON riproporre perché già # disponibile centralmente (evita duplicazione di servizi) cross_platform_services: - service: shared-postgres how: "via env PLATFORM_DB_CONNECTION_STRING, iniettata dalla pipeline" - service: shared-redis-cache how: "opzionale, abilitabile via env ENABLE_CACHE=true" - service: centralized-logging how: "automatico, nessuna configurazione richiesta" # --- Vincoli di compliance soddisfatti dal template --- compliance: data_classification_supported: ["public", "internal", "confidential"] # NON supporta dati PII senza customizzazioni aggiuntive pii_ready: false network_policy_baseline: "default-deny" security_scanning: "incluso in pipeline (SAST + container scan)" scaling: default_replicas: 2 autoscaling: hpa min_replicas: 2 max_replicas: 10 # --- Parametri personalizzabili (quelli nei file in env/) --- parameters: - name: PLATFORM_DB_CONNECTION_STRING required: false description: "Richiesta solo se il servizio necessita persistenza" - name: ENABLE_CACHE required: false default: "false" # --- Quando NON usare questo template (altrettanto utile del 'quando sì') --- not_suitable_for: - "Workload asincroni basati su eventi (usa tpl-java-kafka-consumer)" - "Batch job schedulati (usa tpl-batch-job)" - "Dati classificati come PII senza data masking aggiuntivo"