Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings
This repository was archived by the owner on Jul 9, 2025. It is now read-only.
This repository was archived by the owner on Jul 9, 2025. It is now read-only.

Unable to deserialise a calendar response, due to unexpected types #251

Copy link
Copy link

Description

@sammyd
Issue body actions

Describe the bug

When trying to retrieve the calendars (or any calendar response) a deserialisation error occurs:

[NoMethodError: undefined method `create_from_discriminator_value' for an instance of Hash](http://localhost:3000/calendars#)

This occurs whilst trying to execute this line, parsing the allowedOnlineMeetingProviders field:

https://github.com/microsoftgraph/msgraph-sdk-ruby/blob/main/lib/models/calendar.rb#L235

Expected behavior

It should parse the API response correctly, and not raise an error.

How to reproduce

  1. Create an authenticated ruby client, with access to presumably a minimum of Calendars.Read.
  2. Execute this:
@calendars = client.me.calendars.get.resume

SDK Version

0.22.2

Latest version known to work for scenario above?

No response

Known Workarounds

I've monkey patched this method to just comment out the offending line for now. It's not an acceptable workaround.

Debug output

Click to expand log

20:50:30 web.1  | NoMethodError (Error during deserialization)
20:50:30 web.1  | Caused by: NoMethodError (Error during deserialization)
20:50:30 web.1  | Caused by: NoMethodError (Error during deserialization)
20:50:30 web.1  | Caused by: NoMethodError (undefined method `create_from_discriminator_value' for an instance of Hash)
20:50:30 web.1  |
20:50:30 web.1  | Information for: NoMethodError (Error during deserialization):
20:50:30 web.1  |
20:50:30 web.1  | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:99:in `rescue in get_object_value'
20:50:30 web.1  | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:93:in `get_object_value'
20:50:30 web.1  | microsoft_kiota_faraday (0.14.0) lib/microsoft_kiota_faraday/faraday_request_adapter.rb:61:in `block in send_async'
20:50:30 web.1  |
20:50:30 web.1  | Information for cause: NoMethodError (Error during deserialization):
20:50:30 web.1  |
20:50:30 web.1  | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:99:in `rescue in get_object_value'
20:50:30 web.1  | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:93:in `get_object_value'
20:50:30 web.1  | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:89:in `block in get_collection_of_object_values'
20:50:30 web.1  | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:85:in `map'
20:50:30 web.1  | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:85:in `get_collection_of_object_values'
20:50:30 web.1  | microsoft_graph (0.22.2) lib/models/calendar_collection_response.rb:34:in `block in get_field_deserializers'
20:50:30 web.1  | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:109:in `block in assign_field_values'
20:50:30 web.1  | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:104:in `each'
20:50:30 web.1  | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:104:in `assign_field_values'
20:50:30 web.1  | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:96:in `get_object_value'
20:50:30 web.1  | microsoft_kiota_faraday (0.14.0) lib/microsoft_kiota_faraday/faraday_request_adapter.rb:61:in `block in send_async'
20:50:30 web.1  |
20:50:30 web.1  | Information for cause: NoMethodError (Error during deserialization):
20:50:30 web.1  |
20:50:30 web.1  | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:99:in `rescue in get_object_value'
20:50:30 web.1  | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:93:in `get_object_value'
20:50:30 web.1  | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:89:in `block in get_collection_of_object_values'
20:50:30 web.1  | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:85:in `map'
20:50:30 web.1  | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:85:in `get_collection_of_object_values'
20:50:30 web.1  | microsoft_graph (0.22.2) lib/models/calendar.rb:235:in `block in get_field_deserializers'
20:50:30 web.1  | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:109:in `block in assign_field_values'
20:50:30 web.1  | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:104:in `each'
20:50:30 web.1  | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:104:in `assign_field_values'
20:50:30 web.1  | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:96:in `get_object_value'
20:50:30 web.1  | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:89:in `block in get_collection_of_object_values'
20:50:30 web.1  | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:85:in `map'
20:50:30 web.1  | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:85:in `get_collection_of_object_values'
20:50:30 web.1  | microsoft_graph (0.22.2) lib/models/calendar_collection_response.rb:34:in `block in get_field_deserializers'
20:50:30 web.1  | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:109:in `block in assign_field_values'
20:50:30 web.1  | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:104:in `each'
20:50:30 web.1  | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:104:in `assign_field_values'
20:50:30 web.1  | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:96:in `get_object_value'
20:50:30 web.1  | microsoft_kiota_faraday (0.14.0) lib/microsoft_kiota_faraday/faraday_request_adapter.rb:61:in `block in send_async'

20:50:30 web.1  | Information for cause: NoMethodError (undefined method `create_from_discriminator_value' for an instance of Hash):
20:50:30 web.1  |
20:50:30 web.1  | microsoft_graph (0.22.2) lib/models/calendar.rb:235:in `block (2 levels) in get_field_deserializers'
20:50:30 web.1  | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:95:in `get_object_value'
20:50:30 web.1  | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:89:in `block in get_collection_of_object_values'
20:50:30 web.1  | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:85:in `map'
20:50:30 web.1  | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:85:in `get_collection_of_object_values'
20:50:30 web.1  | microsoft_graph (0.22.2) lib/models/calendar.rb:235:in `block in get_field_deserializers'
20:50:30 web.1  | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:109:in `block in assign_field_values'
20:50:30 web.1  | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:104:in `each'
20:50:30 web.1  | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:104:in `assign_field_values'
20:50:30 web.1  | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:96:in `get_object_value'
20:50:30 web.1  | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:89:in `block in get_collection_of_object_values'
20:50:30 web.1  | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:85:in `map'
20:50:30 web.1  | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:85:in `get_collection_of_object_values'
20:50:30 web.1  | microsoft_graph (0.22.2) lib/models/calendar_collection_response.rb:34:in `block in get_field_deserializers'
20:50:30 web.1  | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:109:in `block in assign_field_values'
20:50:30 web.1  | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:104:in `each'
20:50:30 web.1  | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:104:in `assign_field_values'
20:50:30 web.1  | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:96:in `get_object_value'
20:50:30 web.1  | microsoft_kiota_faraday (0.14.0) lib/microsoft_kiota_faraday/faraday_request_adapter.rb:61:in `block in send_async'

Configuration

No response

Other information

I'm reasonably confident that this is occurring because this line:

https://github.com/microsoftgraph/msgraph-sdk-ruby/blob/main/lib/models/calendar.rb#L235

"allowedOnlineMeetingProviders" => lambda {|n| @allowed_online_meeting_providers = n.get_collection_of_object_values(lambda {|pn| MicrosoftGraph::Models::OnlineMeetingProviderType.create_from_discriminator_value(pn) }) },

Is expecting MicrosoftGraph::Models::OnlineMeetingProviderType to be something like a MicrosoftGraph::Models::Entity, but actually, it's just a Hash:

OnlineMeetingProviderType = {
  Unknown: :Unknown,
  SkypeForBusiness: :SkypeForBusiness,
  SkypeForConsumer: :SkypeForConsumer,
  TeamsForBusiness: :TeamsForBusiness,
}

https://github.com/microsoftgraph/msgraph-sdk-ruby/blob/main/lib/models/online_meeting_provider_type.rb

I'm not entirely sure what to do about this, partially because I assume this should actually be a just returning some sort of array of symbols, but more importantly, I believe this gem is auto-generated by Kiota somehow?

I'm happy to put a PR in, but could do with some direction!

Or maybe I'm completely wrong—lemme know!

Reactions are currently unavailable

Metadata

Metadata

Assignees

No one assigned

    Labels

    help wantedStandard GitHub labelStandard GitHub labeltype:bugA broken experienceA broken experience

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

    Morty Proxy This is a proxified and sanitized view of the page, visit original site.