{"openapi":"3.1.0","info":{"title":"Reddit Alert API","version":"0.0.154+2026-09-04"},"paths":{"/v1/alerts/{alert_id}/coverage":{"get":{"summary":"V1 Get Alert Coverage","description":"Explain why an alert did or did not catch a given Reddit post.\n\nRequires the `alerts:read` scope.\n\nThe verdict names the first step of the pipeline the content did not get\npast: `not_ingested`, `subreddit_not_monitored`, `posted_before_coverage`,\n`ingested_not_evaluated`, `evaluated_not_matched`, or `matched`. It is\nread from what the pipeline already recorded, so this route costs\nnothing and is safe to repeat.\n\nTo also find out what the query says about the post now, POST to\n`/alerts/{alert_id}/coverage/evaluations`.","operationId":"v1_get_alert_coverage_v1_alerts__alert_id__coverage_get","parameters":[{"name":"alert_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Alert Id"}},{"name":"reddit_url","in":"query","required":true,"schema":{"type":"string","description":"Reddit submission or comment URL to check the alert against.","title":"Reddit Url"},"description":"Reddit submission or comment URL to check the alert against."},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1AlertCoverageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/alerts/{alert_id}/coverage/evaluations":{"post":{"summary":"V1 Evaluate Alert Coverage","description":"Run the alert's query against a post now and return the reasoning.\n\nRequires the `alerts:write` scope.\n\nReturns the same coverage the GET returns, plus `evaluation`: what the\nquery says about this post as it stands today, which is not always what\nthe alert decided at the time. A verdict of `evaluated_not_matched`\nalongside an `evaluation` that matches means the query has been edited\nsince, or the post has.\n\nEvery call runs the query and charges the account's AI quota, which is\nwhy this is a POST and why a read-only key cannot reach it. Nothing is\ncached, so retry it only when you mean to pay for another run.","operationId":"v1_evaluate_alert_coverage_v1_alerts__alert_id__coverage_evaluations_post","parameters":[{"name":"alert_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Alert Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1AlertCoverageEvaluationRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1AlertCoverageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/alerts/{alert_id}/alert_matches":{"get":{"summary":"V1 List Alert Matches For Alert","description":"List alert matches for a specific alert.\n\nRequires `alert_matches:read` scope.\n\nArgs:\n    request: FastAPI request object.\n    session: Current user session (from API key auth).\n    alert_id: ID of the alert.\n    limit: Number of items to return (1-100).\n    offset: Offset for pagination.\n    created_after: Return matches created after this timestamp (exclusive).\n    created_before: Return matches created before this timestamp (exclusive).\n\nReturns:\n    V1AlertMatchesListResponse with alert matches and metadata.","operationId":"v1_list_alert_matches_for_alert_v1_alerts__alert_id__alert_matches_get","parameters":[{"name":"alert_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Alert Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Number of items to return","default":20,"title":"Limit"},"description":"Number of items to return"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Offset for pagination","default":0,"title":"Offset"},"description":"Offset for pagination"},{"name":"created_after","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Return matches created after this timestamp (exclusive, ISO 8601).","title":"Created After"},"description":"Return matches created after this timestamp (exclusive, ISO 8601)."},{"name":"created_before","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Return matches created before this timestamp (exclusive, ISO 8601).","title":"Created Before"},"description":"Return matches created before this timestamp (exclusive, ISO 8601)."},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1AlertMatchesListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/alert_matches":{"get":{"summary":"V1 List Alert Matches","description":"List all alert matches for the authenticated user.\n\nRequires `alert_matches:read` scope.\n\nArgs:\n    request: FastAPI request object.\n    session: Current user session (from API key auth).\n    limit: Number of items to return (1-100).\n    offset: Offset for pagination.\n    created_after: Return matches created after this timestamp (exclusive).\n    created_before: Return matches created before this timestamp (exclusive).\n\nReturns:\n    V1AlertMatchesListResponse with alert matches and metadata.","operationId":"v1_list_alert_matches_v1_alert_matches_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Number of items to return","default":20,"title":"Limit"},"description":"Number of items to return"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Offset for pagination","default":0,"title":"Offset"},"description":"Offset for pagination"},{"name":"created_after","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Return matches created after this timestamp (exclusive, ISO 8601).","title":"Created After"},"description":"Return matches created after this timestamp (exclusive, ISO 8601)."},{"name":"created_before","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Return matches created before this timestamp (exclusive, ISO 8601).","title":"Created Before"},"description":"Return matches created before this timestamp (exclusive, ISO 8601)."},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1AlertMatchesListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/alert_matches/{alert_match_id}":{"get":{"summary":"V1 Get Alert Match","description":"Get a single alert match by ID.\n\nRequires `alert_matches:read` scope.\n\nArgs:\n    request: FastAPI request object.\n    session: Current user session (from API key auth).\n    alert_match_id: ID of the alert match to fetch.\n\nReturns:\n    V1SingleAlertMatchResponse with the alert match and metadata.","operationId":"v1_get_alert_match_v1_alert_matches__alert_match_id__get","parameters":[{"name":"alert_match_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Alert Match Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1SingleAlertMatchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/alerts":{"get":{"summary":"V1 List Alerts","description":"List alerts for the authenticated user.\n\nRequires `alerts:read` scope.\n\nArgs:\n    request: FastAPI request object.\n    session: Current user session (from API key auth).\n    limit: Number of items to return (1-100).\n    offset: Offset for pagination.\n\nReturns:\n    V1AlertsListResponse with alerts and metadata.","operationId":"v1_list_alerts_v1_alerts_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Number of items to return","default":20,"title":"Limit"},"description":"Number of items to return"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Offset for pagination","default":0,"title":"Offset"},"description":"Offset for pagination"},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1AlertsListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"V1 Create Alert","description":"Create a new alert.\n\nRequires `alerts:write` scope.\n\nArgs:\n    request: FastAPI request object.\n    session: Current user session (from API key auth).\n    alert_request: Alert creation data.\n\nReturns:\n    V1SingleAlertResponse with the created alert and metadata.","operationId":"v1_create_alert_v1_alerts_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1CreateAlertRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1MutatedAlertResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/alerts/{alert_id}":{"get":{"summary":"V1 Get Alert","description":"Get a single alert by ID.\n\nRequires `alerts:read` scope.\n\nArgs:\n    request: FastAPI request object.\n    session: Current user session (from API key auth).\n    alert_id: ID of the alert to fetch.\n\nReturns:\n    V1SingleAlertResponse with the alert and metadata.\n\nRaises:\n    ApiError: If the alert is not found (includes unauthorized access).","operationId":"v1_get_alert_v1_alerts__alert_id__get","parameters":[{"name":"alert_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Alert Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1SingleAlertResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"summary":"V1 Update Alert","description":"Update an existing alert.\n\nRequires `alerts:write` scope.\n\nArgs:\n    request: FastAPI request object.\n    session: Current user session (from API key auth).\n    alert_id: ID of the alert to update.\n    alert_request: Fields to update.\n\nReturns:\n    V1SingleAlertResponse with the updated alert and metadata.","operationId":"v1_update_alert_v1_alerts__alert_id__patch","parameters":[{"name":"alert_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Alert Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1UpdateAlertRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1MutatedAlertResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"V1 Delete Alert","description":"Delete an alert.\n\nRequires `alerts:write` scope.\n\nArgs:\n    request: FastAPI request object.\n    session: Current user session (from API key auth).\n    alert_id: ID of the alert to delete.\n\nRaises:\n    ApiError: If the alert is not found.","operationId":"v1_delete_alert_v1_alerts__alert_id__delete","parameters":[{"name":"alert_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Alert Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/collections":{"get":{"summary":"V1 List Collections","description":"List the account's collections, most recently updated first. Items are\nomitted from list entries; fetch a single collection for its items.\n\nRequires `collections:read` scope.","operationId":"v1_list_collections_v1_collections_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1CollectionsListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"V1 Create Collection","description":"Create a collection owned by the caller's account. Collections and\ntheir items are unlimited on every plan.\n\nRequires `collections:write` scope.","operationId":"v1_create_collection_v1_collections_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1CreateCollectionRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1SingleCollectionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/collections/{collection_id}":{"get":{"summary":"V1 Get Collection","description":"Get a collection with its saved items, newest first.\n\nRequires `collections:read` scope.\n\nRaises:\n    ApiError: If the collection is not found.","operationId":"v1_get_collection_v1_collections__collection_id__get","parameters":[{"name":"collection_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Collection Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1SingleCollectionWithItemsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"summary":"V1 Update Collection","description":"Rename a collection or edit its description. Only provided fields\nchange; `\"description\": null` clears the description.\n\nRequires `collections:write` scope.\n\nRaises:\n    ApiError: If no fields are provided, the name is null, or the\n        collection is not found.","operationId":"v1_update_collection_v1_collections__collection_id__patch","parameters":[{"name":"collection_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Collection Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1UpdateCollectionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1SingleCollectionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"V1 Delete Collection","description":"Delete a collection and its items. Matches in alert inboxes are not\naffected. Collections linked to an alert are refused with 409; unlink\nthem first.\n\nRequires `collections:write` scope.\n\nRaises:\n    ApiError: If the collection is linked to an alert (409) or is\n        not found (404).","operationId":"v1_delete_collection_v1_collections__collection_id__delete","parameters":[{"name":"collection_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Collection Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/collections/{collection_id}/linked_alert":{"put":{"summary":"V1 Link Collection To Alert","description":"Link a collection to an alert as its example set: a record of what\nthat alert should and should not match. Good and bad verdicts come from\nmatch feedback on the alert.\n\nLinking is one-to-one in both directions: a collection serves at most one\nalert, and an alert has at most one linked collection. Repeating a link\nthat already exists succeeds without changing anything.\n\nRequires `collections:write` scope.\n\nRaises:\n    ApiError: If the collection or alert is not found (404), or either\n        side is already linked to something else (409).","operationId":"v1_link_collection_to_alert_v1_collections__collection_id__linked_alert_put","parameters":[{"name":"collection_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Collection Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1LinkCollectionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1SingleCollectionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"V1 Unlink Collection From Alert","description":"Unlink a collection from its alert. The collection, its items, and\nevery label already recorded are kept; labels live on the alert, so\nrelinking later restores the judged view.\n\nUnlinking a collection that is not linked succeeds.\n\nRequires `collections:write` scope.\n\nRaises:\n    ApiError: If the collection is not found (404).","operationId":"v1_unlink_collection_from_alert_v1_collections__collection_id__linked_alert_delete","parameters":[{"name":"collection_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Collection Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/collections/{collection_id}/items":{"post":{"summary":"V1 Add Collection Items","description":"Save matches of the account's alerts into a collection. Matches\noutside the account are silently ignored; content already in the\ncollection is skipped. `data.added` reports how many items were created.\n\nRequires `collections:write` scope.\n\nRaises:\n    ApiError: If the collection is not found.","operationId":"v1_add_collection_items_v1_collections__collection_id__items_post","parameters":[{"name":"collection_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Collection Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1AddCollectionItemsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1AddCollectionItemsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/collections/{collection_id}/items/from_reddit_search":{"post":{"summary":"V1 Add Collection Items From Reddit Search","description":"Save a Reddit search's results into a collection.\n\nSearch results are not alert matches, so the content is read from the\nsearch's own results. Omitting `reddit_fullnames` saves every result the\nsearch returned. Content already in the collection is skipped;\n`data.added` reports how many items were created.\n\nRequires `collections:write` scope.\n\nRaises:\n    ApiError: If the collection or the Reddit search is not found.","operationId":"v1_add_collection_items_from_reddit_search_v1_collections__collection_id__items_from_reddit_search_post","parameters":[{"name":"collection_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Collection Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1AddCollectionItemsFromRedditSearchRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1AddCollectionItemsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/collections/{collection_id}/items/from_url":{"post":{"summary":"V1 Add Collection Item From Url","description":"Save a single Reddit submission or comment to a collection by URL.\n\nRequires `collections:write` scope.\n\nRaises:\n    ApiError: If the URL does not resolve to a Reddit submission or\n        comment (422), the content is already in the collection (409),\n        or the collection is not found (404).","operationId":"v1_add_collection_item_from_url_v1_collections__collection_id__items_from_url_post","parameters":[{"name":"collection_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Collection Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1AddCollectionItemFromUrlRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1SingleCollectionItemResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/collections/{collection_id}/items/{item_id}":{"patch":{"summary":"V1 Update Collection Item","description":"Set or clear the calling user's note on an item, returning the\nrefreshed collection with items. Notes are per-user: each account member\nkeeps their own note on an item, and this endpoint only ever touches the\ncaller's (the user the API key belongs to).\n\nRequires `collections:write` scope.\n\nRaises:\n    ApiError: If the collection or item is not found.","operationId":"v1_update_collection_item_v1_collections__collection_id__items__item_id__patch","parameters":[{"name":"collection_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Collection Id"}},{"name":"item_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Item Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1UpdateCollectionItemRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1SingleCollectionWithItemsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"V1 Delete Collection Item","description":"Remove one item from a collection.\n\nRequires `collections:write` scope.\n\nRaises:\n    ApiError: If the collection item is not found.","operationId":"v1_delete_collection_item_v1_collections__collection_id__items__item_id__delete","parameters":[{"name":"collection_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Collection Id"}},{"name":"item_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Item Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/collections/{collection_id}/share":{"post":{"summary":"V1 Share Collection","description":"Mint (or return the existing) public share link for a collection.\nIdempotent: re-sharing yields the same stable token. Anyone with\n`data.share_url` can view a read-only snapshot of the collection.\n\nRequires `collections:write` scope.\n\nRaises:\n    ApiError: If the collection is not found.","operationId":"v1_share_collection_v1_collections__collection_id__share_post","parameters":[{"name":"collection_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Collection Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ShareCollectionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"V1 Unshare Collection","description":"Stop sharing a collection. The existing share link stops resolving\nimmediately; a later re-share mints a fresh link.\n\nRequires `collections:write` scope.\n\nRaises:\n    ApiError: If the collection is not found.","operationId":"v1_unshare_collection_v1_collections__collection_id__share_delete","parameters":[{"name":"collection_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Collection Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/reddit_searches":{"post":{"summary":"V1 Create Reddit Search","description":"Start a Reddit search. Returns immediately with status 'pending';\npoll GET /v1/reddit_searches/{id} until status is 'completed' or\n'failed'. Counts against your monthly Reddit search quota.\n\nRequires `reddit_searches:write` scope.","operationId":"v1_create_reddit_search_v1_reddit_searches_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1CreateRedditSearchRequest"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1SingleRedditSearchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"summary":"V1 List Reddit Searches","description":"List your Reddit searches, newest first. Results are omitted from\nlist items; fetch a single search for its results.\n\nRequires `reddit_searches:read` scope.","operationId":"v1_list_reddit_searches_v1_reddit_searches_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1RedditSearchesListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/reddit_searches/{reddit_search_id}":{"get":{"summary":"V1 Get Reddit Search","description":"Retrieve a Reddit search and its results.\n\nPoll this endpoint until status is 'completed' or 'failed'. Results are\nmatches ordered by relevance; pass include_non_matches=true at creation\nto also receive evaluated items that did not match.\n\nRequires `reddit_searches:read` scope.","operationId":"v1_get_reddit_search_v1_reddit_searches__reddit_search_id__get","parameters":[{"name":"reddit_search_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Reddit Search Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1SingleRedditSearchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/subreddit_searches":{"post":{"summary":"V1 Create Subreddit Search","description":"Start a subreddit finder run. Returns immediately with status\n'pending'; poll GET /v1/subreddit_searches/{id} until status is\n'completed' or 'failed'. Counts against your monthly subreddit finder\nquota.\n\nRequires `subreddit_searches:write` scope.","operationId":"v1_create_subreddit_search_v1_subreddit_searches_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1CreateSubredditSearchRequest"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1SingleSubredditSearchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"summary":"V1 List Subreddit Searches","description":"List your subreddit finder runs, newest first. Reports are omitted\nfrom list items; fetch a single run for its report.\n\nRequires `subreddit_searches:read` scope.","operationId":"v1_list_subreddit_searches_v1_subreddit_searches_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1SubredditSearchesListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/subreddit_searches/{subreddit_search_id}":{"get":{"summary":"V1 Get Subreddit Search","description":"Retrieve a subreddit finder run and its report.\n\nRequires `subreddit_searches:read` scope.","operationId":"v1_get_subreddit_search_v1_subreddit_searches__subreddit_search_id__get","parameters":[{"name":"subreddit_search_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Subreddit Search Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1SingleSubredditSearchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AlertCoverage":{"properties":{"verdict":{"$ref":"#/components/schemas/CoverageVerdict"},"summary":{"type":"string","title":"Summary","description":"One sentence stating the verdict in the user's terms."},"reddit_id":{"type":"string","title":"Reddit Id"},"content_type":{"type":"string","enum":["submission","comment"],"title":"Content Type"},"reddit_url":{"type":"string","title":"Reddit Url"},"subreddit":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subreddit"},"permalink":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Permalink"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"excerpt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Excerpt"},"posted_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Posted At"},"subreddit_monitored":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Subreddit Monitored"},"monitored_subreddits":{"items":{"type":"string"},"type":"array","title":"Monitored Subreddits"},"coverage_windows":{"items":{"$ref":"#/components/schemas/CoverageWindow"},"type":"array","title":"Coverage Windows"},"coverage_started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Coverage Started At"},"match_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Match Id"},"matched_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Matched At"},"match_explanation_tree":{"anyOf":[{"items":{},"type":"array"},{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Match Explanation Tree"},"job_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Status"},"job_attempts":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Job Attempts"},"job_last_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Last Error"},"job_completion_outcome":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Completion Outcome"},"evaluated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Evaluated At"},"gap_conditions":{"items":{"$ref":"#/components/schemas/CoverageGapCondition"},"type":"array","title":"Gap Conditions"},"evaluation":{"anyOf":[{"$ref":"#/components/schemas/CoverageEvaluation"},{"type":"null"}]},"evaluation_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Evaluation Error"}},"type":"object","required":["verdict","summary","reddit_id","content_type","reddit_url"],"title":"AlertCoverage","description":"The answer to \"why didn't my alert catch this post?\"."},"AlertQuery-Input":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue-Input"},"type":"object"},"ContentEvaluation":{"properties":{"explanation":{"type":"string","title":"Explanation","description":"Concise reasoning explaining the evaluation."},"confidence_score":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Confidence Score","description":"Confidence score from 0.0 to 1.0 indicating likelihood of match."},"violated_exclusion":{"type":"string","title":"Violated Exclusion","description":"The exclusion that applies to the content (its E-number or a short quote), or an empty string when none does. A non-empty value is a hard no-match regardless of the confidence score.","default":""}},"type":"object","required":["explanation","confidence_score"],"title":"ContentEvaluation","description":"Stage 1: Initial evaluation of Reddit content."},"CoverageEvaluation":{"properties":{"is_match":{"type":"boolean","title":"Is Match"},"explanation":{"type":"string","title":"Explanation"},"explanation_tree":{"anyOf":[{"$ref":"#/components/schemas/ExplanationTree"},{"type":"null"}]},"decisive_evaluation":{"anyOf":[{"$ref":"#/components/schemas/ContentEvaluation"},{"type":"null"}]}},"type":"object","required":["is_match","explanation"],"title":"CoverageEvaluation","description":"The alert's query run against the content again, on request.\n\nProduced by the same evaluate() call the stream worker makes, so a\nreader sees the reasoning the pipeline would have produced rather than\na second opinion from a different code path. Costs LLM calls whenever\nthe query has semantic rules, which is why it is opt in."},"CoverageGapCondition":{"properties":{"reason":{"type":"string","title":"Reason","description":"Why the gap exists: lookback_clamped, anchor_unresolved, page_budget_exhausted, checkpoint_missing, or handoff_unanchored."},"gap_from_utc":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Gap From Utc"},"gap_to_utc":{"type":"number","title":"Gap To Utc"},"detected_at":{"type":"string","format":"date-time","title":"Detected At"},"cleared_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Cleared At"}},"type":"object","required":["reason","gap_to_utc","detected_at"],"title":"CoverageGapCondition","description":"A recorded stretch of a subreddit's timeline that no stream scanned."},"CoverageVerdict":{"type":"string","enum":["matched","evaluated_not_matched","subreddit_not_monitored","posted_before_coverage","ingested_not_evaluated","not_ingested"]},"CoverageWindow":{"properties":{"started_at":{"type":"string","format":"date-time","title":"Started At"},"ended_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Ended At"}},"type":"object","required":["started_at"],"title":"CoverageWindow","description":"A stretch of time the alert was active and watching the subreddit."},"ExplanationTree":{"prefixItems":[{"type":"boolean"},{"$ref":"#/components/schemas/ExplanationTreeNode"}],"type":"array","maxItems":2,"minItems":2},"ExplanationTreeNode":{"anyOf":[{"prefixItems":[{"type":"string"},{"type":"string"},{"type":"string"}],"type":"array","maxItems":3,"minItems":3},{"prefixItems":[{"type":"string"},{"type":"string"},{"prefixItems":[{"type":"string"},{"type":"string"}],"type":"array","maxItems":2,"minItems":2}],"type":"array","maxItems":3,"minItems":3},{"prefixItems":[{"type":"string","enum":["AND","OR","NOT"]},{"items":{"$ref":"#/components/schemas/ExplanationTree"},"type":"array"}],"type":"array","maxItems":2,"minItems":2}]},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"JsonValue-Input":{"anyOf":[{"additionalProperties":{"$ref":"#/components/schemas/JsonValue-Input"},"type":"object"},{"items":{"$ref":"#/components/schemas/JsonValue-Input"},"type":"array"},{"type":"string"},{"type":"integer"},{"type":"number"},{"type":"boolean"},{"type":"null"}]},"PlanLimitsMeta":{"properties":{"alerts_limit":{"type":"integer","title":"Alerts Limit"},"alerts_used":{"type":"integer","title":"Alerts Used"},"subreddits_limit":{"type":"integer","title":"Subreddits Limit"},"subreddits_used":{"type":"integer","title":"Subreddits Used"},"quota_period_start":{"type":"string","format":"date","title":"Quota Period Start"},"quota_period_end":{"type":"string","format":"date","title":"Quota Period End"},"emails_sent_per_month_limit":{"type":"integer","title":"Emails Sent Per Month Limit"},"emails_sent_this_period":{"type":"integer","title":"Emails Sent This Period"},"emails_sent_this_month":{"type":"integer","title":"Emails Sent This Month"},"llm_tier_low_calls_per_month_limit":{"type":"integer","title":"Llm Tier Low Calls Per Month Limit"},"llm_tier_low_calls_this_period":{"type":"integer","title":"Llm Tier Low Calls This Period"},"llm_tier_low_calls_this_month":{"type":"integer","title":"Llm Tier Low Calls This Month"},"llm_tier_mid_calls_per_month_limit":{"type":"integer","title":"Llm Tier Mid Calls Per Month Limit"},"llm_tier_mid_calls_this_period":{"type":"integer","title":"Llm Tier Mid Calls This Period"},"llm_tier_mid_calls_this_month":{"type":"integer","title":"Llm Tier Mid Calls This Month"},"llm_tier_top_calls_per_month_limit":{"type":"integer","title":"Llm Tier Top Calls Per Month Limit"},"llm_tier_top_calls_this_period":{"type":"integer","title":"Llm Tier Top Calls This Period"},"llm_tier_top_calls_this_month":{"type":"integer","title":"Llm Tier Top Calls This Month"},"llm_tier_sota_calls_per_month_limit":{"type":"integer","title":"Llm Tier Sota Calls Per Month Limit"},"llm_tier_sota_calls_this_period":{"type":"integer","title":"Llm Tier Sota Calls This Period"},"llm_tier_sota_calls_this_month":{"type":"integer","title":"Llm Tier Sota Calls This Month"},"tool_reddit_searches_per_month_limit":{"type":"integer","title":"Tool Reddit Searches Per Month Limit"},"tool_reddit_searches_this_period":{"type":"integer","title":"Tool Reddit Searches This Period"},"tool_reddit_searches_this_month":{"type":"integer","title":"Tool Reddit Searches This Month"},"tool_subreddit_searches_per_month_limit":{"type":"integer","title":"Tool Subreddit Searches Per Month Limit"},"tool_subreddit_searches_this_period":{"type":"integer","title":"Tool Subreddit Searches This Period"},"tool_subreddit_searches_this_month":{"type":"integer","title":"Tool Subreddit Searches This Month"},"matches_prompt_evaluate_llm_tier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Matches Prompt Evaluate Llm Tier"},"matches_prompt_review_llm_tier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Matches Prompt Review Llm Tier"},"matches_prompt_evaluate_llm_tier_primary_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Matches Prompt Evaluate Llm Tier Primary Model"},"matches_prompt_evaluate_llm_tier_fallback_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Matches Prompt Evaluate Llm Tier Fallback Model"},"matches_prompt_review_llm_tier_primary_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Matches Prompt Review Llm Tier Primary Model"},"matches_prompt_review_llm_tier_fallback_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Matches Prompt Review Llm Tier Fallback Model"}},"type":"object","required":["alerts_limit","alerts_used","subreddits_limit","subreddits_used","quota_period_start","quota_period_end","emails_sent_per_month_limit","emails_sent_this_period","emails_sent_this_month","llm_tier_low_calls_per_month_limit","llm_tier_low_calls_this_period","llm_tier_low_calls_this_month","llm_tier_mid_calls_per_month_limit","llm_tier_mid_calls_this_period","llm_tier_mid_calls_this_month","llm_tier_top_calls_per_month_limit","llm_tier_top_calls_this_period","llm_tier_top_calls_this_month","llm_tier_sota_calls_per_month_limit","llm_tier_sota_calls_this_period","llm_tier_sota_calls_this_month","tool_reddit_searches_per_month_limit","tool_reddit_searches_this_period","tool_reddit_searches_this_month","tool_subreddit_searches_per_month_limit","tool_subreddit_searches_this_period","tool_subreddit_searches_this_month"],"title":"PlanLimitsMeta","description":"Plan limits information included in API responses.\n\nMetered usage counters aggregate over the account's current quota period\n(``[quota_period_start, quota_period_end)``, UTC dates): the Stripe\nbilling period for paying accounts, a signup-anchored monthly window for\nfree accounts. ``quota_period_end`` is the LATEST date the counters\nreset: usage is bucketed per UTC day, so when a billing renewal lands\nmid-day the period switches at the renewal moment and the boundary day's\nusage counts in both adjacent periods. The ``*_this_month`` fields are\ndeprecated aliases of the ``*_this_period`` fields kept for API\ncompatibility."},"SearchContentType":{"type":"string","enum":["submissions","comments"]},"V1AddCollectionItemFromUrlRequest":{"properties":{"reddit_url":{"type":"string","title":"Reddit Url","description":"Reddit URL of the submission or comment to save."}},"type":"object","required":["reddit_url"],"title":"V1AddCollectionItemFromUrlRequest","description":"Request model for POST /v1/collections/{collection_id}/items/from_url."},"V1AddCollectionItemsData":{"properties":{"added":{"type":"integer","title":"Added"}},"type":"object","required":["added"],"title":"V1AddCollectionItemsData","description":"How many items were created; already-saved content is skipped."},"V1AddCollectionItemsFromRedditSearchRequest":{"properties":{"reddit_search_id":{"type":"string","format":"uuid","title":"Reddit Search Id","description":"Reddit search whose results are being saved."},"reddit_fullnames":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":500},{"type":"null"}],"title":"Reddit Fullnames","description":"Fullnames (t3_/t1_) of the results to save, at most 500 per request. Omit to save every result the search returned."}},"type":"object","required":["reddit_search_id"],"title":"V1AddCollectionItemsFromRedditSearchRequest","description":"Request model for POST /v1/collections/{id}/items/from_reddit_search."},"V1AddCollectionItemsRequest":{"properties":{"alert_match_ids":{"items":{"type":"string","format":"uuid"},"type":"array","maxItems":500,"minItems":1,"title":"Alert Match Ids","description":"Matches of the account's alerts to save into the collection (at most 500 per request)."}},"type":"object","required":["alert_match_ids"],"title":"V1AddCollectionItemsRequest","description":"Request model for POST /v1/collections/{collection_id}/items."},"V1AddCollectionItemsResponse":{"properties":{"data":{"$ref":"#/components/schemas/V1AddCollectionItemsData"},"meta":{"$ref":"#/components/schemas/V1SingleMeta"}},"type":"object","required":["data","meta"],"title":"V1AddCollectionItemsResponse","description":"Response model for POST /v1/collections/{collection_id}/items."},"V1AlertCoverageEvaluationRequest":{"properties":{"reddit_url":{"type":"string","title":"Reddit Url","description":"Reddit submission or comment URL to check the alert against."}},"type":"object","required":["reddit_url"],"title":"V1AlertCoverageEvaluationRequest","description":"Request model for re-running an alert's query against one post."},"V1AlertCoverageResponse":{"properties":{"data":{"$ref":"#/components/schemas/AlertCoverage"},"meta":{"$ref":"#/components/schemas/V1SingleMeta"}},"type":"object","required":["data","meta"],"title":"V1AlertCoverageResponse","description":"Response model for a single alert coverage check."},"V1AlertMatchResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"alert_id":{"type":"string","format":"uuid","title":"Alert Id"},"reddit_id":{"type":"string","title":"Reddit Id"},"content_type":{"type":"string","title":"Content Type"},"reddit_content_snapshot":{"additionalProperties":true,"type":"object","title":"Reddit Content Snapshot"},"explanation":{"anyOf":[{"items":{},"type":"array"},{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Explanation"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"related_submissions":{"items":{"$ref":"#/components/schemas/V1RelatedSubmission"},"type":"array","title":"Related Submissions","default":[]}},"type":"object","required":["id","alert_id","reddit_id","content_type","reddit_content_snapshot","created_at"],"title":"V1AlertMatchResponse","description":"Response model for an alert match in v1 API."},"V1AlertMatchesListResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/V1AlertMatchResponse"},"type":"array","title":"Data"},"meta":{"$ref":"#/components/schemas/V1ListMeta"}},"type":"object","required":["data","meta"],"title":"V1AlertMatchesListResponse","description":"Response model for GET /v1/alert_matches."},"V1AlertMutationMeta":{"properties":{"plan_limits":{"$ref":"#/components/schemas/PlanLimitsMeta"},"notifications_skipped":{"items":{"type":"string"},"type":"array","title":"Notifications Skipped"}},"type":"object","required":["plan_limits"],"title":"V1AlertMutationMeta","description":"Metadata for alert create/update responses.\n\n``notifications_skipped`` lists recipient addresses whose\nadded-as-recipient notification was skipped by the notification-attempt\nlimit. Mutation metadata only; read responses do not carry it."},"V1AlertRecipient":{"properties":{"email_address":{"type":"string","title":"Email Address"},"status":{"type":"string","title":"Status"},"notified_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Notified At"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["email_address","status","created_at"],"title":"V1AlertRecipient","description":"One external recipient email address on an alert."},"V1AlertResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"query":{"additionalProperties":true,"type":"object","title":"Query"},"reddit_subreddit_ids":{"items":{"type":"string"},"type":"array","title":"Reddit Subreddit Ids"},"is_active":{"type":"boolean","title":"Is Active"},"should_send_emails":{"type":"boolean","title":"Should Send Emails"},"recipients":{"items":{"$ref":"#/components/schemas/V1AlertRecipient"},"type":"array","title":"Recipients"},"muted_member_user_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Muted Member User Ids"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","name","query","reddit_subreddit_ids","is_active","should_send_emails","created_at","updated_at"],"title":"V1AlertResponse","description":"Response model for a single alert in v1 API."},"V1AlertsListResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/V1AlertResponse"},"type":"array","title":"Data"},"meta":{"$ref":"#/components/schemas/V1ListMeta"}},"type":"object","required":["data","meta"],"title":"V1AlertsListResponse","description":"Response model for GET /v1/alerts."},"V1CollectionItemNoteResponse":{"properties":{"user_id":{"type":"string","format":"uuid","title":"User Id"},"user_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Name"},"note":{"type":"string","title":"Note"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["user_id","note","created_at","updated_at"],"title":"V1CollectionItemNoteResponse","description":"One account member's note on a collection item."},"V1CollectionItemResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"collection_id":{"type":"string","format":"uuid","title":"Collection Id"},"reddit_fullname":{"type":"string","title":"Reddit Fullname"},"reddit_id":{"type":"string","title":"Reddit Id"},"content_type":{"type":"string","title":"Content Type"},"subreddit":{"type":"string","title":"Subreddit"},"reddit_content_snapshot":{"additionalProperties":true,"type":"object","title":"Reddit Content Snapshot"},"notes":{"items":{"$ref":"#/components/schemas/V1CollectionItemNoteResponse"},"type":"array","title":"Notes","description":"Per-user notes, oldest first. Each account member has at most one."},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","collection_id","reddit_fullname","reddit_id","content_type","subreddit","reddit_content_snapshot","created_at","updated_at"],"title":"V1CollectionItemResponse","description":"Response model for a saved collection item (a submission or comment)."},"V1CollectionResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"item_count":{"type":"integer","title":"Item Count","default":0},"linked_alert_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Linked Alert Id","description":"Set when the collection is linked to an alert as its example set. Linked collections must be unlinked before deletion."},"share_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Share Token","description":"Set while the collection is publicly shared."},"share_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Share Url","description":"Public read-only link, set while the collection is shared."},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","name","created_at","updated_at"],"title":"V1CollectionResponse","description":"Response model for a collection in v1 API."},"V1CollectionWithItemsResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"item_count":{"type":"integer","title":"Item Count","default":0},"linked_alert_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Linked Alert Id","description":"Set when the collection is linked to an alert as its example set. Linked collections must be unlinked before deletion."},"share_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Share Token","description":"Set while the collection is publicly shared."},"share_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Share Url","description":"Public read-only link, set while the collection is shared."},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"items":{"items":{"$ref":"#/components/schemas/V1CollectionItemResponse"},"type":"array","title":"Items"}},"type":"object","required":["id","name","created_at","updated_at"],"title":"V1CollectionWithItemsResponse","description":"A collection plus its saved items, newest first."},"V1CollectionsListResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/V1CollectionResponse"},"type":"array","title":"Data"},"meta":{"$ref":"#/components/schemas/V1ListMeta"}},"type":"object","required":["data","meta"],"title":"V1CollectionsListResponse","description":"Response model for GET /v1/collections."},"V1CreateAlertRequest":{"properties":{"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string","maxLength":10000},{"type":"null"}],"title":"Description","description":"Optional description of the alert's purpose."},"query":{"$ref":"#/components/schemas/AlertQuery-Input"},"reddit_subreddit_ids":{"items":{"type":"string"},"type":"array","title":"Reddit Subreddit Ids"},"is_active":{"type":"boolean","title":"Is Active","default":true},"should_send_emails":{"type":"boolean","title":"Should Send Emails","default":true},"recipient_email_addresses":{"items":{"type":"string"},"type":"array","title":"Recipient Email Addresses"},"muted_member_user_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Muted Member User Ids"},"notify_new_recipients":{"type":"boolean","title":"Notify New Recipients","default":false}},"type":"object","required":["name","query","reddit_subreddit_ids"],"title":"V1CreateAlertRequest","description":"Request model for POST /v1/alerts."},"V1CreateCollectionRequest":{"properties":{"name":{"type":"string","minLength":1,"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","required":["name"],"title":"V1CreateCollectionRequest","description":"Request model for POST /v1/collections."},"V1CreateRedditSearchRequest":{"properties":{"prompt":{"anyOf":[{"type":"string","maxLength":20000,"minLength":1},{"type":"null"}],"title":"Prompt","description":"Natural language description of what to find, e.g. 'people asking for CRM recommendations'."},"query":{"anyOf":[{"$ref":"#/components/schemas/AlertQuery-Input"},{"type":"null"}],"description":"JsonLogic query to search with (same shape as alert queries). Mutually exclusive with prompt."},"content_types":{"items":{"$ref":"#/components/schemas/SearchContentType"},"type":"array","minItems":1,"title":"Content Types","description":"Content types to search in prompt mode. Ignored in query mode (the query's fields decide).","default":["submissions"]},"reddit_subreddit_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Reddit Subreddit Ids","description":"Subreddits to search. Omit to discover relevant subreddits automatically. Capped by your plan's subreddit limit."},"time_filter":{"anyOf":[{"type":"string","enum":["hour","day","week","month","year","all"]},{"type":"null"}],"title":"Time Filter","description":"How far back to search. Reddit's search API accepts only these fixed windows, so this is a choice among them rather than an arbitrary date range. Omit for the default of one year."},"max_results":{"type":"integer","maximum":30.0,"minimum":1.0,"title":"Max Results","description":"Maximum matched results returned (cap: 30).","default":30},"include_non_matches":{"type":"boolean","title":"Include Non Matches","description":"Also return evaluated items that did not match, flagged with matched=false.","default":false}},"type":"object","title":"V1CreateRedditSearchRequest","description":"Request model for POST /v1/reddit_searches.\n\nProvide exactly one of ``prompt`` or ``query``:\n\n- ``prompt``: natural language description of what to find. AI evaluates\n  every candidate post against it.\n- ``query``: a JsonLogic query (same shape as alert queries) combining\n  ``in`` (keyword), ``matches_regex``, ``matches_prompt`` (AI), and\n  nested ``and``/``or`` logic."},"V1CreateSubredditSearchRequest":{"properties":{"prompt":{"type":"string","maxLength":20000,"minLength":1,"title":"Prompt","description":"What you intend to share on Reddit, e.g. 'a blog post about training for a first marathon'."},"target_audience":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Target Audience","description":"Who the content is for (e.g. 'beginner runners')."},"allow_nsfw":{"type":"boolean","title":"Allow Nsfw","description":"Whether NSFW subreddits may be recommended.","default":false},"min_subscribers":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Min Subscribers","description":"Only recommend subreddits with at least this many members."}},"type":"object","required":["prompt"],"title":"V1CreateSubredditSearchRequest","description":"Request model for POST /v1/subreddit_searches."},"V1LinkCollectionRequest":{"properties":{"alert_id":{"type":"string","format":"uuid","title":"Alert Id","description":"Alert to link this collection to."}},"type":"object","required":["alert_id"],"title":"V1LinkCollectionRequest"},"V1ListMeta":{"properties":{"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"},"plan_limits":{"$ref":"#/components/schemas/PlanLimitsMeta"}},"type":"object","required":["total","limit","offset","plan_limits"],"title":"V1ListMeta","description":"Metadata for list responses."},"V1MutatedAlertResponse":{"properties":{"data":{"$ref":"#/components/schemas/V1AlertResponse"},"meta":{"$ref":"#/components/schemas/V1AlertMutationMeta"}},"type":"object","required":["data","meta"],"title":"V1MutatedAlertResponse","description":"Response model for POST /v1/alerts and PATCH /v1/alerts/{alert_id}."},"V1PostingRequirement":{"properties":{"requirement":{"type":"string","title":"Requirement","description":"The action the user must take."},"source":{"type":"string","title":"Source","description":"The rule or requirement the action comes from.","default":""}},"type":"object","required":["requirement"],"title":"V1PostingRequirement","description":"One thing the user must do to comply with a subreddit's rules."},"V1RedditSearchData":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"status":{"type":"string","title":"Status"},"mode":{"type":"string","enum":["prompt","query"],"title":"Mode"},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt"},"query":{"additionalProperties":true,"type":"object","title":"Query"},"reddit_subreddit_ids":{"items":{"type":"string"},"type":"array","title":"Reddit Subreddit Ids"},"subreddits_auto_discovered":{"type":"boolean","title":"Subreddits Auto Discovered"},"requested_subreddit_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Requested Subreddit Ids"},"searched_subreddits":{"anyOf":[{"items":{"$ref":"#/components/schemas/V1SearchedSubreddit"},"type":"array"},{"type":"null"}],"title":"Searched Subreddits"},"discovery_outcome":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Discovery Outcome"},"include_non_matches":{"type":"boolean","title":"Include Non Matches"},"max_results":{"type":"integer","title":"Max Results"},"time_filter":{"type":"string","title":"Time Filter","description":"How far back the search looked, as a Reddit time filter."},"progress_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Progress Message"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"matched_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Matched Count","description":"Total matches found (before max_results is applied)."},"results":{"anyOf":[{"items":{"$ref":"#/components/schemas/V1RedditSearchResultItem"},"type":"array"},{"type":"null"}],"title":"Results","description":"Evaluated items, matches first ordered by relevance. Null until status is 'completed'."},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","status","mode","query","reddit_subreddit_ids","subreddits_auto_discovered","include_non_matches","max_results","time_filter","created_at"],"title":"V1RedditSearchData","description":"A Reddit search and, once completed, its results."},"V1RedditSearchResultItem":{"properties":{"reddit_id":{"type":"string","title":"Reddit Id"},"reddit_fullname":{"type":"string","title":"Reddit Fullname","description":"Reddit fullname (t3_/t1_), which identifies the item when saving it to a collection. A bare reddit_id does not: the submission and comment ID spaces overlap."},"content_type":{"type":"string","title":"Content Type"},"subreddit":{"type":"string","title":"Subreddit"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"body":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body"},"permalink":{"type":"string","title":"Permalink"},"score":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Score"},"num_comments":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Comments"},"created_utc":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Created Utc"},"matched":{"type":"boolean","title":"Matched"},"relevance":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Relevance","description":"AI match confidence (0.0-1.0). Null for deterministic keyword/regex matches, which are exact."},"explanation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Explanation"}},"type":"object","required":["reddit_id","reddit_fullname","content_type","subreddit","permalink","matched"],"title":"V1RedditSearchResultItem","description":"One evaluated Reddit post or comment."},"V1RedditSearchesListResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/V1RedditSearchData"},"type":"array","title":"Data"},"meta":{"$ref":"#/components/schemas/V1ListMeta"}},"type":"object","required":["data","meta"],"title":"V1RedditSearchesListResponse"},"V1RelatedSubmission":{"properties":{"reddit_id":{"type":"string","title":"Reddit Id"},"reddit_fullname":{"type":"string","title":"Reddit Fullname"},"subreddit":{"type":"string","title":"Subreddit"},"relation":{"type":"string","title":"Relation"},"created_utc":{"type":"number","title":"Created Utc"},"title":{"type":"string","title":"Title"},"permalink":{"type":"string","title":"Permalink"}},"type":"object","required":["reddit_id","reddit_fullname","subreddit","relation","created_utc","title","permalink"],"title":"V1RelatedSubmission","description":"Another Reddit submission carrying the same content as a match."},"V1SearchedSubreddit":{"properties":{"name":{"type":"string","title":"Name"},"source":{"type":"string","title":"Source"}},"type":"object","required":["name","source"],"title":"V1SearchedSubreddit","description":"A subreddit that was searched, tagged with its provenance:\n``specified`` (chosen by the requester) or ``discovered`` (auto-discovered)."},"V1ShareCollectionData":{"properties":{"share_token":{"type":"string","title":"Share Token"},"share_url":{"type":"string","title":"Share Url"}},"type":"object","required":["share_token","share_url"],"title":"V1ShareCollectionData","description":"The capability token and public URL of a shared collection."},"V1ShareCollectionResponse":{"properties":{"data":{"$ref":"#/components/schemas/V1ShareCollectionData"},"meta":{"$ref":"#/components/schemas/V1SingleMeta"}},"type":"object","required":["data","meta"],"title":"V1ShareCollectionResponse","description":"Response model for POST /v1/collections/{collection_id}/share."},"V1SingleAlertMatchResponse":{"properties":{"data":{"$ref":"#/components/schemas/V1AlertMatchResponse"},"meta":{"$ref":"#/components/schemas/V1SingleMeta"}},"type":"object","required":["data","meta"],"title":"V1SingleAlertMatchResponse","description":"Response model for GET /v1/alert_matches/{alert_match_id}."},"V1SingleAlertResponse":{"properties":{"data":{"$ref":"#/components/schemas/V1AlertResponse"},"meta":{"$ref":"#/components/schemas/V1SingleMeta"}},"type":"object","required":["data","meta"],"title":"V1SingleAlertResponse","description":"Response model for GET /v1/alerts/{alert_id}."},"V1SingleCollectionItemResponse":{"properties":{"data":{"$ref":"#/components/schemas/V1CollectionItemResponse"},"meta":{"$ref":"#/components/schemas/V1SingleMeta"}},"type":"object","required":["data","meta"],"title":"V1SingleCollectionItemResponse","description":"Response model for endpoints that return one collection item."},"V1SingleCollectionResponse":{"properties":{"data":{"$ref":"#/components/schemas/V1CollectionResponse"},"meta":{"$ref":"#/components/schemas/V1SingleMeta"}},"type":"object","required":["data","meta"],"title":"V1SingleCollectionResponse","description":"Response model for collection endpoints that return no items."},"V1SingleCollectionWithItemsResponse":{"properties":{"data":{"$ref":"#/components/schemas/V1CollectionWithItemsResponse"},"meta":{"$ref":"#/components/schemas/V1SingleMeta"}},"type":"object","required":["data","meta"],"title":"V1SingleCollectionWithItemsResponse","description":"Response model for collection endpoints that include items."},"V1SingleMeta":{"properties":{"plan_limits":{"$ref":"#/components/schemas/PlanLimitsMeta"}},"type":"object","required":["plan_limits"],"title":"V1SingleMeta","description":"Metadata for single resource responses."},"V1SingleRedditSearchResponse":{"properties":{"data":{"$ref":"#/components/schemas/V1RedditSearchData"},"meta":{"$ref":"#/components/schemas/V1SingleMeta"}},"type":"object","required":["data","meta"],"title":"V1SingleRedditSearchResponse"},"V1SingleSubredditSearchResponse":{"properties":{"data":{"$ref":"#/components/schemas/V1SubredditSearchData"},"meta":{"$ref":"#/components/schemas/V1SingleMeta"}},"type":"object","required":["data","meta"],"title":"V1SingleSubredditSearchResponse"},"V1SubredditSearchData":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"status":{"type":"string","title":"Status"},"prompt":{"type":"string","title":"Prompt"},"options":{"additionalProperties":true,"type":"object","title":"Options"},"progress_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Progress Message"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"results":{"anyOf":[{"items":{"$ref":"#/components/schemas/V1SubredditSearchResultItem"},"type":"array"},{"type":"null"}],"title":"Results","description":"Recommended subreddits ordered by relevance. Null until status is 'completed'."},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","status","prompt","options","created_at"],"title":"V1SubredditSearchData","description":"A subreddit finder run and, once completed, its report."},"V1SubredditSearchResultItem":{"properties":{"subreddit":{"type":"string","title":"Subreddit"},"subscribers":{"type":"integer","title":"Subscribers"},"public_description":{"type":"string","title":"Public Description","default":""},"relevance":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Relevance","description":"Topical fit for the goal: 0.0 = irrelevant, 1.0 = on-topic."},"relevance_explanation":{"type":"string","title":"Relevance Explanation","default":""},"recommended_angle":{"type":"string","title":"Recommended Angle","default":""},"post_verdict":{"type":"string","title":"Post Verdict","description":"Whether the described content may be posted here, judged against the subreddit's published rules: 'post_as_is', 'tailor_first', 'do_not_post', or 'unclear' (rules could not be read or do not settle it).","default":"unclear"},"verdict_reason":{"type":"string","title":"Verdict Reason","description":"The rule the verdict rests on.","default":""},"self_promotion_policy":{"type":"string","title":"Self Promotion Policy","description":"How the community treats promoting your own product, article, or service: 'banned', 'restricted', 'allowed', or 'unclear'.","default":"unclear"},"posting_requirements":{"items":{"$ref":"#/components/schemas/V1PostingRequirement"},"type":"array","title":"Posting Requirements","description":"Everything the user must do to comply before posting. Empty when the rules impose nothing.","default":[]},"risk_notes":{"type":"string","title":"Risk Notes","description":"Cautions that are not hard requirements (strict moderation, low activity). Empty when there are none.","default":""},"rules":{"additionalProperties":true,"type":"object","title":"Rules","description":"The subreddit's posting rules as published on Reddit: the numbered rule list, the enforced submission constraints, the moderators' submission-page notice, and a link to the rules page. ``available`` is false when they could not be read.","default":{}},"sample_posts":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Sample Posts","default":[]}},"type":"object","required":["subreddit","subscribers"],"title":"V1SubredditSearchResultItem","description":"One recommended subreddit from the finder report."},"V1SubredditSearchesListResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/V1SubredditSearchData"},"type":"array","title":"Data"},"meta":{"$ref":"#/components/schemas/V1ListMeta"}},"type":"object","required":["data","meta"],"title":"V1SubredditSearchesListResponse"},"V1UpdateAlertRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string","maxLength":10000},{"type":"null"}],"title":"Description","description":"Optional description of the alert's purpose."},"query":{"anyOf":[{"$ref":"#/components/schemas/AlertQuery-Input"},{"type":"null"}]},"reddit_subreddit_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Reddit Subreddit Ids"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"},"should_send_emails":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Should Send Emails"},"recipient_email_addresses":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Recipient Email Addresses"},"muted_member_user_ids":{"anyOf":[{"items":{"type":"string","format":"uuid"},"type":"array"},{"type":"null"}],"title":"Muted Member User Ids"},"notify_new_recipients":{"type":"boolean","title":"Notify New Recipients","default":false}},"type":"object","title":"V1UpdateAlertRequest","description":"Request model for PATCH /v1/alerts/{alert_id}.\n\nOmitted fields are left unchanged. For ``recipient_email_addresses`` and\n``muted_member_user_ids`` an explicit empty list clears the stored list."},"V1UpdateCollectionItemRequest":{"properties":{"note":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Note","description":"Free-text note attached to the item (at most 2,000 characters); null clears it."}},"type":"object","title":"V1UpdateCollectionItemRequest","description":"Request model for PATCH /v1/collections/{collection_id}/items/{item_id}."},"V1UpdateCollectionRequest":{"properties":{"name":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","title":"V1UpdateCollectionRequest","description":"Request model for PATCH /v1/collections/{collection_id}."},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}