# TP27 partie 2 : modèle de catalog-info.yaml pour l'API du TP8 (à placer à la racine de son dépôt).
apiVersion: backstage.io/v1alpha1
kind: System
metadata:
  name: shop
  description: Boutique de démonstration
spec:
  owner: team-shop
---
apiVersion: backstage.io/v1alpha1
kind: Component
metadata:
  name: contact-api
  description: API Express du formulaire de contact (TP8)
  annotations:
    github.com/project-slug: TODO-utilisateur/contact-api
    backstage.io/techdocs-ref: dir:.
  tags: [nodejs, express]
  links:
    - url: https://github.com/TODO-utilisateur/contact-api/actions
      title: Pipeline CI
spec:
  type: service
  lifecycle: experimental
  owner: team-shop
  system: shop
  providesApis: [contact-api]
  # TODO : déclarer la dépendance à une ressource "contact-db" (dependsOn: [resource:contact-db])
---
apiVersion: backstage.io/v1alpha1
kind: API
metadata:
  name: contact-api
  description: API REST du formulaire de contact
spec:
  type: openapi
  lifecycle: experimental
  owner: team-shop
  system: shop
  definition: |
    openapi: 3.0.3
    info: { title: contact-api, version: 1.0.0 }
    paths:
      /api/health:
        get:
          responses: { "200": { description: OK } }
      /api/contact:
        post:
          requestBody:
            content:
              application/json:
                schema:
                  type: object
                  required: [name, email, message]
                  properties:
                    name: { type: string, minLength: 2 }
                    email: { type: string, format: email }
                    message: { type: string, minLength: 10 }
          responses:
            "201": { description: Message enregistré }
            "400": { description: Données invalides }
# TODO : ajouter une entité Resource "contact-db" (type: database, owner: team-shop, system: shop)
