{
  "components": {
    "responses": {
      "Error401": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            }
          }
        },
        "description": "Missing or invalid authentication credentials."
      },
      "Error403": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            }
          }
        },
        "description": "Authenticated, but the token does not grant the required scope."
      },
      "Error404": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            }
          }
        },
        "description": "Requested resource was not found."
      }
    },
    "schemas": {
      "BatchActionItemsRequest": {
        "properties": {
          "action_items": {
            "description": "List of action items to create",
            "items": {
              "$ref": "#/components/schemas/CreateActionItemRequest"
            },
            "maxItems": 50,
            "title": "Action Items",
            "type": "array"
          }
        },
        "required": [
          "action_items"
        ],
        "title": "BatchActionItemsRequest",
        "type": "object"
      },
      "BatchActionItemsResponse": {
        "properties": {
          "action_items": {
            "items": {
              "$ref": "#/components/schemas/DeveloperActionItem"
            },
            "title": "Action Items",
            "type": "array"
          },
          "created_count": {
            "title": "Created Count",
            "type": "integer"
          }
        },
        "required": [
          "action_items",
          "created_count"
        ],
        "title": "BatchActionItemsResponse",
        "type": "object"
      },
      "BatchMemoriesRequest": {
        "properties": {
          "memories": {
            "description": "List of memories to create",
            "items": {
              "$ref": "#/components/schemas/CreateMemoryRequest"
            },
            "maxItems": 25,
            "title": "Memories",
            "type": "array"
          }
        },
        "required": [
          "memories"
        ],
        "title": "BatchMemoriesRequest",
        "type": "object"
      },
      "BatchMemoriesResponse": {
        "properties": {
          "created_count": {
            "title": "Created Count",
            "type": "integer"
          },
          "memories": {
            "items": {
              "$ref": "#/components/schemas/DeveloperMemory"
            },
            "title": "Memories",
            "type": "array"
          }
        },
        "required": [
          "memories",
          "created_count"
        ],
        "title": "BatchMemoriesResponse",
        "type": "object"
      },
      "CategoryEnum": {
        "enum": [
          "personal",
          "education",
          "health",
          "finance",
          "legal",
          "philosophy",
          "spiritual",
          "science",
          "entrepreneurship",
          "parenting",
          "romantic",
          "travel",
          "inspiration",
          "technology",
          "business",
          "social",
          "work",
          "sports",
          "politics",
          "literature",
          "history",
          "architecture",
          "music",
          "weather",
          "news",
          "entertainment",
          "psychology",
          "real",
          "design",
          "family",
          "economics",
          "environment",
          "other"
        ],
        "title": "CategoryEnum",
        "type": "string"
      },
      "ConversationCreateResponse": {
        "properties": {
          "discarded": {
            "title": "Discarded",
            "type": "boolean"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "meeting_treatment_eligible": {
            "default": false,
            "title": "Meeting Treatment Eligible",
            "type": "boolean"
          },
          "status": {
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "id",
          "status",
          "discarded"
        ],
        "title": "ConversationCreateResponse",
        "type": "object"
      },
      "ConversationSource": {
        "enum": [
          "friend",
          "omi",
          "fieldy",
          "bee",
          "plaud",
          "frame",
          "friend_com",
          "apple_watch",
          "phone",
          "phone_call",
          "desktop",
          "openglass",
          "screenpipe",
          "workflow",
          "sdcard",
          "external_integration",
          "limitless",
          "rayban_meta",
          "onboarding",
          "unknown"
        ],
        "title": "ConversationSource",
        "type": "string"
      },
      "CreateActionItemRequest": {
        "properties": {
          "completed": {
            "default": false,
            "description": "Whether the action item is completed",
            "title": "Completed",
            "type": "boolean"
          },
          "description": {
            "description": "The action item description",
            "maxLength": 500,
            "minLength": 1,
            "title": "Description",
            "type": "string"
          },
          "due_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "When the action item is due (ISO format with timezone)",
            "title": "Due At"
          }
        },
        "required": [
          "description"
        ],
        "title": "CreateActionItemRequest",
        "type": "object"
      },
      "CreateConversationFromTranscriptRequest": {
        "properties": {
          "client_device_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Capture device id ({platform}_{hash})",
            "title": "Client Device Id"
          },
          "client_platform": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Client platform (ios/android/macos)",
            "title": "Client Platform"
          },
          "client_processing": {
            "anyOf": [
              {},
              {
                "type": "null"
              }
            ],
            "description": "Untrusted client-authored display projection. Accepted as a raw payload and validated in the handler: a malformed projection is dropped and the conversation still lands. Display only — never an input to intelligence.",
            "title": "Client Processing"
          },
          "client_session_id": {
            "anyOf": [
              {
                "maxLength": 200,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Stable client-generated session ID. When provided, retries return the same conversation ID.",
            "title": "Client Session Id"
          },
          "conversation_finalization_reason": {
            "anyOf": [
              {
                "enum": [
                  "user_stop",
                  "finish_and_continue",
                  "meeting_started",
                  "meeting_ended",
                  "max_duration_rotation",
                  "crash_recovery",
                  "retry"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Conversation Finalization Reason"
          },
          "conversation_role": {
            "default": "ambient",
            "enum": [
              "ambient",
              "meeting"
            ],
            "title": "Conversation Role",
            "type": "string"
          },
          "finished_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "When conversation finished (calculated from segments duration if not provided)",
            "title": "Finished At"
          },
          "geolocation": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/GeolocationInput"
              },
              {
                "type": "null"
              }
            ],
            "description": "Geolocation where conversation occurred"
          },
          "language": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": "en",
            "description": "Language code (ISO 639-1, e.g., 'en', 'es', 'fr')",
            "title": "Language"
          },
          "source": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ConversationSource"
              },
              {
                "type": "null"
              }
            ],
            "default": "phone",
            "description": "Source of the conversation (e.g., omi, friend, openglass, phone, external_integration)"
          },
          "started_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "When conversation started (defaults to now)",
            "title": "Started At"
          },
          "transcript_segments": {
            "description": "List of transcript segments with speaker and timing info",
            "items": {
              "$ref": "#/components/schemas/CreateConversationTranscriptSegment"
            },
            "maxItems": 500,
            "minItems": 1,
            "title": "Transcript Segments",
            "type": "array"
          }
        },
        "required": [
          "transcript_segments"
        ],
        "title": "CreateConversationFromTranscriptRequest",
        "type": "object"
      },
      "CreateConversationRequest": {
        "properties": {
          "finished_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "When the conversation finished (defaults to started_at + 5 minutes)",
            "title": "Finished At"
          },
          "geolocation": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/GeolocationInput"
              },
              {
                "type": "null"
              }
            ],
            "description": "Geolocation where conversation occurred"
          },
          "language": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": "en",
            "description": "Language code (ISO 639-1, e.g., 'en', 'es', 'fr')",
            "title": "Language"
          },
          "started_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "When the conversation started (defaults to now)",
            "title": "Started At"
          },
          "text": {
            "description": "The conversation text/transcript",
            "maxLength": 100000,
            "minLength": 1,
            "title": "Text",
            "type": "string"
          },
          "text_source": {
            "$ref": "#/components/schemas/ExternalIntegrationConversationSource",
            "default": "other_text",
            "description": "Source type: audio_transcript, message, or other_text"
          },
          "text_source_spec": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Additional source specification (e.g., 'email', 'slack', 'whatsapp')",
            "title": "Text Source Spec"
          }
        },
        "required": [
          "text"
        ],
        "title": "CreateConversationRequest",
        "type": "object"
      },
      "CreateConversationTranscriptSegment": {
        "properties": {
          "end": {
            "description": "End time in seconds (e.g., 1.5, 3.0, 65.8)",
            "title": "End",
            "type": "number"
          },
          "is_user": {
            "default": false,
            "description": "Whether this segment is from the user",
            "title": "Is User",
            "type": "boolean"
          },
          "person_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "ID of person speaking (if known)",
            "title": "Person Id"
          },
          "speaker": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": "SPEAKER_00",
            "description": "Speaker identifier (e.g., 'SPEAKER_00', 'SPEAKER_01')",
            "title": "Speaker"
          },
          "speaker_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "description": "Numeric speaker ID",
            "title": "Speaker Id"
          },
          "start": {
            "description": "Start time in seconds (e.g., 0.0, 1.5, 60.2)",
            "title": "Start",
            "type": "number"
          },
          "text": {
            "description": "The text spoken in this segment",
            "title": "Text",
            "type": "string"
          }
        },
        "required": [
          "text",
          "start",
          "end"
        ],
        "title": "CreateConversationTranscriptSegment",
        "type": "object"
      },
      "CreateGoalRequest": {
        "properties": {
          "current_value": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "description": "Optional current progress",
            "title": "Current Value"
          },
          "desired_outcome": {
            "anyOf": [
              {
                "maxLength": 2000,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Desired Outcome"
          },
          "goal_type": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/GoalType"
              },
              {
                "type": "null"
              }
            ],
            "description": "Optional metric type"
          },
          "horizon_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Horizon At"
          },
          "max_value": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "description": "Optional maximum scale value",
            "title": "Max Value"
          },
          "min_value": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "description": "Optional minimum scale value",
            "title": "Min Value"
          },
          "success_criteria": {
            "items": {
              "type": "string"
            },
            "maxItems": 20,
            "title": "Success Criteria",
            "type": "array"
          },
          "target_value": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "description": "Optional target value",
            "title": "Target Value"
          },
          "title": {
            "description": "The goal title/description",
            "maxLength": 500,
            "minLength": 1,
            "title": "Title",
            "type": "string"
          },
          "unit": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Unit label (e.g., 'users', 'points')",
            "title": "Unit"
          },
          "why_it_matters": {
            "anyOf": [
              {
                "maxLength": 2000,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Why It Matters"
          }
        },
        "required": [
          "title"
        ],
        "title": "CreateGoalRequest",
        "type": "object"
      },
      "CreateMemoryRequest": {
        "properties": {
          "category": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/MemoryCategory"
              },
              {
                "type": "null"
              }
            ],
            "description": "Memory category: interesting, system, or manual (auto-categorized if not provided)"
          },
          "content": {
            "description": "The content of the memory",
            "maxLength": 500,
            "minLength": 1,
            "title": "Content",
            "type": "string"
          },
          "tags": {
            "default": [],
            "description": "Tags associated with the memory",
            "items": {
              "type": "string"
            },
            "title": "Tags",
            "type": "array"
          },
          "visibility": {
            "default": "private",
            "description": "Visibility: public or private",
            "title": "Visibility",
            "type": "string"
          }
        },
        "required": [
          "content"
        ],
        "title": "CreateMemoryRequest",
        "type": "object"
      },
      "DailySummariesResponse": {
        "properties": {
          "summaries": {
            "items": {
              "$ref": "#/components/schemas/DailySummaryResponse"
            },
            "title": "Summaries",
            "type": "array"
          }
        },
        "title": "DailySummariesResponse",
        "type": "object"
      },
      "DailySummaryActionItem": {
        "properties": {
          "completed": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Completed"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "priority": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Priority"
          },
          "source_conversation_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Source Conversation Id"
          }
        },
        "title": "DailySummaryActionItem",
        "type": "object"
      },
      "DailySummaryDayStats": {
        "properties": {
          "action_items_count": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Action Items Count"
          },
          "action_items_created": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Action Items Created"
          },
          "memories_created": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Memories Created"
          },
          "proactive_moments": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Proactive Moments"
          },
          "total_conversations": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Total Conversations"
          },
          "total_duration_minutes": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Total Duration Minutes"
          },
          "watching_minutes": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Watching Minutes"
          }
        },
        "title": "DailySummaryDayStats",
        "type": "object"
      },
      "DailySummaryDecisionMade": {
        "properties": {
          "conversation_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Conversation Id"
          },
          "decision": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Decision"
          }
        },
        "title": "DailySummaryDecisionMade",
        "type": "object"
      },
      "DailySummaryKnowledgeNugget": {
        "properties": {
          "conversation_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Conversation Id"
          },
          "insight": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Insight"
          }
        },
        "title": "DailySummaryKnowledgeNugget",
        "type": "object"
      },
      "DailySummaryLocationPin": {
        "properties": {
          "address": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Address"
          },
          "conversation_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Conversation Id"
          },
          "latitude": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Latitude"
          },
          "longitude": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Longitude"
          },
          "time": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Time"
          }
        },
        "title": "DailySummaryLocationPin",
        "type": "object"
      },
      "DailySummaryResponse": {
        "additionalProperties": true,
        "properties": {
          "action_items": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/DailySummaryActionItem"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Action Items"
          },
          "created_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "date": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Date"
          },
          "day_emoji": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Day Emoji"
          },
          "decisions_made": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/DailySummaryDecisionMade"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Decisions Made"
          },
          "headline": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Headline"
          },
          "highlights": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/DailySummaryTopicHighlight"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Highlights"
          },
          "id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Id"
          },
          "knowledge_nuggets": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/DailySummaryKnowledgeNugget"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Knowledge Nuggets"
          },
          "locations": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/DailySummaryLocationPin"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Locations"
          },
          "memories_learned": {
            "items": {
              "$ref": "#/components/schemas/LearnedMemoryRef"
            },
            "title": "Memories Learned",
            "type": "array"
          },
          "overview": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Overview"
          },
          "stats": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/DailySummaryDayStats"
              },
              {
                "type": "null"
              }
            ]
          },
          "unresolved_questions": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/DailySummaryUnresolvedQuestion"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Unresolved Questions"
          }
        },
        "title": "DailySummaryResponse",
        "type": "object"
      },
      "DailySummaryTopicHighlight": {
        "properties": {
          "conversation_ids": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Conversation Ids"
          },
          "emoji": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Emoji"
          },
          "summary": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Summary"
          },
          "topic": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Topic"
          }
        },
        "title": "DailySummaryTopicHighlight",
        "type": "object"
      },
      "DailySummaryUnresolvedQuestion": {
        "properties": {
          "conversation_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Conversation Id"
          },
          "question": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Question"
          }
        },
        "title": "DailySummaryUnresolvedQuestion",
        "type": "object"
      },
      "DevApiKey": {
        "properties": {
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "key_prefix": {
            "title": "Key Prefix",
            "type": "string"
          },
          "last_used_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Used At"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "scopes": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Scopes"
          }
        },
        "required": [
          "id",
          "name",
          "key_prefix",
          "created_at"
        ],
        "title": "DevApiKey",
        "type": "object"
      },
      "DevApiKeyCreate": {
        "properties": {
          "name": {
            "title": "Name",
            "type": "string"
          },
          "scopes": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Scopes"
          }
        },
        "required": [
          "name"
        ],
        "title": "DevApiKeyCreate",
        "type": "object"
      },
      "DevApiKeyCreated": {
        "properties": {
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "key": {
            "title": "Key",
            "type": "string"
          },
          "key_prefix": {
            "title": "Key Prefix",
            "type": "string"
          },
          "last_used_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Used At"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "scopes": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Scopes"
          }
        },
        "required": [
          "id",
          "name",
          "key_prefix",
          "created_at",
          "key"
        ],
        "title": "DevApiKeyCreated",
        "type": "object"
      },
      "DeveloperActionItem": {
        "properties": {
          "completed": {
            "title": "Completed",
            "type": "boolean"
          },
          "completed_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Completed At"
          },
          "conversation_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Conversation Id"
          },
          "created_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "description": {
            "title": "Description",
            "type": "string"
          },
          "due_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Due At"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "updated_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At"
          }
        },
        "required": [
          "id",
          "description",
          "completed"
        ],
        "title": "DeveloperActionItem",
        "type": "object"
      },
      "DeveloperAskRequest": {
        "properties": {
          "limit": {
            "default": 5,
            "description": "How many of the most relevant conversations to ground the answer on",
            "maximum": 10.0,
            "minimum": 1.0,
            "title": "Limit",
            "type": "integer"
          },
          "question": {
            "description": "A natural-language question about the user's life/conversations",
            "maxLength": 1000,
            "minLength": 1,
            "title": "Question",
            "type": "string"
          },
          "timezone": {
            "default": "UTC",
            "description": "IANA timezone used to resolve relative dates in the answer",
            "title": "Timezone",
            "type": "string"
          }
        },
        "required": [
          "question"
        ],
        "title": "DeveloperAskRequest",
        "type": "object"
      },
      "DeveloperAskResponse": {
        "properties": {
          "answer": {
            "title": "Answer",
            "type": "string"
          },
          "sources": {
            "items": {
              "$ref": "#/components/schemas/DeveloperAskSource"
            },
            "title": "Sources",
            "type": "array"
          }
        },
        "required": [
          "answer",
          "sources"
        ],
        "title": "DeveloperAskResponse",
        "type": "object"
      },
      "DeveloperAskSource": {
        "properties": {
          "created_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "title": {
            "title": "Title",
            "type": "string"
          }
        },
        "required": [
          "id",
          "title"
        ],
        "title": "DeveloperAskSource",
        "type": "object"
      },
      "DeveloperConversation": {
        "properties": {
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "finished_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Finished At"
          },
          "folder_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Folder Id"
          },
          "folder_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Folder Name"
          },
          "geolocation": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Geolocation"
              },
              {
                "type": "null"
              }
            ]
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "language": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Language"
          },
          "source": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Source"
          },
          "started_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Started At"
          },
          "structured": {
            "$ref": "#/components/schemas/DeveloperConversationStructured"
          },
          "transcript_segments": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/DeveloperTranscriptSegment"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Transcript Segments"
          }
        },
        "required": [
          "id",
          "created_at",
          "started_at",
          "finished_at",
          "structured"
        ],
        "title": "DeveloperConversation",
        "type": "object"
      },
      "DeveloperConversationActionItem": {
        "properties": {
          "completed": {
            "default": false,
            "title": "Completed",
            "type": "boolean"
          },
          "completed_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Completed At"
          },
          "conversation_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Conversation Id"
          },
          "created_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "description": {
            "title": "Description",
            "type": "string"
          },
          "due_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Due At"
          },
          "updated_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At"
          }
        },
        "required": [
          "description"
        ],
        "title": "DeveloperConversationActionItem",
        "type": "object"
      },
      "DeveloperConversationEvent": {
        "properties": {
          "created": {
            "default": false,
            "title": "Created",
            "type": "boolean"
          },
          "description": {
            "default": "",
            "title": "Description",
            "type": "string"
          },
          "duration": {
            "default": 30,
            "title": "Duration",
            "type": "integer"
          },
          "start": {
            "format": "date-time",
            "title": "Start",
            "type": "string"
          },
          "title": {
            "title": "Title",
            "type": "string"
          }
        },
        "required": [
          "title",
          "start"
        ],
        "title": "DeveloperConversationEvent",
        "type": "object"
      },
      "DeveloperConversationStructured": {
        "properties": {
          "action_items": {
            "default": [],
            "items": {
              "$ref": "#/components/schemas/DeveloperConversationActionItem"
            },
            "title": "Action Items",
            "type": "array"
          },
          "category": {
            "$ref": "#/components/schemas/CategoryEnum"
          },
          "emoji": {
            "default": "🧠",
            "title": "Emoji",
            "type": "string"
          },
          "events": {
            "default": [],
            "items": {
              "$ref": "#/components/schemas/DeveloperConversationEvent"
            },
            "title": "Events",
            "type": "array"
          },
          "overview": {
            "title": "Overview",
            "type": "string"
          },
          "title": {
            "title": "Title",
            "type": "string"
          }
        },
        "required": [
          "title",
          "overview",
          "category"
        ],
        "title": "DeveloperConversationStructured",
        "type": "object"
      },
      "DeveloperFolder": {
        "properties": {
          "color": {
            "title": "Color",
            "type": "string"
          },
          "conversation_count": {
            "default": 0,
            "title": "Conversation Count",
            "type": "integer"
          },
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "icon": {
            "title": "Icon",
            "type": "string"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "is_default": {
            "default": false,
            "title": "Is Default",
            "type": "boolean"
          },
          "is_system": {
            "default": false,
            "title": "Is System",
            "type": "boolean"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "order": {
            "default": 0,
            "title": "Order",
            "type": "integer"
          },
          "updated_at": {
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "color",
          "icon",
          "created_at",
          "updated_at"
        ],
        "title": "DeveloperFolder",
        "type": "object"
      },
      "DeveloperGoal": {
        "properties": {
          "created_at": {
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "current_value": {
            "title": "Current Value",
            "type": "number"
          },
          "desired_outcome": {
            "title": "Desired Outcome",
            "type": "string"
          },
          "focus_rank": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Focus Rank"
          },
          "goal_id": {
            "title": "Goal Id",
            "type": "string"
          },
          "goal_type": {
            "title": "Goal Type",
            "type": "string"
          },
          "horizon_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Horizon At"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "is_active": {
            "title": "Is Active",
            "type": "boolean"
          },
          "max_value": {
            "title": "Max Value",
            "type": "number"
          },
          "metric": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/GoalMetric"
              },
              {
                "type": "null"
              }
            ]
          },
          "min_value": {
            "title": "Min Value",
            "type": "number"
          },
          "source": {
            "title": "Source",
            "type": "string"
          },
          "status": {
            "title": "Status",
            "type": "string"
          },
          "success_criteria": {
            "items": {
              "type": "string"
            },
            "title": "Success Criteria",
            "type": "array"
          },
          "target_value": {
            "title": "Target Value",
            "type": "number"
          },
          "title": {
            "title": "Title",
            "type": "string"
          },
          "unit": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Unit"
          },
          "updated_at": {
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          },
          "why_it_matters": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Why It Matters"
          }
        },
        "required": [
          "id",
          "goal_id",
          "title",
          "desired_outcome",
          "status",
          "source",
          "goal_type",
          "target_value",
          "current_value",
          "min_value",
          "max_value",
          "is_active",
          "created_at",
          "updated_at"
        ],
        "title": "DeveloperGoal",
        "type": "object"
      },
      "DeveloperMemory": {
        "properties": {
          "category": {
            "$ref": "#/components/schemas/MemoryCategory",
            "default": "interesting"
          },
          "content": {
            "default": "",
            "title": "Content",
            "type": "string"
          },
          "created_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "edited": {
            "default": false,
            "title": "Edited",
            "type": "boolean"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "manually_added": {
            "default": false,
            "title": "Manually Added",
            "type": "boolean"
          },
          "reviewed": {
            "default": false,
            "title": "Reviewed",
            "type": "boolean"
          },
          "scoring": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Scoring"
          },
          "tags": {
            "items": {
              "type": "string"
            },
            "title": "Tags",
            "type": "array"
          },
          "updated_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At"
          },
          "user_review": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "User Review"
          },
          "visibility": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": "private",
            "title": "Visibility"
          }
        },
        "required": [
          "id"
        ],
        "title": "DeveloperMemory",
        "type": "object"
      },
      "DeveloperMemoryVectorItem": {
        "additionalProperties": true,
        "properties": {
          "category": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Category"
          },
          "content": {
            "default": "",
            "title": "Content",
            "type": "string"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "relevance_score": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Relevance Score"
          }
        },
        "required": [
          "id"
        ],
        "title": "DeveloperMemoryVectorItem",
        "type": "object"
      },
      "DeveloperMemoryVectorPolicy": {
        "properties": {
          "app_has_default_memory_grant": {
            "title": "App Has Default Memory Grant",
            "type": "boolean"
          },
          "archive_capability": {
            "title": "Archive Capability",
            "type": "boolean"
          },
          "consumer": {
            "title": "Consumer",
            "type": "string"
          },
          "raw_provenance_capability": {
            "title": "Raw Provenance Capability",
            "type": "boolean"
          }
        },
        "required": [
          "consumer",
          "app_has_default_memory_grant",
          "archive_capability",
          "raw_provenance_capability"
        ],
        "title": "DeveloperMemoryVectorPolicy",
        "type": "object"
      },
      "DeveloperMemoryVectorSearchResponse": {
        "properties": {
          "archive_default_visible": {
            "title": "Archive Default Visible",
            "type": "boolean"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/DeveloperMemoryVectorItem"
            },
            "title": "Items",
            "type": "array"
          },
          "policy": {
            "$ref": "#/components/schemas/DeveloperMemoryVectorPolicy"
          },
          "returned_count": {
            "title": "Returned Count",
            "type": "integer"
          }
        },
        "required": [
          "returned_count",
          "archive_default_visible",
          "policy"
        ],
        "title": "DeveloperMemoryVectorSearchResponse",
        "type": "object"
      },
      "DeveloperSuccessResponse": {
        "properties": {
          "success": {
            "title": "Success",
            "type": "boolean"
          }
        },
        "required": [
          "success"
        ],
        "title": "DeveloperSuccessResponse",
        "type": "object"
      },
      "DeveloperTranscriptSegment": {
        "properties": {
          "end": {
            "title": "End",
            "type": "number"
          },
          "id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Id"
          },
          "speaker_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Speaker Id"
          },
          "speaker_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Speaker Name"
          },
          "start": {
            "title": "Start",
            "type": "number"
          },
          "text": {
            "title": "Text",
            "type": "string"
          }
        },
        "required": [
          "text",
          "start",
          "end"
        ],
        "title": "DeveloperTranscriptSegment",
        "type": "object"
      },
      "ErrorResponse": {
        "properties": {
          "detail": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "array"
              },
              {
                "type": "object"
              }
            ],
            "description": "Error detail returned by the API."
          }
        },
        "required": [
          "detail"
        ],
        "title": "ErrorResponse",
        "type": "object"
      },
      "ExternalIntegrationConversationSource": {
        "enum": [
          "audio_transcript",
          "message",
          "other_text"
        ],
        "title": "ExternalIntegrationConversationSource",
        "type": "string"
      },
      "Geolocation": {
        "properties": {
          "accuracy": {
            "anyOf": [
              {
                "minimum": 0.0,
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Accuracy"
          },
          "address": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Address"
          },
          "altitude": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Altitude"
          },
          "capture_source": {
            "anyOf": [
              {
                "enum": [
                  "current_position",
                  "last_known_position",
                  "manual",
                  "integration"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Capture Source"
          },
          "captured_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Captured At"
          },
          "google_place_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Google Place Id"
          },
          "latitude": {
            "maximum": 90.0,
            "minimum": -90.0,
            "title": "Latitude",
            "type": "number"
          },
          "location_type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Location Type"
          },
          "longitude": {
            "maximum": 180.0,
            "minimum": -180.0,
            "title": "Longitude",
            "type": "number"
          }
        },
        "required": [
          "latitude",
          "longitude"
        ],
        "title": "Geolocation",
        "type": "object"
      },
      "GeolocationInput": {
        "description": "Released wire contract for coordinates accepted at legacy API boundaries.\n\nBounds are enforced before any value is cached, geocoded, or persisted. Keeping\nthis transport shape broad preserves clients released before the bound contract\nexisted, while ``Geolocation`` remains the only usable server-side value.",
        "properties": {
          "accuracy": {
            "anyOf": [
              {
                "minimum": 0.0,
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Accuracy"
          },
          "address": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Address"
          },
          "altitude": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Altitude"
          },
          "capture_source": {
            "anyOf": [
              {
                "enum": [
                  "current_position",
                  "last_known_position",
                  "manual",
                  "integration"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Capture Source"
          },
          "captured_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Captured At"
          },
          "google_place_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Google Place Id"
          },
          "latitude": {
            "title": "Latitude",
            "type": "number"
          },
          "location_type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Location Type"
          },
          "longitude": {
            "title": "Longitude",
            "type": "number"
          }
        },
        "required": [
          "latitude",
          "longitude"
        ],
        "title": "GeolocationInput",
        "type": "object"
      },
      "GoalHistoryEntryResponse": {
        "properties": {
          "date": {
            "title": "Date",
            "type": "string"
          },
          "recorded_at": {
            "format": "date-time",
            "title": "Recorded At",
            "type": "string"
          },
          "value": {
            "title": "Value",
            "type": "number"
          }
        },
        "required": [
          "date",
          "value",
          "recorded_at"
        ],
        "title": "GoalHistoryEntryResponse",
        "type": "object"
      },
      "GoalMetric": {
        "additionalProperties": false,
        "properties": {
          "current": {
            "title": "Current",
            "type": "number"
          },
          "max": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Max"
          },
          "min": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Min"
          },
          "target": {
            "title": "Target",
            "type": "number"
          },
          "type": {
            "$ref": "#/components/schemas/GoalType"
          },
          "unit": {
            "anyOf": [
              {
                "maxLength": 64,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Unit"
          }
        },
        "required": [
          "type",
          "current",
          "target"
        ],
        "title": "GoalMetric",
        "type": "object"
      },
      "GoalType": {
        "enum": [
          "boolean",
          "scale",
          "numeric"
        ],
        "title": "GoalType",
        "type": "string"
      },
      "HTTPValidationError": {
        "properties": {
          "detail": {
            "items": {
              "$ref": "#/components/schemas/ValidationError"
            },
            "title": "Detail",
            "type": "array"
          }
        },
        "title": "HTTPValidationError",
        "type": "object"
      },
      "LearnedMemoryRef": {
        "description": "One memory the day actually produced, addressed by its canonical id.\n\nThis is the identity `knowledge_nuggets` never had: a client can render a\nnative review card and vote or correct through the existing memory\nendpoints. Review state (`user_review`, `edited`) is deliberately absent —\nclients read it live from the memory so a vote on one device shows on the\nother.",
        "properties": {
          "captured_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Captured At"
          },
          "category": {
            "default": "",
            "title": "Category",
            "type": "string"
          },
          "content": {
            "title": "Content",
            "type": "string"
          },
          "memory_id": {
            "title": "Memory Id",
            "type": "string"
          }
        },
        "required": [
          "memory_id",
          "content"
        ],
        "title": "LearnedMemoryRef",
        "type": "object"
      },
      "MemoryCategory": {
        "enum": [
          "interesting",
          "system",
          "manual",
          "workflow",
          "core",
          "hobbies",
          "lifestyle",
          "interests",
          "habits",
          "work",
          "skills",
          "learnings",
          "other",
          "auto"
        ],
        "title": "MemoryCategory",
        "type": "string"
      },
      "UpdateActionItemRequest": {
        "properties": {
          "completed": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "description": "New completion status",
            "title": "Completed"
          },
          "description": {
            "anyOf": [
              {
                "maxLength": 500,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "New description",
            "title": "Description"
          },
          "due_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "New due date (ISO format with timezone)",
            "title": "Due At"
          }
        },
        "title": "UpdateActionItemRequest",
        "type": "object"
      },
      "UpdateConversationRequest": {
        "properties": {
          "discarded": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "description": "Whether the conversation is discarded",
            "title": "Discarded"
          },
          "title": {
            "anyOf": [
              {
                "maxLength": 500,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "New title for the conversation",
            "title": "Title"
          }
        },
        "title": "UpdateConversationRequest",
        "type": "object"
      },
      "UpdateGoalRequest": {
        "properties": {
          "current_value": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "description": "New progress value",
            "title": "Current Value"
          },
          "desired_outcome": {
            "anyOf": [
              {
                "maxLength": 2000,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Desired Outcome"
          },
          "horizon_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Horizon At"
          },
          "max_value": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "description": "New maximum value",
            "title": "Max Value"
          },
          "min_value": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "description": "New minimum value",
            "title": "Min Value"
          },
          "success_criteria": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "maxItems": 20,
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Success Criteria"
          },
          "target_value": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "description": "New target value",
            "title": "Target Value"
          },
          "title": {
            "anyOf": [
              {
                "maxLength": 500,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "New title",
            "title": "Title"
          },
          "unit": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "New unit label",
            "title": "Unit"
          },
          "why_it_matters": {
            "anyOf": [
              {
                "maxLength": 2000,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Why It Matters"
          }
        },
        "title": "UpdateGoalRequest",
        "type": "object"
      },
      "UpdateMemoryRequest": {
        "properties": {
          "category": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/MemoryCategory"
              },
              {
                "type": "null"
              }
            ],
            "description": "New category for the memory"
          },
          "content": {
            "anyOf": [
              {
                "maxLength": 500,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "New content for the memory",
            "title": "Content"
          },
          "tags": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "New tags for the memory",
            "title": "Tags"
          },
          "visibility": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "New visibility: public or private",
            "title": "Visibility"
          }
        },
        "title": "UpdateMemoryRequest",
        "type": "object"
      },
      "ValidationError": {
        "properties": {
          "loc": {
            "items": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "integer"
                }
              ]
            },
            "title": "Location",
            "type": "array"
          },
          "msg": {
            "title": "Message",
            "type": "string"
          },
          "type": {
            "title": "Error Type",
            "type": "string"
          }
        },
        "required": [
          "loc",
          "msg",
          "type"
        ],
        "title": "ValidationError",
        "type": "object"
      }
    },
    "securitySchemes": {
      "developerApiKey": {
        "bearerFormat": "Omi Developer API key",
        "description": "Send `Authorization: Bearer <omi_developer_api_key>`.",
        "scheme": "bearer",
        "type": "http"
      },
      "firebaseBearer": {
        "bearerFormat": "Firebase ID token",
        "description": "Send `Authorization: Bearer <firebase_id_token>`.",
        "scheme": "bearer",
        "type": "http"
      }
    }
  },
  "info": {
    "contact": {
      "name": "Omi",
      "url": "https://omi.me/"
    },
    "description": "Programmatic access to your Omi data - memories, conversations, action items, goals, folders, and API keys. Build custom integrations, analytics dashboards, and automation workflows.",
    "license": {
      "name": "MIT",
      "url": "https://github.com/BasedHardware/omi/blob/main/LICENSE"
    },
    "title": "Omi Developer API",
    "version": "1.0.0"
  },
  "openapi": "3.1.0",
  "paths": {
    "/v1/dev/keys": {
      "get": {
        "operationId": "listApiKeys",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/DevApiKey"
                  },
                  "title": "Response Listapikeys",
                  "type": "array"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          }
        },
        "security": [
          {
            "firebaseBearer": []
          }
        ],
        "summary": "Get Keys",
        "tags": [
          "API Keys"
        ]
      },
      "post": {
        "description": "Create a new Developer API key with optional scopes.\n\n- **name**: Descriptive name for the key\n- **scopes**: Optional list of scopes. If not provided, defaults to read-only access.\n  Available scopes:\n  - conversations:read\n  - conversations:write\n  - memories:read\n  - memories:write\n  - action_items:read\n  - action_items:write\n  - goals:read\n  - goals:write",
        "operationId": "createApiKey",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DevApiKeyCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DevApiKeyCreated"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "firebaseBearer": []
          }
        ],
        "summary": "Create Key",
        "tags": [
          "API Keys"
        ]
      }
    },
    "/v1/dev/keys/{key_id}": {
      "delete": {
        "operationId": "revokeApiKey",
        "parameters": [
          {
            "in": "path",
            "name": "key_id",
            "required": true,
            "schema": {
              "title": "Key Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "firebaseBearer": []
          }
        ],
        "summary": "Delete Key",
        "tags": [
          "API Keys"
        ]
      }
    },
    "/v1/dev/user/action-items": {
      "get": {
        "description": "Get action items with optional filters. Locked action items are excluded.\n\n- **conversation_id**: Filter by conversation ID (None for standalone items)\n- **completed**: Filter by completion status\n- **start_date**: Filter by start date (inclusive)\n- **end_date**: Filter by end date (inclusive)\n- **limit**: Maximum number of items to return\n- **offset**: Number of items to skip",
        "operationId": "listActionItems",
        "parameters": [
          {
            "in": "query",
            "name": "conversation_id",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Conversation Id"
            }
          },
          {
            "in": "query",
            "name": "completed",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Completed"
            }
          },
          {
            "in": "query",
            "name": "start_date",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "date-time",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Start Date"
            }
          },
          {
            "in": "query",
            "name": "end_date",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "date-time",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "End Date"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 100,
              "title": "Limit",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "required": false,
            "schema": {
              "default": 0,
              "title": "Offset",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/DeveloperActionItem"
                  },
                  "title": "Response Listactionitems",
                  "type": "array"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "developerApiKey": []
          }
        ],
        "summary": "Get Action Items",
        "tags": [
          "Action Items"
        ]
      },
      "post": {
        "description": "Create a new action item for the authenticated user.\n\n- **description**: The action item description (1-500 characters)\n- **completed**: Whether the action item is completed (default: False)\n- **due_at**: Optional due date in ISO 8601 format with timezone",
        "operationId": "createActionItem",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateActionItemRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperActionItem"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "developerApiKey": []
          }
        ],
        "summary": "Create Action Item",
        "tags": [
          "Action Items"
        ]
      }
    },
    "/v1/dev/user/action-items/batch": {
      "post": {
        "description": "Create multiple action items in a batch.\n\n- **action_items**: List of action items to create (max 50)",
        "operationId": "createActionItemsBatch",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BatchActionItemsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BatchActionItemsResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "developerApiKey": []
          }
        ],
        "summary": "Create Action Items Batch",
        "tags": [
          "Action Items"
        ]
      }
    },
    "/v1/dev/user/action-items/{action_item_id}": {
      "delete": {
        "description": "Delete an action item by ID.\n\n- **action_item_id**: The ID of the action item to delete",
        "operationId": "deleteActionItem",
        "parameters": [
          {
            "in": "path",
            "name": "action_item_id",
            "required": true,
            "schema": {
              "title": "Action Item Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperSuccessResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "developerApiKey": []
          }
        ],
        "summary": "Delete Action Item",
        "tags": [
          "Action Items"
        ]
      },
      "patch": {
        "description": "Update an action item.\n\n- **action_item_id**: The ID of the action item to update\n- **description**: New description (optional)\n- **completed**: New completion status (optional)\n- **due_at**: New due date (optional, set to null to remove)",
        "operationId": "updateActionItem",
        "parameters": [
          {
            "in": "path",
            "name": "action_item_id",
            "required": true,
            "schema": {
              "title": "Action Item Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateActionItemRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperActionItem"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "developerApiKey": []
          }
        ],
        "summary": "Update Action Item",
        "tags": [
          "Action Items"
        ]
      }
    },
    "/v1/dev/user/ask": {
      "post": {
        "description": "Answer a natural-language question grounded in the user's own conversations.\n\nSemantically searches the user's conversations for the question, then synthesizes a\ncited answer from the most relevant ones — the same retrieval + RAG the chat surface\nuses, exposed for headless / Developer-API callers (CLI, CI, scripts). Read-only:\nit never writes; discarded conversations are excluded from retrieval and locked\nconversations are re-checked on the authoritative record before any go to the LLM.",
        "operationId": "ask",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DeveloperAskRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperAskResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "developerApiKey": []
          }
        ],
        "summary": "Ask Conversations",
        "tags": [
          "Conversations"
        ]
      }
    },
    "/v1/dev/user/conversations": {
      "get": {
        "description": "Get conversations with optional transcript inclusion.\n\n- **include_transcript**: If True, includes full transcript_segments in the response\n- **folder_id**: Filter by folder ID (must be a non-empty string if provided)\n- **starred**: Filter by starred status (true/false)",
        "operationId": "listConversations",
        "parameters": [
          {
            "in": "query",
            "name": "start_date",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "date-time",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Start Date"
            }
          },
          {
            "in": "query",
            "name": "end_date",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "date-time",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "End Date"
            }
          },
          {
            "in": "query",
            "name": "categories",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Categories"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 25,
              "title": "Limit",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "required": false,
            "schema": {
              "default": 0,
              "title": "Offset",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "include_transcript",
            "required": false,
            "schema": {
              "default": false,
              "title": "Include Transcript",
              "type": "boolean"
            }
          },
          {
            "in": "query",
            "name": "folder_id",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "minLength": 1,
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Folder Id"
            }
          },
          {
            "in": "query",
            "name": "starred",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Starred"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/DeveloperConversation"
                  },
                  "title": "Response Listconversations",
                  "type": "array"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "developerApiKey": []
          }
        ],
        "summary": "Get Conversations",
        "tags": [
          "Conversations"
        ]
      },
      "post": {
        "description": "Create a new conversation from text for the authenticated user.\n\nThis endpoint processes the provided text through the full conversation pipeline:\n- Generates structured data (title, overview, category, emoji)\n- Extracts action items (with deduplication)\n- Extracts memories (with quality filtering)\n- Determines if conversation should be discarded\n- Triggers app integrations\n- Triggers webhooks\n\n**Request Parameters:**\n- **text**: The conversation text/transcript (1-100,000 characters)\n- **text_source**: Source type - audio_transcript, message, or other_text (default: other_text)\n- **text_source_spec**: Additional source info (e.g., 'email', 'slack')\n- **started_at**: When conversation started (defaults to now)\n- **finished_at**: When conversation finished (defaults to started_at + 5 minutes)\n- **language**: Language code (default: 'en')\n- **geolocation**: Optional geolocation data\n\n**Response:**\n- Returns the created conversation ID and status\n- Use GET /v1/dev/user/conversations/{id} to retrieve full details",
        "operationId": "createConversation",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateConversationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConversationCreateResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "developerApiKey": []
          }
        ],
        "summary": "Create Conversation",
        "tags": [
          "Conversations"
        ]
      }
    },
    "/v1/dev/user/conversations/from-segments": {
      "post": {
        "description": "Create a new conversation from structured transcript segments.\n\nThis endpoint is for advanced integrations that have speaker diarization and timing information.\nIt processes the transcript segments through the full conversation pipeline.\n\n**Transcript Segments:**\n- **text**: The text spoken (required)\n- **speaker**: Speaker identifier like 'SPEAKER_00', 'SPEAKER_01' (default: 'SPEAKER_00')\n- **speaker_id**: Numeric speaker ID (auto-calculated from speaker if not provided)\n- **is_user**: Whether this segment is from the user (default: False)\n- **person_id**: ID of known person speaking (optional)\n- **start**: Start time in seconds, e.g., 0.0, 1.5, 60.2 (required)\n- **end**: End time in seconds, e.g., 1.5, 3.0, 65.8 (required)\n\n**Other Parameters:**\n- **source**: Source of conversation (default: external_integration). Options:\n  - omi, friend, openglass, phone, desktop, apple_watch, bee, plaud, frame, etc.\n- **started_at**: When conversation started (defaults to now)\n- **finished_at**: When conversation finished (calculated from last segment if not provided)\n- **language**: Language code (default: 'en')\n- **geolocation**: Optional geolocation data\n\n**Example:**\n```json\n{\n  \"transcript_segments\": [\n    {\n      \"text\": \"Hey, how are you doing?\",\n      \"speaker\": \"SPEAKER_00\",\n      \"is_user\": true,\n      \"start\": 0.0,\n      \"end\": 2.5\n    },\n    {\n      \"text\": \"I'm doing great, thanks!\",\n      \"speaker\": \"SPEAKER_01\",\n      \"is_user\": false,\n      \"start\": 2.8,\n      \"end\": 5.2\n    }\n  ],\n  \"source\": \"phone\",\n  \"language\": \"en\"\n}\n```",
        "operationId": "createConversationFromSegments",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateConversationFromTranscriptRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConversationCreateResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "developerApiKey": []
          }
        ],
        "summary": "Create Conversation From Segments",
        "tags": [
          "Conversations"
        ]
      }
    },
    "/v1/dev/user/conversations/{conversation_id}": {
      "delete": {
        "description": "Delete a conversation by ID.\n\nThis also deletes any associated photos in the conversation's subcollection.\n\n- **conversation_id**: The ID of the conversation to delete",
        "operationId": "deleteConversation",
        "parameters": [
          {
            "in": "path",
            "name": "conversation_id",
            "required": true,
            "schema": {
              "title": "Conversation Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperSuccessResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "developerApiKey": []
          }
        ],
        "summary": "Delete Conversation Endpoint",
        "tags": [
          "Conversations"
        ]
      },
      "get": {
        "description": "Get a single conversation by ID.\n\n- **conversation_id**: The ID of the conversation to retrieve\n- **include_transcript**: If True, includes full transcript_segments in the response",
        "operationId": "getConversation",
        "parameters": [
          {
            "in": "path",
            "name": "conversation_id",
            "required": true,
            "schema": {
              "title": "Conversation Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "include_transcript",
            "required": false,
            "schema": {
              "default": false,
              "title": "Include Transcript",
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperConversation"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "developerApiKey": []
          }
        ],
        "summary": "Get Conversation Endpoint",
        "tags": [
          "Conversations"
        ]
      },
      "patch": {
        "description": "Update a conversation's title or discard status.\n\n- **conversation_id**: The ID of the conversation to update\n- **title**: New title for the conversation (optional)\n- **discarded**: Whether the conversation is discarded (optional)",
        "operationId": "updateConversation",
        "parameters": [
          {
            "in": "path",
            "name": "conversation_id",
            "required": true,
            "schema": {
              "title": "Conversation Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateConversationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperConversation"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "developerApiKey": []
          }
        ],
        "summary": "Update Conversation Endpoint",
        "tags": [
          "Conversations"
        ]
      }
    },
    "/v1/dev/user/daily-summaries": {
      "get": {
        "description": "List the authenticated user's stored daily recaps.\n\nDaily summaries are derived from conversations, so this read uses the same\n`conversations:read` scope and aggregate read budget as conversation lists.",
        "operationId": "listDailySummaries",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 30,
              "maximum": 100,
              "minimum": 1,
              "title": "Limit",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "required": false,
            "schema": {
              "default": 0,
              "minimum": 0,
              "title": "Offset",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "start_date",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Start Date"
            }
          },
          {
            "in": "query",
            "name": "end_date",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "End Date"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DailySummariesResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "developerApiKey": []
          }
        ],
        "summary": "Get Developer Daily Summaries",
        "tags": [
          "Daily Summaries"
        ]
      }
    },
    "/v1/dev/user/daily-summaries/{summary_id}": {
      "get": {
        "description": "Get one stored daily recap by ID.",
        "operationId": "getDailySummary",
        "parameters": [
          {
            "in": "path",
            "name": "summary_id",
            "required": true,
            "schema": {
              "title": "Summary Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DailySummaryResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "developerApiKey": []
          }
        ],
        "summary": "Get Developer Daily Summary",
        "tags": [
          "Daily Summaries"
        ]
      }
    },
    "/v1/dev/user/folders": {
      "get": {
        "description": "Get all folders for the authenticated user.\n\nThis endpoint is strictly read-only and returns an empty list if the user has no folders.\nUnlike the internal `/v1/folders` endpoint, it does NOT call `initialize_system_folders`,\nbecause doing so under a `conversations:read` scope would silently write to Firestore\n(violating the read-only contract) and opens a TOCTOU window where concurrent first\nrequests can race past the outer empty-check and create duplicate system folders.\n\nSystem folders (Work, Personal, Social) are still initialized lazily through other paths:\n- The mobile app calls the internal `GET /v1/folders` whenever the conversations screen\n  is rendered (`app/lib/pages/conversations/conversations_page.dart`), which triggers\n  `initialize_system_folders` on first access.\n- The conversation post-processing pipeline calls `initialize_system_folders` whenever\n  a new conversation is created (`backend/utils/conversations/process_conversation.py`).\n\nIn practice, any user who can issue a Developer API key has already gone through one of\nthose paths, so the empty-list case here only affects users who have never opened the\nconversations tab nor created a single conversation.",
        "operationId": "listFolders",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/DeveloperFolder"
                  },
                  "title": "Response Listfolders",
                  "type": "array"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          }
        },
        "security": [
          {
            "developerApiKey": []
          }
        ],
        "summary": "Get User Folders",
        "tags": [
          "Folders"
        ]
      }
    },
    "/v1/dev/user/goals": {
      "get": {
        "description": "Get user goals.\n\n- **limit**: Maximum number of goals to return\n- **include_inactive**: If True, includes inactive/completed goals",
        "operationId": "listGoals",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 10,
              "title": "Limit",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "include_inactive",
            "required": false,
            "schema": {
              "default": false,
              "title": "Include Inactive",
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/DeveloperGoal"
                  },
                  "title": "Response Listgoals",
                  "type": "array"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "developerApiKey": []
          }
        ],
        "summary": "Get Goals",
        "tags": [
          "Goals"
        ]
      },
      "post": {
        "description": "Create a durable goal. Metrics are optional and other goals are never changed implicitly.\n\n- **title**: The goal title/description (1-500 characters)\n- **goal_type**: Optional metric type: boolean, scale, or numeric\n- **target_value**: Optional target value\n- **current_value**: Optional current progress\n- **min_value**: Optional minimum scale value\n- **max_value**: Optional maximum scale value\n- **unit**: Optional unit label (e.g., 'users', 'points')\n\nOmit all metric fields to create a qualitative goal.",
        "operationId": "createGoal",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateGoalRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperGoal"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "developerApiKey": []
          }
        ],
        "summary": "Create Goal",
        "tags": [
          "Goals"
        ]
      }
    },
    "/v1/dev/user/goals/{goal_id}": {
      "delete": {
        "description": "Delete a goal by ID.\n\n- **goal_id**: The ID of the goal to delete",
        "operationId": "deleteGoal",
        "parameters": [
          {
            "in": "path",
            "name": "goal_id",
            "required": true,
            "schema": {
              "title": "Goal Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperSuccessResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "developerApiKey": []
          }
        ],
        "summary": "Delete Goal",
        "tags": [
          "Goals"
        ]
      },
      "get": {
        "description": "Get a single goal by ID.\n\n- **goal_id**: The ID of the goal to retrieve",
        "operationId": "getGoal",
        "parameters": [
          {
            "in": "path",
            "name": "goal_id",
            "required": true,
            "schema": {
              "title": "Goal Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperGoal"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "developerApiKey": []
          }
        ],
        "summary": "Get Goal",
        "tags": [
          "Goals"
        ]
      },
      "patch": {
        "description": "Update a goal.\n\n- **goal_id**: The ID of the goal to update\n- **title**: New title (optional)\n- **target_value**: New target value (optional)\n- **current_value**: New progress value (optional)\n- **min_value**: New minimum value (optional)\n- **max_value**: New maximum value (optional)\n- **unit**: New unit label (optional)",
        "operationId": "updateGoal",
        "parameters": [
          {
            "in": "path",
            "name": "goal_id",
            "required": true,
            "schema": {
              "title": "Goal Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateGoalRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperGoal"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "developerApiKey": []
          }
        ],
        "summary": "Update Goal",
        "tags": [
          "Goals"
        ]
      }
    },
    "/v1/dev/user/goals/{goal_id}/history": {
      "get": {
        "description": "Get progress history for a goal.\n\n- **goal_id**: The ID of the goal\n- **days**: Number of days of history to return (max 365, default 30)",
        "operationId": "listGoalHistory",
        "parameters": [
          {
            "in": "path",
            "name": "goal_id",
            "required": true,
            "schema": {
              "title": "Goal Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "days",
            "required": false,
            "schema": {
              "default": 30,
              "maximum": 365,
              "minimum": 1,
              "title": "Days",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/GoalHistoryEntryResponse"
                  },
                  "title": "Response Listgoalhistory",
                  "type": "array"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "developerApiKey": []
          }
        ],
        "summary": "Get Goal History",
        "tags": [
          "Goals"
        ]
      }
    },
    "/v1/dev/user/goals/{goal_id}/progress": {
      "patch": {
        "description": "Update the progress value of a goal.\n\n- **goal_id**: The ID of the goal to update\n- **current_value**: New progress value (query parameter)",
        "operationId": "updateGoalProgress",
        "parameters": [
          {
            "in": "path",
            "name": "goal_id",
            "required": true,
            "schema": {
              "title": "Goal Id",
              "type": "string"
            }
          },
          {
            "description": "New progress value",
            "in": "query",
            "name": "current_value",
            "required": true,
            "schema": {
              "description": "New progress value",
              "title": "Current Value",
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperGoal"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "developerApiKey": []
          }
        ],
        "summary": "Update Goal Progress",
        "tags": [
          "Goals"
        ]
      }
    },
    "/v1/dev/user/memories": {
      "get": {
        "operationId": "listMemories",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 25,
              "title": "Limit",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "required": false,
            "schema": {
              "default": 0,
              "title": "Offset",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "categories",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Categories"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/DeveloperMemory"
                  },
                  "title": "Response Listmemories",
                  "type": "array"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "developerApiKey": []
          }
        ],
        "summary": "Get Memories",
        "tags": [
          "Memories"
        ]
      },
      "post": {
        "description": "Create a new memory for the authenticated user.\n\n- **content**: The content of the memory (1-500 characters)\n- **category**: Memory category (auto-categorized if not provided)\n- **visibility**: Visibility: public or private (default: private)\n- **tags**: List of tags associated with the memory",
        "operationId": "createMemory",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateMemoryRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperMemory"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "developerApiKey": []
          }
        ],
        "summary": "Create Memory",
        "tags": [
          "Memories"
        ]
      }
    },
    "/v1/dev/user/memories/batch": {
      "post": {
        "description": "Create multiple memories in a batch.\n\n- **memories**: List of memories to create (max 25)",
        "operationId": "createMemoriesBatch",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BatchMemoriesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BatchMemoriesResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "developerApiKey": []
          }
        ],
        "summary": "Create Memories Batch",
        "tags": [
          "Memories"
        ]
      }
    },
    "/v1/dev/user/memories/vector/search": {
      "get": {
        "description": "Search developer-readable default memory memory through hydrated vector candidates.\n\nThis narrow developer API vector endpoint fails closed unless the authenticated\nDeveloper API app/key has a verified memories.read scope and a persisted app/key\ndefault-read grant. Vector hits are hydrated through the universal repository\nagainst authoritative\n`users/{uid}/memory_items` before returning results, so stale Short-term and\nArchive remain unavailable by default.",
        "operationId": "search_memories_vector_v1_dev_user_memories_vector_search_get",
        "parameters": [
          {
            "in": "query",
            "name": "query",
            "required": true,
            "schema": {
              "minLength": 1,
              "title": "Query",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 10,
              "maximum": 100,
              "minimum": 1,
              "title": "Limit",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperMemoryVectorSearchResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "developerApiKey": []
          }
        ],
        "summary": "Search Memories Vector",
        "tags": [
          "developer"
        ]
      }
    },
    "/v1/dev/user/memories/{memory_id}": {
      "delete": {
        "description": "Delete a memory by ID.\n\n- **memory_id**: The ID of the memory to delete",
        "operationId": "deleteMemory",
        "parameters": [
          {
            "in": "path",
            "name": "memory_id",
            "required": true,
            "schema": {
              "title": "Memory Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperSuccessResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "developerApiKey": []
          }
        ],
        "summary": "Delete Memory",
        "tags": [
          "Memories"
        ]
      },
      "patch": {
        "description": "Update a memory's content, visibility, tags, or category.\n\n- **memory_id**: The ID of the memory to update\n- **content**: New content for the memory (optional)\n- **visibility**: New visibility: public or private (optional)\n- **tags**: New tags for the memory (optional)\n- **category**: New category for the memory (optional)",
        "operationId": "updateMemory",
        "parameters": [
          {
            "in": "path",
            "name": "memory_id",
            "required": true,
            "schema": {
              "title": "Memory Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateMemoryRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperMemory"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "security": [
          {
            "developerApiKey": []
          }
        ],
        "summary": "Update Memory",
        "tags": [
          "Memories"
        ]
      }
    }
  },
  "servers": [
    {
      "description": "Production",
      "url": "https://api.omi.me"
    }
  ],
  "tags": [
    {
      "description": "Read and write user memories - timeless facts, preferences, and insights.",
      "name": "Memories"
    },
    {
      "description": "Create and retrieve conversation transcripts with AI-generated summaries.",
      "name": "Conversations"
    },
    {
      "description": "Retrieve user-defined folders for organizing conversations.",
      "name": "Folders"
    },
    {
      "description": "Manage tasks and to-dos extracted from conversations or created manually.",
      "name": "Action Items"
    },
    {
      "description": "Manage user goals and progress history.",
      "name": "Goals"
    },
    {
      "description": "Create, list, and revoke developer API keys.",
      "name": "API Keys"
    }
  ]
}
