rest_sanitize_boolean( $isAi ) ? 'true' : 'false', ]; $response = Helper::make_api_get_request( "v2/import/info/pack/$id", [], $extra_headers, 30 ); // 043 FR-003: one normalizer classifies transport failures AND non-200 // bodies. It replaces `extract_error_from_response()`, which returned // `mixed` — sometimes a string, sometimes a whole decoded body — and so // leaked upstream internals straight into a user-facing message. if ( is_wp_error( $response ) || wp_remote_retrieve_response_code( $response ) != 200 ) { return ResponseNormalizer::normalize( $response )->error(); } // Retrieve data from the response body. $body = wp_remote_retrieve_body( $response ); $data = json_decode( $body, true ); if ( isset( $data['error'] ) ) { return new WP_Error( 'api_error', $data['error'] ); } return $data; } }