# Présentation des ressources
L'API permet la récupération, modification, et création de ressources.
Ces ressources représentent des établissements, des utilisateurs, des publications, etc.
Chaque ressource renvoyée par l'API est sérializée, en JSON ou GeoJSON (JSON par défaut) et présente un champ entity_type, unique pour ce type de ressource.
# Principales ressources
# Professional (entity_type)
Un Professional représente un établissement. Il est lié à d'autres ressources, telles d'une Address, un Planning, des Category...
# Amenity (entity_type)
Un Amenity, ou aménagement, représente une spécificité d'un établissement (Professional).
Par exemple, l'accessibilité, ou la présence d'un parking, ou la vente à emporter...
# Category (entity_type)
Une Category représente une catégorie d'établissement. (Restaurant, Bar, Mairie, ...).
Elle peut avoir une catégorie parente, ainsi que des catégories filles.
De la même manière, les CouponCategory, JobOfferCategory, DailySpecialCategory et EventCategory représentent les catégories des publications de chacun des types associés.
# Post
Un Post est une publication. Y est associé un titre, une image, ...
Il existe plusieurs types de publications, reconnaissables grâce à leur entity_type :
NewsEventDailySpecial(plat du jour)JobOfferCoupon
Chacun de ces types de publication ont des attributs spécifiques : salaire pour un JobOffer, date de début et de fin pour un Event, etc.
Les attributs de Post :
- entityType (string) : Type d’entité (toujours "Post" par défaut).
- id (int) : Identifiant unique du post.
- title (string|null) : Titre du post.
- description (string|null) : Description du post.
- url (string|null) : URL externe associée au post.
- urlTitle (string|null) : Titre de l’URL associée.
- image (Image|null) : Image associée au post.
- professional (Professional|null) : Professionnel lié au post.
- createdAt (DateTime) : Date de création du post.
- updatedAt (DateTime) : Date de dernière modification du post.
- publicationDate (DateTime) : Date de publication du post.
- comments (ArrayCollection|Comment[]) : Liste des commentaires liés au post.
- likes (ArrayCollection|Like[]) : Liste des likes liés au post.
- allowComments (bool|null) : Indique si les commentaires sont autorisés pour ce post.
# News
Un News est un type particulier de publication (Post) représentant une actualité.
# Event
Un Event est un type particulier de publication (Post) représentant un événement (concert, exposition, atelier, etc.).
Il possède les attributs spécifiques suivants :
- dateStart : date et heure de début de l'événement (obligatoire).
- dateEnd : date et heure de fin de l'événement (obligatoire).
- category : catégorie de l'événement (
EventCategory, obligatoire). - address : adresse publique de l'événement (optionnelle).
- internalAddress : adresse interne, différente de l'adresse publique si besoin (optionnelle).
- price : prix de l'événement (optionnel).
Contraintes :
- La date de début doit être antérieure à la date de fin.
- Une catégorie doit être renseignée.
Remarques :
- L'adresse retournée par défaut est l'
internalAddresssi elle existe, sinon l'address. - Un événement est toujours lié à un établissement (
Professional).
# DailySpecial
Représente une offre ou une spécialité du jour.
Attributs de l'objet Post, plus les propriétés suivantes :
- category (DailySpecialCategory) : Catégorie spécifique.
- availabilityDate (DateTime) : Date de disponibilité.
- recurrenceWeekly (Boolean): Récurrence hebdomadaire.
- price (float, optionnel) : Prix de l’offre (si applicable).
# JobOffer
Représente une offre d'emploi.
Attributs de l'objet Post, plus les propriétés suivantes :
- category (JobOfferCategory) : Catégorie spécifique
- type (string) : Type de contrat CDI, CDD, etc.
- grossMonthlySalary (float|null) : Salaire mensuel
- dateStart (DateTime) : Début de l'annonce
- dateEnd (DateTime) : Fin de l'annonce
- weeklyHours (Integer|null) : Nombre d'heure par semaine
- applications (ArrayCollection) : Liste des réponses
# Coupon
Représente une offre commercial, un bon plan.
Attributs de l'objet Post, plus les propriétés suivantes :
- category (CouponCategory) : Categorie spécifique
- price (Float) : Valeur de la remise
- type (string) : Type de remise en € ou en %.
- code (string) : Code de réduction.
- dateStart (DateTime) : Date de début de l'offre.
- dateEnd (DateTime) : Date de fin de l'offre.
# Comment & Like (entity_type)
Chaque Post peut être commenté (Comment) et aimé (Like) par les utilisateurs.
Chaque commentaire peut lui-même être aimé ou commenté.