emissions-api-sdk 1.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (155) hide show
  1. package/README.md +33 -2
  2. package/dist/Constants.js +23 -1
  3. package/dist/api/Calculation.js +78 -15
  4. package/dist/api/Factor.js +99 -18
  5. package/dist/api/FactorSets.js +1 -1
  6. package/dist/api/Fugitive.js +76 -13
  7. package/dist/api/Location.js +76 -15
  8. package/dist/api/Mobile.js +65 -1
  9. package/dist/api/Stationary.js +78 -15
  10. package/dist/api/TransportationAndDistribution.js +77 -14
  11. package/dist/coverage/clover.xml +191 -81
  12. package/dist/coverage/coverage-final.json +11 -11
  13. package/dist/coverage/lcov-report/index.html +16 -16
  14. package/dist/coverage/lcov-report/src/Client.ts.html +23 -23
  15. package/dist/coverage/lcov-report/src/Constants.ts.html +82 -4
  16. package/dist/coverage/lcov-report/src/api/Calculation.ts.html +245 -26
  17. package/dist/coverage/lcov-report/src/api/Factor.ts.html +313 -34
  18. package/dist/coverage/lcov-report/src/api/FactorSets.ts.html +8 -5
  19. package/dist/coverage/lcov-report/src/api/Fugitive.ts.html +246 -24
  20. package/dist/coverage/lcov-report/src/api/Location.ts.html +245 -26
  21. package/dist/coverage/lcov-report/src/api/Mobile.ts.html +240 -12
  22. package/dist/coverage/lcov-report/src/api/Stationary.ts.html +248 -26
  23. package/dist/coverage/lcov-report/src/api/TransportationAndDistribution.ts.html +250 -25
  24. package/dist/coverage/lcov-report/src/api/index.html +25 -25
  25. package/dist/coverage/lcov-report/src/index.html +7 -7
  26. package/dist/coverage/lcov-report/src/request.ts.html +1 -1
  27. package/dist/coverage/lcov-report/src/utils.ts.html +5 -5
  28. package/dist/coverage/lcov-report/test/index.html +1 -1
  29. package/dist/coverage/lcov-report/test/mocks/CommonRequest.ts.html +1 -1
  30. package/dist/coverage/lcov-report/test/mocks/FactorRequest.ts.html +1 -1
  31. package/dist/coverage/lcov-report/test/mocks/GenericCalculationRequest.ts.html +1 -1
  32. package/dist/coverage/lcov-report/test/mocks/LocationRequest.ts.html +1 -1
  33. package/dist/coverage/lcov-report/test/mocks/SearchRequest.ts.html +1 -1
  34. package/dist/coverage/lcov-report/test/mocks/index.html +1 -1
  35. package/dist/coverage/lcov-report/test/testUtils.ts.html +1 -1
  36. package/dist/coverage/lcov.info +287 -133
  37. package/dist/interfaces/response/AreaResponse.js +2 -0
  38. package/dist/interfaces/response/EmissionResponse.js +2 -0
  39. package/dist/interfaces/response/EmissionResponseWithDetails.js +2 -0
  40. package/dist/interfaces/response/FactorResponse.js +2 -0
  41. package/dist/interfaces/response/FactorSetResponse.js +2 -0
  42. package/dist/interfaces/response/SearchResponse.js +2 -0
  43. package/dist/interfaces/response/TypeResponse.js +2 -0
  44. package/dist/interfaces/response/UnitResponse.js +2 -0
  45. package/dist/types/Constants.d.ts +22 -0
  46. package/dist/types/api/Calculation.d.ts +59 -16
  47. package/dist/types/api/Factor.d.ts +73 -20
  48. package/dist/types/api/FactorSets.d.ts +3 -2
  49. package/dist/types/api/Fugitive.d.ts +57 -14
  50. package/dist/types/api/Location.d.ts +57 -16
  51. package/dist/types/api/Mobile.d.ts +46 -2
  52. package/dist/types/api/Stationary.d.ts +59 -16
  53. package/dist/types/api/TransportationAndDistribution.d.ts +58 -15
  54. package/dist/types/index.d.ts +8 -0
  55. package/dist/types/interfaces/response/AreaResponse.d.ts +20 -0
  56. package/dist/types/interfaces/response/EmissionResponse.d.ts +31 -0
  57. package/dist/types/interfaces/response/EmissionResponseWithDetails.d.ts +144 -0
  58. package/dist/types/interfaces/response/FactorResponse.d.ts +53 -0
  59. package/dist/types/interfaces/response/FactorSetResponse.d.ts +38 -0
  60. package/dist/types/interfaces/response/SearchResponse.d.ts +41 -0
  61. package/dist/types/interfaces/response/TypeResponse.d.ts +7 -0
  62. package/dist/types/interfaces/response/UnitResponse.d.ts +7 -0
  63. package/docs/.nojekyll +0 -0
  64. package/docs/_sources/authentication.rst.txt +164 -0
  65. package/docs/_sources/client.rst.txt +137 -0
  66. package/docs/_sources/getting_started.rst.txt +164 -0
  67. package/docs/_sources/index.rst.txt +30 -0
  68. package/docs/_sources/reference.rst.txt +129 -0
  69. package/docs/_sources/sdk.rst.txt +13 -0
  70. package/docs/_sources/troubleshooting.rst.txt +486 -0
  71. package/docs/_static/basic.css +914 -0
  72. package/docs/_static/custom.css +16 -0
  73. package/docs/_static/debug.css +69 -0
  74. package/docs/_static/doctools.js +149 -0
  75. package/docs/_static/documentation_options.js +13 -0
  76. package/docs/_static/file.png +0 -0
  77. package/docs/_static/language_data.js +192 -0
  78. package/docs/_static/minus.png +0 -0
  79. package/docs/_static/plus.png +0 -0
  80. package/docs/_static/pygments.css +232 -0
  81. package/docs/_static/scripts/furo-extensions.js +0 -0
  82. package/docs/_static/scripts/furo.js +3 -0
  83. package/docs/_static/scripts/furo.js.LICENSE.txt +7 -0
  84. package/docs/_static/scripts/furo.js.map +1 -0
  85. package/docs/_static/searchtools.js +632 -0
  86. package/docs/_static/skeleton.css +296 -0
  87. package/docs/_static/sphinx_highlight.js +154 -0
  88. package/docs/_static/sphinx_js.css +0 -0
  89. package/docs/_static/styles/furo-extensions.css +2 -0
  90. package/docs/_static/styles/furo-extensions.css.map +1 -0
  91. package/docs/_static/styles/furo.css +2 -0
  92. package/docs/_static/styles/furo.css.map +1 -0
  93. package/docs/authentication.html +523 -0
  94. package/docs/client.html +477 -0
  95. package/docs/genindex.html +492 -0
  96. package/docs/getting_started.html +491 -0
  97. package/docs/index.html +357 -0
  98. package/docs/objects.inv +0 -0
  99. package/docs/reference.html +1584 -0
  100. package/docs/sdk.html +334 -0
  101. package/docs/search.html +297 -0
  102. package/docs/searchindex.js +1 -0
  103. package/docs/troubleshooting.html +786 -0
  104. package/package.json +1 -1
  105. package/sphinx-build/Makefile +49 -0
  106. package/sphinx-build/requirements.txt +5 -0
  107. package/sphinx-build/source/_static/custom.css +16 -0
  108. package/sphinx-build/source/authentication.rst +164 -0
  109. package/sphinx-build/source/client.rst +137 -0
  110. package/sphinx-build/source/conf.py +56 -0
  111. package/sphinx-build/source/getting_started.rst +164 -0
  112. package/sphinx-build/source/index.rst +30 -0
  113. package/sphinx-build/source/reference.rst +129 -0
  114. package/sphinx-build/source/sdk.rst +13 -0
  115. package/sphinx-build/source/troubleshooting.rst +486 -0
  116. package/src/Constants.ts +26 -0
  117. package/src/api/Calculation.ts +94 -20
  118. package/src/api/Factor.ts +122 -28
  119. package/src/api/FactorSets.ts +4 -3
  120. package/src/api/Fugitive.ts +93 -18
  121. package/src/api/Location.ts +94 -20
  122. package/src/api/Mobile.ts +83 -6
  123. package/src/api/Stationary.ts +95 -20
  124. package/src/api/TransportationAndDistribution.ts +95 -19
  125. package/src/index.ts +33 -1
  126. package/src/interfaces/response/AreaResponse.ts +25 -0
  127. package/src/interfaces/response/EmissionResponse.ts +44 -0
  128. package/src/interfaces/response/EmissionResponseWithDetails.ts +183 -0
  129. package/src/interfaces/response/FactorResponse.ts +78 -0
  130. package/src/interfaces/response/FactorSetResponse.ts +52 -0
  131. package/src/interfaces/response/SearchResponse.ts +52 -0
  132. package/src/interfaces/response/TypeResponse.ts +7 -0
  133. package/src/interfaces/response/UnitResponse.ts +7 -0
  134. package/test/apiTest.test.ts +173 -6
  135. package/dist/api/Factors.js +0 -98
  136. package/dist/api/FugitiveEmission.js +0 -40
  137. package/dist/api/GenericCalculation.js +0 -41
  138. package/dist/api/LocationEmission.js +0 -41
  139. package/dist/api/MobileEmission.js +0 -41
  140. package/dist/api/StationaryEmission.js +0 -41
  141. package/dist/api/TransportationDistributionEmission.js +0 -40
  142. package/dist/coverage/lcov-report/src/api/Factors.ts.html +0 -403
  143. package/dist/coverage/lcov-report/src/api/FugitiveEmission.ts.html +0 -214
  144. package/dist/coverage/lcov-report/src/api/GenericCalculation.ts.html +0 -217
  145. package/dist/coverage/lcov-report/src/api/LocationEmission.ts.html +0 -214
  146. package/dist/coverage/lcov-report/src/api/MobileEmission.ts.html +0 -220
  147. package/dist/coverage/lcov-report/src/api/StationaryEmission.ts.html +0 -220
  148. package/dist/coverage/lcov-report/src/api/TransportationDistributionEmission.ts.html +0 -211
  149. package/dist/types/api/Factors.d.ts +0 -68
  150. package/dist/types/api/FugitiveEmission.d.ts +0 -27
  151. package/dist/types/api/GenericCalculation.d.ts +0 -28
  152. package/dist/types/api/LocationEmission.d.ts +0 -28
  153. package/dist/types/api/MobileEmission.d.ts +0 -28
  154. package/dist/types/api/StationaryEmission.d.ts +0 -28
  155. package/dist/types/api/TransportationDistributionEmission.d.ts +0 -27
@@ -0,0 +1,486 @@
1
+ Troubleshooting Guide
2
+ =====================
3
+
4
+ Overview
5
+ --------
6
+
7
+ This document lists all SDK-specific errors that can occur when using the Emissions API Node.js SDK. These errors are related to SDK initialization and client management.
8
+
9
+ ----
10
+
11
+ SDK Initialization Errors
12
+ --------------------------
13
+
14
+ Configuration Errors
15
+ ~~~~~~~~~~~~~~~~~~~~
16
+
17
+ These errors occur when ``Client.getClient()`` is called with invalid or missing configuration parameters.
18
+
19
+ 1. Missing Auth URL with Custom Host
20
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
21
+
22
+ **Error Message:**
23
+
24
+ .. code-block:: text
25
+
26
+ Error: If custom "host" is provided, "authUrl" must also be provided.
27
+
28
+ **Cause:** Custom host URL provided without corresponding authentication URL
29
+
30
+ **Solution:** Provide both ``host`` and ``authUrl`` parameters together
31
+
32
+ **Sample Function Call That Causes This Error:**
33
+
34
+ .. code-block:: typescript
35
+
36
+ await Client.getClient({
37
+ host: 'https://api.ibm.com',
38
+ clientId: 'client123',
39
+ orgId: 'org456'
40
+ // Missing authUrl parameter
41
+ });
42
+
43
+ ----
44
+
45
+ 2. Missing Client ID with Token
46
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
47
+
48
+ **Error Message:**
49
+
50
+ .. code-block:: text
51
+
52
+ Error: If token is provided directly, "clientId" must also be provided.
53
+
54
+ **Cause:** Pre-existing token provided without client ID
55
+
56
+ **Solution:** Provide ``clientId`` parameter when using a token
57
+
58
+ **Sample Function Call That Causes This Error:**
59
+
60
+ .. code-block:: typescript
61
+
62
+ await Client.getClient({
63
+ token: 'your-jwt-token'
64
+ // Missing clientId parameter
65
+ });
66
+
67
+ ----
68
+
69
+ 3. Missing Parameters with API Key
70
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
71
+
72
+ **Error Message:**
73
+
74
+ .. code-block:: text
75
+
76
+ Error: If apiKey is provided , "clientId" and "OrgId" must also be provided.
77
+
78
+ **Cause:** API key authentication requires both client ID and organization ID
79
+
80
+ **Solution:** Provide ``apiKey``, ``clientId``, and ``orgId`` parameters together
81
+
82
+ **Sample Function Call That Causes This Error:**
83
+
84
+ .. code-block:: typescript
85
+
86
+ // Missing orgId
87
+ await Client.getClient({
88
+ apiKey: 'your-api-key',
89
+ clientId: 'client123'
90
+ // Missing orgId parameter
91
+ });
92
+
93
+ // Or missing clientId
94
+ await Client.getClient({
95
+ apiKey: 'your-api-key',
96
+ orgId: 'org456'
97
+ // Missing clientId parameter
98
+ });
99
+
100
+ ----
101
+
102
+ Authentication Errors (HTTP 401)
103
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
104
+
105
+ These errors occur when authentication credentials are invalid or expired.
106
+
107
+ 4. Invalid API Key
108
+ ^^^^^^^^^^^^^^^^^^
109
+
110
+ **Error Response:**
111
+
112
+ .. code-block:: json
113
+
114
+ {
115
+ "httpCode": "401",
116
+ "httpMessage": "Unauthorized",
117
+ "moreInformation": "Cannot pass the security checks that are required by the target API or operation, Enable debug headers for more details."
118
+ }
119
+
120
+ **Cause:** API key is invalid, expired, or revoked
121
+
122
+ **Solution:** Verify API key from IBM Cloud console and ensure it has proper permissions
123
+
124
+ **Sample Function Call That Causes This Error:**
125
+
126
+ .. code-block:: typescript
127
+
128
+ await Client.getClient({
129
+ apiKey: 'invalid_api_key_12345',
130
+ clientId: 'client123',
131
+ orgId: 'org456',
132
+ host: 'https://api.ibm.com',
133
+ authUrl: 'https://api.ibm.com/auth-url'
134
+ });
135
+
136
+ ----
137
+
138
+ 5. Invalid Organization ID
139
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^
140
+
141
+ **Error Response:**
142
+
143
+ .. code-block:: json
144
+
145
+ {
146
+ "httpCode": "401",
147
+ "httpMessage": "Unauthorized",
148
+ "moreInformation": "Cannot pass the security checks that are required by the target API or operation, Enable debug headers for more details."
149
+ }
150
+
151
+ **Cause:** Organization ID doesn't match account or user lacks access
152
+
153
+ **Solution:** Verify organization ID from IBM Cloud account settings
154
+
155
+ **Sample Function Call That Causes This Error:**
156
+
157
+ .. code-block:: typescript
158
+
159
+ await Client.getClient({
160
+ apiKey: 'your-valid-api-key',
161
+ clientId: 'client123',
162
+ orgId: 'invalid-org-id-12345',
163
+ host: 'https://api.ibm.com',
164
+ authUrl: 'https://api.ibm.com/auth-url'
165
+ });
166
+
167
+ ----
168
+
169
+ 6. Invalid Client ID
170
+ ^^^^^^^^^^^^^^^^^^^^^
171
+
172
+ **Error Response:**
173
+
174
+ .. code-block:: json
175
+
176
+ {
177
+ "httpCode": "401",
178
+ "httpMessage": "Unauthorized",
179
+ "moreInformation": "Invalid client id or secret."
180
+ }
181
+
182
+ **Cause:** Client ID is invalid or doesn't match credentials
183
+
184
+ **Solution:** Verify client ID from IBM Cloud credentials
185
+
186
+ **Sample Function Call That Causes This Error:**
187
+
188
+ .. code-block:: typescript
189
+
190
+ await Client.getClient({
191
+ apiKey: 'your-valid-api-key',
192
+ clientId: 'invalid-client-id-12345',
193
+ orgId: 'org456',
194
+ host: 'https://api.ibm.com',
195
+ authUrl: 'https://api.ibm.com/auth-url'
196
+ });
197
+
198
+ ----
199
+
200
+ 7. Empty Token Response
201
+ ^^^^^^^^^^^^^^^^^^^^^^^^
202
+
203
+ **Error Message:**
204
+
205
+ .. code-block:: text
206
+
207
+ Error: Token response is empty
208
+
209
+ **Cause:** Authentication server returned an empty or null token in the response body
210
+
211
+ **Solution:**
212
+
213
+ - Verify the ``authUrl`` is correct and points to a valid authentication endpoint
214
+ - Ensure the authentication service is responding correctly
215
+ - Check that the API key, client ID, and org ID combination is valid
216
+ - Verify the authentication endpoint is returning a token in the response
217
+ - Contact support if the authentication service is not responding properly
218
+
219
+ **Sample Function Call That Causes This Error:**
220
+
221
+ .. code-block:: typescript
222
+
223
+ await Client.getClient({
224
+ apiKey: 'your-api-key',
225
+ clientId: 'client123',
226
+ orgId: 'org456',
227
+ host: 'https://api.ibm.com/',
228
+ authUrl: 'https://valid-url-but-returns-empty-token.example.com/token'
229
+ // Valid URL but returns empty token in response
230
+ });
231
+
232
+ **Note:** If the authUrl is completely invalid or unreachable (e.g., wrong domain), you'll get a network error (ENOTFOUND) instead of this error. This error specifically occurs when the authentication endpoint responds but returns an empty token.
233
+
234
+ ----
235
+
236
+ 8. Missing Expiry Field in Token
237
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
238
+
239
+ **Error Message:**
240
+
241
+ .. code-block:: text
242
+
243
+ Error: exp field is missing in the token
244
+
245
+ **Cause:** The provided JWT token does not contain the required ``exp`` (expiry) field
246
+
247
+ **Solution:**
248
+
249
+ - Ensure the token is a valid JWT with an expiry field
250
+ - Regenerate the token if it's malformed
251
+ - Verify the token was generated correctly by the authentication service
252
+
253
+ **Sample Function Call That Causes This Error:**
254
+
255
+ .. code-block:: typescript
256
+
257
+ await Client.getClient({
258
+ token: 'malformed-jwt-token-without-exp-field',
259
+ clientId: 'client123'
260
+ });
261
+
262
+ **Note:** This error occurs when using token-based authentication with a JWT that doesn't include the standard ``exp`` (expiration time) claim.
263
+
264
+ ----
265
+
266
+ Client Instance Errors
267
+ -----------------------
268
+
269
+ Client Not Initialized
270
+ ~~~~~~~~~~~~~~~~~~~~~~
271
+
272
+ **Error Message:**
273
+
274
+ .. code-block:: text
275
+
276
+ Error: Client is not initialized. Call Client.getClient() first.
277
+
278
+ **Cause:** Attempting to use ``Client.getInstance()`` or API methods before calling ``Client.getClient()``
279
+
280
+ **Solution:** Always call ``Client.getClient()`` before using any SDK methods
281
+
282
+ **When This Occurs:**
283
+
284
+ - Calling ``Client.getInstance()`` before initialization
285
+ - Calling any API method (Stationary.calculate(), Mobile.calculate(), etc.) before initialization
286
+ - Application restart without re-initializing the client
287
+
288
+ **Sample Function Calls That Cause This Error:**
289
+
290
+ .. code-block:: typescript
291
+
292
+ // Error 1: Calling getInstance() before initialization
293
+ const client = Client.getInstance(); // Throws error
294
+
295
+ // Error 2: Calling API methods before initialization
296
+ await Stationary.calculate({
297
+ time: { date: "2025-01-04" },
298
+ location: { country: "usa" },
299
+ activity: { type: "Coal - Lignite", unit: "KJ", value: 3 }
300
+ }); // Throws error
301
+
302
+ // Error 3: Calling any other API method
303
+ await Mobile.calculate({...}); // Throws error
304
+ await Fugitive.calculate({...}); // Throws error
305
+ await Location.getUnits("steam"); // Throws error
306
+
307
+ ----
308
+
309
+ Token Management
310
+ ----------------
311
+
312
+ Automatic Token Refresh
313
+ ~~~~~~~~~~~~~~~~~~~~~~~
314
+
315
+ The SDK automatically refreshes authentication tokens when they are about to expire (within 60 seconds). Token refresh failures will cause subsequent API calls to fail with 401 errors.
316
+
317
+ **Note:** Token refresh only occurs for tokens generated by the SDK, not for user-provided tokens.
318
+
319
+ ----
320
+
321
+ Error Summary Table
322
+ -------------------
323
+
324
+ .. list-table::
325
+ :header-rows: 1
326
+ :widths: 20 40 10 30
327
+
328
+ * - Error Type
329
+ - Error Message
330
+ - HTTP Code
331
+ - Solution
332
+ * - Configuration
333
+ - ``If custom "host" is provided, "authUrl" must also be provided.``
334
+ - N/A
335
+ - Provide both host and authUrl
336
+ * - Configuration
337
+ - ``If token is provided directly, "clientId" must also be provided.``
338
+ - N/A
339
+ - Provide clientId with token
340
+ * - Configuration
341
+ - ``If apiKey is provided , "clientId" and "OrgId" must also be provided.``
342
+ - N/A
343
+ - Provide all three parameters
344
+ * - Authentication
345
+ - ``Cannot pass the security checks...``
346
+ - 401
347
+ - Verify API key and org ID
348
+ * - Authentication
349
+ - ``Invalid client id or secret``
350
+ - 401
351
+ - Verify client ID
352
+ * - Authentication
353
+ - ``Token response is empty``
354
+ - N/A
355
+ - Check network and authUrl
356
+ * - Token
357
+ - ``exp field is missing in the token``
358
+ - N/A
359
+ - Use valid JWT with exp field
360
+ * - Instance
361
+ - ``Client is not initialized. Call Client.getClient() first.``
362
+ - N/A
363
+ - Call getClient() first
364
+
365
+ ----
366
+
367
+ Required Configuration Parameters
368
+ ----------------------------------
369
+
370
+ When calling ``Client.getClient()``, the following parameters are required based on authentication method:
371
+
372
+ API Key Authentication (Recommended)
373
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
374
+
375
+ - ``apiKey`` - Your IBM Cloud API key
376
+ - ``clientId`` - Your client ID
377
+ - ``orgId`` - Your organization ID
378
+ - ``host`` - API host URL
379
+ - ``authUrl`` - Authentication URL
380
+
381
+ Token Authentication
382
+ ~~~~~~~~~~~~~~~~~~~~
383
+
384
+ - ``token`` - Pre-existing JWT token
385
+ - ``clientId`` - Your client ID
386
+
387
+ ----
388
+
389
+ Initialization Checklist
390
+ -------------------------
391
+
392
+ Before using the SDK, ensure:
393
+
394
+ - [ ] All required configuration parameters are provided
395
+ - [ ] Credentials are valid and not expired
396
+ - [ ] Correct environment URLs are used
397
+ - [ ] ``Client.getClient()`` is called before any API methods
398
+ - [ ] Error handling is implemented for initialization failures
399
+ - [ ] Credentials are stored securely (environment variables recommended)
400
+
401
+ ----
402
+
403
+ Common Scenarios
404
+ ----------------
405
+
406
+ Scenario 1: Application Startup
407
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
408
+
409
+ **Issue:** SDK must be initialized when application starts
410
+
411
+ **Solution:** Call ``Client.getClient()`` in application initialization code before using any API methods
412
+
413
+ Scenario 2: Invalid Credentials
414
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
415
+
416
+ **Issue:** 401 Unauthorized errors during initialization
417
+
418
+ **Solution:** Verify all credentials (API key, client ID, org ID) from IBM Cloud console
419
+
420
+ Scenario 3: Missing Configuration
421
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
422
+
423
+ **Issue:** Configuration error thrown before API call
424
+
425
+ **Solution:** Ensure all required parameters are provided based on authentication method
426
+
427
+ Scenario 4: Client Not Initialized
428
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
429
+
430
+ **Issue:** Error when calling API methods
431
+
432
+ **Solution:** Verify ``Client.getClient()`` was called successfully before using API methods
433
+
434
+ ----
435
+
436
+ Troubleshooting Steps
437
+ ----------------------
438
+
439
+ 1. **Verify Configuration**
440
+
441
+ - Check all required parameters are provided
442
+ - Ensure no parameters are empty or null
443
+ - Verify host and authUrl match your environment
444
+
445
+ 2. **Verify Credentials**
446
+
447
+ - Confirm API key is valid and not expired
448
+ - Check organization ID matches your IBM Cloud account
449
+ - Verify client ID is correct
450
+
451
+ 3. **Check Initialization**
452
+
453
+ - Ensure ``Client.getClient()`` is called before API methods
454
+ - Verify initialization completed without errors
455
+ - Check for any error messages during initialization
456
+
457
+ 4. **Network and Service**
458
+
459
+ - Verify network connectivity
460
+ - Check authentication service availability
461
+ - Ensure firewall allows connections to IBM Cloud
462
+
463
+ ----
464
+
465
+ Support
466
+ -------
467
+
468
+ For issues not covered in this guide:
469
+
470
+ 1. Verify SDK version is up to date
471
+ 2. Check IBM Cloud service status
472
+ 3. Review error messages and HTTP status codes
473
+ 4. Contact IBM Support with:
474
+
475
+ - Error message and stack trace
476
+ - SDK version
477
+ - Environment details
478
+ - Steps to reproduce (excluding sensitive credentials)
479
+
480
+ ----
481
+
482
+ **Last Updated:** 2025-11-24
483
+
484
+ **SDK Version:** 1.0.1
485
+
486
+ **Coverage:** SDK initialization, client instance, and authentication errors