code: func (call *Call) UnmarshalJSON(data []byte) error {
  	var raw jsonCall
  	if err := json.Unmarshal(data, &raw); err != nil {
  		return err
  	}
  	createdAt, err := time.Parse(time.RFC3339, raw.CreatedAt)
  	if err != nil {
  		return fmt.Errorf("unable to parse Call CreatedAt: %v", err)
  	}
  	updatedAt, err := time.Parse(time.RFC3339, raw.UpdatedAt)
  	if err != nil {
  		return fmt.Errorf("unable to parse Call UpdatedAt: %v", err)
  	}
  	var endedAt *time.Time
  	if raw.EndedAt != "" {
  		eat, err := time.Parse(time.RFC3339, raw.EndedAt)
  		if err != nil {
  			return fmt.Errorf("unable to parse Call EndedAt: %v", err)
  		}
  		endedAt = &eat
  	}
  	*call = Call{
  		ID:          raw.ID,
  		Status:      CallStatus(raw.Status),
  		Source:      raw.Source,
  		Destination: raw.Destination,
  		NumberID:    raw.NumberID,
  		CreatedAt:   createdAt,
  		UpdatedAt:   updatedAt,
  		EndedAt:     endedAt,
  	}
  	return nil
  }
docs: // UnmarshalJSON implements the json.Unmarshaler interface.