Airbyte Netsuite Connector 400 Client Error

  • Is this your first time deploying Airbyte?: No
  • OS Version / Instance: Amazon Linux version 2
  • Memory / Disk:
  • Deployment: Docker to AWS EC2
  • Airbyte Version: 40.10
  • Source name/version: Netsuite 0.1.1
  • Destination name/version: S3
  • Step: We are following the provided documentation for setting up the Netsuite Connector. When we attempt step 3: Set up Source Connection in Airbyte OSS
  • Description: Netsuite logs show successful authentication with access token. But Airbyte connection test fails showing the error below. Can anyone provide clarity on how to resolve this error?

ERROR:

The connection tests failed.HTTPError('400 Client Error: Bad Request for url: https://{accountId}.suitetalk.api.netsuite.com/services/rest/record/v1/contact?limit=1')

PERMISSIONS IN NETSUITE INCLUDE (BUT ARE NOT LIMITED TO):

  • Login Using Access Tokens (FULL)
  • REST Web Services (FULL)
  • SOAP Web Services (FULL)

Hi @AGanier! I see youā€™ve posted another topic to the forum as well. Let me read over everything and Iā€™ll get back to you in a bit!

1 Like

Could you please give me the full Airbyte logs? This indeed sounds odd, but Iā€™d need more info to help you figure this out!

1 Like

ALL AVAILABLE LOGS

2022-10-19 18:21:05 INFO i.a.w.t.TemporalAttemptExecution(get):108 - Docker volume job log path: /tmp/workspace/d8b3b0b3-7b6b-4009-88cf-4af1f0699202/0/logs.log

2022-10-19 18:21:05 INFO i.a.w.t.TemporalAttemptExecution(get):113 - Executing worker wrapper. Airbyte version: 0.40.10

2022-10-19 18:21:05 INFO i.a.c.i.LineGobbler(voidCall):114 -

2022-10-19 18:21:05 INFO i.a.c.i.LineGobbler(voidCall):114 - ----- START CHECK -----

2022-10-19 18:21:05 INFO i.a.c.i.LineGobbler(voidCall):114 -

2022-10-19 18:21:05 INFO i.a.c.i.LineGobbler(voidCall):114 - Checking if airbyte/source-netsuite:0.1.1 exists...

2022-10-19 18:21:05 INFO i.a.c.i.LineGobbler(voidCall):114 - airbyte/source-netsuite:0.1.1 was found locally.

2022-10-19 18:21:05 INFO i.a.w.p.DockerProcessFactory(create):119 - Creating docker container = source-netsuite-check-d8b3b0b3-7b6b-4009-88cf-4af1f0699202-0-jlnhf with resources io.airbyte.config.ResourceRequirements@746582d2[cpuRequest=,cpuLimit=,memoryRequest=,memoryLimit=]

2022-10-19 18:21:05 INFO i.a.w.p.DockerProcessFactory(create):163 - Preparing command: docker run --rm --init -i -w /data/d8b3b0b3-7b6b-4009-88cf-4af1f0699202/0 --log-driver none --name source-netsuite-check-d8b3b0b3-7b6b-4009-88cf-4af1f0699202-0-jlnhf --network host -v airbyte_workspace:/data -v /tmp/airbyte_local:/local -e DEPLOYMENT_MODE=OSS -e USE_STREAM_CAPABLE_STATE=true -e AIRBYTE_ROLE= -e WORKER_ENVIRONMENT=DOCKER -e WORKER_JOB_ATTEMPT=0 -e WORKER_CONNECTOR_IMAGE=airbyte/source-netsuite:0.1.1 -e AIRBYTE_VERSION=0.40.10 -e WORKER_JOB_ID=d8b3b0b3-7b6b-4009-88cf-4af1f0699202 airbyte/source-netsuite:0.1.1 check --config source_config.json

2022-10-19 18:21:08 ERROR i.a.w.i.DefaultAirbyteStreamFactory(internalLog):99 - Check failed

2022-10-19 18:21:08 INFO i.a.w.t.TemporalAttemptExecution(get):134 - Stopping cancellation check scheduling...

2022-10-19 18:21:08 INFO i.a.c.i.LineGobbler(voidCall):114 -

2022-10-19 18:21:08 INFO i.a.c.i.LineGobbler(voidCall):114 - ----- END CHECK -----

2022-10-19 18:21:08 INFO i.a.c.i.LineGobbler(voidCall):114 -
2022-10-19 18:19:52 e[32mINFOe[m i.a.s.RequestLogger(filter):112 - REQ 172.18.0.7 POST 200 /api/v1/web_backend/connections/list - {"workspaceId":"0c6b710d-78b3-4eeb-87f6-bc57b3368817"}
2022-10-19 18:19:56 e[32mINFOe[m i.a.s.RequestLogger(filter):112 - REQ 172.18.0.7 POST 200 /api/v1/sources/list - {"workspaceId":"0c6b710d-78b3-4eeb-87f6-bc57b3368817"}
2022-10-19 18:19:57 e[32mINFOe[m i.a.s.RequestLogger(filter):112 - REQ 172.18.0.7 GET 200 /api/v1/health
2022-10-19 18:19:58 e[32mINFOe[m i.a.s.RequestLogger(filter):112 - REQ 172.18.0.7 POST 200 /api/v1/destinations/list - {"workspaceId":"0c6b710d-78b3-4eeb-87f6-bc57b3368817"}
2022-10-19 18:19:58 e[32mINFOe[m i.a.s.RequestLogger(filter):112 - REQ 172.18.0.7 POST 200 /api/v1/source_definitions/list_latest
2022-10-19 18:19:58 e[32mINFOe[m i.a.s.RequestLogger(filter):112 - REQ 172.18.0.7 POST 200 /api/v1/source_definitions/list
2022-10-19 18:20:02 e[32mINFOe[m i.a.s.RequestLogger(filter):112 - REQ 172.18.0.7 POST 200 /api/v1/source_definition_specifications/get - {"sourceDefinitionId":"4f2f093d-ce44-4121-8118-9d13b7bfccd0","workspaceId":"0c6b710d-78b3-4eeb-87f6-bc57b3368817"}
2022-10-19 18:20:17 e[32mINFOe[m i.a.s.RequestLogger(filter):112 - REQ 172.18.0.7 GET 200 /api/v1/health
2022-10-19 18:20:38 e[32mINFOe[m i.a.s.RequestLogger(filter):112 - REQ 172.18.0.7 GET 200 /api/v1/health
2022-10-19 18:20:57 e[32mINFOe[m i.a.s.RequestLogger(filter):112 - REQ 172.18.0.7 GET 200 /api/v1/health
2022-10-19 18:21:08 e[32mINFOe[m i.a.s.RequestLogger(filter):112 - REQ 172.18.0.7 POST 200 /api/v1/scheduler/sources/check_connection - {"connectionConfiguration":"REDACTED","sourceDefinitionId":"4f2f093d-ce44-4121-8118-9d13b7bfccd0"}
2022-10-19 18:21:17 e[32mINFOe[m i.a.s.RequestLogger(filter):112 - REQ 172.18.0.7 GET 200 /api/v1/health
2022-10-19 18:21:38 e[32mINFOe[m i.a.s.RequestLogger(filter):112 - REQ 172.18.0.7 GET 200 /api/v1/health
2022-10-19 18:21:45 e[32mINFOe[m i.a.s.RequestLogger(filter):112 - REQ 172.18.0.7 POST 200 /api/v1/source_definitions/list_latest
2022-10-19 18:21:45 e[32mINFOe[m i.a.s.RequestLogger(filter):112 - REQ 172.18.0.7 POST 200 /api/v1/destination_definitions/list
2022-10-19 18:21:45 e[32mINFOe[m i.a.s.RequestLogger(filter):112 - REQ 172.18.0.7 POST 200 /api/v1/destination_definitions/list_latest
2022-10-19 18:21:45 e[32mINFOe[m i.a.s.RequestLogger(filter):112 - REQ 172.18.0.7 POST 200 /api/v1/source_definitions/list
2022-10-19 18:21:49 e[32mINFOe[m i.a.s.RequestLogger(filter):112 - REQ 172.18.0.7 POST 200 /api/v1/logs/get - {"logType":"server"}

Could you please update your Airbyte version to latest? Iā€™m not able to reproduce this issue, so I think there is something wrong either with your Airbyte instance or with how things are setup. Youā€™re hosting Airbyte locally on Docker?

1 Like

In addition to following advice on upgrading to the most recent version, Iā€™ve been reviewing the configs in Netsuite to determine if I made an error there.

Based on this thread in GitHub Iā€™m thinking that the Integration config in Netsuite may need SuiteAnalytics Connect selected under Auth 2.0. However, in order to check that box I also need to provide a redirect URI but I donā€™t know what that value should be.

A user recently had problems with the Netsuite connector as well and found that a piece of information was missing in the docs, no.5 form this list:

Step 2.2: Enable features

  1. Go to Setup Ā» Company Ā» Enable Features
  2. Click on SuiteCloud tab
  3. Scroll down to Manage Authentication section
  4. Enable checkbox TOKEN-BASED AUTHENTICATION
  5. Enable checkbox REST WEB SERVICES ā† missing in docs!
  6. Save changes

Could you try this and see if it fixes the 400 client error?

@natalyjazzviolin

Thanks for the follow up! Weā€™ve got both REST and SOAP enabled already, so that is likely not the Netsuite configuration prompting the error.

@natalyjazzviolin

Update: We upgraded to the latest version of Airbyte 0.40.17 and the Connector 0.1.1 but are still getting the same 400 error.

Server logs are below. Most show 200s but you may want to call someoneā€™s attention to: BeanExecutable(getParameters):216 - HV000254: Missing parameter metadata for LogType(String, int, String), which declares implicit or synthetic parameters. Automatic resolution of generic type information for method parameters may yield incorrect results if multiple parameters have the same erasure. To solve this, compile your code with the '-parameters' flag.

Thanks!
AndrƩa

2022-10-27 18:26:42 e[32mINFOe[m i.a.s.RequestLogger(filter):112 - REQ 172.19.0.3 POST 200 /api/v1/logs/get - {"logType":"server"}
2022-10-27 18:26:43 e[32mINFOe[m i.a.s.RequestLogger(filter):112 - REQ 172.19.0.3 POST 200 /api/v1/logs/get - {"logType":"scheduler"}
2022-10-27 18:26:44 e[32mINFOe[m i.a.s.RequestLogger(filter):112 - REQ 172.19.0.3 GET 200 /api/v1/health
2022-10-27 18:27:04 e[32mINFOe[m i.a.s.RequestLogger(filter):112 - REQ 172.19.0.3 GET 200 /api/v1/health
2022-10-27 18:27:12 e[32mINFOe[m i.a.s.RequestLogger(filter):112 - REQ 172.19.0.3 POST 200 /api/v1/sources/list - {"workspaceId":"0c6b710d-78b3-4eeb-87f6-bc57b3368817"}
2022-10-27 18:27:13 e[32mINFOe[m i.a.s.RequestLogger(filter):112 - REQ 172.19.0.3 POST 200 /api/v1/web_backend/connections/list - {"workspaceId":"0c6b710d-78b3-4eeb-87f6-bc57b3368817"}
2022-10-27 18:27:13 e[32mINFOe[m i.a.s.RequestLogger(filter):112 - REQ 172.19.0.3 POST 200 /api/v1/sources/list - {"workspaceId":"0c6b710d-78b3-4eeb-87f6-bc57b3368817"}
2022-10-27 18:27:15 e[32mINFOe[m i.a.s.RequestLogger(filter):112 - REQ 172.19.0.3 POST 200 /api/v1/source_definitions/list_latest
2022-10-27 18:27:15 e[32mINFOe[m i.a.s.RequestLogger(filter):112 - REQ 172.19.0.3 POST 200 /api/v1/source_definitions/list
2022-10-27 18:27:20 e[32mINFOe[m i.a.s.RequestLogger(filter):112 - REQ 172.19.0.3 POST 200 /api/v1/source_definition_specifications/get - {"sourceDefinitionId":"4f2f093d-ce44-4121-8118-9d13b7bfccd0","workspaceId":"0c6b710d-78b3-4eeb-87f6-bc57b3368817"}
2022-10-27 18:27:24 e[32mINFOe[m i.a.s.RequestLogger(filter):112 - REQ 172.19.0.3 GET 200 /api/v1/health
2022-10-27 18:27:44 e[32mINFOe[m i.a.s.RequestLogger(filter):112 - REQ 172.19.0.3 GET 200 /api/v1/health
2022-10-27 18:28:04 e[32mINFOe[m i.a.s.RequestLogger(filter):112 - REQ 172.19.0.3 GET 200 /api/v1/health
2022-10-27 18:28:11 e[32mINFOe[m i.a.s.RequestLogger(filter):112 - REQ 172.19.0.3 POST 200 /api/v1/scheduler/sources/check_connection - {"connectionConfiguration":"REDACTED","workspaceId":"0c6b710d-78b3-4eeb-87f6-bc57b3368817","sourceDefinitionId":"4f2f093d-ce44-4121-8118-9d13b7bfccd0"}
2022-10-27 18:28:12 e[32mINFOe[m i.a.s.RequestLogger(filter):112 - REQ 172.19.0.3 POST 200 /api/v1/source_definitions/list_latest
2022-10-27 18:28:12 e[32mINFOe[m i.a.s.RequestLogger(filter):112 - REQ 172.19.0.3 POST 200 /api/v1/destination_definitions/list
2022-10-27 18:28:12 e[32mINFOe[m i.a.s.RequestLogger(filter):112 - REQ 172.19.0.3 POST 200 /api/v1/destination_definitions/list_latest
2022-10-27 18:28:12 e[32mINFOe[m i.a.s.RequestLogger(filter):112 - REQ 172.19.0.3 POST 200 /api/v1/source_definitions/list
2022-10-27 18:28:14 e[32mINFOe[m i.a.s.RequestLogger(filter):112 - REQ 172.19.0.3 POST 200 /api/v1/logs/get - {"logType":"server"}

2022-10-27 18:26:37 e[32mINFOe[m i.a.s.Requ... by Greg Smith
Greg Smith1:30 PM
2022-10-27 18:26:37 e[32mINFOe[m i.a.s.RequestLogger(filter):112 - REQ 172.19.0.3 POST 200 /api/v1/source_definitions/list_latest
2022-10-27 18:26:37 e[32mINFOe[m i.a.s.RequestLogger(filter):112 - REQ 172.19.0.3 POST 200 /api/v1/destination_definitions/list
2022-10-27 18:26:37 e[32mINFOe[m i.a.s.RequestLogger(filter):112 - REQ 172.19.0.3 POST 200 /api/v1/destination_definitions/list_latest
2022-10-27 18:26:37 e[32mINFOe[m i.a.s.RequestLogger(filter):112 - REQ 172.19.0.3 POST 200 /api/v1/source_definitions/list
2022-10-27 18:26:42 e[33mWARNe[m o.h.v.i.p.j.JavaBeanExecutable(getParameters):216 - HV000254: Missing parameter metadata for LogType(String, int, String), which declares implicit or synthetic parameters. Automatic resolution of generic type information for method parameters may yield incorrect results if multiple parameters have the same erasure. To solve this, compile your code with the '-parameters' flag.
2022-10-27 18:26:42 e[32mINFOe[m i.a.s.RequestLogger(filter):112 - REQ 172.19.0.3 POST 200 /api/v1/logs/get - {"logType":"server"}
2022-10-27 18:26:43 e[32mINFOe[m i.a.s.RequestLogger(filter):112 - REQ 172.19.0.3 POST 200 /api/v1/logs/get - {"logType":"scheduler"}
2022-10-27 18:26:44 e[32mINFOe[m i.a.s.RequestLogger(filter):112 - REQ 172.19.0.3 GET 200 /api/v1/health
2022-10-27 18:27:04 e[32mINFOe[m i.a.s.RequestLogger(filter):112 - REQ 172.19.0.3 GET 200 /api/v1/health
2022-10-27 18:27:12 e[32mINFOe[m i.a.s.RequestLogger(filter):112 - REQ 172.19.0.3 POST 200 /api/v1/sources/list - {"workspaceId":"0c6b710d-78b3-4eeb-87f6-bc57b3368817"}
2022-10-27 18:27:13 e[32mINFOe[m i.a.s.RequestLogger(filter):112 - REQ 172.19.0.3 POST 200 /api/v1/web_backend/connections/list - {"workspaceId":"0c6b710d-78b3-4eeb-87f6-bc57b3368817"}
2022-10-27 18:27:13 e[32mINFOe[m i.a.s.RequestLogger(filter):112 - REQ 172.19.0.3 POST 200 /api/v1/sources/list - {"workspaceId":"0c6b710d-78b3-4eeb-87f6-bc57b3368817"}
2022-10-27 18:27:15 e[32mINFOe[m i.a.s.RequestLogger(filter):112 - REQ 172.19.0.3 POST 200 /api/v1/source_definitions/list_latest
2022-10-27 18:27:15 e[32mINFOe[m i.a.s.RequestLogger(filter):112 - REQ 172.19.0.3 POST 200 /api/v1/source_definitions/list
2022-10-27 18:27:20 e[32mINFOe[m i.a.s.RequestLogger(filter):112 - REQ 172.19.0.3 POST 200 /api/v1/source_definition_specifications/get - {"sourceDefinitionId":"4f2f093d-ce44-4121-8118-9d13b7bfccd0","workspaceId":"0c6b710d-78b3-4eeb-87f6-bc57b3368817"}
2022-10-27 18:27:24 e[32mINFOe[m i.a.s.RequestLogger(filter):112 - REQ 172.19.0.3 GET 200 /api/v1/health
2022-10-27 18:27:44 e[32mINFOe[m i.a.s.RequestLogger(filter):112 - REQ 172.19.0.3 GET 200 /api/v1/health
2022-10-27 18:28:04 e[32mINFOe[m i.a.s.RequestLogger(filter):112 - REQ 172.19.0.3 GET 200 /api/v1/health
2022-10-27 18:28:11 e[32mINFOe[m i.a.s.RequestLogger(filter):112 - REQ 172.19.0.3 POST 200 /api/v1/scheduler/sources/check_connection - {"connectionConfiguration":"REDACTED","workspaceId":"0c6b710d-78b3-4eeb-87f6-bc57b3368817","sourceDefinitionId":"4f2f093d-ce44-4121-8118-9d13b7bfccd0"}
2022-10-27 18:28:12 e[32mINFOe[m i.a.s.RequestLogger(filter):112 - REQ 172.19.0.3 POST 200 /api/v1/source_definitions/list_latest
2022-10-27 18:28:12 e[32mINFOe[m i.a.s.RequestLogger(filter):112 - REQ 172.19.0.3 POST 200 /api/v1/destination_definitions/list
2022-10-27 18:28:12 e[32mINFOe[m i.a.s.RequestLogger(filter):112 - REQ 172.19.0.3 POST 200 /api/v1/destination_definitions/list_latest
2022-10-27 18:28:12 e[32mINFOe[m i.a.s.RequestLogger(filter):112 - REQ 172.19.0.3 POST 200 /api/v1/source_definitions/list
2022-10-27 18:28:14 e[32mINFOe[m i.a.s.RequestLogger(filter):112 - REQ 172.19.0.3 POST 200 /api/v1/logs/get - {"logType":"server"}

has context menu

@AGanier were you able to solve this issue? Iā€™m also getting the 401 error

Update:

Because we tweaked some network configurations (NAT gateway and internet gateway on AWS) to resolve some security concerns, we retried the Airbyte Netsuite connector again today. We are still getting the same error. As the screenshot below shows, we also tried passing an object type.

Thanks!
AndrƩa

image

Hi,

Is there any update on this?

Weā€™ve retried the connector after upgrading and the connection error persists

Hi! So sorry to hear the issue persists! The error code is different though - 401 error indicates wrong authorization credentials. Could you double check the credentials you are using?

Weā€™ve retried the connector again today after affirming our setup in Netsuite. Still getting a 401 client error.

2023-01-24 18:24:25 INFO i.a.c.i.LineGobbler(voidCall):114 - ----- START CHECK -----2023-01-24 18:24:25 INFO i.a.c.i.LineGobbler(voidCall):114 -2023-01-24 18:24:25 INFO i.a.c.i.LineGobbler(voidCall):114 - Checking if airbyte/source-netsuite:0.1.3 exists...2023-01-24 18:24:25 INFO i.a.c.i.LineGobbler(voidCall):114 - airbyte/source-netsuite:0.1.3 was found locally.2023-01-24 18:24:25 INFO i.a.w.p.DockerProcessFactory(create):120 - Creating docker container = source-netsuite-check-aef3c0fe-a151-4521-b31e-ec4bbd48ca3a-0-tqoal with resources io.airbyte.config.ResourceRequirements@472beb2b[cpuRequest=,cpuLimit=,memoryRequest=,memoryLimit=]2023-01-24 18:24:25 INFO i.a.w.p.DockerProcessFactory(create):164 - Preparing command: docker run --rm --init -i -w /data/aef3c0fe-a151-4521-b31e-ec4bbd48ca3a/0 --log-driver none --name source-netsuite-check-aef3c0fe-a151-4521-b31e-ec4bbd48ca3a-0-tqoal --network host -v airbyte_workspace:/data -v /tmp/airbyte_local:/local -e DEPLOYMENT_MODE=OSS -e FIELD_SELECTION_WORKSPACES= -e USE_STREAM_CAPABLE_STATE=true -e AIRBYTE_ROLE= -e WORKER_ENVIRONMENT=DOCKER -e APPLY_FIELD_SELECTION=false -e WORKER_CONNECTOR_IMAGE=airbyte/source-netsuite:0.1.3 -e WORKER_JOB_ATTEMPT=0 -e AUTO_DETECT_SCHEMA=false -e AIRBYTE_VERSION=0.40.28 -e WORKER_JOB_ID=aef3c0fe-a151-4521-b31e-ec4bbd48ca3a airbyte/source-netsuite:0.1.3 check --config source_config.json2023-01-24 18:24:25 INFO i.a.w.i.VersionedAirbyteStreamFactory(create):100 - Reading messages from protocol version 0.2.02023-01-24 18:24:28 ERROR i.a.w.i.DefaultAirbyteStreamFactory(internalLog):116 - Check failed2023-01-24 18:24:28 INFO i.a.w.g.DefaultCheckConnectionWorker(run):110 - Check connection job received output: io.airbyte.config.StandardCheckConnectionOutput@40726542[status=failed,message=HTTPError('401 Client Error: Unauthorized for url: https://4811579.suitetalk.api.netsuite.com/services/rest/record/v1/contact?limit=1')]2023-01-24 18:24:28 INFO i.a.c.i.LineGobbler(voidCall):114 -2023-01-24 18:24:28 INFO i.a.w.t.TemporalAttemptExecution(get):163 - Stopping cancellation check scheduling...2023-01-24 18:24:28 INFO i.a.c.i.LineGobbler(voidCall):114 - ----- END CHECK -----```

Great News! Today we were able to successfully connect to the Airbyte Netsuite Connector after re-generating the access token.

That is amazing to hear!