'POST', 'callback' => 'rwpai_rest_get_ai_init', 'permission_callback' => '__return_true', ) ); // Save error log. register_rest_route( RWPAI_REST_API, '/error', array( 'methods' => 'POST', 'callback' => 'rwpai_post_error_log', 'permission_callback' => '__return_true', ), ); // Translations. register_rest_route( RWPAI_REST_API, '/localization', array( 'methods' => 'GET', 'callback' => 'rwpai_get_language_pack', 'permission_callback' => '__return_true', ) ); // ADMIN ============================================================================================================================. // Upload custom translation (Admin only). register_rest_route( RWPAI_REST_API, '/localization', array( 'methods' => 'POST', 'callback' => 'rwpai_upload_language_pack', 'permission_callback' => 'rwpai_rest_only_admin', 'args' => array( 'lang' => array( 'required' => true, 'type' => 'string', 'sanitize_callback' => 'sanitize_text_field', 'description' => 'Language code (e.g., en, fr, es)', ), 'translation' => array( 'required' => true, 'type' => 'object', 'description' => 'Translation data as JSON object', ), ), ) ); // Delete custom translation (Admin only). register_rest_route( RWPAI_REST_API, '/localization', array( 'methods' => 'DELETE', 'callback' => 'rwpai_delete_language_pack', 'permission_callback' => 'rwpai_rest_only_admin', 'args' => array( 'lang' => array( 'required' => true, 'type' => 'string', 'sanitize_callback' => 'sanitize_text_field', 'description' => 'Language code (e.g., en, fr, es)', ), ), ) ); register_rest_route( RWPAI_REST_API, '/get-settings', array( 'methods' => 'GET', 'callback' => 'rwpai_rest_get_settings', 'permission_callback' => 'rwpai_rest_only_admin', ) ); register_rest_route( RWPAI_REST_API, '/save-settings', array( 'methods' => 'POST', 'callback' => 'rwpai_rest_save_settings', 'permission_callback' => 'rwpai_rest_only_admin', ) ); // Error logging. register_rest_route( RWPAI_REST_API, '/error', array( 'methods' => 'GET', 'callback' => 'rwpai_get_error_logs', 'permission_callback' => 'rwpai_rest_only_admin', ), ); // Clean error log. register_rest_route( RWPAI_REST_API, '/error/clean', array( 'methods' => 'GET', 'callback' => 'rwpai_clean_error_logs', 'permission_callback' => 'rwpai_rest_only_admin', ), ); // Get posts sample. register_rest_route( RWPAI_REST_API, '/get-sample', array( 'methods' => 'GET', 'callback' => 'rwpai_get_sample_post', 'args' => array( 'type' => array( 'type' => 'string', 'default' => 'post', 'sanitize_callback' => 'sanitize_text_field', ), ), 'permission_callback' => 'rwpai_rest_only_admin', ) ); // Categories. register_rest_route( RWPAI_REST_API, '/post-categories', array( 'methods' => 'GET', 'callback' => 'rwpai_get_post_categories', 'permission_callback' => 'rwpai_rest_only_admin', ) ); } );