meltano config tap-rest-api-msdk test 2022-12-01T12:29:21.140021Z [info ] Environment 'dev' is active 2022-12-01T12:29:21.245517Z [info ] The default environment (dev) will be ignored for `meltano config`. To configure a specific Environment, please use option `--environment=`. Need help fixing this problem? Visit http://melta.no/ for troubleshooting steps, or to join our friendly Slack community. Plugin configuration is invalid Catalog discovery failed: command ['/Users/nuh/Desktop/Groupone_Airflow_DBT_Master/meltano/.meltano/extractors/tap-rest-api-msdk/venv/bin/tap-rest-api-msdk', '--config', '/Users/nuh/Desktop/Groupone_Airflow_DBT_Master/meltano/.meltano/run/tap-rest-api-msdk/tap.fb8c11d0-febf-4879-b908-7be9f4007d1b.config.json', '--discover'] returned 1 with stderr: time=2022-12-01 13:29:21 name=tap-rest-api-msdk level=INFO message=tap-rest-api-msdk v1.0.0, Meltano SDK v0.3.18) time=2022-12-01 13:29:21 name=tap-rest-api-msdk level=INFO message=Skipping parse of env var settings... time=2022-12-01 13:29:21 name=tap-rest-api-msdk level=WARNING message=Config validation failed: 'startDate=2022-11-01&endDate=2022-11-02&limit=100' is not of type 'object', 'null' JSONSchema was: {'type': 'object', 'properties': {'api_url': {'type': ['string'], 'description': 'the base url/endpoint for the desired api'}, 'next_page_token_path': {'type': ['string', 'null'], 'default': '$.next_page', 'description': "a jsonpath string representing the path to the 'next page' token. Defaults to `$.next_page`"}, 'pagination_request_style': {'type': ['string', 'null'], 'default': 'default', 'description': 'the pagination style to use for requests. Defaults to `default`'}, 'pagination_response_style': {'type': ['string', 'null'], 'default': 'default', 'description': 'the pagination style to use for response. Defaults to `default`'}, 'pagination_page_size': {'type': ['integer', 'null'], 'description': 'the size of each page in records. Defaults to None'}, 'path': {'type': ['string', 'null'], 'description': 'the path appended to the `api_url`. Stream-level path will overwrite top-level path'}, 'params': {'type': ['object', 'null'], 'properties': {}, 'description': 'an object providing the `params` in a `requests.get` method. Stream level params will be mergedwith top-level params with stream level params overwritingtop-level params with the same key.'}, 'headers': {'type': ['object', 'null'], 'properties': {}, 'description': 'An object of headers to pass into the api calls. Stream levelheaders will be merged with top-level params with streamlevel params overwriting top-level params with the same key'}, 'records_path': {'type': ['string', 'null'], 'description': 'a jsonpath string representing the path in the requests response that contains the records to process. Defaults to `$[*]`. Stream level records_path will overwrite the top-level records_path'}, 'primary_keys': {'type': ['array', 'null'], 'items': {'type': ['string']}, 'description': 'a list of the json keys of the primary key for the stream.'}, 'replication_key': {'type': ['string', 'null'], 'description': 'the json key of the replication key. Note that this should be an incrementing integer or datetime object.'}, 'except_keys': {'type': ['array', 'null'], 'items': {'type': ['string']}, 'description': 'This tap automatically flattens the entire json structure and builds keys based on the corresponding paths.; Keys, whether composite or otherwise, listed in this dictionary will not be recursively flattened, but instead their values will be; turned into a json string and processed in that format. This is also automatically done for any lists within the records; therefore, records are not duplicated for each item in lists.'}, 'num_inference_records': {'type': ['number', 'null'], 'default': 50, 'description': "number of records used to infer the stream's schema. Defaults to 50."}, 'streams': {'type': ['array', 'null'], 'items': {'type': 'object', 'properties': {'path': {'type': ['string', 'null'], 'description': 'the path appended to the `api_url`. Stream-level path will overwrite top-level path'}, 'params': {'type': ['object', 'null'], 'properties': {}, 'description': 'an object providing the `params` in a `requests.get` method. Stream level params will be mergedwith top-level params with stream level params overwritingtop-level params with the same key.'}, 'headers': {'type': ['object', 'null'], 'properties': {}, 'description': 'An object of headers to pass into the api calls. Stream levelheaders will be merged with top-level params with streamlevel params overwriting top-level params with the same key'}, 'records_path': {'type': ['string', 'null'], 'description': 'a jsonpath string representing the path in the requests response that contains the records to process. Defaults to `$[*]`. Stream level records_path will overwrite the top-level records_path'}, 'primary_keys': {'type': ['array', 'null'], 'items': {'type': ['string']}, 'description': 'a list of the json keys of the primary key for the stream.'}, 'replication_key': {'type': ['string', 'null'], 'description': 'the json key of the replication key. Note that this should be an incrementing integer or datetime object.'}, 'except_keys': {'type': ['array', 'null'], 'items': {'type': ['string']}, 'description': 'This tap automatically flattens the entire json structure and builds keys based on the corresponding paths.; Keys, whether composite or otherwise, listed in this dictionary will not be recursively flattened, but instead their values will be; turned into a json string and processed in that format. This is also automatically done for any lists within the records; therefore, records are not duplicated for each item in lists.'}, 'num_inference_records': {'type': ['number', 'null'], 'default': 50, 'description': "number of records used to infer the stream's schema. Defaults to 50."}, 'name': {'type': ['string'], 'description': 'name of the stream'}, 'schema': {'anyOf': [{'type': 'string'}, {'type': 'null'}, {'type:': 'object'}, 'null'], 'description': 'A valid Singer schema or a path-like string that provides the path to a `.json` file that contains a valid Singer schema. If provided, the schema will not be inferred from the results of an api call.'}}, 'required': ['name']}, 'description': 'An array of streams, designed for separate paths using thesame base url.'}}, 'required': ['api_url']} time=2022-12-01 13:29:21 name=root level=INFO message=Operator '__else__=None' was not found. Unmapped streams will be included in output. Traceback (most recent call last): File "/Users/nuh/Desktop/Groupone_Airflow_DBT_Master/meltano/.meltano/extractors/tap-rest-api-msdk/venv/bin/tap-rest-api-msdk", line 8, in sys.exit(TapRestApiMsdk.cli()) File "/Users/nuh/Desktop/Groupone_Airflow_DBT_Master/meltano/.meltano/extractors/tap-rest-api-msdk/venv/lib/python3.9/site-packages/click/core.py", line 1130, in __call__ return self.main(*args, **kwargs) File "/Users/nuh/Desktop/Groupone_Airflow_DBT_Master/meltano/.meltano/extractors/tap-rest-api-msdk/venv/lib/python3.9/site-packages/click/core.py", line 1055, in main rv = self.invoke(ctx) File "/Users/nuh/Desktop/Groupone_Airflow_DBT_Master/meltano/.meltano/extractors/tap-rest-api-msdk/venv/lib/python3.9/site-packages/click/core.py", line 1404, in invoke return ctx.invoke(self.callback, **ctx.params) File "/Users/nuh/Desktop/Groupone_Airflow_DBT_Master/meltano/.meltano/extractors/tap-rest-api-msdk/venv/lib/python3.9/site-packages/click/core.py", line 760, in invoke return __callback(*args, **kwargs) File "/Users/nuh/Desktop/Groupone_Airflow_DBT_Master/meltano/.meltano/extractors/tap-rest-api-msdk/venv/lib/python3.9/site-packages/singer_sdk/tap_base.py", line 442, in cli tap = cls( # type: ignore # Ignore 'type not callable' File "/Users/nuh/Desktop/Groupone_Airflow_DBT_Master/meltano/.meltano/extractors/tap-rest-api-msdk/venv/lib/python3.9/site-packages/singer_sdk/tap_base.py", line 83, in __init__ self.input_catalog or self._singer_catalog File "/Users/nuh/Desktop/Groupone_Airflow_DBT_Master/meltano/.meltano/extractors/tap-rest-api-msdk/venv/lib/python3.9/site-packages/singer_sdk/tap_base.py", line 219, in _singer_catalog for stream in self.streams.values() File "/Users/nuh/Desktop/Groupone_Airflow_DBT_Master/meltano/.meltano/extractors/tap-rest-api-msdk/venv/lib/python3.9/site-packages/singer_sdk/tap_base.py", line 109, in streams for stream in self.load_streams(): File "/Users/nuh/Desktop/Groupone_Airflow_DBT_Master/meltano/.meltano/extractors/tap-rest-api-msdk/venv/lib/python3.9/site-packages/singer_sdk/tap_base.py", line 248, in load_streams for stream in self.discover_streams(): File "/Users/nuh/Desktop/Groupone_Airflow_DBT_Master/meltano/.meltano/extractors/tap-rest-api-msdk/venv/lib/python3.9/site-packages/tap_rest_api_msdk/tap.py", line 184, in discover_streams for stream in self.config["streams"]: KeyError: 'streams'