[2026-06-06 17:07:27] INFO: Database connection established {"host":"51.79.79.8","port":"15432","name":"nettown_db"} [2026-06-10 22:30:05] WARNING: JWT authentication failed {"error":"Signature verification failed"} [2026-06-10 22:31:24] ERROR: Failed to connect to database {"host":"localhost","port":"5432","name":"nettown","error":"SQLSTATE[08006] [7] connection to server at \"localhost\" (127.0.0.1), port 5432 failed: fe_sendauth: no password supplied"} [2026-06-10 22:32:24] ERROR: Failed to connect to database {"host":"localhost","port":"5432","name":"nettown","error":"SQLSTATE[08006] [7] connection to server at \"localhost\" (127.0.0.1), port 5432 failed: fe_sendauth: no password supplied"} [2026-06-10 22:32:48] INFO: Database connection established {"host":"51.79.79.8","port":"15432","name":"nettown_db"} [2026-06-11 03:16:02] WARNING: JWT authentication failed {"error":"Expired token"} [2026-06-11 03:16:30] INFO: Database connection established {"host":"51.79.79.8","port":"15432","name":"nettown_db"} [2026-06-11 03:16:45] WARNING: Unipile returned an error {"path":"/hosted/accounts/link","status":401,"response":{"status":401,"type":"errors/missing_credentials","title":"Missing credentials"}} [2026-06-11 03:16:45] ERROR: Failed to create Unipile hosted auth link {"error":"Unipile returned HTTP 401."} [2026-06-11 03:18:44] INFO: Database connection established {"host":"51.79.79.8","port":"15432","name":"nettown_db"} [2026-06-11 03:18:48] WARNING: Unipile returned an error {"path":"/hosted/accounts/link","status":400,"response":{"status":400,"type":"errors/invalid_parameters","title":"Invalid parameters","detail":"One or more request parameters are invalid or missing.\n{\"type\":61,\"schema\":{\"anyOf\":[{\"type\":\"object\",\"properties\":{\"expiresOn\":{\"description\":\"An ISO 8601 UTC datetime (YYYY-MM-DDTHH:MM:SS.sssZ). ⚠️ All links expire upon daily restart, regardless of their stated expiration date. A new link must be generated each time a user clicks on your app to connect.\",\"example\":\"2025-12-31T23:59:59.999Z\",\"pattern\":\"^[1-2]\\\\d{3}-[0-1]\\\\d-[0-3]\\\\dT\\\\d{2}:\\\\d{2}:\\\\d{2}.\\\\d{3}Z$\"},\"name\":{\"minLength\":1,\"description\":\"This field will be sent back to you in the notify_url to help match the added account with your user.\",\"type\":\"string\"},\"success_redirect_url\":{\"description\":\"A url where you might want to redirect the user in case of a successful authentication.\"},\"failure_redirect_url\":{\"description\":\"A url where you might want to redirect the user in case of a failed authentication.\"},\"bypass_success_screen\":{\"description\":\"Whether to bypass the hosted auth success screen before accessing the success_redirect_url.\",\"type\":\"boolean\"},\"notify_url\":{\"description\":\"A url where you can be notified about events related to the authentication process.\"},\"disabled_features\":{\"description\":\"An array of features that should be disabled in this account. Accepted values : linkedin_recruiter | linkedin_sales_navigator | linkedin_organizations_mailboxes.\",\"type\":\"array\",\"items\":{\"type\":\"string\",\"enum\":[\"linkedin_recruiter\",\"linkedin_sales_navigator\",\"linkedin_organizations_mailboxes\"]}},\"disabled_options\":{\"description\":\"An array of options that should be disabled in hosted auth interface. Accepted values : proxy | autoproxy | cookie_auth | credentials_auth | qrcode_auth | pairing_code_auth | sync_limit | language. `qrcode_auth` and `pairing_code_auth` are currently supported for WhatsApp only.\",\"type\":\"array\",\"items\":{\"type\":\"string\",\"enum\":[\"proxy\",\"autoproxy\",\"cookie_auth\",\"credentials_auth\",\"qrcode_auth\",\"pairing_code_auth\",\"sync_limit\",\"language\"]}},\"proxy\":{\"type\":\"object\",\"properties\":{\"protocol\":{\"type\":\"string\",\"enum\":[\"https\",\"http\",\"socks5\"]},\"port\":{\"type\":\"number\"},\"host\":{\"type\":\"string\"},\"username\":{\"description\":\"Optional username for proxy’s authentication.\",\"type\":\"string\"},\"password\":{\"description\":\"Optional password for proxy’s authentication.\",\"type\":\"string\"}},\"required\":[\"port\",\"host\"]},\"api_url\":{\"description\":\"The url of your Unipile server : https://{subdomain}.unipile.com:{port}\"},\"sync_limit\":{\"type\":\"object\",\"properties\":{\"MAILING\":{\"const\":\"NO_HISTORY_SYNC\",\"type\":\"string\"},\"MESSAGING\":{\"description\":\"Set a sync limit either for chats, messages or both. Chats limit will apply to each inbox, whereas messages limit will apply to each chat. No value will not apply any limit (default behaviour). Providers partial support.\",\"type\":\"object\",\"properties\":{\"chats\":{\"description\":\"Either a UTC Datetime to start sync from, or a quantity of data.\",\"anyOf\":[{\"description\":\"An ISO 8601 UTC datetime (YYYY-MM-DDTHH:MM:SS.sssZ). ⚠️ All links expire upon daily restart, regardless of their stated expiration date. A new link must be generated each time a user clicks on your app to connect.\",\"example\":\"2025-12-31T23:59:59.999Z\",\"pattern\":\"^[1-2]\\\\d{3}-[0-1]\\\\d-[0-3]\\\\dT\\\\d{2}:\\\\d{2}:\\\\d{2}.\\\\d{3}Z$\"},{\"minimum\":0,\"description\":\"The quantity of data that should be synced from data history. 0 will not sync history.\",\"type\":\"number\"}]},\"messages\":{\"description\":\"Either a UTC Datetime to start sync from, or a quantity of data.\",\"anyOf\":[{\"description\":\"An ISO 8601 UTC datetime (YYYY-MM-DDTHH:MM:SS.sssZ). ⚠️ All links expire upon daily restart, regardless of their stated expiration date. A new link must be generated each time a user clicks on your app to connect.\",\"example\":\"2025-12-31T23:59:59.999Z\",\"pattern\":\"^[1-2]\\\\d{3}-[0-1]\\\\d-[0-3]\\\\dT\\\\d{2}:\\\\d{2}:\\\\d{2}.\\\\d{3}Z$\"},{\"minimum\":0,\"description\":\"The quantity of data that should be synced from data history. 0 will not sync history.\",\"type\":\"number\"}]}}}}},\"google_scopes\":{\"description\":\"Optional comma-separated list of scopes to use for GOOGLE_OAUTH accounts\",\"format\":\"googleScopes\",\"type\":\"string\"},\"microsoft_scopes\":{\"description\":\"Optional comma-separated list of scopes to use for OUTLOOK accounts\",\"format\":\"microsoftScopes\",\"type\":\"string\"},\"type\":{\"description\":\"A litteral value to choose between a connection or a reconnection.\",\"const\":\"create\",\"type\":\"string\"},\"providers\":{\"description\":\"The providers for whom you want to propose to connect an account.\",\"anyOf\":[{\"title\":\"Any provider\",\"description\":\"Data type: string\",\"const\":\"*\",\"type\":\"string\"},{\"title\":\"Any mailing provider\",\"description\":\"Data type: string\",\"const\":\"*:MAILING\",\"type\":\"string\"},{\"title\":\"Any messaging provider\",\"description\":\"Data type: string\",\"const\":\"*:MESSAGING\",\"type\":\"string\"},{\"title\":\"Any calendar provider\",\"description\":\"Data type: string\",\"const\":\"*:CALENDAR\",\"type\":\"string\"},{\"title\":\"One or more providers\",\"description\":\"Data type: Array of strings. Accepted values: LINKEDIN | WHATSAPP | INSTAGRAM | MESSENGER | TELEGRAM | GOOGLE | OUTLOOK | MAIL | TWITTER\",\"type\":\"array\",\"items\":{\"type\":\"string\",\"enum\":[\"LINKEDIN\",\"WHATSAPP\",\"INSTAGRAM\",\"MESSENGER\",\"TELEGRAM\",\"GOOGLE\",\"OUTLOOK\",\"TWITTER\",\"MAIL\"]}}]}},\"required\":[\"expiresOn\",\"api_url\",\"type\",\"providers\"],\"title\":\"Connection link\"},{\"type\":\"object\",\"properties\":{\"expiresOn\":{\"description\":\"An ISO 8601 UTC datetime (YYYY-MM-DDTHH:MM:SS.sssZ). ⚠️ All links expire upon daily restart, regardless of their stated expiration date. A new link must be generated each time a user clicks on your app to connect.\",\"example\":\"2025-12-31T23:59:59.999Z\",\"pattern\":\"^[1-2]\\\\d{3}-[0-1]\\\\d-[0-3]\\\\dT\\\\d{2}:\\\\d{2}:\\\\d{2}.\\\\d{3}Z$\"},\"name\":{\"minLength\":1,\"description\":\"This field will be sent back to you in the notify_url to help match the added account with your user.\",\"type\":\"string\"},\"success_redirect_url\":{\"description\":\"A url where you might want to redirect the user in case of a successful authentication.\"},\"failure_redirect_url\":{\"description\":\"A url where you might want to redirect the user in case of a failed authentication.\"},\"bypass_success_screen\":{\"description\":\"Whether to bypass the hosted auth success screen before accessing the success_redirect_url.\",\"type\":\"boolean\"},\"notify_url\":{\"description\":\"A url where you can be notified about events related to the authentication process.\"},\"disabled_features\":{\"description\":\"An array of features that should be disabled in this account. Accepted values : linkedin_recruiter | linkedin_sales_navigator | linkedin_organizations_mailboxes.\",\"type\":\"array\",\"items\":{\"type\":\"string\",\"enum\":[\"linkedin_recruiter\",\"linkedin_sales_navigator\",\"linkedin_organizations_mailboxes\"]}},\"disabled_options\":{\"description\":\"An array of options that should be disabled in hosted auth interface. Accepted values : proxy | autoproxy | cookie_auth | credentials_auth | qrcode_auth | pairing_code_auth | sync_limit | language. `qrcode_auth` and `pairing_code_auth` are currently supported for WhatsApp only.\",\"type\":\"array\",\"items\":{\"type\":\"string\",\"enum\":[\"proxy\",\"autoproxy\",\"cookie_auth\",\"credentials_auth\",\"qrcode_auth\",\"pairing_code_auth\",\"sync_limit\",\"language\"]}},\"proxy\":{\"type\":\"object\",\"properties\":{\"protocol\":{\"type\":\"string\",\"enum\":[\"https\",\"http\",\"socks5\"]},\"port\":{\"type\":\"number\"},\"host\":{\"type\":\"string\"},\"username\":{\"description\":\"Optional username for proxy’s authentication.\",\"type\":\"string\"},\"password\":{\"description\":\"Optional password for proxy’s authentication.\",\"type\":\"string\"}},\"required\":[\"port\",\"host\"]},\"api_url\":{\"description\":\"The url of your Unipile server : https://{subdomain}.unipile.com:{port}\"},\"sync_limit\":{\"type\":\"object\",\"properties\":{\"MAILING\":{\"const\":\"NO_HISTORY_SYNC\",\"type\":\"string\"},\"MESSAGING\":{\"description\":\"Set a sync limit either for chats, messages or both. Chats limit will apply to each inbox, whereas messages limit will apply to each chat. No value will not apply any limit (default behaviour). Providers partial support.\",\"type\":\"object\",\"properties\":{\"chats\":{\"description\":\"Either a UTC Datetime to start sync from, or a quantity of data.\",\"anyOf\":[{\"description\":\"An ISO 8601 UTC datetime (YYYY-MM-DDTHH:MM:SS.sssZ). ⚠️ All links expire upon daily restart, regardless of their stated expiration date. A new link must be generated each time a user clicks on your app to connect.\",\"example\":\"2025-12-31T23:59:59.999Z\",\"pattern\":\"^[1-2]\\\\d{3}-[0-1]\\\\d-[0-3]\\\\dT\\\\d{2}:\\\\d{2}:\\\\d{2}.\\\\d{3}Z$\"},{\"minimum\":0,\"description\":\"The quantity of data that should be synced from data history. 0 will not sync history.\",\"type\":\"number\"}]},\"messages\":{\"description\":\"Either a UTC Datetime to start sync from, or a quantity of data.\",\"anyOf\":[{\"description\":\"An ISO 8601 UTC datetime (YYYY-MM-DDTHH:MM:SS.sssZ). ⚠️ All links expire upon daily restart, regardless of their stated expiration date. A new link must be generated each time a user clicks on your app to connect.\",\"example\":\"2025-12-31T23:59:59.999Z\",\"pattern\":\"^[1-2]\\\\d{3}-[0-1]\\\\d-[0-3]\\\\dT\\\\d{2}:\\\\d{2}:\\\\d{2}.\\\\d{3}Z$\"},{\"minimum\":0,\"description\":\"The quantity of data that should be synced from data history. 0 will not sync history.\",\"type\":\"number\"}]}}}}},\"google_scopes\":{\"description\":\"Optional comma-separated list of scopes to use for GOOGLE_OAUTH accounts\",\"format\":\"googleScopes\",\"type\":\"string\"},\"microsoft_scopes\":{\"description\":\"Optional comma-separated list of scopes to use for OUTLOOK accounts\",\"format\":\"microsoftScopes\",\"type\":\"string\"},\"type\":{\"description\":\"A litteral value to choose between a connection or a reconnection.\",\"const\":\"reconnect\",\"type\":\"string\"},\"reconnect_account\":{\"description\":\"The id of the account to reconnect.\",\"minLength\":1,\"type\":\"string\"}},\"required\":[\"expiresOn\",\"api_url\",\"type\",\"reconnect_account\"],\"title\":\"Reconnection link\"}]},\"path\":\"\",\"value\":{\"type\":\"create\",\"providers\":[\"WHATSAPP\"],\"api_url\":\"https://api19.unipile.com:14903\",\"expiresOn\":\"2026-06-11T03:48:46+00:00\",\"notify_url\":\"https://127.0.0.1:8080/v1/webhooks/unipile/hosted-auth?secret=psdawwdsujgfnUvyHdgasuduamoaskdpohoiasdioqwoiPOSdopiasjdoiPOSdoaisdjasopkd\",\"success_redirect_url\":\"https://127.0.0.1:8080/v1/integrations/unipile/whatsapp/success\",\"failure_redirect_url\":\"https://127.0.0.1:8080/v1/integrations/unipile/whatsapp/failure\",\"name\":\"eyJjb21wYW55X2lkIjoxLCJ1c2VyX2lkIjoxLCJvcGVyYXRvcl9pZCI6MCwiaW50ZWdyYXRpb25faWQiOjAsIm5vbmNlIjoiNzEyMmU3YTJmYmI1MzU2ZmEwYjRmNGI0IiwiaWF0IjoxNzgxMTQ3OTI2fQ.2448f2c687bcb96b0ff7ce44714f89fa14500ffc3dd1b67a8cd9a4769456a4cd\"},\"message\":\"Expected union value\"}"}} [2026-06-11 03:18:48] ERROR: Failed to create Unipile hosted auth link {"error":"Unipile returned HTTP 400."} [2026-06-11 03:19:12] INFO: Database connection established {"host":"51.79.79.8","port":"15432","name":"nettown_db"} [2026-06-11 03:19:15] WARNING: Unipile returned an error {"path":"/hosted/accounts/link","status":400,"response":{"status":400,"type":"errors/invalid_parameters","title":"Invalid parameters","detail":"One or more request parameters are invalid or missing.\n{\"type\":61,\"schema\":{\"anyOf\":[{\"type\":\"object\",\"properties\":{\"expiresOn\":{\"description\":\"An ISO 8601 UTC datetime (YYYY-MM-DDTHH:MM:SS.sssZ). ⚠️ All links expire upon daily restart, regardless of their stated expiration date. A new link must be generated each time a user clicks on your app to connect.\",\"example\":\"2025-12-31T23:59:59.999Z\",\"pattern\":\"^[1-2]\\\\d{3}-[0-1]\\\\d-[0-3]\\\\dT\\\\d{2}:\\\\d{2}:\\\\d{2}.\\\\d{3}Z$\"},\"name\":{\"minLength\":1,\"description\":\"This field will be sent back to you in the notify_url to help match the added account with your user.\",\"type\":\"string\"},\"success_redirect_url\":{\"description\":\"A url where you might want to redirect the user in case of a successful authentication.\"},\"failure_redirect_url\":{\"description\":\"A url where you might want to redirect the user in case of a failed authentication.\"},\"bypass_success_screen\":{\"description\":\"Whether to bypass the hosted auth success screen before accessing the success_redirect_url.\",\"type\":\"boolean\"},\"notify_url\":{\"description\":\"A url where you can be notified about events related to the authentication process.\"},\"disabled_features\":{\"description\":\"An array of features that should be disabled in this account. Accepted values : linkedin_recruiter | linkedin_sales_navigator | linkedin_organizations_mailboxes.\",\"type\":\"array\",\"items\":{\"type\":\"string\",\"enum\":[\"linkedin_recruiter\",\"linkedin_sales_navigator\",\"linkedin_organizations_mailboxes\"]}},\"disabled_options\":{\"description\":\"An array of options that should be disabled in hosted auth interface. Accepted values : proxy | autoproxy | cookie_auth | credentials_auth | qrcode_auth | pairing_code_auth | sync_limit | language. `qrcode_auth` and `pairing_code_auth` are currently supported for WhatsApp only.\",\"type\":\"array\",\"items\":{\"type\":\"string\",\"enum\":[\"proxy\",\"autoproxy\",\"cookie_auth\",\"credentials_auth\",\"qrcode_auth\",\"pairing_code_auth\",\"sync_limit\",\"language\"]}},\"proxy\":{\"type\":\"object\",\"properties\":{\"protocol\":{\"type\":\"string\",\"enum\":[\"https\",\"http\",\"socks5\"]},\"port\":{\"type\":\"number\"},\"host\":{\"type\":\"string\"},\"username\":{\"description\":\"Optional username for proxy’s authentication.\",\"type\":\"string\"},\"password\":{\"description\":\"Optional password for proxy’s authentication.\",\"type\":\"string\"}},\"required\":[\"port\",\"host\"]},\"api_url\":{\"description\":\"The url of your Unipile server : https://{subdomain}.unipile.com:{port}\"},\"sync_limit\":{\"type\":\"object\",\"properties\":{\"MAILING\":{\"const\":\"NO_HISTORY_SYNC\",\"type\":\"string\"},\"MESSAGING\":{\"description\":\"Set a sync limit either for chats, messages or both. Chats limit will apply to each inbox, whereas messages limit will apply to each chat. No value will not apply any limit (default behaviour). Providers partial support.\",\"type\":\"object\",\"properties\":{\"chats\":{\"description\":\"Either a UTC Datetime to start sync from, or a quantity of data.\",\"anyOf\":[{\"description\":\"An ISO 8601 UTC datetime (YYYY-MM-DDTHH:MM:SS.sssZ). ⚠️ All links expire upon daily restart, regardless of their stated expiration date. A new link must be generated each time a user clicks on your app to connect.\",\"example\":\"2025-12-31T23:59:59.999Z\",\"pattern\":\"^[1-2]\\\\d{3}-[0-1]\\\\d-[0-3]\\\\dT\\\\d{2}:\\\\d{2}:\\\\d{2}.\\\\d{3}Z$\"},{\"minimum\":0,\"description\":\"The quantity of data that should be synced from data history. 0 will not sync history.\",\"type\":\"number\"}]},\"messages\":{\"description\":\"Either a UTC Datetime to start sync from, or a quantity of data.\",\"anyOf\":[{\"description\":\"An ISO 8601 UTC datetime (YYYY-MM-DDTHH:MM:SS.sssZ). ⚠️ All links expire upon daily restart, regardless of their stated expiration date. A new link must be generated each time a user clicks on your app to connect.\",\"example\":\"2025-12-31T23:59:59.999Z\",\"pattern\":\"^[1-2]\\\\d{3}-[0-1]\\\\d-[0-3]\\\\dT\\\\d{2}:\\\\d{2}:\\\\d{2}.\\\\d{3}Z$\"},{\"minimum\":0,\"description\":\"The quantity of data that should be synced from data history. 0 will not sync history.\",\"type\":\"number\"}]}}}}},\"google_scopes\":{\"description\":\"Optional comma-separated list of scopes to use for GOOGLE_OAUTH accounts\",\"format\":\"googleScopes\",\"type\":\"string\"},\"microsoft_scopes\":{\"description\":\"Optional comma-separated list of scopes to use for OUTLOOK accounts\",\"format\":\"microsoftScopes\",\"type\":\"string\"},\"type\":{\"description\":\"A litteral value to choose between a connection or a reconnection.\",\"const\":\"create\",\"type\":\"string\"},\"providers\":{\"description\":\"The providers for whom you want to propose to connect an account.\",\"anyOf\":[{\"title\":\"Any provider\",\"description\":\"Data type: string\",\"const\":\"*\",\"type\":\"string\"},{\"title\":\"Any mailing provider\",\"description\":\"Data type: string\",\"const\":\"*:MAILING\",\"type\":\"string\"},{\"title\":\"Any messaging provider\",\"description\":\"Data type: string\",\"const\":\"*:MESSAGING\",\"type\":\"string\"},{\"title\":\"Any calendar provider\",\"description\":\"Data type: string\",\"const\":\"*:CALENDAR\",\"type\":\"string\"},{\"title\":\"One or more providers\",\"description\":\"Data type: Array of strings. Accepted values: LINKEDIN | WHATSAPP | INSTAGRAM | MESSENGER | TELEGRAM | GOOGLE | OUTLOOK | MAIL | TWITTER\",\"type\":\"array\",\"items\":{\"type\":\"string\",\"enum\":[\"LINKEDIN\",\"WHATSAPP\",\"INSTAGRAM\",\"MESSENGER\",\"TELEGRAM\",\"GOOGLE\",\"OUTLOOK\",\"TWITTER\",\"MAIL\"]}}]}},\"required\":[\"expiresOn\",\"api_url\",\"type\",\"providers\"],\"title\":\"Connection link\"},{\"type\":\"object\",\"properties\":{\"expiresOn\":{\"description\":\"An ISO 8601 UTC datetime (YYYY-MM-DDTHH:MM:SS.sssZ). ⚠️ All links expire upon daily restart, regardless of their stated expiration date. A new link must be generated each time a user clicks on your app to connect.\",\"example\":\"2025-12-31T23:59:59.999Z\",\"pattern\":\"^[1-2]\\\\d{3}-[0-1]\\\\d-[0-3]\\\\dT\\\\d{2}:\\\\d{2}:\\\\d{2}.\\\\d{3}Z$\"},\"name\":{\"minLength\":1,\"description\":\"This field will be sent back to you in the notify_url to help match the added account with your user.\",\"type\":\"string\"},\"success_redirect_url\":{\"description\":\"A url where you might want to redirect the user in case of a successful authentication.\"},\"failure_redirect_url\":{\"description\":\"A url where you might want to redirect the user in case of a failed authentication.\"},\"bypass_success_screen\":{\"description\":\"Whether to bypass the hosted auth success screen before accessing the success_redirect_url.\",\"type\":\"boolean\"},\"notify_url\":{\"description\":\"A url where you can be notified about events related to the authentication process.\"},\"disabled_features\":{\"description\":\"An array of features that should be disabled in this account. Accepted values : linkedin_recruiter | linkedin_sales_navigator | linkedin_organizations_mailboxes.\",\"type\":\"array\",\"items\":{\"type\":\"string\",\"enum\":[\"linkedin_recruiter\",\"linkedin_sales_navigator\",\"linkedin_organizations_mailboxes\"]}},\"disabled_options\":{\"description\":\"An array of options that should be disabled in hosted auth interface. Accepted values : proxy | autoproxy | cookie_auth | credentials_auth | qrcode_auth | pairing_code_auth | sync_limit | language. `qrcode_auth` and `pairing_code_auth` are currently supported for WhatsApp only.\",\"type\":\"array\",\"items\":{\"type\":\"string\",\"enum\":[\"proxy\",\"autoproxy\",\"cookie_auth\",\"credentials_auth\",\"qrcode_auth\",\"pairing_code_auth\",\"sync_limit\",\"language\"]}},\"proxy\":{\"type\":\"object\",\"properties\":{\"protocol\":{\"type\":\"string\",\"enum\":[\"https\",\"http\",\"socks5\"]},\"port\":{\"type\":\"number\"},\"host\":{\"type\":\"string\"},\"username\":{\"description\":\"Optional username for proxy’s authentication.\",\"type\":\"string\"},\"password\":{\"description\":\"Optional password for proxy’s authentication.\",\"type\":\"string\"}},\"required\":[\"port\",\"host\"]},\"api_url\":{\"description\":\"The url of your Unipile server : https://{subdomain}.unipile.com:{port}\"},\"sync_limit\":{\"type\":\"object\",\"properties\":{\"MAILING\":{\"const\":\"NO_HISTORY_SYNC\",\"type\":\"string\"},\"MESSAGING\":{\"description\":\"Set a sync limit either for chats, messages or both. Chats limit will apply to each inbox, whereas messages limit will apply to each chat. No value will not apply any limit (default behaviour). Providers partial support.\",\"type\":\"object\",\"properties\":{\"chats\":{\"description\":\"Either a UTC Datetime to start sync from, or a quantity of data.\",\"anyOf\":[{\"description\":\"An ISO 8601 UTC datetime (YYYY-MM-DDTHH:MM:SS.sssZ). ⚠️ All links expire upon daily restart, regardless of their stated expiration date. A new link must be generated each time a user clicks on your app to connect.\",\"example\":\"2025-12-31T23:59:59.999Z\",\"pattern\":\"^[1-2]\\\\d{3}-[0-1]\\\\d-[0-3]\\\\dT\\\\d{2}:\\\\d{2}:\\\\d{2}.\\\\d{3}Z$\"},{\"minimum\":0,\"description\":\"The quantity of data that should be synced from data history. 0 will not sync history.\",\"type\":\"number\"}]},\"messages\":{\"description\":\"Either a UTC Datetime to start sync from, or a quantity of data.\",\"anyOf\":[{\"description\":\"An ISO 8601 UTC datetime (YYYY-MM-DDTHH:MM:SS.sssZ). ⚠️ All links expire upon daily restart, regardless of their stated expiration date. A new link must be generated each time a user clicks on your app to connect.\",\"example\":\"2025-12-31T23:59:59.999Z\",\"pattern\":\"^[1-2]\\\\d{3}-[0-1]\\\\d-[0-3]\\\\dT\\\\d{2}:\\\\d{2}:\\\\d{2}.\\\\d{3}Z$\"},{\"minimum\":0,\"description\":\"The quantity of data that should be synced from data history. 0 will not sync history.\",\"type\":\"number\"}]}}}}},\"google_scopes\":{\"description\":\"Optional comma-separated list of scopes to use for GOOGLE_OAUTH accounts\",\"format\":\"googleScopes\",\"type\":\"string\"},\"microsoft_scopes\":{\"description\":\"Optional comma-separated list of scopes to use for OUTLOOK accounts\",\"format\":\"microsoftScopes\",\"type\":\"string\"},\"type\":{\"description\":\"A litteral value to choose between a connection or a reconnection.\",\"const\":\"reconnect\",\"type\":\"string\"},\"reconnect_account\":{\"description\":\"The id of the account to reconnect.\",\"minLength\":1,\"type\":\"string\"}},\"required\":[\"expiresOn\",\"api_url\",\"type\",\"reconnect_account\"],\"title\":\"Reconnection link\"}]},\"path\":\"\",\"value\":{\"type\":\"create\",\"providers\":[\"WHATSAPP\"],\"api_url\":\"https://api19.unipile.com:14903\",\"expiresOn\":\"2026-06-11T03:49:14+00:00\",\"notify_url\":\"https://127.0.0.1:8080/v1/webhooks/unipile/hosted-auth?secret=psdawwdsujgfnUvyHdgasuduamoaskdpohoiasdioqwoiPOSdopiasjdoiPOSdoaisdjasopkd\",\"success_redirect_url\":\"https://127.0.0.1:8080/v1/integrations/unipile/whatsapp/success\",\"failure_redirect_url\":\"https://127.0.0.1:8080/v1/integrations/unipile/whatsapp/failure\",\"name\":\"eyJjb21wYW55X2lkIjoxLCJ1c2VyX2lkIjoxLCJvcGVyYXRvcl9pZCI6MCwiaW50ZWdyYXRpb25faWQiOjAsIm5vbmNlIjoiZDc5NjZiNjdhMjc3ODI3N2VmZDY5YjRhIiwiaWF0IjoxNzgxMTQ3OTU0fQ.471376a50d3833108759dee0e1296c25df5f24e0148d928203e2b00bed39a0b8\"},\"message\":\"Expected union value\"}"}} [2026-06-11 03:19:15] ERROR: Failed to create Unipile hosted auth link {"error":"Unipile returned HTTP 400."} [2026-06-11 03:20:39] INFO: Database connection established {"host":"51.79.79.8","port":"15432","name":"nettown_db"} [2026-06-11 15:33:48] INFO: Database connection established {"host":"51.79.79.8","port":"15432","name":"nettown_db"} [2026-06-11 15:33:52] WARNING: CRM webhook rejected: invalid signature {"company_id":3} [2026-06-11 15:36:24] INFO: Database connection established {"host":"51.79.79.8","port":"15432","name":"nettown_db"} [2026-06-11 15:36:28] WARNING: CRM webhook rejected: invalid signature {"company_id":3}