Get public list of enabled countries
GET/company/country/
Renvoie une liste paginée des pays activés dans le système. Ce point de terminaison fournit les pays disponibles pour utilisation dans les formulaires, filtres et sélections géographiques.
Objectif
Fournir aux applications frontend et aux intégrations externes une liste actualisée des pays pris en charge par la plateforme pour l'enregistrement d'entreprises, la création d'adresses et les opérations logistiques.
Cas d'utilisation
- Remplir les sélecteurs de pays dans les formulaires d'inscription
- Afficher les régions de service disponibles aux utilisateurs
- Filtrer les enchères ou livraisons par zone géographique
- Valider les codes de pays fournis par les utilisateurs
Authentification
Il s'agit d'un point de terminaison PUBLIC. Aucune authentification n'est requise.
Notes importantes
- Ne renvoie que les pays avec
enabled: true - Les pays avec
deleted: trueouenabled: falsesont exclus - Les champs
_id,deleted,enabled,createdAt,updatedAt,__vsont filtrés de la réponse - Seul le champ
codeest garanti dans tous les enregistrements - Les champs optionnels
nameetisopeuvent être présents pour certains pays - Pagination implémentée avec mongoose-paginate-v2
- La taille de page par défaut provient de
process.env.ITEMS_PAGE(normalement 25)
Exemple de requête :
# Obtenir la première page avec la limite par défaut (25)
GET /company/country/
# Obtenir la deuxième page avec 10 résultats
GET /company/country/?page=2&limit=10
# Obtenir tous les pays disponibles (s'ils sont moins de 50)
GET /company/country/?limit=50
Exemple de réponse :
\{
status: 200,
data: \{
docs: [
\{code: es\},
\{code: pt\},
\{code: fr\},
\{code: de, name: Allemagne, iso:
<Heading
id={"request"}
as={"h2"}
className={"openapi-tabs__heading"}
children={"Request"}
>
</Heading>
<ParamsDetails
parameters={[{"name":"page","in":"query","description":"Numéro de page à récupérer (indexé à partir de 1).\n\n- Valeur minimale : 1\n- Par défaut : 1\n- Les valeurs invalides (< 1, NaN) peuvent être gérées par mongoose-paginate","required":false,"schema":{"type":"integer","minimum":1,"default":1,"example":1}},{"name":"limit","in":"query","description":"Nombre maximum de résultats par page.\n\n- Minimum : 1\n- Par défaut : 25 (depuis process.env.ITEMS_PAGE)\n- Remarque : Actuellement, le backend n'applique pas de limite maximale","required":false,"schema":{"type":"integer","minimum":1,"default":25,"example":10}}]}
>
</ParamsDetails>
<RequestSchema
title={"Body"}
body={undefined}
>
</RequestSchema>
<StatusCodes
id={undefined}
label={undefined}
responses={{"200":{"description":"Opération réussie. Retourne la liste paginée des pays activés.\n\nLa réponse inclut les métadonnées complètes de pagination de mongoose-paginate-v2.","content":{"application/json":{"schema":{"type":"object","required":["status","data"],"properties":{"status":{"type":"integer","description":"Code de statut HTTP","example":200},"data":{"type":"object","required":["docs","totalDocs","limit","page","totalPages","pagingCounter","hasPrevPage","hasNextPage","prevPage","nextPage"],"description":"Données de pagination générées par le plugin mongoose-paginate-v2.\n\nCet objet contient les résultats paginés et les métadonnées concernant\nl'état de la pagination.","properties":{"docs":{"type":"array","description":"Tableau des documents de pays pour la page actuelle","items":{"type":"object","required":["code"],"properties":{"code":{"type":"string","minLength":2,"maxLength":2,"pattern":"^[a-z]{2}$","description":"Code pays ISO à 2 lettres (minuscules).\nC'est le seul champ garanti dans les réponses publiques.","example":"es"},"name":{"type":"string","description":"Nom du pays en anglais.\n**FACULTATIF** : Tous les pays ne disposent pas de ce champ.","example":"Spain"},"iso":{"type":"string","minLength":3,"maxLength":3,"pattern":"^[A-Z]{3}$","description":"Code de pays à 3 lettres ISO (ISO 3166-1 alpha-3).\n**FACULTATIF** : Ce champ n'est pas défini pour tous les pays.","example":"ESP"}},"description":"Version publique du modèle Country retournée par GET /company/country/.\n\nCe schéma inclut uniquement les champs visibles dans le point de terminaison public.\nLes champs internes (`_id`, `deleted`, `enabled`, `createdAt`, `updatedAt`, `__v`)\nsont filtrés par le contrôleur en utilisant select :\n`-_id -deleted -enabled -createdAt -updatedAt -__v`\n\n**Important** : Seul `code` est garanti d'être présent.\nLes champs `name` et `iso` sont optionnels et peuvent ne pas exister dans tous les enregistrements.","example":{"code":"es","name":"Spain","iso":"ESP"},"title":"CountryPublic"}},"totalDocs":{"type":"integer","description":"Nombre total de documents correspondant au filtre","minimum":0,"example":22},"limit":{"type":"integer","description":"Nombre maximum de résultats par page","minimum":1,"example":25},"page":{"type":"integer","description":"Numéro de page actuel (indexé à partir de 1)","minimum":1,"example":1},"totalPages":{"type":"integer","description":"Nombre total de pages disponibles","minimum":1,"example":1},"pagingCounter":{"type":"integer","description":"L'indice de départ du premier document dans la page actuelle.\nUtile pour afficher Affichage de X à Y sur Z résultats.","minimum":1,"example":1},"hasPrevPage":{"type":"boolean","description":"Indique si une page précédente existe","example":false},"hasNextPage":{"type":"boolean","description":"Indique si une page suivante existe","example":false},"prevPage":{"type":"integer","nullable":true,"description":"Numéro de page de la page précédente. \n`null` s'il n'y a pas de page précédente.","example":null},"nextPage":{"type":"integer","nullable":true,"description":"Numéro de page de la page suivante.\n`null` s'il n'y a pas de page suivante.","example":null}}}},"description":"Réponse paginée standard pour les endpoints de liste de pays.\n\nCette structure est utilisée par les endpoints publics et d'administration :\n- GET /company/country/ (public, uniquement les pays activés)\n- GET /company/country/all (admin, inclut les pays désactivés)\n\nLa réponse encapsule les données de pagination dans une enveloppe API standard :\n`{status: number, data: PaginationObject}`","example":{"status":200,"data":{"docs":[{"code":"es"},{"code":"pt"},{"code":"fr"},{"code":"de","name":"Germany","iso":"DEU"}],"totalDocs":22,"limit":25,"page":1,"totalPages":1,"pagingCounter":1,"hasPrevPage":false,"hasNextPage":false,"prevPage":null,"nextPage":null}},"title":"CountriesResponse"},"example":{"status":200,"data":{"docs":[{"code":"es"},{"code":"pt"},{"code":"fr"},{"code":"de","name":"Germany","iso":"DEU"},{"code":"it","name":"Italy","iso":"ITA"}],"totalDocs":22,"limit":25,"page":1,"totalPages":1,"pagingCounter":1,"hasPrevPage":false,"hasNextPage":false,"prevPage":null,"nextPage":null}}}},"headers":{}},"500":{"description":"Erreur interne du serveur","content":{"application/json":{"schema":{"type":"object","required":["status","message"],"properties":{"status":{"type":"integer","description":"Code de statut HTTP","minimum":400,"maximum":599,"example":400},"message":{"type":"string","description":"Code d'erreur du système.\n\nCodes d'erreur courants (voir listado_errores_http.txt pour la liste complète) :\n- NO_TOKEN (401) : Jeton JWT non fourni\n- TOKEN_NOT_VALID (401) : Le jeton JWT est invalide ou a expiré\n- NO_ADMIN_ROLE (401) : L'utilisateur ne dispose pas des privilèges d'administrateur\n- INVALID_PARAMETERS (400) : Les paramètres de la requête sont invalides\n- NOT_FOUND (404) : Ressource demandée introuvable\n- ALREADY_EXIST (401) : Une ressource avec le même identifiant existe déjà\n- UTC_VALIDATION_FAILED (400) : Échec de la validation de l'horodatage UTC\n- INTERNAL_ERROR (500) : Une erreur serveur inattendue s'est produite\n\nLe message est résolu par `handlerError.getErrorMessage(error)`.","example":"INVALID_PARAMETERS"}},"description":"Format de réponse d'erreur standard utilisé sur tous les points d'extrémité de l'API.\n\nToutes les erreurs suivent le modèle `{status: number, message: string}`.\nLe code de statut est répété à la fois dans la réponse HTTP et dans le corps.\n\nLes messages d'erreur sont des constantes définies dans la base de code et doivent être\ngérés côté client avec des messages appropriés destinés à l'utilisateur.","example":{"status":400,"message":"INVALID_PARAMETERS"},"title":"ErrorResponse"},"example":{"status":500,"message":"INTERNAL_ERROR"}}}}}}
>
</StatusCodes>