Référence API
Authentification
Prérequis :
- Pour utiliser cette API, vous devez nous contacter à contact@immosquare.com. Après vérification, nous vous fournirons
apiKeyetapiTokenà inclure dans les headers de vos requêtes.
# POST POST /path Content-Type: application/json apiKey: xz1232xzd213213er213213dczxcc3loizxzs12dczx apiToken: xz1287xzdwer213213dczxcas12dczx # GET GET /path apiKey: xz1232xzd213213er213213dczxcc3loizxzs12dczx apiToken: xz1287xzdwer213213dczxcas12dczx
Codes HTTP
Nous utilisons des codes conventionnels de réponse HTTP pour indiquer le succès ou l'échec des requêtes.
💚 Succès (2xx)
| HTTP Statut | Description |
|---|---|
| 200 - OK | Succès de la requête |
🚫 Erreurs client (4xx)
| HTTP Statut | Description |
|---|---|
| 400 - Bad Request | Paramètres manquants ou invalides |
| 401 - Unauthorized | API Key/token invalide |
| 402 - Request Failed | Requête valide mais échec du traitement |
| 404 - Not Found | Endpoint inexistant |
| 429 - Too Many Requests | Quota de requêtes dépassé |
🔧 Erreurs serveur (5xx)
| HTTP Statut | Description |
|---|---|
| 500, 502, 503, 504 - Server Errors | Erreur technique interne |
Versions
-10/03/2021 : Version 1.5 - Ajout de routes pour les VPC et assemblées de type VPC
-15/01/2021 : Version 1.3 - Ajout Belgique + date de validation des vpc + heure d'ouverture et fermeture de l'assemblée
-10/11/2020 : Version 1.2
-30/06/2020 : Version 1.1
-22/06/2020 : Version 1.0
Urls API
production france : https://ag-connect.fr staging france : https://staging.ag-connect.fr production belgique : https://ag-connect.be staging belgique : https://staging.ag-connect.be production canada : https://ag-connect.ca staging canada : https://staging.ag-connect.ca
Objets
Statut de l'assemblée
| Nom | Description |
|---|---|
| inpreparation | Assemblée en préparation |
| validated | Assemblée validée |
| convocked | Assemblée convoquée |
| opening | Assemblée ouverte |
| ongoing | Assemblée en cours |
| completed | Assemblée cloturée |
Type d'assemblée
| Nom | Description |
|---|---|
| standard | Assemblée classique |
| vpc | Assemblée uniquement en vote par correspondance |
| council | Conseils syndicaux et d'administrations |
Type entité juridique
| Nom | Description |
|---|---|
| syndic_ca | Canada : Syndic |
| association_ca | Canada : Association |
| company_ca | Canada : Entreprise |
| syndic_fr | France : Syndic |
| association_fr | France : Association |
| company_fr | France : Entreprise |
| asl_fr | France : ASL |
| aful_fr | France : AFUL |
| rie_fr | France : AGRIE |
| syndic_lu | Luxembourg : Syndic |
| syndic_be | Belgique : Syndic |
| grie_fr | France : GRIE |
Type de majorité
| Nom | Description |
|---|---|
type_majority_1 |
Canada (copro) - Majorité absolue(1096) |
type_majority_2 |
Canada (copro) - Majorité renforcée(1097) |
type_majority_3 |
Canada (copro) - Double Majorité(1098,1102) |
type_majority_4 |
Canada (copro) - Majorité simple(rattrapage) |
type_majority_5 |
Canada (copro) - Unanimité |
type_majority_6 |
France (copro) - Majorité simple(24) |
type_majority_7 |
France (copro) - Majorité Absolue(25-1) |
type_majority_8 |
France (copro) - Double majorité(26-1) |
type_majority_9 |
France (copro) - Unanimité |
type_majority_10 |
France (association & Entreprise) - Majorité simple (OUI > NON) |
type_majority_11 |
France (association & Entreprise) - Majorité simple (OUI > 50% présents) |
type_majority_12 |
France (association & Entreprise) - Majorité Absolue |
type_majority_13 |
France (association & Entreprise) - Majorité qualifée (OUI > 75% présents) |
type_majority_14 |
France (association & Entreprise) - Majorité qualifée (OUI > 75% clé de vote) |
type_majority_15 |
France (copro) - Majorité Absolue(25) sans revote |
type_majority_16 |
France (copro) - Double majorité(26) sans revote |
type_majority_17 |
Luxembourg (copro) - Majorité simple(15) (OUI > NON) |
type_majority_18 |
Luxembourg (copro) - Majorité Absolue(16) > 50% de l'ensemble de la clé de vote |
type_majority_19 |
Luxembourg (copro) - Double majorité(17) >= 75% de l'ensemble de la clé de vote et +50% des copros |
type_majority_20 |
Luxembourg (copro) - Unanimité |
type_majority_21 |
Belgique (copro) - Majorité absolue (50 % + 1) |
type_majority_22 |
Belgique (copro) - Majorité qualifiée des quatre cinquièmes (80 %) |
type_majority_23 |
Belgique (copro) - Majorité qualifiée des deux tiers |
type_majority_24 |
Belgique (copro) - Unanimité (100 %) |
type_majority_25 |
Canada (Companie & Entreprise) - Majorité simple (OUI > 50% présents) |
type_majority_26 |
Canada (Companie & Entreprise) - Majorité absolue (OUI > 50% de la clé de vote) |
type_majority_27 |
Canada (Companie & Entreprise) - Majorité des deux tiers des présents |
type_majority_28 |
Allemagne (copro) - Majorité simple + de 50 % des parties présentes |
type_majority_29 |
Allemagne (copro) - Majorité qualifiée + de 75% des parties présentes |
type_majority_30 |
Allemagne (copro) - Majorité absolue (100% des parties présentes) |
type_majority_31 |
France (ASL) - 2/3 des voix de tous les membres |
type_majority_32 |
France (ASL) - unanimité des membres |
type_majority_33 |
France (ASL) - majorité absolue |
type_majority_34 |
France (ASL) - double majorité |
type_majority_35 |
France (ASL) - 2/3 des présents et représentés |
type_majority_36 |
France (ASL) - 3/4 des voix de tous les membres |
type_majority_37 |
France (ASL) - Majorité absolue Immeuble |
type_majority_38 |
France (ASL) - Double maj, moitié en nombre + 2/3 des voix de tous les membres |
type_majority_39 |
France (ASL) - Double maj (2e Conv), moitié en nombre + 2/3 des voix de tous les membres |
type_majority_40 |
France (ASL) - Double maj, 2/3 des membres et 2/3 des voix |
type_majority_41 |
France (ASL) - 3/4 des présents et représentés |
type_majority_42 |
France (RIE) - Majorité des voix des membres présents et représentés |
type_majority_43 |
France (RIE) - Majorité absolue |
type_majority_44 |
France (RIE) - Double majorité |
type_majority_45 |
France (RIE) - Vote propriétaire |
type_majority_46 |
France (RIE) - Unanimité |
type_majority_47 |
France (ASL) - Majorité des voix des membres présents et représentés |
type_majority_48 |
France (AFUL) - 2/3 des voix de tous les membres |
type_majority_49 |
France (AFUL) - unanimité des membres |
type_majority_50 |
France (AFUL) - majorité absolue |
type_majority_51 |
France (AFUL) - double majorité |
type_majority_52 |
France (AFUL) - 2/3 des présents et représentés |
type_majority_53 |
France (AFUL) - 3/4 des voix de tous les membres |
type_majority_54 |
France (AFUL) - Majorité absolue Immeuble |
type_majority_55 |
France (AFUL) - Double maj, moitié en nombre + 2/3 des voix de tous les membres |
type_majority_56 |
France (AFUL) - Double maj (2e Conv), moitié en nombre + 2/3 des voix de tous les membres |
type_majority_57 |
France (AFUL) - Double maj, 2/3 des membres et 2/3 des voix |
type_majority_58 |
France (AFUL) - 3/4 des présents et représentés |
type_majority_59 |
France (AFUL) - Majorité des voix des membres présents et représentés |
type_majority_60 |
France (GRIE) - Majorité des voix des membres présents et représentés |
type_majority_61 |
France (GRIE) - Majorité absolue |
type_majority_62 |
France (GRIE) - Double majorité |
type_majority_63 |
France (GRIE) - Vote propriétaire |
type_majority_64 |
France (GRIE) - Unanimité |
Type de participation
| Nom | Description |
|---|---|
| physically_present | Présents physiquement |
| remotely_present | Présents à distance |
| anticipation_vote | Vote par correspondance |
| procuration_vote | Vote par procuration |
Type de convocation
| Nom | Description |
|---|---|
| internal | Participants ayant droit de vote |
| external | Participants n'ayant pas de droit de vote |
Statut de la procuration
| Nom | Description |
|---|---|
| -1 | En attente |
| 0 | Aucun statut |
| 1 | Procuration acceptée |
Type de choix de vote
| Nom | Description |
|---|---|
| classic | Vote par oui/non/abstention |
| custom | Vote par choix multiples |
Clean Datas Categories
| Nom | Description |
|---|---|
| present | Calcul sur les présents |
| absent | Calcul sur les absents |
| assembly | Calcul sur l'assemblée |
present_on_assembly |
Calcul sur les présents par rapport à l'assemblée |
absent_on_assembly |
Calcul sur les absents par rapport à l'assemblée |
| no_vote | Calcul sur les ne vote pas |
no_vote_on_present |
Calcul sur les ne vote paspar rapport aux présents |
no_vote_on_assembly |
Calcul sur les ne vote paspar rapport à l'assemblée |
| newsless | Calcul sur les sans nouvelles |
newsless_on_present |
Calcul sur les sans nouvellespar rapport aux présents |
newsless_on_assembly |
Calcul sur les sans nouvellespar rapport à l'assemblée |
| yes | Calcul sur les oui |
yes_on_present |
Calcul sur les ouipar rapport aux présents |
yes_on_assembly |
Calcul sur les ouipar rapport à l'assemblée |
| no | Calcul sur les non |
no_on_present |
Calcul sur les nonpar rapport aux présents |
no_on_assembly |
Calcul sur les nonpar rapport à l'assemblée |
| abstention | Calcul sur les abstention |
abstention_on_present |
Calcul sur les abstentionpar rapport aux présents |
abstention_on_assembly |
Calcul sur les abstentionpar rapport à l'assemblée |
Timezone
| Pris en charge |
|---|
| Australia/Adelaide |
| Australia/Broken_Hill |
| America/Anchorage |
| America/Juneau |
| America/Nome |
| America/Yakutat |
| Pacific/Gambier |
| Asia/Almaty |
| Europe/Amsterdam |
| Europe/Athens |
| America/Anguilla |
| America/Antigua |
| America/Argentina/San_Luis |
| America/Aruba |
| America/Asuncion |
| America/Barbados |
| America/Blanc-Sablon |
| America/Boa_Vista |
| America/Campo_Grande |
| America/Cuiaba |
| America/Curacao |
| America/Dominica |
| America/Eirunepe |
| America/Glace_Bay |
| America/Goose_Bay |
| America/Grenada |
| America/Guadeloupe |
| America/Guyana |
| America/Halifax |
| America/Manaus |
| America/Marigot |
| America/Martinique |
| America/Moncton |
| America/Montserrat |
| America/Porto_Velho |
| America/PortofSpain |
| America/Puerto_Rico |
| America/Rio_Branco |
| America/Santo_Domingo |
| America/St_Barthelemy |
| America/St_Kitts |
| America/St_Lucia |
| America/St_Thomas |
| America/St_Vincent |
| America/Thule |
| America/Tortola |
| Antarctica/Palmer |
| Atlantic/Bermuda |
| Atlantic/Stanley |
| Antarctica/McMurdo |
| Antarctica/South_Pole |
| Pacific/Auckland |
| Pacific/Funafuti |
| Pacific/Kwajalein |
| Pacific/Majuro |
| Pacific/Nauru |
| Pacific/Tarawa |
| Pacific/Wake |
| Pacific/Wallis |
| Atlantic/Azores |
| Asia/Baghdad |
| Asia/Baku |
| Asia/Dubai |
| Indian/Mahe |
| Indian/Mauritius |
| Indian/Reunion |
| Asia/Bangkok |
| Europe/Belgrade |
| Europe/Berlin |
| America/Bogota |
| Europe/Bratislava |
| Australia/Brisbane |
| Europe/Brussels |
| Europe/Bucharest |
| Europe/Budapest |
| America/Araguaina |
| America/Argentina/Buenos_Aires |
| America/Argentina/Catamarca |
| America/Argentina/Cordoba |
| America/Argentina/Jujuy |
| America/Argentina/La_Rioja |
| America/Argentina/Mendoza |
| America/Argentina/Rio_Gallegos |
| America/Argentina/Salta |
| America/Argentina/San_Juan |
| America/Argentina/Tucuman |
| America/Argentina/Ushuaia |
| America/Bahia |
| America/Belem |
| America/Cayenne |
| America/Fortaleza |
| America/Godthab |
| America/Maceio |
| America/Miquelon |
| America/Montevideo |
| America/Paramaribo |
| America/Recife |
| America/Santarem |
| America/Sao_Paulo |
| Antarctica/Rothera |
| Africa/Blantyre |
| Africa/Bujumbura |
| Africa/Cairo |
| Africa/Gaborone |
| Africa/Johannesburg |
| Africa/Kigali |
| Africa/Lubumbashi |
| Africa/Lusaka |
| Africa/Maputo |
| Africa/Maseru |
| Africa/Mbabane |
| Africa/Tripoli |
| Asia/Amman |
| Asia/Beirut |
| Asia/Damascus |
| Asia/Gaza |
| Asia/Nicosia |
| Europe/Chisinau |
| Europe/Kaliningrad |
| Europe/Kiev |
| Europe/Mariehamn |
| Europe/Simferopol |
| Europe/Uzhgorod |
| Europe/Zaporozhye |
| America/Scoresbysund |
| Atlantic/Cape_Verde |
| America/Caracas |
| Africa/Casablanca |
| America/Belize |
| America/Cancun |
| America/Chicago |
| America/Costa_Rica |
| America/El_Salvador |
| America/Guatemala |
| America/Indiana/Knox |
| America/Indiana/Tell_City |
| America/Managua |
| America/Matamoros |
| America/Menominee |
| America/Merida |
| America/North_Dakota/Center |
| America/NorthDakota/NewSalem |
| America/Rainy_River |
| America/Rankin_Inlet |
| America/Regina |
| America/Swift_Current |
| America/Tegucigalpa |
| America/Winnipeg |
| Pacific/Easter |
| Pacific/Galapagos |
| America/Chihuahua |
| Asia/Chongqing |
| Europe/Copenhagen |
| Australia/Darwin |
| Antarctica/Mawson |
| Asia/Bishkek |
| Asia/Dhaka |
| Asia/Karachi |
| Asia/Novokuznetsk |
| Asia/Omsk |
| Asia/Qyzylorda |
| Asia/Thimphu |
| Indian/Chagos |
| Europe/Dublin |
| America/Atikokan |
| America/Cayman |
| America/Detroit |
| America/Grand_Turk |
| America/Guayaquil |
| America/Havana |
| America/Indiana/Indianapolis |
| America/Indiana/Marengo |
| America/Indiana/Petersburg |
| America/Indiana/Vevay |
| America/Indiana/Vincennes |
| America/Indiana/Winamac |
| America/Iqaluit |
| America/Jamaica |
| America/Kentucky/Louisville |
| America/Kentucky/Monticello |
| America/Montreal |
| America/Nassau |
| America/New_York |
| America/Nipigon |
| America/Panama |
| America/Pangnirtung |
| America/Port-au-Prince |
| America/Resolute |
| America/Thunder_Bay |
| America/Toronto |
| Pacific/Fiji |
| Pacific/Guam |
| Africa/Harare |
| America/Adak |
| Pacific/Fakaofo |
| Pacific/Honolulu |
| Pacific/Johnston |
| Pacific/Rarotonga |
| Pacific/Tahiti |
| Europe/Helsinki |
| Australia/Hobart |
| Antarctica/Casey |
| Asia/Brunei |
| Asia/Choibalsan |
| Asia/Harbin |
| Asia/Hong_Kong |
| Asia/Kashgar |
| Asia/Kuching |
| Asia/Macau |
| Asia/Makassar |
| Asia/Manila |
| Asia/Shanghai |
| Asia/Ulaanbaatar |
| Asia/Irkutsk |
| Europe/Istanbul |
| Antarctica/Davis |
| Asia/Hovd |
| Asia/HoChiMinh |
| Asia/Jakarta |
| Asia/Phnom_Penh |
| Asia/Pontianak |
| Asia/Vientiane |
| Indian/Christmas |
| Asia/Jerusalem |
| Asia/Kabul |
| Asia/Kamchatka |
| Asia/Aqtau |
| Asia/Aqtobe |
| Asia/Ashgabat |
| Asia/Dushanbe |
| Asia/Oral |
| Asia/Samarkand |
| Asia/Yekaterinburg |
| Indian/Kerguelen |
| Indian/Maldives |
| Asia/Kathmandu |
| Asia/Kolkata |
| Asia/Krasnoyarsk |
| Asia/Kuala_Lumpur |
| Asia/Kuwait |
| America/La_Paz |
| America/Lima |
| Europe/Lisbon |
| Europe/Ljubljana |
| Africa/Abidjan |
| Africa/Accra |
| Africa/Bamako |
| Africa/Banjul |
| Africa/Bissau |
| Africa/Conakry |
| Africa/Dakar |
| Africa/El_Aaiun |
| Africa/Freetown |
| Africa/Lome |
| Africa/Nouakchott |
| Africa/Ouagadougou |
| Africa/Sao_Tome |
| America/Danmarkshavn |
| Antarctica/Vostok |
| Atlantic/Canary |
| Atlantic/Faroe |
| Atlantic/Madeira |
| Atlantic/Reykjavik |
| Atlantic/St_Helena |
| Europe/Guernsey |
| Europe/IsleofMan |
| Europe/Jersey |
| Europe/London |
| Europe/Madrid |
| Asia/Magadan |
| America/Mazatlan |
| Australia/Melbourne |
| America/Mexico_City |
| America/Noronha |
| Atlantic/South_Georgia |
| Europe/Minsk |
| Africa/Monrovia |
| America/Monterrey |
| Africa/Addis_Ababa |
| Africa/Asmara |
| Africa/DaresSalaam |
| Africa/Djibouti |
| Africa/Kampala |
| Africa/Khartoum |
| Africa/Mogadishu |
| Antarctica/Syowa |
| Asia/Aden |
| Asia/Bahrain |
| Asia/Qatar |
| Europe/Moscow |
| Europe/Samara |
| Indian/Antananarivo |
| Indian/Comoro |
| Indian/Mayotte |
| America/Boise |
| America/Cambridge_Bay |
| America/Dawson_Creek |
| America/Denver |
| America/Edmonton |
| America/Hermosillo |
| America/Inuvik |
| America/Ojinaga |
| America/Phoenix |
| America/Shiprock |
| America/Yellowknife |
| Asia/Colombo |
| Asia/Muscat |
| Africa/Nairobi |
| America/St_Johns |
| Asia/Novosibirsk |
| Pacific/Enderbury |
| Pacific/Tongatapu |
| America/Dawson |
| America/Los_Angeles |
| America/Santa_Isabel |
| America/Vancouver |
| America/Whitehorse |
| Pacific/Pitcairn |
| Africa/Algiers |
| Africa/Bangui |
| Africa/Brazzaville |
| Africa/Ceuta |
| Africa/Douala |
| Africa/Kinshasa |
| Africa/Lagos |
| Africa/Libreville |
| Africa/Luanda |
| Africa/Malabo |
| Africa/Ndjamena |
| Africa/Niamey |
| Africa/Porto-Novo |
| Africa/Tunis |
| Africa/Windhoek |
| Arctic/Longyearbyen |
| Europe/Andorra |
| Europe/Gibraltar |
| Europe/Luxembourg |
| Europe/Malta |
| Europe/Monaco |
| Europe/Oslo |
| Europe/Paris |
| Europe/Podgorica |
| Europe/San_Marino |
| Europe/Tirane |
| Europe/Vaduz |
| Europe/Vatican |
| Europe/Zurich |
| Australia/Perth |
| Pacific/Port_Moresby |
| Europe/Prague |
| Asia/Rangoon |
| Indian/Cocos |
| Europe/Riga |
| Asia/Riyadh |
| Europe/Rome |
| Pacific/Apia |
| Pacific/Midway |
| Pacific/Niue |
| Pacific/Pago_Pago |
| America/Santiago |
| Europe/Sarajevo |
| Asia/Seoul |
| Asia/Singapore |
| Europe/Skopje |
| Europe/Sofia |
| Asia/Anadyr |
| Pacific/Efate |
| Pacific/Guadalcanal |
| Pacific/Kosrae |
| Pacific/Noumea |
| Pacific/Ponape |
| Europe/Stockholm |
| Antarctica/DumontDUrville |
| Asia/Sakhalin |
| Australia/Currie |
| Australia/Lindeman |
| Australia/Sydney |
| Pacific/Saipan |
| Pacific/Truk |
| Asia/Taipei |
| Europe/Tallinn |
| Asia/Tashkent |
| Asia/Tbilisi |
| Asia/Tehran |
| America/Tijuana |
| Asia/Dili |
| Asia/Jayapura |
| Asia/Pyongyang |
| Asia/Tokyo |
| Pacific/Palau |
| Asia/Urumqi |
| Europe/Vienna |
| Europe/Vilnius |
| Asia/Vladivostok |
| Europe/Volgograd |
| Europe/Warsaw |
| Asia/Yakutsk |
| Asia/Yerevan |
| Europe/Zagreb |
Détails d'une assemblée
Cette route vous permet d'otenir le détail d'une assemblée crée pour un de vos utilisateurs. L'id vous ait fourni au retour d'une création assemblée
Vous devez renseigner useruid qui va correspondre à l'uid de l'utilisateur dans votre système ainsi que votre uidprovider, ceci nous permettra de récupérer l'assemblée sur l'utilisateur correspondant.
Si il n'est pas trouvé ou non renseigné, la récupération de l'AG sera impossible.
Vous devez renseigner useruid qui va correspondre à l'uid de l'utilisateur dans votre système ainsi que votre uidprovider, ceci nous permettra de récupérer l'assemblée sur l'utilisateur correspondant.
Si il n'est pas trouvé ou non renseigné, la récupération de l'AG sera impossible.
Call
GET {base_url}/api/v1/assembly/
QUERY Parameters
| Parameter | Type | Description |
|---|---|---|
| user_uid | string | Uid de l'utilisateur (ou plus exactement identifiant unique de l’agence) pour lequel vous voulez obtenir l'assemblée |
| uid_provider | string | Uid provider (identifiant unique du partenaire qui fait appel à l’API. Cet identifiant est fourni à la création du partenariat et ne pourra plus être modifié) |
| uid_assembly | string | Id (identifiant unique) de l'assemblée dans votre système |
Réponse
{ "user_uid": "G78965", "uid_provider": "crypto", "id": "8107c7251e2144e5277d7d055f9cd00d", "uid": "AG Test", "date": "2020-07-02", "time": "13:18:00", "time_zone": "Europe/Paris", "name": "Test france", "assembly_status": "completed", "opened_at": "2020-07-07T22:46:29.000+02:00", "closed_at": "2020-07-07T23:46:33.000+02:00", "first_vote_closed_at": "2020-07-07T22:54:29.000+02:00", "public_note": "", "location": "", "vpc_closed": "2020-07-04T22:54:29.000+02:00", "type_assembly": "standard", "anticipation_vote_mail": "something@something.fr", "communication_mail": "something@something.fr", "address": { "formatted": "", "street_number": "", "street_name": "", "zipcode": "", "locality": "", "sublocality": "", "latitude": null, "longitude": null, "administrative_area_level_1": "", "administrative_area_level_2": "", "country": "" }, "entity": { "uid": null, "name": "Port Grimaud", "type_entity": "syndic_fr", "presential_allowed": 1, "distance_vote_allowed": 1, "multiple_keys_allowed": 1, "procuration_allowed": 1, "module_manager": 1, "entity_keys": [ "clé a", "clé b", "clé c" ], "address": { "address1": "Place de l'église", "address2": "Port Grimaud", "city": "Grimaud", "country": "FR", "province": "", "zipcode": "83310" } }, "documents": [], "participants": [ { "uid": null, "identifier": "19v0qm", "access_code": "k0xadze", "type_participant": "anticipation_vote", "delegate_username": null, "procuration_status": 0, "type_convocation": "internal", "anticipation_vote_validation_at": "2020-07-07T22:46:33.000+02:00", "general_quotity": 1145.0, "participant_keys": { "clé a": 512.0, "clé b": 454.69, "clé c": 478.58 }, "first_name": "Michel", "last_name": "Dupont", "mobile": "060000000", "unit_name": "A548", "email": "email@example.com", "time_zone": "Europe/Paris", "avatar_url": null, "original_avatar_url": null, "address": { "address1": "Place de l'église", "address2": "Port Grimaud", "city": "Grimaud", "country": "FR", "province": "", "zipcode": "83310" }, "signature": { "drawing": null, "ip": null, "datetime": null, "user_agent": null }, "exit_live_datetime": null, "anticipation_votes": [ { "resolution_uid": "123456", "answer": "yes", "vote_at": "2020-07-02T22:46:33.000+02:00" }, { "resolution_uid": "123457", "answer": "no", "vote_at": "2020-07-02T22:46:33.000+02:00" }, { "resolution_uid": "123458", "answer": "abstention", "vote_at": "2020-07-02T22:46:33.000+02:00" } ] } ], "resolutions": [ { "uid": null, "type_majority": "type_majority_6", "is_votable": 1, "is_secret_vote": null, "title": "Test générale maj simple", "description": "", "comment": null, "internal_note": null, "vote_key": "general", "vote_choice_type": "classic", "vote_choice_number": null, "vote_choices": null, "vote_opened_at": "2020-06-10T13:55:43.000+02:00", "vote_closed_at": "2020-06-10T13:55:48.000+02:00", "vote_result": { "resolution_id": 72, "type_majority": "type_majority_6", "vote_choice_type": "classic", "accepted": false, "second_turn_allowed": null, "clean_datas": { "data": { "present": { "qp": "8635.58", "nb": "3.0", "header": true }, "absent": { "qp": "0.0", "nb": "2.0", "header": true }, "assembly": { "qp": "8635.58", "nb": "5.0", "header": true }, "present_on_assembly": { "qp": "1.0", "nb": "0.6", "header": true }, "absent_on_assembly": { "qp": "0.0", "nb": "0.4", "header": true }, "no_vote": { "qp": 0, "nb": 0, "header": true }, "no_vote_on_present": { "qp": "0.0", "nb": "0.0", "header": true }, "no_vote_on_assembly": { "qp": "0.0", "nb": "0.0", "header": true }, "newsless": { "qp": 0, "nb": 0, "header": true }, "newsless_on_present": { "qp": "0.0", "nb": "0.0", "header": true }, "newsless_on_assembly": { "qp": "0.0", "nb": "0.0", "header": true }, "yes": { "qp": "1145.0", "nb": "1.0", "header": false }, "yes_on_present": { "qp": "0.132590978255079566166951149", "nb": "0.333333333333333333", "header": false }, "yes_on_assembly": { "qp": "0.132590978255079566166951149", "nb": "0.2", "header": false }, "no": { "qp": "7490.58", "nb": "2.0", "header": false }, "no_on_present": { "qp": "0.867409021744920433833048851", "nb": "0.666666666666666667", "header": false }, "no_on_assembly": { "qp": "0.867409021744920433833048851", "nb": "0.4", "header": false }, "abstention": { "qp": 0, "nb": 0, "header": false }, "abstention_on_present": { "qp": "0.0", "nb": "0.0", "header": false }, "abstention_on_assembly": { "qp": "0.0", "nb": "0.0", "header": false } }, "list_data": { "username": { "yes": [ "19v0qm" ], "no": [ "ajvjj7", "vrnw9n" ], "abstention": [], "no_vote": [], "newsless": [], "absent": [ "k9z1r7", "eqjajx" ] }, "full_infos": { "yes": [ "Michel Dupont #(A548)" ], "no": [ "Jérôme Dupont #(A549)", "Henri Michel" ], "abstention": [], "no_vote": [], "newsless": [], "absent": [ "Jérôme Chiron", "Jules Dupont" ] } }, "list_opponent": { "username": [ "19v0qm" ], "full_infos": [ "Michel Dupont #(A548)" ] }, "result": false }, "raw_datas": { "qp": { "yes": "1145.0", "no": "7490.58", "abstention": 0, "no_vote": 0, "newsless": 0, "absent": "0.0" }, "nb": { "yes": "1.0", "no": "2.0", "abstention": 0, "no_vote": 0, "newsless": 0, "absent": "2.0" } } }, "documents": [] } ] }
Général
| Node | Type | Description |
|---|---|---|
| user_uid | uid | Uid de l'utilisateur (ou plus exactement identifiant unique de l’agence) pour lequel vous voulez obtenir l'assemblée |
| id | uuid | Id dans notre système |
Assemblée
| Node | Type | Description |
|---|---|---|
| uid | string | Id (identifiant unique) de l'assemblée dans votre système |
| date | date | Date de l'assemblée (YYYY-MM-DD) |
| time | time | Heure de l'assemblée (HH:MM:SS) |
| time_zone | string | Objet Timezone |
| name | string | Nom de l'assemblée |
| assembly_status | string | Objet Statut de l'assemblée |
| opened_at | datetime | Date et heure de l'ouverture de l'assemblée |
| closed_at | datetime | Date et heure de fermeture de l'assemblée |
first_vote_closed_at |
datetime | Date et heure de fermeture du premier vote |
| public_note | string | Note publique de l'assemblée |
| location | string | Lieu de l'assemblée |
| vpc_closed | datetime | Date et heure de fermeture des votes par correspondance |
| type_assembly | string | Objet Type d'assemblée |
anticipation_vote_mail |
string | Email pour recevoir les notifications des votes par correspondance |
| communication_mail | string | Email pour recevoir les réponses des emails envoyés aux participants |
| address | hash | Objet Address |
| entity | hash | Objet Entité |
| documents | array | Objet Documents |
| participants | array | Objet Participants |
| resolutions | array | Objet Résolutions |
Adresse
| Node | Type | Description |
|---|---|---|
| formatted | string | Adresse complète |
| street_number | string | Numéro de voie |
| street_name | string | Nom de la voie |
| zipcode | string | Code postal |
| locality | string | Ville |
| sublocality | string | Quartier |
| latitude | float | Latitude |
| longitude | float | Longitude |
administrative_area_level_1 |
string | Département |
administrative_area_level_2 |
string | Région si disponible |
| country | string | Pays |
Entité
| Node | Type | Description |
|---|---|---|
| name | string | Nom de l'entité |
immatriculation_number |
string | Numéro d'immatriculation de l'entité |
| type_entity | string | Objet Type entité juridique |
| presential_allowed | integer | Si le vote pprésentiel est autorisé |
distance_vote_allowed |
integer | Si le vote par correspondance est autorisé |
multiple_keys_allowed |
integer | Si les clés multiples sont autorisées |
| procuration_allowed | integer | Si le vote par procuration est autorisée |
| module_manager | integer | Autoriser les participants à transmettre leur procuration au gestionnaire d’assemblée (0/1) |
| entity_keys | array | Liste des clefs multiples |
| address | hash | Adresse de l'entité |
| address1 | string | Adresse |
| address2 | string | Adresse complémentaire |
| city | string | Ville |
| country | string | Pays |
| province | string | Région |
| zipcode | string | Code postal |
Documents
| Node | Type | Description |
|---|---|---|
| name | string | Nom du document |
| content_type | string | Type de document |
| size | integer | Taille du document |
| url | string | Url du document (présignée, valable 1 heure) |
Participants
| Node | Type | Description |
|---|---|---|
| uid | string | Id (identifiant unique) du participant dans votre système |
| identifier | string | Identifiant de connexion |
| access_code | string | Code d'accès de connexion |
| type_participant | string | Objet Type de participation |
| delegate_username | string | Délégation au participant |
| procuration_status | string | Objet Statut de la procuration |
| type_convocation | string | Objet Type de convocation |
anticipation_vote_validation_at |
datetime | Date et heure d'enregistrement du vote par correspondance |
| general_quotity | float | Valeur de la clé générale |
| participant_keys | hash | Liste des clés secondaires et de leurs valeurs |
| first_name | string | Prénom |
| last_name | string | Nom |
| mobile | string | Numéro de téléphone mobile |
| unit_name | string | Numéros de lots |
| string | ||
lre |
integer | Consentement LRE au format du paramètre d'import : 1 = consentement recueilli, -1 = refus, 0 = tout le reste — aucun consentement, mais aussi sollicitation en cours ou email en erreur. Lisez lre_status avant d'agir : une relance sur un 0 peut doubler une sollicitation déjà partie |
lre_status |
string | Détail du statut du consentement LRE : active (consentement recueilli), pending (sollicitation en cours), delegate (consentement déclaré par le partenaire ou le gestionnaire), removed (refus), bounce (email en erreur), null (aucun consentement connu) |
| time_zone | string | Objet Timezone |
| avatar_url | string | Url de la photo |
original_avatar_url |
string | Url originale de la photo |
exit_live_datetime |
datetime | Date et heure de sortie de l'assemblée |
| address | hash | Adresse du participant |
| address1 | string | Adresse |
| address2 | string | Adresse complémentaire |
| city | string | Ville |
| country | string | Pays |
| province | string | Région |
| zipcode | string | Code postal |
| signature | hash | Signature du participant |
| drawing | string | Image de la signature |
| ip | string | Ip |
| datetime | string | Date et heure |
| user_agent | string | User agent utilisé |
| anticipation_votes | array | Votes par anticipation |
| resolution_uid | string | Uid de la résolution |
| answer | string | Réponse à la résolution |
| vote_at | datetime | Date et heure du vote |
Résolutions
| Node | Type | Description |
|---|---|---|
| uid | integer | Id (identifiant unique) de la résolution dans votre système |
| number | string | Numéro d'affichage de la résolution |
parent_resolution_uid |
string | Uid de la résolution parente (null pour une résolution de premier niveau) |
| type_majority | string | Objet Type de majorité |
| is_votable | integer | Si votable |
| issecretvote | integer | Si est un vote à bulletin secret |
| title | string | Titre de la résolution |
| description | string | Description de la résolution |
| comment | string | Commentaires |
| internal_note | string | Note interne |
| vote_key | string | Clé utilisé sur le vote |
vote_choice_type |
string | Objet Type de choix de vote |
vote_choice_number |
integer | Nombre de réponses autorisée |
| vote_choices | string | Liste des choix proposées pour le vote séparé par une virgule (ex: 'Entreprise Joubert,Entreprise Lafont') |
vote_opened_at |
datetime | Date et heure d'ouverture du vote |
vote_closed_at |
datetime | Date et heure de fermeture du vote |
| vote_result | hash | Résultats du vote |
| resolution_id | integer | Id de la résolution |
| type_majority | string | Type de majorité |
vote_choice_type |
string | Type de choix de vote |
| accepted | bool | Si acceptée (true : acceptée, false: refusée, :null : sans décision) |
second_turn_allowed |
bool | Si un second tour est possible |
| clean_datas | hash | Résultats compilés |
| result | bool | Si la résolution est acceptée |
| datas | hash | Calculs compilés |
_clean_datas_categories_ |
array | Calcul sur la catégorie, voir Objet Clean data categories |
| qp | float | Total sur la clef |
| nb | float | Total sur le nombre de participants |
| header | bool | Data interne, ne sert pas |
| list_data | hash | Liste de noms par identifinats,noms et opposants |
| username_ | hash | Liste des noms par identifiants |
| yes | array | Liste des participants ayant voté oui |
| no | array | Liste des participants ayant voté non |
| abstention | array | Liste des participants ayant voté abstention |
| no_vote | array | Liste des participants ayant voté ne vote pas |
| newsless | array | Liste des participants présents mais sans nouvelles |
| absent | array | Liste des participants absent |
_full_infos_ |
hash | Liste des noms par prénoms/noms/n° de lot |
| yes | array | Liste des participants ayant voté oui |
| no | array | Liste des participants ayant voté non |
| abstention | array | Liste des participants ayant voté abstention |
| no_vote | array | Liste des participants ayant voté ne vote pas |
| newsless | array | Liste des participants présents mais sans nouvelles |
| absent | array | Liste des participants absent |
| list_opponent | hash | Liste des opposants |
| user_name | array | Liste des opposants par identifiants |
| full_infos | array | Liste des opposants par prénoms/noms/n° de lot |
| raw_datas | hash | Résultats bruts |
| qp | hash | Calcul sur la clé |
| yes | float | Sommes des oui |
| no | float | Sommes des non |
| abstention | float | Sommes des abstention |
| no_vote | float | Sommes des ne vote pas |
| newsless | float | Sommes des sans nouvelles |
| absent | float | Sommes des absent |
| nb | hash | Calcul sur le nombre de participants |
| yes | float | Sommes des oui |
| no | float | Sommes des non |
| abstention | float | Sommes des abstention |
| no_vote | float | Sommes des ne vote pas |
| newsless | float | Sommes des sans nouvelles |
| absent | float | Sommes des absent |
| documents | array | |
| name | string | Nom du document |
| content_type | string | Type de document |
| size | integer | Taille du document |
| url | string | Url du document (présignée, valable 1 heure) |
Erreurs
{ "errors": "Vous devez spécifier un user_uid", "errors": "Vous devez spécifier un uid_provider", "errors": "Cet user_uid ne correspond à aucun utilisateur sur votre accès" }
Création d'une assemblée
Cette route vous permet de créer une assemblée.Vous devez renseigner 'user_uid' qui va correspondre à l'uid de l'utilisateur dans votre système, ceci nous permettra de créer l'assemblée sur l'utilisateur correspondant. Si il n'est pas trouvé ou non renseigné, la création de l'AG sera impossible.
Les AG, participants et résolutions sans uid ne seront pas importés, nous avons besoin des ces identifiants pour vous permettre de les mettre à jour. Attention les participants avec le même UID et email seront fusionnées.
Une AG peut être mis à jour avec sa liste de documents,.... uniquement si l'assemblée est toujours dans le statut
En préparation. Si la requête est acceptée, nous importerons votre AG sur une tache planifiée immédiatement, vous pourrez ainsi la récupérez après quelques minutes.
HTTP Request (création)
POST {base_url}/api/v1/assembly
JSON Parameter (création)
Exemple
{ "user_uid": "G78965", "uid_provider": "nom_provider", "uid": "AG37", "date": "2020-07-02", "time": "22:00:00", "time_zone": "Europe/Paris", "name": "Assemblée générale LES FLANERIES", "public_note": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.", "location": "Salle de la Pérouse", "type_assembly": "standard", "anticipation_vote_mail": "something@something.fr", "communication_mail": "something@something.fr", "address": { "formatted": "15, Place de l'église 31000 Toulouse", "street_number": "15", "street_name": "Place de l'église", "zipcode": "31000", "locality": "Toulouse", "sublocality": "", "latitude": 0.458282, "longitude": 15.4585, "administrative_area_level_1": "", "administrative_area_level_2": "", "country": "France" }, "entity": { "uid": "EA4", "name": "LES FLANERIES", "type_entity": "syndic_fr", "presential_allowed": 0, "distance_vote_allowed": 0, "multiple_keys_allowed": 1, "procuration_allowed": 1, "module_manager": 1, "entity_keys": [ "clé a", "clé b", "clé c" ], "address": { "formatted": "15, Place de l'église 31000 Toulouse", "address1": "Place de l'église", "address2": "", "city": "Toulouse", "country": "FR", "province": "", "zipcode": "31000" } }, "documents": [ { "name": "AG-CONNECT", "url": "https://url_photo_ag_connect.jpg" } ], "participants": [ { "uid": "PA1", "type_convocation": "internal", "general_quotity": 1145.0, "participant_keys": { "clé a": 512.0, "clé b": 454.69, "clé c": 478.58 }, "first_name": "Michel", "last_name": "Dupont", "mobile": "0606060606", "unit_name": "A548", "email": "email@example.com", "time_zone": "Europe/Paris", "avatar_url": "https://https://url_photo_ag_connect.jpg", "LRE": 0, "address": { "formatted": "15, Place de l'église 31000 Toulouse", "address1": "Place de l'église", "address2": "Port Grimaud", "city": "Grimaud", "country": "FR", "province": "", "zipcode": "83310" } } ], "resolutions": [ { "uid": "RO8", "type_majority": "type_majority_6", "is_votable": 1, "is_secret_vote": 1, "title": "Test générale maj simple", "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.", "comment": null, "internal_note": null, "vote_key": "general", "vote_choice_type": "classic", "vote_choice_number": null, "vote_choices": null, "documents": [ { "name": "mls_logo.jpg", "url": "https://url_photo_ag_connect.jpg" }, { "name": "mls_logo2.jpg", "url": "https://url_photo_ag_connect.jpg" } ] } ] }
| Node | Type | Description | Requis |
|---|---|---|---|
| user_uid | uid | Uid de l'utilisateur (ou plus exactement identifiant unique de l’agence) pour lequel vous voulez obtenir l'assemblée | requis |
| id | uuid | Id dans notre système |
Assemblée (création)
| Node | Type | Description | Requis |
|---|---|---|---|
| uid | string | Id (identifiant unique) de l'assemblée dans votre système | requis |
| date | date | Date de l'assemblée (YYYY-MM-DD) | requis |
| time | time | Heure de l'assemblée (HH:MM:SS) | requis |
| time_zone | string | Objet Timezone | requis |
| name | string | Nom de l'assemblée. | requis |
| public_note | string | Note publique de l'assemblée | |
| location | string | Lieu de l'assemblée | |
| type_assembly | string | Objet Type d'assemblée | |
anticipation_vote_mail |
string | Email pour recevoir les notifications des votes par correspondance | |
| communication_mail | string | Email pour recevoir les réponses des emails envoyés aux participants | |
| address | hash | Objet Address | |
| entity | hash | Objet Entité | |
| documents | array | Objet Documents | |
| participants | array | Objet Participants | |
| resolutions | array | Objet Résolutions |
Adresse (création)
| Node | Type | Description |
|---|---|---|
| formatted | string | Adresse complète |
| street_number | string | Numéro de voie |
| street_name | string | Nom de la voie |
| zipcode | string | Code postal |
| locality | string | Ville |
| sublocality | string | Quartier |
| latitude | float | Latitude |
| longitude | float | Longitude |
administrative_area_level_1 |
string | Département |
administrative_area_level_2 |
string | Région si disponible |
| country | string | Pays |
Entité (création)
| Node | Type | Description | requis |
|---|---|---|---|
| uid | string | Id (identifiant unique) de l'entité dans votre système | requis |
| name | string | Nom de l'entité | requis |
| type_entity | string | Objet Type entité juridique | requis |
| presential_allowed | integer | Si le vote pprésentiel est autorisé | |
distance_vote_allowed |
integer | Si le vote par correspondance est autorisé | |
multiple_keys_allowed |
integer | Si les clés multiples sont autorisées | |
| procuration_allowed | integer | Si le vote par procuration est autorisée | |
| module_manager | integer | Autoriser les participants à transmettre leur procuration au gestionnaire d’assemblée (0/1) | |
| entity_keys | array | Liste des clefs multiples | |
| address | hash | Adresse de l'entité | |
| address1 | string | Adresse | |
| address2 | string | Adresse complémentaire | |
| city | string | Ville | |
| country | string | Pays | |
| province | string | Région | |
| zipcode | string | Code postal |
Documents (création)
| Node | Type | Description |
|---|---|---|
| name | string | Nom du document |
| url | string | Url du document ou nom du fichier présent dans le zip si via FTP |
Participants (création)
| Node | Type | Description | Requis |
|---|---|---|---|
| uid | string | Id (identifiant unique) du participant dans votre système | requis |
| type_convocation | string | Objet Type de convocation | requis |
| general_quotity | float | Valeur de la clé générale | requis |
| participant_keys | hash | Liste des clés secondaires et de leurs valeurs | |
| first_name | string | Prénom | |
| last_name | string | Nom | requis |
| mobile | string | Numéro de téléphone mobile | |
| unit_name | string | Numéros de lots | |
| string | |||
| time_zone | string | Objet Timezone | requis |
| avatar_url | string | Url de la photo ou nom du fichier présent dans le zip si via FTP | |
| lre | integer | Consentement LRE : 1 = consentement déjà recueilli chez vous (enregistré comme consentement délégué), -1 = refus (enregistré sans solliciter le participant), 0 ou absent = aucune action |
|
| address | hash | Adresse du participant | |
| address1 | string | Adresse | |
| address2 | string | Adresse complémentaire | |
| city | string | Ville | |
| country | string | Pays | |
| province | string | Région | |
| zipcode | string | Code postal |
Résolutions (création)
| Node | Type | Description | Requis |
|---|---|---|---|
| uid | string | Id (identifiant unique) de la résolution dans votre système | requis |
| number | string | Numéro d'affichage de la résolution | |
parent_resolution_uid |
string | Uid de la résolution parente, pour une sous-résolution — la résolution parente doit figurer dans le même flux | |
| type_majority | string | Objet Type de majorité | requis |
| is_votable | integer | Si votable | |
is_secret_vote |
integer | Si est un vote à bulletin secret | |
| title | string | Titre de la résolution | |
| description | string | Description de la résolution | |
| comment | string | Commentaires | |
| internal_note | string | Note interne | |
| vote_key | string | Clé utilisé sur le vote | requis |
vote_choice_type |
string | Objet Type de choix de vote | requis |
vote_choice_number |
integer | Nombre de réponses autorisée | |
| vote_choices | string | Liste des choix proposées pour le vote séparé par une virgule (ex: 'Entreprise Joubert,Entreprise Lafont') | |
| documents | array | ||
| name | string | Nom du document | |
| url | string | Url du document ou nom du fichier présent dans le zip si via FTP |
Réponse (création)
La requête acceptée répond en HTTP 202.
import_uid est l'identifiant de corrélation de cet import : il vous permet de retrouver son résultat précis dans le journal d'importation (statut, éléments écartés, compteurs par section).{ "message": "Votre demande est en cours de traitement", "import_uid": "f0e6c1de-3f7a-4a4e-9c9d-1a2b3c4d5e6f" }
Un élément invalide (participant incomplet, type de majorité inconnu, document sans URL...) n'annule pas l'import : il est écarté et journalisé dans les
rejected_items du journal, et récapitulé dans l'email de retour envoyé à l'utilisateur. Une clé de répartition inconnue sur une résolution n'écarte pas la résolution : elle est importée sur la clé générale et signalée en avertissement (severity: "warning").Le corps de la requête est limité à 10 Mo : au-delà, la requête est refusée en HTTP 413.
Erreurs (création)
{ "errors": "Contenu trop volumineux : la limite est de 10 Mo par requête", "errors": "Un import est déjà en cours", "errors": "Vous devez spécifier un user_uid", "errors": "Vous devez spécifier un uid_provider", "errors": "Cet user_uid ne correspond à aucun utilisateur sur votre accès", "errors": "Cette assemblée n'a pas pu être crée", "errors": "Cette assemblée a déjà été validée, il n'est plus possible de lui apporter des modifications", "errors": "La date de l'assemblée est invalide", "errors": "L'heure de l'assemblée est invalide", "errors": "Le fuseau horaire de l'assemblée est invalide", "errors": "L'heure de l'assemblée est obligatoire", "errors": "La date de l'assemblée est obligatoire", "errors": "Le fuseau horaire de l'assemblée est obligatoire", "errors": "Aucun uid fourni pour cette assemblée", "errors": "Aucune entité juridique fournie", "errors": "Aucun uid fourni pour cette entité", "errors": "Entité juridique incorrect, voir Type Entité" }
Import immédiat d'un fichier sur le FTP
Cette route vous permet de demander l'import immédiat d'un fichier que vous avez préalablement déposer sur notre FTP.
HTTP Request (import)
POST {base_url}/api/v1/assembly/import
QUERY Parameters (import)
| Parameter | Type | Description |
|---|---|---|
| user_uid | string | Uid de l'utilisateur (ou plus exactement identifiant unique de l’agence) pour lequel vous voulez obtenir l'assemblée |
| uid_provider | string | Uid provider (identifiant unique du partenaire qui fait appel à l’API. Cet identifiant est fourni à la création du partenariat et ne pourra plus être modifié) |
| filename | string | Nom du fichier à importer ( ex: A7854provider1514515151.zip ) |
Réponse (import)
La requête acceptée répond en HTTP 202. Le flux FTP ne porte pas d'
import_uid de corrélation : un même fichier peut produire plusieurs imports. Consultez le journal d'importation de chaque assemblée pour en connaître le résultat.{ "message": "Votre demande est en cours de traitement" }
Erreurs (import)
{ "errors": "Ce fichier n'existe pas sur le FTP", "errors": "Un import est déjà en cours" }
Récupération des documents d'une assemblée
Cette route vous permet de récupérer le PV et la feuille de présence encodés en base 64 lorsqu'une AG est complétée. Les fichiers servis sont les documents publiés — exactement ceux diffusés aux copropriétaires, jamais une régénération. Si le gestionnaire a dépublié les documents, ou si le PV n'est pas encore rédigé, validé et signé, la requête est refusée en HTTP 409 avec un message explicite : réessayez plus tard.
HTTP Request (documents)
GET {base_url}/api/v1/assembly/documents
QUERY Parameters (documents)
| Parameter | Type | Description |
|---|---|---|
| user_uid | string | Uid de l'utilisateur (ou plus exactement identifiant unique de l’agence) pour lequel vous voulez obtenir l'assemblée |
| uid_provider | string | Uid provider (identifiant unique du partenaire qui fait appel à l’API. Cet identifiant est fourni à la création du partenariat et ne pourra plus être modifié) |
| uid_assembly | string | Id (identifiant unique) de l'assemblée dans votre système |
Réponse (documents)
| Node | Type | Description |
|---|---|---|
| pv | string | PDF du procès-verbal publié, encodé en base 64 (null si absent) |
| timesheet | string | PDF de la feuille de présence publiée, encodé en base 64 (null si absent) |
| signed_documents | array | Documents signés pendant l'assemblée : id, name et pdf (base 64) — liste vide s'il n'y en a pas |
{ "pv": "JVBERi0xLjQKMSAwIG9iago8PAovVGl0bGUgKP7/KQovQ3JlYXRvciAo/v8A\ndwBrAGgAdABtAGwAdABvAHAAZABmACAAMAAuADEAMgAuADUpCi9Qcm9kdWNl\nciAo/....", "timesheet": "JVBERi0xLjQKMSAwIG9iago8PAovVGl0bGUgKP7/KQovQ3JlYXRvciAo/v8A\ndwBrAGgAdABtAGwAdABvAHAAZABmACAAMAAuADEAMgAuADUpCi9Qcm9kdWNl\nciAo/", "signed_documents": [ { "id": 12345, "name": "Contrat de syndic", "pdf": "JVBERi0xLjQKMSAwIG9iago8PAovVGl0bGUgKP7/KQovQ3JlYXRvciAo/v8A\ndwBrAGgAdABtAGwAdABvAHAAZABmACAAMAAuADEAMgAuADUpCi9Qcm9kdWNl\nciAo/" } ] }
Erreurs (documents)
{ "errors": "Vous devez spécifier un user_uid", "errors": "Vous devez spécifier un uid_provider", "errors": "Cet user_uid ne correspond à aucun utilisateur sur votre accès", "errors": "Cette assemblée est introuvable pour cet utilisateur", "errors": "Assemblée non cloturée", "errors": "Les documents de cette assemblée ne sont pas encore publiés", "errors": "Les documents de cette assemblée ont été dépubliés par le gestionnaire" }
| Code HTTP | Cas |
|---|---|
| 404 | Utilisateur ou assemblée introuvable |
| 409 | Assemblée non clôturée, documents pas encore publiés ou dépubliés par le gestionnaire |
Enregistrement d'un vote par correspondance pour un participant
Cette route vous permet d'enregistrer un vote par par correspondance pour un participant. Si aucune erreur est retournée, les votes sont enregistrés et validés sur Ag connect. Si une erreur apparaît, les votes valides seront enregistrés mais le vpc ne sera pas validé.
HTTP Request (vpc)
POST {base_url}/api/v1/assembly/import/vpc
JSON Parameter (vpc)
{ "user_uid": "XXXXXXXX", "uid_provider": "name_provider", "uid_assembly": "AGVPC", "uid_participant": "1", "signature_drawing": "image_en_base64", "signature_datetime": "2021-07-07T22:46:29.000+02:00", "signature_user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/53736", "signature_user_ip": "259.259.259.259", "resolutions": [ { "uid": "1", "answer_classic": "yes" }, { "uid": "2", "answer_classic": "no" }, { "uid": "3", "answer_classic": "abstention" }, { "uid": "4", "answer_custom": "1,2,3,4" } ] }
Type de réponse answer_classic (vpc)
| Code | Type | Description |
|---|---|---|
| yes | string | Oui à la résolution |
| no | string | Non à la résolution |
| abstention | string | Abstention à la résolution |
Type de réponse answer_custom (vpc)
Dans ce cas précis, la résolution est sur une question à choix multiples, il suffit de renseigner les choix possibles séparés par une
,
Les choix transmis doivent tous figurer parmi ceux ouverts par la résolution, et leur nombre ne doit pas dépasser le maximum qu'elle autorise. Un seul choix inconnu rejette le vote entier : les autres choix ne sont pas enregistrés à sa place, car un bulletin amputé serait indistinguable d'un vote réellement exprimé au moment du dépouillement. Le vote apparaît alors dans le journal d'importation en
rejected, et il vous suffit de corriger le flux puis de rejouer l'appel.| Node | Type | Description Requis |
|---|---|---|
| user_uid | string | Uid de l'utilisateur (ou plus exactement identifiant unique de l’agence) pour lequel vous voulez obtenir l'assemblée |
| uid_provider | string | Uid provider (identifiant unique du partenaire qui fait appel à l’API. Cet identifiant est fourni à la création du partenariat et ne pourra plus être modifié) |
| uid_assembly | string | Id (identifiant unique) de l'assemblée dans votre système |
| uid_participant | uuid | Id du participant dans votre système |
| signature_drawing | string | Image de la signature du participant en base 64 |
| signature_datetime | datetime | Date de la signature du participant |
signature_user_agent |
string | User agent utilisé lors de la signature |
signature_user_ip |
string | IP utilisé lors de la signature |
| resolutions | array | Liste des résolutions |
| uid | uuid | Id de la résolution dans votre système |
| answer_classic | string | Objet Type de réponse answer_classic |
| answer_custom | string | Objet Type de réponse answer_custom |
Réponse (vpc)
Le statut HTTP porte le verdict : 200 si le vote est enregistré et validé, 422 sinon. Le corps est identique dans les deux cas :
success (booléen), errors, une liste de messages en texte brut — des avertissements peuvent accompagner un succès (par exemple un vote invalide retombé en abstention) — et import_uid, l'identifiant de corrélation qui permet de retrouver l'entrée correspondante dans le journal d'importation.{ "success": true, "errors": [], "import_uid": "3f1c2a9e-6f6b-4c1e-9a3d-2b8e4f5a6c7d" }
Erreurs (vpc)
En HTTP 422 :
{ "success": false, "errors": [ "Resolution with uid '3': Invalid vote, 'ne se prononce pas' doesn't exist, vote will be 'abstention'", "Resolution with uid 's' doesn't exist, skipping !" ], "import_uid": "3f1c2a9e-6f6b-4c1e-9a3d-2b8e4f5a6c7d" }
Une assemblée ou un participant introuvables répondent en HTTP 404 (
"Cette assemblée est introuvable pour cet utilisateur", "Ce participant est introuvable sur cette assemblée").Enregistrement d'un vote par correspondance pour plusieurs participants
Cette route vous permet d'enregistrer un vote par par correspondance pour plusieurs participants. Une tâche de fond sera lancé par Ag connect pour importer les votes. Il vous faudra consulter les logs ensuite pour avoir le retour de l'importation.
HTTP Request (vpcm)
POST {base_url}/api/v1/assembly/import/vpcs
JSON Parameter (vpcm)
{ "user_uid": "54X99996", "uid_provider": "crypto", "uid_assembly": "AGVPC", "participants": [ { "uid_participant": "1", "signature_drawing": "image_en_base64", "signature_datetime": "2021-07-07T22:46:29.000+02:00", "signature_user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/53736", "signature_user_ip": "127.0.0.1", "resolutions": [ { "uid": "1", "answer_classic": "yes", "answer_custom": "1,2,3,4" }, { "uid": "2", "answer_classic": "no", "answer_custom": "1,2,3,4" }, { "uid": "3", "answer_classic": "abstention", "answer_custom": "1,2,3,4" }, { "uid": "s", "answer_classic": "abstention", "answer_custom": "1,2,3,4" }, { "uid": "4", "answer_classic": "michel", "answer_custom": "1" } ] }, { "uid_participant": "2", "signature_drawing": "image_en_base64", "signature_datetime": "2021-07-07T22:46:29.000+02:00", "signature_user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/53736", "signature_user_ip": "127.0.0.1", "resolutions": [ { "uid": "1", "answer_classic": "yes", "answer_custom": "1,2,3,4" }, { "uid": "2", "answer_classic": "no", "answer_custom": "1,2,3,4" }, { "uid": "3", "answer_classic": "abstention", "answer_custom": "1,2,3,4" }, { "uid": "4", "answer_classic": "yes", "answer_custom": "1,2,3,4,5,6" } ] } ] }
Type de réponse answer_classic (vpcm)
| Code | Type | Description |
|---|---|---|
| yes | string | Oui à la résolution |
| no | string | Non à la résolution |
| abstention | string | Abstention à la résolution |
Type de réponse answer_custom (vpcm)
Dans ce cas précis, la résolution est sur une question à choix multiples, il suffit de renseigner les choix possibles séparés par une
,
Les choix transmis doivent tous figurer parmi ceux ouverts par la résolution, et leur nombre ne doit pas dépasser le maximum qu'elle autorise. Un seul choix inconnu rejette le vote entier : les autres choix ne sont pas enregistrés à sa place, car un bulletin amputé serait indistinguable d'un vote réellement exprimé au moment du dépouillement. Le vote apparaît alors dans le journal d'importation en
rejected, et il vous suffit de corriger le flux puis de rejouer l'appel.| Node | Type | Description |
|---|---|---|
| user_uid | string | Uid de l'utilisateur (ou plus exactement identifiant unique de l’agence) pour lequel vous voulez obtenir l'assemblée |
| uid_provider | string | Uid provider (identifiant unique du partenaire qui fait appel à l’API. Cet identifiant est fourni à la création du partenariat et ne pourra plus être modifié) |
| uid_assembly | string | Id (identifiant unique) de l'assemblée dans votre système |
| uid_participant | uuid | Id du participant dans votre système |
| signature_drawing | string | Image de la signature du participant en base 64 |
| signature_datetime | datetime | Date de la signature du participant |
signature_user_agent |
string | User agent utilisé lors de la signature |
signature_user_ip |
string | IP utilisé lors de la signature |
| resolutions | array | Liste des résolutions |
| uid | uuid | Id de la résolution dans votre système |
| answer_classic | string | Objet Type de réponse answer_classic |
| answer_custom | string | Objet Type de réponse answer_custom |
Réponse (vpcm)
La requête acceptée répond en HTTP 202.
import_uid est l'identifiant de corrélation de cette importation : le résultat est à consulter dans le journal d'importation, où il permet de retrouver l'entrée correspondante.{ "message": "Votre demande est en cours de traitement", "import_uid": "3f1c2a9e-6f6b-4c1e-9a3d-2b8e4f5a6c7d" }
Erreurs (vpcm)
| Code HTTP | Cas |
|---|---|
| 400 |
uid_assembly, user_uid ou uid_provider absent |
| 403 | Le uid_provider fourni ne correspond pas aux identifiants API utilisés (apiKey) |
| 404 | Utilisateur ou assemblée introuvable |
| 409 | L'assemblée n'est pas au statut convoquée |
Journal d'importation
Cette route vous permet de consulter le journal d'importation sur une assemblée : le statut de chaque import, les éléments écartés ou importés avec adaptation, et les compteurs reçus/importés par section. L'
import_uid rendu au moment de la création vous permet de retrouver l'entrée correspondant à votre requête.HTTP Request (journal)
GET {base_url}/api/v1/assembly/log
QUERY Parameters (journal)
| Parameter | Type | Description |
|---|---|---|
| user_uid | string | Uid de l'utilisateur (ou plus exactement identifiant unique de l’agence) pour lequel vous voulez obtenir l'assemblée |
| uid_provider | string | Uid provider (identifiant unique du partenaire qui fait appel à l’API. Cet identifiant est fourni à la création du partenariat et ne pourra plus être modifié) |
| uid_assembly | string | Id (identifiant unique) de l'assemblée dans votre système |
Réponse (journal)
Chaque entrée de
logs décrit un import, du plus récent au plus ancien :| Node | Type | Description |
|---|---|---|
| import_uid | uuid | Identifiant de corrélation de l'entrée. Il vous est rendu à l'acceptation de la requête sur la création d'assemblée et les votes par correspondance ; sur les imports FTP il existe mais ne vous est pas communiqué, le dépôt d'un fichier ne donnant pas lieu à une réponse. Null sur les imports antérieurs à ce suivi |
| status | string |
pending (en attente), running (en cours), success (tout importé), partial (au moins un élément écarté ou adapté), failed (import en échec) |
| with_errors | integer | Signal binaire historique : 1 dès qu'un élément est en erreur ou n'a pas pu être validé, y compris quand le reste de l'import est passé. Il ne dit pas que l'import a échoué — pour le verdict, lisez status
|
| started_at | datetime | Début du traitement |
| finished_at | datetime | Fin du traitement |
| rejected_items | array | Éléments écartés ou adaptés — voir ci-dessous |
| sections_counts | hash | Compteurs received / imported par section (participant, resolution, assembly_document, resolution_document, vote) ; section absente si rien reçu |
| log | string | Journal technique détaillé |
Chaque élément de
rejected_items :| Node | Type | Description |
|---|---|---|
| type | string |
participant, resolution, assembly_document, resolution_document ou vote (imports de votes par correspondance) |
| uid | string | Uid de l'élément dans votre système (null s'il n'a pas pu être lu) |
| label | string | Libellé de l'élément (nom, titre...) |
| severity | string |
rejected = non importé, warning = importé mais adapté (ex : clé de répartition remplacée par la générale) |
| reason | string | Motif en langage métier |
{ "uid": "AGVPC", "logs": [ { "import_uid": "f0e6c1de-3f7a-4a4e-9c9d-1a2b3c4d5e6f", "status": "partial", "with_errors": 0, "started_at": "2026-08-17T08:54:47.000+02:00", "finished_at": "2026-08-17T08:54:49.000+02:00", "rejected_items": [ { "type": "resolution", "uid": "R1", "label": "Travaux toiture", "severity": "warning", "reason": "Clé de répartition CLE-TOITURE inconnue, la clé générale a été utilisée à la place" }, { "type": "resolution", "uid": "R2", "label": "Budget prévisionnel", "severity": "rejected", "reason": "Type de majorité inconnu : majorite_bidon" } ], "sections_counts": { "participant": {"received": 3, "imported": 3}, "resolution": {"received": 3, "imported": 2} }, "log": "==============================\nStarting entity\n==============================" }, { "import_uid": "3f1c2a9e-6f6b-4c1e-9a3d-2b8e4f5a6c7d", "status": "partial", "with_errors": 1, "started_at": "2026-08-17T09:12:03.000+02:00", "finished_at": "2026-08-17T09:12:04.000+02:00", "rejected_items": [ { "type": "vote", "uid": "R4", "label": "Michel Dupont", "severity": "rejected", "reason": "La résolution n'existe pas sur cette assemblée" }, { "type": "participant", "uid": "1", "label": "Michel Dupont", "severity": "warning", "reason": "Des votes sont en erreur, le vote par correspondance n'a pas été validé pour ce participant" } ], "sections_counts": { "participant": {"received": 2, "imported": 1}, "vote": {"received": 8, "imported": 7} }, "log": "==============================\nVPC Import worker started 17 August 2026 at 09:12\n==============================" } ] }
Import via FTP
Introduction (ftp_import)
Il est possible d'importer les assemblée générales d'un client via FTP en nous déposant un fichier zip contenant un JSON correspondant à l'AG à importer et ses documents associés. Pour utiliser le FTP, vous devez nous contacter à info@ag-connect.com. Après vérification nous vous fourniront un login/pass pour déposez votre fichier.
Nom de fichier (ftp_import)
Le nom du fichier zip doit être de la forme
Les documents importables sont limités à une taille maximum de 20mo.
uid_user_
provider_timestamp.zip (ex: G7854provider1025110211.zip). Le fichier JSON requis est le même modèle que celui utilisé pour l'API.
Les documents importables sont limités à une taille maximum de 20mo.
Prise en compte des documents/avatars (ftp_import)
Il suffit de mettre le nom du fichier à la place d'une url pour les documents des AG, des résolutions et des avatar pour les copropriétaires.