POST /tokens returns. It is the same call as POST /netsapiensjs. No bearer token is needed. The request must arrive over HTTPS. Send the client_id and client_secret of an OAuth client in the body, or as HTTP Basic credentials in the Authorization header. It accepts the same grant_type values as POST /tokens, including password and authorization_code. When the user still needs MFA, the response carries scope mfa_required and a limited token: send it as access_token to POST /tokens with grant_type mfa. The response also sets the ns_access_token and ns_refresh_token cookies. A plain HTTP request returns 403. Missing or invalid client credentials return 401.token and refresh, or a limited token with scope mfa_required.curl --location 'https://awqacore01.crexendocloud.com/ns-api/v2/authCode' \
--header 'Content-Type: application/json' \
--data '{
"grant_type": "password",
"client_id": "",
"client_secret": "",
"username": "{{username}}",
"password": "{{password}}"
}'{
"token": "{{jwt_access_token}}",
"refresh": "{{jwt_refresh_token}}",
"auth_requirement": "login_name_and_password",
"allow_user_primary_email_edit": false,
"account_recovery_user_primary_email": false,
"email": "user@example.com",
"domain": "example.com"
}