class_docstr: A data source that can populate columns by making Ajax calls to REST
  endpoints.
  
  The ``AjaxDataSource`` can be especially useful if you want to make a
  standalone document (i.e. not backed by the Bokeh server) that can still
  dynamically update using an existing REST API.
  
  The response from the REST API should match the ``.data`` property of a
  standard ``ColumnDataSource``, i.e. a JSON dict that maps names to arrays
  of values:
  
  .. code-block:: python
  
      {
          'x' : [1, 2, 3, ...],
          'y' : [9, 3, 2, ...]
      }
  
  Alternatively, if the REST API returns a different format, a ``CustomJS``
  callback can be provided to convert the REST response into Bokeh format,
  via the ``adapter`` property of this data source.
  
  Initial data can be set by specifying the ``data`` property directly.
  This is necessary when used in conjunction with a ``FactorRange``, even
  if the columns in `data`` are empty.
  
  A full example can be seen at :bokeh-tree:`examples/basic/data/ajax_source.py`
code: def __init__(self, *args, **kwargs) -> None:
      super().__init__(*args, **kwargs)
  
imports: from __future__ import annotations
  import logging
  from typing import TYPE_CHECKING, Any, Sequence, Union, overload
  import numpy
  from ..core.has_props import abstract
  from ..core.properties import JSON, Any, Bool, ColumnData, Dict, Enum, Instance, InstanceDefault, Int, Nullable, Object, Readonly, Required, Seq, String
  from ..model import Model
  from ..util.deprecation import deprecated
  from ..util.serialization import convert_datetime_array
  from ..util.warnings import BokehUserWarning, warn
  from .callbacks import CustomJS
  from .filters import AllIndices, Filter, IntersectionFilter
  from .selections import Selection, SelectionPolicy, UnionRenderers
label_desc: Use image node_id 1 to create a new AjaxDataSource object from inherited base classes: WebDataSource with example: obj = AjaxDataSource()