code: def create(self, port, value, timestamp=None):
          
          session = self._session
          datapoint_class = self._datapoint_class
          attributes = {
              'port': port,
              'value': value,
          }
          if timestamp is not None:
              attributes['timestamp'] = to_iso_date(timestamp)
          attributes = build_request_body('data-point', None,
                                          attributes=attributes)
  
          def _process(json):
              data = json.get('data')
              return datapoint_class(data, session)
          return session.post(self._base_url, CB.json(201, _process),
                              json=attributes)
docs: Post a new reading to a timeseries.
  
          A reading is comprised of a `port`, a `value` and a timestamp.
  
          A port is like a tag for the given reading and gives an
          indication of the meaning of the value.
  
          The value of the reading can be any valid json value.
  
          The timestamp is considered the time the reading was taken, as
          opposed to the `created` time of the data-point which
          represents when the data-point was stored in the Helium
          API. If the timestamp is not given the server will construct a
          timestemp upon receiving the new reading.
  
          Args:
  
              port(string): The port to use for the new data-point
              value: The value for the new data-point
  
          Keyword Args:
  
              timestamp(:class:`datetime`): An optional :class:`datetime` object