Skip to content

Instantly share code, notes, and snippets.

@dmarx
Last active June 28, 2025 16:53
Show Gist options
  • Save dmarx/08afeb669cdc2f974d6aca61dcce360d to your computer and use it in GitHub Desktop.
Save dmarx/08afeb669cdc2f974d6aca61dcce360d to your computer and use it in GitHub Desktop.
Schema inferred from ChatGPT conversations.json data export
{'$schema': 'http://json-schema.org/schema#',
'type': 'array',
'items': {'type': 'object',
'properties': {'mapping': {'type': 'object',
'patternProperties': {'^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$': {'type': 'object',
'properties': {'id': {'type': 'string'},
'message': {'anyOf': [{'type': 'null'},
{'type': 'object',
'properties': {'id': {'type': 'string'},
'author': {'type': 'object',
'properties': {'role': {'type': 'string'},
'name': {'type': ['null', 'string']},
'metadata': {'type': 'object',
'properties': {'real_author': {'type': 'string'}}}},
'required': ['metadata', 'name', 'role']},
'create_time': {'type': ['null', 'number']},
'update_time': {'type': ['null', 'number']},
'content': {'type': 'object',
'properties': {'content_type': {'type': 'string'},
'parts': {'type': 'array',
'items': {'anyOf': [{'type': 'string'},
{'type': 'object',
'properties': {'content_type': {'type': 'string'},
'asset_pointer': {'type': 'string'},
'size_bytes': {'type': 'integer'},
'width': {'type': 'integer'},
'height': {'type': 'integer'},
'fovea': {'type': ['integer', 'null']},
'metadata': {'anyOf': [{'type': 'null'},
{'type': 'object',
'properties': {'dalle': {'anyOf': [{'type': 'null'},
{'type': 'object',
'properties': {'gen_id': {'type': 'string'},
'prompt': {'type': 'string'},
'seed': {'type': ['integer', 'null']},
'parent_gen_id': {'type': ['null', 'string']},
'edit_op': {'type': ['null', 'string']},
'serialization_title': {'type': 'string'}},
'required': ['edit_op',
'gen_id',
'parent_gen_id',
'prompt',
'seed',
'serialization_title']}]},
'gizmo': {'type': 'null'},
'generation': {'anyOf': [{'type': 'null'},
{'type': 'object',
'properties': {'gen_id': {'type': 'string'},
'gen_size': {'type': 'string'},
'seed': {'type': 'null'},
'parent_gen_id': {'type': 'null'},
'height': {'type': 'integer'},
'width': {'type': 'integer'},
'transparent_background': {'type': 'boolean'},
'serialization_title': {'type': 'string'}},
'required': ['gen_id',
'gen_size',
'height',
'parent_gen_id',
'seed',
'serialization_title',
'transparent_background',
'width']}]},
'container_pixel_height': {'type': ['integer', 'null']},
'container_pixel_width': {'type': ['integer', 'null']},
'emu_omit_glimpse_image': {'type': 'null'},
'emu_patches_override': {'type': 'null'},
'sanitized': {'type': 'boolean'},
'asset_pointer_link': {'type': 'null'},
'watermarked_asset_pointer': {'type': 'null'},
'start_timestamp': {'type': 'null'},
'end_timestamp': {'type': 'null'},
'pretokenized_vq': {'type': 'null'},
'interruptions': {'type': 'null'},
'original_audio_source': {'type': 'null'},
'transcription': {'type': 'null'},
'word_transcription': {'type': 'null'},
'start': {'type': 'number'},
'end': {'type': 'number'}}}]},
'expiry_datetime': {'type': 'null'},
'frames_asset_pointers': {'type': 'array'},
'video_container_asset_pointer': {'type': 'null'},
'audio_asset_pointer': {'type': 'object',
'properties': {'expiry_datetime': {'type': 'null'},
'content_type': {'type': 'string'},
'asset_pointer': {'type': 'string'},
'size_bytes': {'type': 'integer'},
'format': {'type': 'string'},
'metadata': {'type': 'object',
'properties': {'start_timestamp': {'type': 'null'},
'end_timestamp': {'type': 'null'},
'pretokenized_vq': {'type': 'null'},
'interruptions': {'type': 'null'},
'original_audio_source': {'type': 'null'},
'transcription': {'type': 'null'},
'word_transcription': {'type': 'null'},
'start': {'type': 'number'},
'end': {'type': 'number'}},
'required': ['end',
'end_timestamp',
'interruptions',
'original_audio_source',
'pretokenized_vq',
'start',
'start_timestamp',
'transcription',
'word_transcription']}},
'required': ['asset_pointer',
'content_type',
'expiry_datetime',
'format',
'metadata',
'size_bytes']},
'audio_start_timestamp': {'type': 'number'},
'text': {'type': 'string'},
'direction': {'type': 'string'},
'decoding_id': {'type': 'null'},
'format': {'type': 'string'}},
'required': ['content_type']}]}},
'language': {'type': 'string'},
'response_format_name': {'type': 'null'},
'text': {'type': 'string'},
'thoughts': {'type': 'array',
'items': {'type': 'object',
'properties': {'summary': {'type': 'string'},
'content': {'type': 'string'}},
'required': ['content', 'summary']}},
'source_analysis_msg_id': {'type': 'string'},
'content': {'type': 'string'},
'result': {'type': 'string'},
'summary': {'type': ['null', 'string']},
'assets': {'type': 'array'},
'tether_id': {'type': 'null'},
'url': {'type': 'string'},
'domain': {'type': 'string'},
'title': {'type': 'string'},
'snippet': {'type': 'string'},
'pub_date': {'type': 'null'},
'crawl_date': {'type': 'null'},
'pub_timestamp': {'type': 'number'},
'ref_id': {'type': 'string'},
'name': {'type': 'string'}},
'required': ['content_type']},
'status': {'type': 'string'},
'end_turn': {'type': ['boolean', 'null']},
'weight': {'type': 'number'},
'metadata': {'type': 'object',
'properties': {'is_visually_hidden_from_conversation': {'type': 'boolean'},
'selected_sources': {'type': 'array',
'items': {'type': 'string'}},
'selected_github_repos': {'type': 'array'},
'serialization_metadata': {'type': 'object',
'properties': {'custom_symbol_offsets': {'type': 'array',
'items': {'type': 'object',
'properties': {'symbol': {'type': 'string'},
'startIndex': {'type': 'integer'},
'endIndex': {'type': 'integer'}},
'required': ['endIndex', 'startIndex', 'symbol']}}},
'required': ['custom_symbol_offsets']},
'request_id': {'type': ['null', 'string']},
'message_source': {'type': 'null'},
'timestamp_': {'type': 'string'},
'message_type': {'type': ['null', 'string']},
'model_slug': {'type': 'string'},
'default_model_slug': {'type': 'string'},
'parent_id': {'type': 'string'},
'is_complete': {'type': 'boolean'},
'finish_details': {'type': 'object',
'properties': {'type': {'type': 'string'},
'stop_tokens': {'type': 'array', 'items': {'type': 'integer'}},
'stop': {'type': 'string'}},
'required': ['type']},
'sonic_classification_result': {'type': 'object',
'properties': {'latency_ms': {'type': ['null', 'number']},
'search_prob': {'type': ['null', 'number']},
'force_search_threshold': {'type': ['null', 'number']},
'classifier_config_name': {'type': 'string'}},
'required': ['latency_ms', 'search_prob']},
'citations': {'type': 'array',
'items': {'type': 'object',
'properties': {'start_ix': {'type': 'integer'},
'end_ix': {'type': 'integer'},
'invalid_reason': {'type': 'string'},
'citation_format_type': {'type': 'string'},
'metadata': {'type': 'object',
'properties': {'type': {'type': 'string'},
'title': {'type': 'string'},
'url': {'type': 'string'},
'text': {'type': 'string'},
'pub_date': {'type': ['null', 'string']},
'extra': {'anyOf': [{'type': 'null'},
{'type': 'object',
'properties': {'cited_message_idx': {'type': 'integer'},
'search_result_idx': {'type': ['integer', 'null']},
'evidence_text': {'type': 'string'},
'cloud_doc_url': {'type': 'null'}},
'required': ['cited_message_idx', 'evidence_text']}]},
'og_tags': {'type': 'null'}},
'required': ['extra',
'pub_date',
'text',
'title',
'type',
'url']}},
'required': ['end_ix', 'start_ix']}},
'content_references': {'type': 'array',
'items': {'type': 'object',
'properties': {'matched_text': {'type': 'string'},
'start_idx': {'type': 'integer'},
'end_idx': {'type': 'integer'},
'refs': {'type': 'array',
'items': {'anyOf': [{'type': 'string'},
{'type': 'object',
'properties': {'turn_index': {'type': 'integer'},
'ref_type': {'type': 'string'},
'ref_index': {'type': 'integer'}},
'required': ['ref_index', 'ref_type', 'turn_index']}]}},
'alt': {'type': ['null', 'string']},
'prompt_text': {'type': ['null', 'string']},
'type': {'type': 'string'},
'invalid': {'type': 'boolean'},
'safe_urls': {'type': 'array', 'items': {'type': 'string'}},
'attributable_index': {'type': 'string'},
'attributions': {'type': 'null'},
'attributions_debug': {'type': 'null'},
'items': {'type': 'array',
'items': {'type': 'object',
'properties': {'title': {'type': 'string'},
'url': {'type': 'string'},
'pub_date': {'type': ['null', 'number']},
'snippet': {'type': ['null', 'string']},
'attribution_segments': {'anyOf': [{'type': 'null'},
{'type': 'array', 'items': {'type': 'string'}}]},
'supporting_websites': {'type': 'array',
'items': {'type': 'object',
'properties': {'title': {'type': 'string'},
'url': {'type': 'string'},
'pub_date': {'type': ['null', 'number']},
'snippet': {'type': 'string'},
'attribution': {'type': 'string'}},
'required': ['attribution',
'pub_date',
'snippet',
'title',
'url']}},
'refs': {'type': 'array',
'items': {'type': 'object',
'properties': {'turn_index': {'type': 'integer'},
'ref_type': {'type': 'string'},
'ref_index': {'type': 'integer'}},
'required': ['ref_index', 'ref_type', 'turn_index']}},
'hue': {'type': 'null'},
'attributions': {'type': 'null'},
'attribution': {'type': 'string'}},
'required': ['pub_date', 'snippet', 'title', 'url']}},
'status': {'type': 'string'},
'error': {'type': 'null'},
'style': {'type': ['null', 'string']},
'sources': {'type': 'array',
'items': {'type': 'object',
'properties': {'title': {'type': 'string'},
'url': {'type': 'string'},
'attribution': {'type': 'string'}},
'required': ['attribution', 'title', 'url']}},
'has_images': {'type': 'boolean'},
'images': {'type': 'array',
'items': {'type': 'object',
'properties': {'url': {'type': 'string'},
'content_url': {'type': 'string'},
'thumbnail_url': {'type': 'string'},
'title': {'type': 'string'},
'content_size': {'type': 'object',
'properties': {'width': {'type': 'integer'},
'height': {'type': 'integer'}},
'required': ['height', 'width']},
'thumbnail_size': {'type': 'object',
'properties': {'width': {'type': 'integer'},
'height': {'type': 'integer'}},
'required': ['height', 'width']},
'thumbnail_crop_info': {'type': 'null'},
'attribution': {'type': 'string'}},
'required': ['attribution',
'content_size',
'content_url',
'thumbnail_crop_info',
'thumbnail_size',
'thumbnail_url',
'title',
'url']}},
'title': {'type': 'string'},
'url': {'type': 'string'},
'pub_date': {'type': ['null', 'number']},
'snippet': {'type': 'string'},
'attribution': {'type': 'string'},
'icon_type': {'type': 'null'}},
'required': ['end_idx', 'matched_text', 'start_idx', 'type']}},
'command': {'type': 'string'},
'status': {'type': 'string'},
'search_source': {'type': 'string'},
'client_reported_search_source': {'type': ['null', 'string']},
'debug_sonic_thread_id': {'type': 'string'},
'search_result_groups': {'type': 'array',
'items': {'type': 'object',
'properties': {'type': {'type': 'string'},
'domain': {'type': 'string'},
'entries': {'type': 'array',
'items': {'type': 'object',
'properties': {'type': {'type': 'string'},
'url': {'type': 'string'},
'title': {'type': 'string'},
'snippet': {'type': 'string'},
'ref_id': {'anyOf': [{'type': 'null'},
{'type': 'object',
'properties': {'turn_index': {'type': 'integer'},
'ref_type': {'type': 'string'},
'ref_index': {'type': 'integer'}},
'required': ['ref_index', 'ref_type', 'turn_index']}]},
'content_type': {'type': 'null'},
'pub_date': {'type': ['null', 'number']},
'attributions': {'type': 'null'},
'attribution': {'type': 'string'},
'attributions_debug': {'type': 'null'}},
'required': ['pub_date',
'ref_id',
'snippet',
'title',
'type',
'url']}}},
'required': ['domain', 'entries', 'type']}},
'safe_urls': {'type': 'array', 'items': {'type': 'string'}},
'message_locale': {'type': 'string'},
'image_results': {'type': 'array',
'items': {'type': 'object',
'properties': {'url': {'type': 'string'},
'content_url': {'type': 'string'},
'thumbnail_url': {'type': 'string'},
'title': {'type': 'string'},
'content_size': {'type': 'object',
'properties': {'width': {'type': 'integer'},
'height': {'type': 'integer'}},
'required': ['height', 'width']},
'thumbnail_size': {'type': 'object',
'properties': {'width': {'type': 'integer'},
'height': {'type': 'integer'}},
'required': ['height', 'width']},
'thumbnail_crop_info': {'type': 'null'},
'attribution': {'type': 'string'}},
'required': ['attribution',
'content_size',
'content_url',
'thumbnail_crop_info',
'thumbnail_size',
'thumbnail_url',
'title',
'url']}},
'rebase_developer_message': {'type': 'boolean'},
'reasoning_status': {'type': 'string'},
'search_queries': {'type': 'array',
'items': {'type': 'object',
'properties': {'type': {'type': 'string'},
'q': {'type': 'string'}},
'required': ['q', 'type']}},
'search_display_string': {'type': 'string'},
'searched_display_string': {'type': 'string'},
'finished_duration_sec': {'type': 'integer'},
'canvas': {'type': 'object',
'properties': {'textdoc_id': {'type': 'string'},
'textdoc_type': {'type': 'string'},
'version': {'type': 'integer'},
'title': {'type': 'string'},
'create_source': {'type': 'string'},
'from_version': {'type': 'integer'},
'textdoc_content_length': {'type': 'integer'},
'user_message_type': {'type': 'string'},
'selection_metadata': {'type': 'object',
'properties': {'selection_type': {'type': 'string'},
'selection_position_range': {'type': 'object',
'properties': {'start': {'type': 'integer'},
'end': {'type': 'integer'}},
'required': ['end', 'start']}},
'required': ['selection_position_range', 'selection_type']},
'comment_ids': {'type': 'array', 'items': {'type': 'string'}},
'has_user_edit': {'type': 'boolean'},
'is_failure': {'type': 'boolean'}}},
'targeted_reply': {'type': 'string'},
'targeted_reply_label': {'type': 'string'},
'attachments': {'type': 'array',
'items': {'type': 'object',
'properties': {'id': {'type': 'string'},
'size': {'type': 'integer'},
'name': {'type': 'string'},
'mime_type': {'type': 'string'},
'width': {'type': 'integer'},
'height': {'type': 'integer'},
'mimeType': {'type': 'string'}},
'required': ['id', 'name']}},
'caterpillar_selected_sources': {'type': 'array',
'items': {'type': 'string'}},
'gizmo_id': {'type': ['null', 'string']},
'rebase_system_message': {'type': 'boolean'},
'category_suggestions': {'type': 'array',
'items': {'type': 'object',
'properties': {'title': {'type': 'string'},
'category_id': {'type': 'string'},
'suggestions': {'anyOf': [{'type': 'null'},
{'type': 'array',
'items': {'type': 'object',
'properties': {'title': {'type': 'null'},
'description': {'type': 'string'},
'prompt': {'type': 'string'},
'system_hint': {'type': 'string'},
'category_id': {'type': 'string'},
'cta_label': {'type': 'null'},
'image_url': {'type': 'null'},
'model_override': {'type': 'null'},
'id': {'type': 'string'}},
'required': ['category_id',
'cta_label',
'description',
'id',
'prompt',
'system_hint',
'title']}}]},
'style': {'type': 'string'}},
'required': ['category_id', 'suggestions', 'title']}},
'finished_text': {'type': 'string'},
'initial_text': {'type': 'string'},
'_cite_metadata': {'type': 'object',
'properties': {'citation_format': {'type': 'object',
'properties': {'name': {'type': 'string'},
'regex': {'type': 'string'}},
'required': ['name']},
'metadata_list': {'type': 'array',
'items': {'type': 'object',
'properties': {'type': {'type': 'string'},
'title': {'type': 'string'},
'url': {'type': 'string'},
'text': {'type': 'string'},
'pub_date': {'type': ['null', 'string']},
'extra': {'type': 'null'},
'og_tags': {'type': 'null'},
'name': {'type': 'string'},
'id': {'type': 'string'},
'source': {'type': 'string'}},
'required': ['extra', 'text', 'type']}},
'original_query': {'type': 'null'}},
'required': ['citation_format',
'metadata_list',
'original_query']},
'args': {'type': 'array',
'items': {'anyOf': [{'type': ['integer', 'string']},
{'type': 'array', 'items': {'type': 'integer'}}]}},
'system_hints': {'type': 'array', 'items': {'type': 'string'}},
'cloud_doc_urls': {'type': 'array', 'items': {'type': 'null'}},
'search_engine': {'type': 'string'},
'aggregate_result': {'type': 'object',
'properties': {'status': {'type': 'string'},
'run_id': {'type': 'string'},
'start_time': {'type': 'number'},
'update_time': {'type': 'number'},
'code': {'type': 'string'},
'end_time': {'type': ['null', 'number']},
'final_expression_output': {'type': ['null', 'string']},
'in_kernel_exception': {'anyOf': [{'type': 'null'},
{'type': 'object',
'properties': {'name': {'type': 'string'},
'traceback': {'type': 'array', 'items': {'type': 'string'}},
'args': {'type': 'array', 'items': {'type': 'string'}},
'notes': {'type': 'array'}},
'required': ['args', 'name', 'notes', 'traceback']}]},
'system_exception': {'type': 'null'},
'messages': {'type': 'array',
'items': {'type': 'object',
'properties': {'message_type': {'type': 'string'},
'time': {'type': 'number'},
'sender': {'type': 'string'},
'image_payload': {'type': 'null'},
'image_url': {'type': 'string'},
'width': {'type': 'integer'},
'height': {'type': 'integer'},
'stream_name': {'type': 'string'},
'text': {'type': 'string'},
'timeout_triggered': {'type': 'number'}},
'required': ['message_type', 'sender', 'time']}},
'jupyter_messages': {'type': 'array',
'items': {'type': 'object',
'properties': {'msg_type': {'type': 'string'},
'parent_header': {'type': 'object',
'properties': {'msg_id': {'type': 'string'},
'version': {'type': 'string'}},
'required': ['msg_id', 'version']},
'content': {'type': 'object',
'properties': {'execution_state': {'type': 'string'},
'data': {'type': 'object',
'properties': {'text/plain': {'type': 'string'},
'text/html': {'type': 'string'},
'image/vnd.openai.fileservice2.png': {'type': 'string'},
'image/vnd.openai.fileservice.png': {'type': 'string'}},
'required': ['text/plain']},
'name': {'type': 'string'},
'text': {'type': 'string'},
'traceback': {'type': 'array',
'items': {'type': 'string'}},
'ename': {'type': 'string'},
'evalue': {'type': 'string'}}},
'timeout': {'type': 'number'}},
'required': ['msg_type']}},
'timeout_triggered': {'type': ['null', 'number']}},
'required': ['code',
'end_time',
'final_expression_output',
'in_kernel_exception',
'jupyter_messages',
'messages',
'run_id',
'start_time',
'status',
'system_exception',
'timeout_triggered',
'update_time']},
'paragen_variants_info': {'type': 'object',
'properties': {'type': {'type': 'string'},
'num_variants_in_stream': {'type': 'integer'},
'display_treatment': {'type': 'string'},
'conversation_id': {'type': 'string'}},
'required': ['conversation_id',
'display_treatment',
'num_variants_in_stream',
'type']},
'paragen_variant_choice': {'type': 'string'},
'voice_mode_message': {'type': 'boolean'},
'kwargs': {'type': 'object',
'properties': {'message_id': {'type': 'string'},
'pending_message_id': {'type': ['null', 'string']},
'sync_write': {'type': 'boolean'}},
'required': ['message_id']},
'augmented_paragen_prompt_label': {'type': ['null', 'string']},
'exclusive_key': {'type': 'string'},
'model_switcher_deny': {'type': 'array',
'items': {'type': 'object',
'properties': {'slug': {'type': 'string'},
'context': {'type': 'string'},
'reason': {'type': 'string'},
'description': {'type': 'string'}},
'required': ['context', 'description', 'reason', 'slug']}},
'pad': {'type': 'string'},
'real_time_audio_has_video': {'type': 'boolean'},
'ada_visualizations': {'type': 'array',
'items': {'type': 'object',
'properties': {'type': {'type': 'string'},
'file_id': {'type': 'string'},
'title': {'type': 'string'},
'chart_type': {'type': 'string'},
'fallback_to_image': {'type': 'boolean'}},
'required': ['chart_type',
'fallback_to_image',
'file_id',
'title',
'type']}},
'requested_model_slug': {'type': 'string'},
'dalle': {'type': 'object',
'properties': {'from_client': {'type': 'object',
'properties': {'operation': {'type': 'object',
'properties': {'type': {'type': 'string'},
'original_gen_id': {'type': 'string'},
'original_file_id': {'type': 'string'}},
'required': ['original_file_id',
'original_gen_id',
'type']}},
'required': ['operation']}},
'required': ['from_client']},
'filter_out_for_training': {'type': 'boolean'},
'jit_plugin_data': {'type': 'object',
'properties': {'from_server': {'type': 'object',
'properties': {'type': {'type': 'string'},
'body': {'type': 'object',
'properties': {'domain': {'type': 'string'},
'is_consequential': {'type': 'boolean'},
'privacy_policy': {'type': 'string'},
'method': {'type': 'string'},
'path': {'type': 'string'},
'operation': {'type': 'string'},
'params': {'type': 'object',
'properties': {'country_name': {'type': 'string'},
'state_name': {'type': 'string'},
'city_name': {'type': 'string'},
'filters': {'type': 'string'},
'num_trails': {'type': 'integer'},
'raw_query': {'type': 'string'},
'location_helper': {'type': 'string'}},
'required': ['city_name',
'country_name',
'filters',
'location_helper',
'num_trails',
'raw_query',
'state_name']},
'actions': {'type': 'array',
'items': {'type': 'object',
'properties': {'name': {'type': 'string'},
'type': {'type': 'string'},
'allow': {'type': 'object',
'properties': {'target_message_id': {'type': 'string'}},
'required': ['target_message_id']},
'always_allow': {'type': 'object',
'properties': {'target_message_id': {'type': 'string'},
'operation_hash': {'type': 'string'}},
'required': ['operation_hash', 'target_message_id']},
'deny': {'type': 'object',
'properties': {'target_message_id': {'type': 'string'}},
'required': ['target_message_id']}},
'required': ['type']}}},
'required': ['actions',
'domain',
'is_consequential',
'method',
'operation',
'params',
'path',
'privacy_policy']}},
'required': ['body', 'type']},
'from_client': {'type': 'object',
'properties': {'user_action': {'type': 'object',
'properties': {'data': {'type': 'object',
'properties': {'type': {'type': 'string'}},
'required': ['type']},
'target_message_id': {'type': 'string'}},
'required': ['data', 'target_message_id']}},
'required': ['user_action']}}},
'invoked_plugin': {'type': 'object',
'properties': {'type': {'type': 'string'},
'namespace': {'type': 'string'},
'plugin_id': {'type': 'string'},
'http_response_status': {'type': 'integer'}},
'required': ['http_response_status',
'namespace',
'plugin_id',
'type']}}},
'recipient': {'type': 'string'},
'channel': {'type': ['null', 'string']}},
'required': ['author',
'channel',
'content',
'create_time',
'end_turn',
'id',
'metadata',
'recipient',
'status',
'update_time',
'weight']}]},
'parent': {'type': ['null', 'string']},
'children': {'type': 'array', 'items': {'type': 'string'}}},
'required': ['children', 'id', 'message', 'parent']},
'^client-created-': {'type': 'object',
'properties': {'id': {'type': 'string'},
'message': {'type': 'null'},
'parent': {'type': 'null'},
'children': {'type': 'array', 'items': {'type': 'string'}}},
'required': ['children', 'id', 'message', 'parent']}}},
'title': {'type': 'string'},
'create_time': {'type': 'number'},
'update_time': {'type': 'number'},
'moderation_results': {'type': 'array'},
'current_node': {'type': 'string'},
'plugin_ids': {'anyOf': [{'type': 'null'},
{'type': 'array', 'items': {'type': 'string'}}]},
'conversation_id': {'type': 'string'},
'conversation_template_id': {'type': ['null', 'string']},
'gizmo_id': {'type': ['null', 'string']},
'gizmo_type': {'type': ['null', 'string']},
'is_archived': {'type': 'boolean'},
'is_starred': {'type': 'null'},
'safe_urls': {'type': 'array', 'items': {'type': 'string'}},
'blocked_urls': {'type': 'array'},
'default_model_slug': {'type': ['null', 'string']},
'conversation_origin': {'type': 'null'},
'voice': {'type': ['null', 'string']},
'async_status': {'type': ['integer', 'null']},
'disabled_tool_ids': {'type': 'array'},
'is_do_not_remember': {'type': ['boolean', 'null']},
'memory_scope': {'type': 'string'},
'id': {'type': 'string'}},
'required': ['async_status',
'blocked_urls',
'conversation_id',
'conversation_origin',
'conversation_template_id',
'create_time',
'current_node',
'default_model_slug',
'disabled_tool_ids',
'gizmo_id',
'gizmo_type',
'id',
'is_archived',
'is_do_not_remember',
'is_starred',
'mapping',
'memory_scope',
'moderation_results',
'plugin_ids',
'safe_urls',
'title',
'update_time',
'voice']}}
import json
import os
from pathlib import Path
import sys
from genson import SchemaBuilder
seed_schema = {
'type': 'array',
'items': {
'type': 'object',
'properties': {
'mapping': {
'type': 'object',
'patternProperties': {
# UUID pattern - GenSON will fill in the actual schema
r'^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$': None,
# Also handle the client-created-root pattern
r'^client-created-': None
}
}
}
}
}
builder = SchemaBuilder()
builder.add_schema(seed_schema)
root = Path("path/to/conversations.json")
convs = json.load(fpath.open())
builder.add_object(convs)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment