Ich habe immer wieder Probleme mit VARIO, wenn Daten per API an Gambio gehen. Allerdings sieht man in VARIO auch im Debug-Modus nicht genug: Code: 24.10.2023 23:07:41 [TGambioAPI] POST https://... .../api.php/v3/products/158/variants [HEADER]: Authorization=Basic dG9yb0Br... ...Mg== [HEADER]: Content-Type=application/json CONTENT: [ { "sortOrder": 460300, "modelNumber": "27305-XL-N200R", "GTIN": "", "ASIN": "", "EAN": "", "stockType": "only-positive", "stock": 100, "weightType": "replacing", "weight": 0, "priceType": "replacing", "price": 0, "vpeScalarValue": 0, "vpeUnitId": null, "deliveryTimeId": 1, "imageListId": null } ] 24.10.2023 23:07:41 [TGambioAPI] STATUS: 500 Internal Server Error HEADER: Cache-Control: public, max-age=0 Connection: Keep-Alive Date: Tue, 24 Oct 2023 21:07:41 GMT Keep-Alive: timeout=5, max=100 Content-Length: 54 Content-Type: application/json; charset=UTF-8 Expires: Tue, 24 Oct 2023 21:07:41 GMT x-rate-limit-limit: 5000 x-rate-limit-remaining: 4877 x-rate-limit-reset: 1698182536 x-shop-version: v4.8.0.2 x-api-version: 3.0.0 x-content-type-options: nosniff CONTENT: { "error": "An unexpected error occurred.", "details": "" } Das "details"- Attribut in der Antwort ist immer leer. Sollte da nicht jeweils etwas drin stehen? In /logfiles/api.log.txt (resp. .json) findet man ja deutlich mehr: Code: 4052 ###################################################################### 4053 4054 [2023-10-24 23:07:41 | ERROR] An unexpected error occurred while handling an incoming request. 4055 context: 4056 error: 4057 class: TypeError 4058 message: Argument 1 passed to Gambio\Api\Modules\ProductVariant\App\ProductVariantApiRequestValidator::validateGenerationBody() must be of the type arr ay, null given, called in /.../GambioApi/Modules/ProductVariant/App/ProductVariantApiRequestValidator.php on line 49 4059 code: 0 4060 file: /.../GambioApi/Modules/ProductVariant/App/ProductVariantApiRequestValidator.php:107 4061 trace: 4062 0: /.../GambioApi/Modules/ProductVariant/App/ProductVariantApiRequestValidator.php:49 4063 1: /.../GambioApi/Modules/ProductVariant/App/Actions/CreateProductVariantsAction.php:98 4064 2: /.../vendor/slim/slim/Slim/Handlers/Strategies/RequestResponse.php:38 4065 3: /.../vendor/slim/slim/Slim/Routing/Route.php:358 4066 4: /.../vendor/slim/slim/Slim/MiddlewareDispatcher.php:65 4067 5: /.../vendor/slim/slim/Slim/MiddlewareDispatcher.php:65 4068 6: /.../vendor/slim/slim/Slim/Routing/Route.php:315 4069 7: /.../vendor/slim/slim/Slim/Routing/RouteRunner.php:68 4070 8: /.../vendor/slim/slim/Slim/Middleware/RoutingMiddleware.php:45 4071 9: /.../vendor/slim/slim/Slim/MiddlewareDispatcher.php:121 4072 10: /.../vendor/slim/slim/Slim/Middleware/ErrorMiddleware.php:76 4073 11: /.../vendor/slim/slim/Slim/MiddlewareDispatcher.php:121 4074 12: /.../GambioApi/Application/Middleware/RateLimitMiddleware.php:85 4075 13: /.../vendor/slim/slim/Slim/MiddlewareDispatcher.php:168 4076 14: /.../GambioApi/Application/Middleware/AuthenticationMiddleware.php:78 4077 15: /.../vendor/slim/slim/Slim/MiddlewareDispatcher.php:168 4078 16: /.../GambioApi/Application/Middleware/VersionsMiddleware.php:38 4079 17: /.../vendor/slim/slim/Slim/MiddlewareDispatcher.php:168 4080 18: /.../vendor/slim/slim/Slim/MiddlewareDispatcher.php:65 4081 19: /.../vendor/slim/slim/Slim/App.php:199 4082 20: /.../vendor/slim/slim/Slim/App.php:183 4083 21: /.../GambioCore/Application/Kernel/HttpKernel.php:67 4084 22: /.../GambioCore/Application/Application.php:70 4085 23: /.../api_v3.php:24 4086 24: /.../api.php:13 4087 extra: 4088 request: 4089 method: POST 4090 uri: /.../api.php/v3/products/158/variants 4091 software: LiteSpeed 4092 address: 149.... ...9 4093 userAgent: Embarcadero RESTClient/1.0 4094 time: 101 4095 remoteAddress: cdb9e934e038ca93c6c46f4076e1fbbb 4096 Warum wird in den API-Antworten ein leeres Attribut ausgegeben? Ist das Absicht oder Fehler? Die Ausgabe des leeren Attributs "details" deutet auf letzteres... UND: Gemäss der API Dokumentation müsste das doch einen 400 Error geben, nicht 500, oder?
In den Fehlermeldungen wird "details" nur ausgegeben, wenn du dich im Test/Developer-"Modus" befindest. Wenn du im Shop-Root eine Datei mit dem Namen ".dev-environment" anlegst, dann wird "details" entsprechend mit weiteren Infos befüllt (so wie im Log). Ich vermute außerdem, dass der 500er-Fehler kommt, weil hier von PHP selbst ein Fehler festgestellt wird (falscher Typ für eine Variable) und nicht von den Validierungsfunktionen der API.