'POST', 'callback' => array( $this->attachments, 'upload' ), 'permission_callback' => static function () { return current_user_can( 'manage_options' ) && current_user_can( 'upload_files' ); }, ) ); register_rest_route( 'actionpanel-ai/v1', '/capabilities', array( 'methods' => 'GET', 'callback' => array( $this->commands, 'capabilities' ), 'permission_callback' => static function () { return current_user_can( 'manage_options' ); }, ) ); register_rest_route( 'actionpanel-ai/v1', '/commands', array( 'methods' => 'POST', 'callback' => array( $this->commands, 'execute' ), 'permission_callback' => static function () { return current_user_can( 'manage_options' ); }, 'args' => array( 'batch_id' => array( 'required' => false, 'type' => 'string', 'sanitize_callback' => 'sanitize_text_field', ), 'commands' => array( 'required' => true, 'type' => 'array', ), ), ) ); register_rest_route( 'actionpanel-ai/v1', '/settings', array( 'methods' => 'POST', 'callback' => array( $this->settings, 'handle' ), 'permission_callback' => static function () { return current_user_can( 'manage_options' ); }, 'args' => array( 'allowActionPanelAiRequests' => self::optional_bool_arg(), 'assistantEnabled' => self::optional_bool_arg(), 'allowLogReads' => self::optional_bool_arg(), 'allowWriteOperations' => self::optional_bool_arg(), 'autoApproveSafeWriteOperations' => self::optional_bool_arg(), 'requireReadApproval' => self::optional_bool_arg(), 'setupCompleted' => self::optional_bool_arg(), ), ) ); register_rest_route( 'actionpanel-ai/v1', '/privacy-proof', array( 'methods' => 'GET', 'callback' => array( $this->privacy_proof, 'handle' ), 'permission_callback' => '__return_true', 'args' => array( 'challenge' => array( 'required' => true, 'type' => 'string', 'sanitize_callback' => array( PrivacyProofController::class, 'sanitize_challenge' ), 'validate_callback' => array( PrivacyProofController::class, 'validate_challenge' ), ), ), ) ); } /** * Return the shared schema for optional boolean settings. */ private static function optional_bool_arg(): array { return array( 'required' => false, 'type' => 'boolean', 'sanitize_callback' => array( SettingsController::class, 'sanitize_bool_arg' ), 'validate_callback' => array( SettingsController::class, 'validate_bool_arg' ), ); } }