Référence API
L’API de Coanda est organisée autour de REST. Notre API est predictible, a des URLs orientée ressource, accepte des corps de requêtes encodés en JSON, retourne des réponses encodées en JSON et utilise le standard HTTP pour les codes de retour et les méthodes.
Vous pouvez voir des exemples de code dans la zone sombre à droite.
Veuillez lire la partie sur l’authentification en premier SVP.
Authentification
Pour autoriser une requête, procédez comme suit:
# En shell, vous pouvez passer le bon header avec chaque requête
curl "api_endpoint_here"
-H "Authorization: Bearer myToken"
Remplacez
myTokenavec le token généré.
Coanda utilise des tokens JWT pour autoriser l’accès à son API.
Coanda s’attend à ce que le token JWT soit inclus dans toutes les requêtes API dans un header qui à la structure suivante:
Authorization: Bearer myToken
Générer un token d’autorisation
curl "https://aaaic-backend.ppd.rafa.3a-digital.fr/user-service/v1/token/acquire?username=myuser%40test.com&password=testpassword"
-H "accept: text/plain"
La commande ci-dessus retourne un token JWT en string brut dans le corps de la réponse:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.dyt0CoTl4WoVjAHI9Q_CwSKhl6d_9rhM3NrXuJttkao
Ce endpoint génère un token JWT à partir d’une combinaison de nom d’utilisateur et mot de passe.
Requête HTTP
GET /user-service/v1/token/acquire
Paramètres d’URL
| Paramètre | Description |
|---|---|
| username | Votre username/clientId. Doit être envoyé url_encoded. |
| password | Votre password/clientSecret. Doit être envoyé url_encoded. |
Module Simulateur
Le module simulateur expose plusieurs endpoints permettant de réaliser différents calculs sur un projet d’épargne. Les trois endpoints principaux sont chacun dédié à un type de gestion (libre, déléguée, à horizon)
Gestion Libre
curl \
--location 'https://aaaic-backend.ppd.rafa.3a-digital.fr/simulator-service/simulator/free_management' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <myToken>' \
--data '{
"simulation_start_date": "202008",
"simple_deposits": [
{
"amount": 5000,
"date": "202010"
}
],
"periodic_deposits": [
{
"amount": 197.2,
"start_date": "202008",
"end_date": "202507",
"frequency": "MONTHLY"
}
],
"portfolio_composition": [
{
"isin": "LU1883308352",
"currency": "GBP",
"percentage": 50,
},
{
"isin": "LU1681046931",
"currency": "EUR",
"percentage": 50,
},
],
"target_amount": 5000,
"horizon": 60,
"current_savings": 1000,
"simulator_uuid": "aaaic:simulators:243",
}'
La commande ci-dessus retourne un objet JSON structuré de cette façon:
{
"success_percentage": "float",
"graphs": {
"nb_scenarios": "int",
"scenarios_smooth": [
{
"name": "string",
"data": [
{
"x": "float",
"y": "float"
}
]
}
],
"synthesis": {
"savings": {
"x": "float",
"y": "float"
},
"median": {
"x": "float",
"y": "float"
},
"lower_area": {
"x": "float",
"high": "float",
"low": "float"
},
"mid_area": {
"x": "float",
"high": "float",
"low": "float"
},
"upper_area": {
"x": "float",
"high": "float",
"low": "float"
}
},
"success_percentage": "float",
"scenarios_perc_above_cumulative_savings": "float",
"id": "string",
"scenarios": [
{
"name": "savings",
"data": [
{
"x": "float",
"y": "float"
}
],
"lineWidth": "float",
"zIndex": "float"
}
]
},
"statistics": {
"mar_ratio": {
"quantile_25": "float",
"quantile_2.5": "float",
"quantile_50": "float",
"quantile_75": "float",
"quantile_97.5": "float"
},
"sharp_ratio": {
"quantile_25": "float",
"quantile_2.5": "float",
"quantile_50": "float",
"quantile_75": "float",
"quantile_97.5": "float"
},
"annualized_return": {
"quantile_25": "float",
"quantile_2.5": "float",
"quantile_50": "float",
"quantile_75": "float",
"quantile_97.5": "float"
},
"max_drawdown": {
"quantile_25": "float",
"quantile_2.5": "float",
"quantile_50": "float",
"quantile_75": "float",
"quantile_97.5": "float"
},
"annualized_volatility": {
"quantile_25": "float",
"quantile_2.5": "float",
"quantile_50": "float",
"quantile_75": "float",
"quantile_97.5": "float"
}
},
"scenarios_table": {
"capital_distribution_at_horizon": {
"max": "float",
"min": "float",
"in_between": {
"high": "float",
"low": "float"
}
},
"capital_gain_or_loss": {
"max": "float",
"min": "float",
"in_between": {
"high": "float",
"low": "float"
}
},
"absolute_return": {
"max": "float",
"min": "float",
"in_between": {
"high": "float",
"low": "float"
}
},
"cumulative_savings": "float",
"gross_cumulative_savings": "float"
},
"uc_allocation": [
{
"series": "string",
"percentage": "float"
}
]
}
Ce endpoint réalise une simulation pour un projet d’épargne en gestion libre.
Requête HTTP
POST /simulator-service/simulator/free_management
Corps de la requête
Le corps de la requête est un objet JSON représentant une demande de simulation.
L’objet SimulationRequest
| Paramètre | Obligatoire | Type | Description |
|---|---|---|---|
| simulator_uuid | true | string | Identifiant unique du simulateur. Fourni par AAA. |
| target_amount | false | number | La somme d’argent que l’on souhaite atteindre. |
| horizon | true | integer | La longueur du projet d’epargne (en mois). |
| current_savings | false | number | Le montant actuel de l’épargne. |
| start_date | true | string | Date de début de la simulation. Le format est YYYYMM. |
| simple_deposits | false | [SimpleCashFlow] | La liste des versements ponctuels anticipés. |
| periodic_deposits | false | [PeriodicCashFlow] | La liste des versements récurrents anticipés. |
| simple_withdrawals | false | [SimpleCashFlow] | La liste des rachats ponctuels anticipés. |
| periodic_withdrawals | false | [PeriodicCashFlow] | La liste des rachats récurrents anticipés. |
| portfolio_composition | true | [WeightedAsset] | La composition du portefeuille. |
The WeightedAsset object
| Parameter | Mandatory | Type | Description |
|---|---|---|---|
| isin | true | string | Le code ISIN du support. |
| currency | true | string | La devise du support, identifié par un trigrame (ex: “EUR”). |
| percentage | true | number | Le pourcentage investi dans cet support. |
L’objet SimpleCashFlow
| Paramètre | Obligatoire | Type | Description |
|---|---|---|---|
| amount | true | number | La somme déposée ou retirée. |
| date | true | string | La date du mouvement. Le format est YYYYMM. |
L’objet PeriodicCashFlow
| Paramètre | Obligatoire | Type | Description |
|---|---|---|---|
| amount | true | number | La somme déposée ou retirée. |
| start_date | true | string | La date de début du mouvement récurrent. Le format est YYYYMM. |
| end_date | true | string | La date de fin du mouvement récurrent. Le format est YYYYMM. |
| frequency | true | string | La fréquence de la récurrence. Les valeurs possibles sont: MONTHLY/QUARTERLY/YEARLY/SEMI_ANNUALLY |
Gestion Pilotée
curl \
--location 'https://aaaic-backend.ppd.rafa.3a-digital.fr/simulator-service/simulator/delegated_management' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <myToken>' \
--data '{
"simulation_start_date": "202008",
"simple_deposits": [
{
"amount": 5000,
"date": "202010"
}
],
"periodic_deposits": [
{
"amount": 197.2,
"start_date": "202008",
"end_date": "202507",
"frequency": "MONTHLY"
}
],
"target_amount": 5000,
"horizon": 60,
"current_savings": 1000,
"simulator_uuid": "aaaic:simulators:236",
"profile_idx": 2
}'
La commande ci-dessus retourne un objet JSON structuré de cette façon:
{
"success_percentage": "float",
"graphs": {
"nb_scenarios": "int",
"scenarios_smooth": [
{
"name": "string",
"data": [
{
"x": "float",
"y": "float"
}
]
}
],
"synthesis": {
"savings": {
"x": "float",
"y": "float"
},
"median": {
"x": "float",
"y": "float"
},
"lower_area": {
"x": "float",
"high": "float",
"low": "float"
},
"mid_area": {
"x": "float",
"high": "float",
"low": "float"
},
"upper_area": {
"x": "float",
"high": "float",
"low": "float"
}
},
"success_percentage": "float",
"scenarios_perc_above_cumulative_savings": "float",
"id": "string",
"scenarios": [
{
"name": "savings",
"data": [
{
"x": "float",
"y": "float"
}
],
"lineWidth": "float",
"zIndex": "float"
}
]
},
"statistics": {
"mar_ratio": {
"quantile_25": "float",
"quantile_2.5": "float",
"quantile_50": "float",
"quantile_75": "float",
"quantile_97.5": "float"
},
"sharp_ratio": {
"quantile_25": "float",
"quantile_2.5": "float",
"quantile_50": "float",
"quantile_75": "float",
"quantile_97.5": "float"
},
"annualized_return": {
"quantile_25": "float",
"quantile_2.5": "float",
"quantile_50": "float",
"quantile_75": "float",
"quantile_97.5": "float"
},
"max_drawdown": {
"quantile_25": "float",
"quantile_2.5": "float",
"quantile_50": "float",
"quantile_75": "float",
"quantile_97.5": "float"
},
"annualized_volatility": {
"quantile_25": "float",
"quantile_2.5": "float",
"quantile_50": "float",
"quantile_75": "float",
"quantile_97.5": "float"
}
},
"scenarios_table": {
"capital_distribution_at_horizon": {
"max": "float",
"min": "float",
"in_between": {
"high": "float",
"low": "float"
}
},
"capital_gain_or_loss": {
"max": "float",
"min": "float",
"in_between": {
"high": "float",
"low": "float"
}
},
"absolute_return": {
"max": "float",
"min": "float",
"in_between": {
"high": "float",
"low": "float"
}
},
"cumulative_savings": "float",
"gross_cumulative_savings": "float"
},
"uc_allocation": [
{
"series": "string",
"percentage": "float"
}
]
}
Ce endpoint réalise une simulation pour un projet d’épargne en gestion pilotée.
Requête HTTP
POST /simulator-service/simulator/delegated_management
Corps de la requête
Le corps de la requête est un objet JSON représentant une demande de simulation.
L’objet SimulationRequest
| Paramètre | Obligatoire | Type | Description |
|---|---|---|---|
| simulator_uuid | true | string | Identifiant unique du simulateur. Fourni par AAA. |
| target_amount | false | number | La somme d’argent que l’on souhaite atteindre. |
| horizon | true | integer | La longueur du projet d’epargne (en mois). |
| current_savings | false | number | Le montant actuel de l’épargne. |
| start_date | true | string | Date de début de la simulation. Le format est YYYYMM. |
| simple_deposits | false | [SimpleCashFlow] | La liste des versements ponctuels anticipés. |
| periodic_deposits | false | [PeriodicCashFlow] | La liste des versements récurrents anticipés. |
| simple_withdrawals | false | [SimpleCashFlow] | La liste des rachats ponctuels anticipés. |
| periodic_withdrawals | false | [PeriodicCashFlow] | La liste des rachats récurrents anticipés. |
| profile_idx | true | integer | Identifiant unique du profil de gestion pilotée. Fourni par AAA. |
L’objet SimpleCashFlow
| Paramètre | Obligatoire | Type | Description |
|---|---|---|---|
| amount | true | number | La somme déposée ou retirée. |
| date | true | string | La date du mouvement. Le format est YYYYMM. |
L’objet PeriodicCashFlow
| Paramètre | Obligatoire | Type | Description |
|---|---|---|---|
| amount | true | number | La somme déposée ou retirée. |
| start_date | true | string | La date de début du mouvement récurrent. Le format est YYYYMM. |
| end_date | true | string | La date de fin du mouvement récurrent. Le format est YYYYMM. |
| frequency | true | string | La fréquence de la récurrence. Les valeurs possibles sont: MONTHLY/QUARTERLY/YEARLY/SEMI_ANNUALLY |
Gestion Pilotée à Horizon
curl \
--location 'https://aaaic-backend.ppd.rafa.3a-digital.fr/simulator-service/simulator/glidepath_management' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <myToken>' \
--data '{
"simulation_start_date": "202008",
"simple_deposits": [
{
"amount": 5000,
"date": "202010"
}
],
"periodic_deposits": [
{
"amount": 197.2,
"start_date": "202008",
"end_date": "202507",
"frequency": "MONTHLY"
}
],
"target_amount": 5000,
"horizon": 60,
"current_savings": 1000,
"simulator_uuid": "aaaic:simulators:170",
"profile_idx": 2,
"age": 35
}'
La commande ci-dessus retourne un objet JSON structuré de cette façon:
{
"success_percentage": "float",
"graphs": {
"nb_scenarios": "int",
"scenarios_smooth": [
{
"name": "string",
"data": [
{
"x": "float",
"y": "float"
}
]
}
],
"synthesis": {
"savings": {
"x": "float",
"y": "float"
},
"median": {
"x": "float",
"y": "float"
},
"lower_area": {
"x": "float",
"high": "float",
"low": "float"
},
"mid_area": {
"x": "float",
"high": "float",
"low": "float"
},
"upper_area": {
"x": "float",
"high": "float",
"low": "float"
}
},
"success_percentage": "float",
"scenarios_perc_above_cumulative_savings": "float",
"id": "string",
"scenarios": [
{
"name": "savings",
"data": [
{
"x": "float",
"y": "float"
}
],
"lineWidth": "float",
"zIndex": "float"
}
]
},
"statistics": {
"mar_ratio": {
"quantile_25": "float",
"quantile_2.5": "float",
"quantile_50": "float",
"quantile_75": "float",
"quantile_97.5": "float"
},
"sharp_ratio": {
"quantile_25": "float",
"quantile_2.5": "float",
"quantile_50": "float",
"quantile_75": "float",
"quantile_97.5": "float"
},
"annualized_return": {
"quantile_25": "float",
"quantile_2.5": "float",
"quantile_50": "float",
"quantile_75": "float",
"quantile_97.5": "float"
},
"max_drawdown": {
"quantile_25": "float",
"quantile_2.5": "float",
"quantile_50": "float",
"quantile_75": "float",
"quantile_97.5": "float"
},
"annualized_volatility": {
"quantile_25": "float",
"quantile_2.5": "float",
"quantile_50": "float",
"quantile_75": "float",
"quantile_97.5": "float"
}
},
"scenarios_table": {
"capital_distribution_at_horizon": {
"max": "float",
"min": "float",
"in_between": {
"high": "float",
"low": "float"
}
},
"capital_gain_or_loss": {
"max": "float",
"min": "float",
"in_between": {
"high": "float",
"low": "float"
}
},
"absolute_return": {
"max": "float",
"min": "float",
"in_between": {
"high": "float",
"low": "float"
}
},
"cumulative_savings": "float",
"gross_cumulative_savings": "float"
},
"uc_allocation": [
{
"series": "string",
"percentage": "float"
}
]
}
Ce endpoint réalise une simulation pour un projet d’épargne en gestion pilotée.
Requête HTTP
POST /simulator-service/simulator/glidepath_management
Corps de la requête
Le corps de la requête est un objet JSON représentant une demande de simulation.
L’objet SimulationRequest
| Paramètre | Obligatoire | Type | Description |
|---|---|---|---|
| simulator_uuid | true | string | Identifiant unique du simulateur. Fourni par AAA. |
| target_amount | false | number | La somme d’argent que l’on souhaite atteindre. |
| horizon | true | integer | La longueur du projet d’epargne (en mois). |
| current_savings | false | number | Le montant actuel de l’épargne. |
| start_date | true | string | Date de début de la simulation. Le format est YYYYMM. |
| simple_deposits | false | [SimpleCashFlow] | La liste des versements ponctuels anticipés. |
| periodic_deposits | false | [PeriodicCashFlow] | La liste des versements récurrents anticipés. |
| simple_withdrawals | false | [SimpleCashFlow] | La liste des rachats ponctuels anticipés. |
| periodic_withdrawals | false | [PeriodicCashFlow] | La liste des rachats récurrents anticipés. |
| profile_idx | true | integer | Identifiant unique du profil de gestion pilotée. Fourni par AAA. |
| age | true | integer | L’age du souscripteur. |
L’objet SimpleCashFlow
| Paramètre | Obligatoire | Type | Description |
|---|---|---|---|
| amount | true | number | La somme déposée ou retirée. |
| date | true | string | La date du mouvement. Le format est YYYYMM. |
L’objet PeriodicCashFlow
| Paramètre | Obligatoire | Type | Description |
|---|---|---|---|
| amount | true | number | La somme déposée ou retirée. |
| start_date | true | string | La date de début du mouvement récurrent. Le format est YYYYMM. |
| end_date | true | string | La date de fin du mouvement récurrent. Le format est YYYYMM. |
| frequency | true | string | La fréquence de la récurrence. Les valeurs possibles sont: MONTHLY/QUARTERLY/YEARLY/SEMI_ANNUALLY |
Module Premia
Le module Premia est un outil intelligent qui accompagne les conseillers à chaque étape du devoir de conseil. Définition du profil de risque et des objectifs de l’épargnant, intégration de ses préférences ESG, pour une préconisation d’allocations sur-mesure grâce à un moteur algorithmique d’adéquation. Le tout permettant de générer automatiquement une proposition d’investissement complète, conforme et prête à partager avec l’épargnant.
Ce endpoint permet de créer une session Premia. Vous vous authentifiez avec un JWT, créez une session via l’API, puis redirigez l’utilisateur vers Premia avec le hash de session retourné.
Créer une session Premia
# Example 1 : souscription à un nouveau contrat
curl \
--location '{BASE_BACKEND_URL}/premia/api/v1/sessions' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <myToken>' \
--data '{
"recoJourneyUuid": "aaaic:reco_journeys:4",
"extProductCode": "PERZEN",
"extSessionCode": "123456",
"contactEmail": "adeline.monet@gmail.com",
"clientLastName": "Monet",
"clientFirstName": "Adeline",
"clientBirthDate": "19800101",
"coSubscriberLastName": "Jean",
"coSubscriberFirstName": "Monet",
"coSubscriberBirthDate": "19780331",
"legalPersonName": "",
"legalPersonIdentifier": "",
"legalPersonRepresentativeLastName": "",
"legalPersonRepresentativeFirstName": "",
"depositInitialEnabled": true,
"depositInitial": 5000
}'
# Example 2 : versement / rachat / arbitrage
curl \
--location '{BASE_BACKEND_URL}/premia/api/v1/sessions' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <myToken>' \
--data '{
"recoJourneyUuid": "aaaic:reco_journeys:13",
"extSessionCode": "123456",
"extProductCode": "01t0N00000B9B8pQAF",
"contactEmail": "adeline.monet@gmail.com",
"clientLastName": "Monet",
"clientFirstName": "Adeline",
"clientBirthDate": "19800101",
"coSubscriberLastName": "Jean",
"coSubscriberFirstName": "Monet",
"coSubscriberBirthDate": "19780331",
"legalPersonName": "",
"legalPersonIdentifier": "",
"legalPersonRepresentativeLastName": "",
"legalPersonRepresentativeFirstName": "",
"depositInitialEnabled": false,
"clientRiskKey": "2",
"clientRiskKeyLastUpdateDate": "20250101",
"hasSustainablePreferences": true,
"minSustainableInvestments": 15,
"minTaxonomyAlignment": null,
"minCoveragePai": 0.50,
"greenhouseGasEmissions": true,
"impactOnBiodiversity": false,
"waterEmissions": true,
"hazardousWaste": false,
"controversialWeapons": false,
"monitoringOfInternationalPrinciples": false,
"respectOfInternationalPrinciples": false,
"genderPayGap": false,
"lowBoardGenderDiversity": false,
"clientEsgLastUpdateDate": "20250101",
"periodicDepositsEnabled": true,
"regularContributionsAmount": 500,
"regularContributionsFormat": "CHOSEN_FREQUENCY",
"regularContributionsFrequency": "MONTHLY",
"currentComposition": {
"compositionParts": [
{
"partWeights": [
{
"amount": 400,
"displayName": "Mirova Europe Environnement",
"extCode": "LU0914733059"
},
{
"amount": 300,
"displayName": "Afer Rendement Juin 2023",
"extCode": "FR5272AB0288"
},
{
"amount": 250,
"displayName": "SC Advenis Immo Capital",
"extCode": "P801_SCI001"
}
],
"type": "FREE_MANAGEMENT"
}
]
}
}'
La commande ci-dessus retourne un objet JSON structuré de cette façon :
{
"sessionHash": "abc123"
}
Requête HTTP
POST /premia/api/v1/sessions
Corps de la requête
Le corps de la requête est un objet JSON contenant toutes les informations nécessaires pour initier une session sur Premia. Selon le cas d’usage, il est construit différemment. Des exemples sont fournis à droite pour illustrer les cas suivants :
- souscription à un nouveau contrat
- versement / rachat / arbitrage sur un contrat existant
Réponse
En réponse, le service fournit un hash de session, nécessaire pour initier la session correspondante sur Premia.
L'objet PremiaSessionRequest
| Paramètre | Obligatoire | Type | Description |
|---|---|---|---|
| recoJourneyUuid | true | string | Identifiant de la configuration Premia à utiliser. Fourni par AAA. |
| extProductCode | true | string | Votre code produit dans le système partenaire (ex : PERZEN). |
| extSessionCode | true | string | Votre référence interne pour la traçabilité. |
| contactEmail | false | string | Email de contact pour les notifications. |
| clientLastName | true | string | Nom de famille du client. |
| clientFirstName | true | string | Prénom du client. |
| clientBirthDate | true | string | Date de naissance du client au format YYYYMMDD. |
| coSubscriberLastName | false | string | Nom de famille du co-souscripteur (si applicable). |
| coSubscriberFirstName | false | string | Prénom du co-souscripteur (si applicable). |
| coSubscriberBirthDate | false | string | Date de naissance du co-souscripteur au format YYYYMMDD (si applicable). |
| legalPersonName | false | string | Nom de la personne morale (pour les souscriptions d’entreprise). |
| legalPersonIdentifier | false | string | Identifiant de la personne morale (ex : SIREN). |
| legalPersonRepresentativeLastName | false | string | Nom du représentant légal (pour les souscriptions d’entreprise). |
| legalPersonRepresentativeFirstName | false | string | Prénom du représentant légal (pour les souscriptions d’entreprise). |
| depositInitialEnabled | false | boolean | Indique si un dépôt initial est activé. |
| depositInitial | conditionnel | number | Montant du dépôt initial. Obligatoire quand depositInitialEnabled est true. |
| clientRiskKey | false | string | Profil de risque du client. Clé de risque (ex : “2”). |
| clientRiskKeyLastUpdateDate | false | string | Date de dernière mise à jour du profil de risque au format YYYYMMDD. |
| hasSustainablePreferences | false | boolean | Le client a des préférences ESG ? |
| minSustainableInvestments | false | number | % minimum d’investissements durables (format “15” pour 15%). |
| minTaxonomyAlignment | false | number | % minimum aligné taxonomie (format “15” pour 15%). |
| minCoveragePai | false | number | % minimum de couverture PAI (format “15” pour 15%). |
| greenhouseGasEmissions | false | boolean | PAI Climat. |
| impactOnBiodiversity | false | boolean | PAI Biodiversité. |
| waterEmissions | false | boolean | PAI Qualité de l’eau. |
| hazardousWaste | false | boolean | PAI Gestion responsable des déchets. |
| controversialWeapons | false | boolean | PAI Contrôle des armes controversées. |
| monitoringOfInternationalPrinciples | false | boolean | PAI Contrôle des normes internationales. |
| respectOfInternationalPrinciples | false | boolean | PAI Respect des normes internationales. |
| genderPayGap | false | boolean | PAI Égalité de rémunération hommes/femmes. |
| lowBoardGenderDiversity | false | boolean | PAI Mixité des conseils d’administration. |
| clientEsgLastUpdateDate | false | string | Date de dernière mise à jour des préférences ESG au format YYYYMMDD. |
| periodicDepositsEnabled | false | boolean | Versements programmés en place ? |
| regularContributionsAmount | conditionnel | number | Montant du versement programmé. Obligatoire si periodicDepositsEnabled est true. |
| regularContributionsFormat | false | string | Format des contributions. Valeurs : “CHOSEN_FREQUENCY”. |
| regularContributionsFrequency | false | string | Fréquence des contributions. Valeurs : “MONTHLY”, “QUARTERLY”, “SEMIANNUALLY”, “ANNUALLY”. |
| currentComposition | false | object | Composition de l’allocation actuelle. |
| extCode | false | string | Code du support. Contexte : dans currentComposition.compositionParts[].partWeights[]. |
| displayName | false | string | Nom de l’actif financier. Contexte : dans currentComposition.compositionParts[].partWeights[]. |
| amount | false | number | Valeur marchande de la ligne. Contexte : dans currentComposition.compositionParts[].partWeights[]. |
Si l’entrée n’est pas valide ou que vous n’avez pas accès, l’API retournera des erreurs HTTP standard (400, 403, 404) avec un corps JSON décrivant le problème.
Rediriger l'utilisateur vers Premia
Une fois que vous recevez le sessionHash, redirigez le navigateur de l’utilisateur vers Premia en utilisant l’URL suivante :
{BASE_UI_URL}/premia/sessions?hash={sessionHash}
Remplacez {BASE_UI_URL} par l’hôte Premia avec lequel vous vous intégrez (staging, production, etc.).
const res = await fetch(`${BASE_BACKEND_URL}/premia/api/v1/sessions`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${token}`,
},
body: JSON.stringify(payload),
});
const { sessionHash } = await res.json();
window.location.href = `${BASE_UI_URL}/premia/sessions?hash=${sessionHash}`;
Reprendre une session Premia
Une fois que vous connaissez le sessionHash, redirigez le navigateur de l’utilisateur vers Premia en utilisant l’URL suivante :
{BASE_UI_URL}/premia/sessions?hash={sessionHash}
Remplacez {BASE_UI_URL} par l’hôte Premia avec lequel vous vous intégrez (staging, production, etc.).
Erreurs
L’API Coanda utilise les codes d’erreur suivants:
4xx
| Code d’erreur | Signification |
|---|---|
| 401 | Unauthorized – Le token n’est pas valide. |
| 403 | Forbidden – Le token est valide mais pas les permissions associées. |
| 404 | Not Found – Le endpoint demandé n’existe pas. |
| 405 | Method Not Allowed – La méthode HTTP spécifié n’est pas supportée. |
| 422 | Bad Request – La requête est invalide. |
| 429 | Too Many Requests – Trop de requêtes envoyées d’un coup. Ralentissez ! |
5xx
| Error Code | Meaning |
|---|---|
| 500 | Internal Server Error – Erreur générique coté serveur. Réessayez plus tard. |
| 503 | Service Unavailable – Service en maintenance. Réessayez plus tard. |
