تفضيلات الخصوصية

الوظائف الضرورية

مطلوبة للأمان ووظائف الموقع الأساسية.

مفعّلة دائمًا

تحليلات الاستخدام الاختيارية

هل تسمح بتحليلات استخدام PostHog؟ يمكنك تغيير اختيارك في أي وقت من التذييل.

السماح أيضاً بتسجيل الجلسات لإعادة عرضها على هذا الموقع العام

تُظهر إعادة عرض الجلسات الصفحات العامة والتفاعلات، مع إخفاء المدخلات والمحتوى الخاص. إعادة عرض الجلسات في التطبيق خيار مستقل.

يتطلب التحليلات؛ إعادة تشغيل الموقع متوقفة افتراضيًا.

لا تفعّل تحليلات المتصفح تحليلات الحساب.

يُحمّل البحث عند استخدامه فقط. تصفّح جميع الفئات أدناه.

البحث والموجزات الموثقة بالمراجع

قراءة سجل جمع البحث

قراءة ملاحظات فئة محدودة بتوقيت UTC؛ المجهول ليس صفرًا. عينات HN الجزئية غير مؤهلة لقياس الزخم أو التنبؤات. يتطلب agent:research.

POST /research-api/collection-history/query

مراجعة العقد: · sha256:ab393e91e9b7f18a

نظرة عامة

قراءة ملاحظات فئة محدودة بتوقيت UTC؛ المجهول ليس صفرًا. عينات HN الجزئية غير مؤهلة لقياس الزخم أو التنبؤات. يتطلب agent:research.

قد يعني نجاح HTTP قبول الطلب لا اكتماله. للعمل الخلفي، احفظ المعرّف المُعاد وتابع العملية نفسها حتى تنتهي. لا يُعدّ المنشور المجدول أوالمقبول منشوراً حتى تأكيد المنصة؛ انتهاء مهلة العميل لا يثبت النتيجة.

المصادقة والأذونات

فئات بيانات الاعتماد المقبولة
user_session, delegated_oauth, personal_access_token
إمكانية مفوّضة
agent:research
الحد الأدنى لدور مساحة العمل
viewer
نطاق الوصول
الموارد التي يحق لهذا المستخدم الوصول إليها
تلزم موافقة تشمل جميع مساحات العمل
لا
يغيّر الحالة
لا
متى تُعدّ العملية مكتملة
current authorized aggregate collection history for one exact source cohort; collection counts are not publication volume, market growth, momentum or forecasts

لا يستخدم الرمز إلا حقوق مالكه. يفحص كل طلب عضوية مساحة العمل وملكية المورد والمساحات المحددة والإمكانات الممنوحة. يغيّر core و full الأدوات المعروضة؛ ولا يمنحان وصولاً.

حقول الطلب

تعني «مطلوب» داخل الكائن الأب والفرع المختار. الحقل الابن المطلوب لا يجعل الأب الاختياري مطلوباً. نُسخت القواعد وأسماء الحقول أدناه من العقد.

حقول الطلب
الحقل / الفرعالنوع / مطلوبالقيود
$objectمطلوب في العنصر الأب
  • additionalProperties: false
workspace_idstringمطلوب في العنصر الأب
  • format: "uuid"
  • pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
project_idstringمطلوب في العنصر الأب
  • format: "uuid"
  • pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
project_revisionintegerمطلوب في العنصر الأب
  • maximum: 9007199254740991
  • exclusiveMinimum: 0
corpus_snapshot_idstringمطلوب في العنصر الأب
  • format: "uuid"
  • pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
bucketstringاختياري / عنصر
  • enum: ["hour","day"]
  • default: "day"
sincestringمطلوب في العنصر الأب
  • format: "date-time"
  • pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
untilstringمطلوب في العنصر الأب
  • format: "date-time"
  • pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
مخطط JSON Schema الكامل
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "workspace_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "project_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "project_revision": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "corpus_snapshot_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "bucket": {
      "default": "day",
      "type": "string",
      "enum": [
        "hour",
        "day"
      ]
    },
    "since": {
      "type": "string",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
      "format": "date-time"
    },
    "until": {
      "type": "string",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
      "format": "date-time"
    }
  },
  "required": [
    "workspace_id",
    "project_id",
    "project_revision",
    "corpus_snapshot_id",
    "since",
    "until"
  ],
  "additionalProperties": false
}

الاستجابة والاكتمال

رموز نجاح HTTP: 200. عندما تكتمل العملية: current authorized aggregate collection history for one exact source cohort; collection counts are not publication volume, market growth, momentum or forecasts.

قد يعني نجاح HTTP قبول الطلب لا اكتماله. للعمل الخلفي، احفظ المعرّف المُعاد وتابع العملية نفسها حتى تنتهي. لا يُعدّ المنشور المجدول أوالمقبول منشوراً حتى تأكيد المنصة؛ انتهاء مهلة العميل لا يثبت النتيجة.

تعني «مطلوب» داخل الكائن الأب والفرع المختار. الحقل الابن المطلوب لا يجعل الأب الاختياري مطلوباً. نُسخت القواعد وأسماء الحقول أدناه من العقد.

الاستجابة والاكتمال
الحقل / الفرعالنوع / مطلوبالقيود
$objectمطلوب في العنصر الأب—
workspace_idstringمطلوب في العنصر الأب
  • format: "uuid"
  • pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
project_idstringمطلوب في العنصر الأب
  • format: "uuid"
  • pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
project_revisionintegerمطلوب في العنصر الأب
  • maximum: 9007199254740991
  • exclusiveMinimum: 0
corpus_snapshot_idstringمطلوب في العنصر الأب
  • format: "uuid"
  • pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
bucketstringمطلوب في العنصر الأب
  • enum: ["hour","day"]
sincestringمطلوب في العنصر الأب
  • format: "date-time"
  • pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
untilstringمطلوب في العنصر الأب
  • format: "date-time"
  • pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
generated_atstringمطلوب في العنصر الأب
  • format: "date-time"
  • pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
statusstringمطلوب في العنصر الأب
  • enum: ["available","insufficient_history","not_applicable","incomparable"]
reasonstring | nullمطلوب في العنصر الأب—
reasonanyOf 1stringمطلوب في العنصر الأب
  • enum: ["no_listening_sources","mixed_sources","mixed_cohorts","mixed_methods","method_unavailable","unsupported_method","no_completed_observations","history_limit"]
reasonanyOf 2nullمطلوب في العنصر الأب—
cohortobject | nullمطلوب في العنصر الأب—
cohortanyOf 1objectمطلوب في العنصر الأب—
cohort.sourceanyOf 1stringمطلوب في العنصر الأب
  • const: "hacker_news"
cohort.query_revisionanyOf 1integerمطلوب في العنصر الأب
  • maximum: 9007199254740991
  • exclusiveMinimum: 0
cohort.generationanyOf 1integerمطلوب في العنصر الأب
  • maximum: 9007199254740991
  • exclusiveMinimum: 0
cohort.method_versionanyOf 1stringمطلوب في العنصر الأب
  • minLength: 1
  • maxLength: 100
cohort.selected_listening_refsanyOf 1integerمطلوب في العنصر الأب
  • minimum: 1
  • maximum: 500
cohort.excluded_selected_itemsanyOf 1integerمطلوب في العنصر الأب
  • minimum: 0
  • maximum: 499
cohort.scopeanyOf 1stringمطلوب في العنصر الأب
  • const: "selected_listening_stream_cohort"
cohortanyOf 2nullمطلوب في العنصر الأب—
method_versionstringمطلوب في العنصر الأب
  • const: "listening-collection-history/v1"
time_basisstringمطلوب في العنصر الأب
  • const: "collection_completed_at_or_requested_at"
deduplicationstringمطلوب في العنصر الأب
  • const: "latest_observation_per_source_per_bin"
count_meaningstringمطلوب في العنصر الأب
  • const: "bounded_collection_observations"
momentum_eligiblebooleanمطلوب في العنصر الأب
  • const: false
forecast_eligiblebooleanمطلوب في العنصر الأب
  • const: false
qualification_reasonstringمطلوب في العنصر الأب
  • enum: ["hn_partial_overlapping_sample_unqualified","no_qualified_cohort"]
observed_binsintegerمطلوب في العنصر الأب
  • minimum: 0
  • maximum: 24
unknown_binsintegerمطلوب في العنصر الأب
  • minimum: 0
  • maximum: 24
binsarrayمطلوب في العنصر الأب
  • maxItems: 24
bins[]objectاختياري / عنصر—
bins[].startstringمطلوب في العنصر الأب
  • format: "date-time"
  • pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
bins[].endstringمطلوب في العنصر الأب
  • format: "date-time"
  • pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
bins[].period_partialbooleanمطلوب في العنصر الأب—
bins[].statestringمطلوب في العنصر الأب
  • enum: ["observed","unknown"]
bins[].countsobject | nullمطلوب في العنصر الأب—
bins[].countsanyOf 1objectمطلوب في العنصر الأب—
bins[].counts.source_itemsanyOf 1integerمطلوب في العنصر الأب
  • minimum: 0
  • maximum: 10240
bins[].counts.matched_itemsanyOf 1integerمطلوب في العنصر الأب
  • minimum: 0
  • maximum: 10240
bins[].counts.removed_itemsanyOf 1integerمطلوب في العنصر الأب
  • minimum: 0
  • maximum: 10240
bins[].counts.unavailable_itemsanyOf 1integerمطلوب في العنصر الأب
  • minimum: 0
  • maximum: 10240
bins[].countsanyOf 2nullمطلوب في العنصر الأب—
bins[].runsobjectمطلوب في العنصر الأب—
bins[].runs.totalintegerمطلوب في العنصر الأب
  • minimum: 0
  • maximum: 512
bins[].runs.completedintegerمطلوب في العنصر الأب
  • minimum: 0
  • maximum: 512
bins[].runs.successfulintegerمطلوب في العنصر الأب
  • minimum: 0
  • maximum: 512
bins[].runs.succeededintegerمطلوب في العنصر الأب
  • minimum: 0
  • maximum: 512
bins[].runs.partialintegerمطلوب في العنصر الأب
  • minimum: 0
  • maximum: 512
bins[].runs.failedintegerمطلوب في العنصر الأب
  • minimum: 0
  • maximum: 512
bins[].runs.cancelledintegerمطلوب في العنصر الأب
  • minimum: 0
  • maximum: 512
bins[].runs.pendingintegerمطلوب في العنصر الأب
  • minimum: 0
  • maximum: 512
bins[].source_windowsobject | nullمطلوب في العنصر الأب—
bins[].source_windowsanyOf 1objectمطلوب في العنصر الأب—
bins[].source_windows.sinceanyOf 1stringمطلوب في العنصر الأب
  • format: "date-time"
  • pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
bins[].source_windows.untilanyOf 1stringمطلوب في العنصر الأب
  • format: "date-time"
  • pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
bins[].source_windows.distinct_windowsanyOf 1integerمطلوب في العنصر الأب
  • minimum: 1
  • maximum: 512
bins[].source_windowsanyOf 2nullمطلوب في العنصر الأب—
bins[].gapsarrayمطلوب في العنصر الأب
  • maxItems: 5
bins[].gaps[]stringاختياري / عنصر
  • enum: ["unobserved","incomplete_collection","failed_collection","cancelled_collection","partial_period"]
bins[].coveragestringمطلوب في العنصر الأب
  • const: "partial_indexed_sample"
مخطط JSON Schema الكامل
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "workspace_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "project_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "project_revision": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "corpus_snapshot_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "bucket": {
      "type": "string",
      "enum": [
        "hour",
        "day"
      ]
    },
    "since": {
      "type": "string",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
      "format": "date-time"
    },
    "until": {
      "type": "string",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
      "format": "date-time"
    },
    "generated_at": {
      "type": "string",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
      "format": "date-time"
    },
    "status": {
      "type": "string",
      "enum": [
        "available",
        "insufficient_history",
        "not_applicable",
        "incomparable"
      ]
    },
    "reason": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "no_listening_sources",
            "mixed_sources",
            "mixed_cohorts",
            "mixed_methods",
            "method_unavailable",
            "unsupported_method",
            "no_completed_observations",
            "history_limit"
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "cohort": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "source": {
              "type": "string",
              "const": "hacker_news"
            },
            "query_revision": {
              "type": "integer",
              "exclusiveMinimum": 0,
              "maximum": 9007199254740991
            },
            "generation": {
              "type": "integer",
              "exclusiveMinimum": 0,
              "maximum": 9007199254740991
            },
            "method_version": {
              "type": "string",
              "minLength": 1,
              "maxLength": 100
            },
            "selected_listening_refs": {
              "type": "integer",
              "minimum": 1,
              "maximum": 500
            },
            "excluded_selected_items": {
              "type": "integer",
              "minimum": 0,
              "maximum": 499
            },
            "scope": {
              "type": "string",
              "const": "selected_listening_stream_cohort"
            }
          },
          "required": [
            "source",
            "query_revision",
            "generation",
            "method_version",
            "selected_listening_refs",
            "excluded_selected_items",
            "scope"
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "method_version": {
      "type": "string",
      "const": "listening-collection-history/v1"
    },
    "time_basis": {
      "type": "string",
      "const": "collection_completed_at_or_requested_at"
    },
    "deduplication": {
      "type": "string",
      "const": "latest_observation_per_source_per_bin"
    },
    "count_meaning": {
      "type": "string",
      "const": "bounded_collection_observations"
    },
    "momentum_eligible": {
      "type": "boolean",
      "const": false
    },
    "forecast_eligible": {
      "type": "boolean",
      "const": false
    },
    "qualification_reason": {
      "type": "string",
      "enum": [
        "hn_partial_overlapping_sample_unqualified",
        "no_qualified_cohort"
      ]
    },
    "observed_bins": {
      "type": "integer",
      "minimum": 0,
      "maximum": 24
    },
    "unknown_bins": {
      "type": "integer",
      "minimum": 0,
      "maximum": 24
    },
    "bins": {
      "maxItems": 24,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "start": {
            "type": "string",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
            "format": "date-time"
          },
          "end": {
            "type": "string",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
            "format": "date-time"
          },
          "period_partial": {
            "type": "boolean"
          },
          "state": {
            "type": "string",
            "enum": [
              "observed",
              "unknown"
            ]
          },
          "counts": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "source_items": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 10240
                  },
                  "matched_items": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 10240
                  },
                  "removed_items": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 10240
                  },
                  "unavailable_items": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 10240
                  }
                },
                "required": [
                  "source_items",
                  "matched_items",
                  "removed_items",
                  "unavailable_items"
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "runs": {
            "type": "object",
            "properties": {
              "total": {
                "type": "integer",
                "minimum": 0,
                "maximum": 512
              },
              "completed": {
                "type": "integer",
                "minimum": 0,
                "maximum": 512
              },
              "successful": {
                "type": "integer",
                "minimum": 0,
                "maximum": 512
              },
              "succeeded": {
                "type": "integer",
                "minimum": 0,
                "maximum": 512
              },
              "partial": {
                "type": "integer",
                "minimum": 0,
                "maximum": 512
              },
              "failed": {
                "type": "integer",
                "minimum": 0,
                "maximum": 512
              },
              "cancelled": {
                "type": "integer",
                "minimum": 0,
                "maximum": 512
              },
              "pending": {
                "type": "integer",
                "minimum": 0,
                "maximum": 512
              }
            },
            "required": [
              "total",
              "completed",
              "successful",
              "succeeded",
              "partial",
              "failed",
              "cancelled",
              "pending"
            ]
          },
          "source_windows": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "since": {
                    "type": "string",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
                    "format": "date-time"
                  },
                  "until": {
                    "type": "string",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
                    "format": "date-time"
                  },
                  "distinct_windows": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 512
                  }
                },
                "required": [
                  "since",
                  "until",
                  "distinct_windows"
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "gaps": {
            "maxItems": 5,
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "unobserved",
                "incomplete_collection",
                "failed_collection",
                "cancelled_collection",
                "partial_period"
              ]
            }
          },
          "coverage": {
            "type": "string",
            "const": "partial_indexed_sample"
          }
        },
        "required": [
          "start",
          "end",
          "period_partial",
          "state",
          "counts",
          "runs",
          "source_windows",
          "gaps",
          "coverage"
        ]
      }
    }
  },
  "required": [
    "workspace_id",
    "project_id",
    "project_revision",
    "corpus_snapshot_id",
    "bucket",
    "since",
    "until",
    "generated_at",
    "status",
    "reason",
    "cohort",
    "method_version",
    "time_basis",
    "deduplication",
    "count_meaning",
    "momentum_eligible",
    "forecast_eligible",
    "qualification_reason",
    "observed_bins",
    "unknown_bins",
    "bins"
  ]
}

الأخطاء وإعادة المحاولة بأمان

افحص حالة HTTP والجسم. قد يحوي خطأ التحقق 400 ‏ZodError؛ تستخدم أخطاء المعالج error و message و code. احتفظ بـ request_id أو x-request-id للتشخيص دون اعتماد. أصلح أخطاء وصول 401/403 قبل المحاولة واتّبع Retry-After لـ 429. لكتابة غير مؤكدة أو 5xx، اقرأ الموجود أولاً. أعِد مفتاح منع التكرار حيث يُدعم فقط؛ تختلف المحاولة حسب العملية ولا تضمن التسليم مرة واحدة بالضبط.

دليل استكشاف الأخطاء وإصلاحها

أمثلة

تستخدم الأمثلة قيماً خيالية مفحوصة بالمخططات. استبدل المعرّفات بالمفوّض لك، والوسائط بأصول جاهزة، والتواريخ بوقت نشر مؤكد. افحص أهلية الحساب قبل الكتابة. لا تُرسل الصفحة طلبات API.

اضبط SOSOAPI_ACCESS_TOKEN على خادمك ببيانات اعتماد تقبلها العملية، وأبقِه خارج شيفرة المتصفح. لوكيل الذكاء الاصطناعي، استخدم sosoapi auth login للدخول بالمتصفح ودع CLI يحدّث بيانات اعتماده.

request.json

{
  "workspace_id": "11111111-1111-4111-8111-111111111111",
  "project_id": "30000000-0000-4000-8000-000000000001",
  "project_revision": 1,
  "corpus_snapshot_id": "30000000-0000-4000-8000-000000000002",
  "bucket": "day",
  "since": "2026-11-01T00:00:00Z",
  "until": "2026-11-02T00:00:00Z"
}

cURL

curl --request POST \
  "https://gqeshlawtcexsapabaui.supabase.co/functions/v1/research-api/collection-history/query" \
  -H "Authorization: Bearer $SOSOAPI_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  --data-binary @request.json

JavaScript

// Server-side JavaScript. Do not print tokens or credential-bearing responses.
const token = process.env.SOSOAPI_ACCESS_TOKEN;
if (!token) throw new Error("Set an accepted credential for this operation");
const response = await fetch("https://gqeshlawtcexsapabaui.supabase.co/functions/v1/research-api/collection-history/query", {
  method: "POST",
  headers: { "Content-Type": "application/json", Authorization: "Bearer " + token },
  body: JSON.stringify({
  "workspace_id": "11111111-1111-4111-8111-111111111111",
  "project_id": "30000000-0000-4000-8000-000000000001",
  "project_revision": 1,
  "corpus_snapshot_id": "30000000-0000-4000-8000-000000000002",
  "bucket": "day",
  "since": "2026-11-01T00:00:00Z",
  "until": "2026-11-02T00:00:00Z"
})
});
const result = await response.json();
// Check response.ok, the operation-specific body and completion state before continuing.

CLI

npx sosoapi api post /research-api/collection-history/query < request.json

مثال استجابة اصطناعية

{
  "workspace_id": "11111111-1111-4111-8111-111111111111",
  "project_id": "30000000-0000-4000-8000-000000000001",
  "project_revision": 1,
  "corpus_snapshot_id": "30000000-0000-4000-8000-000000000002",
  "bucket": "day",
  "since": "2026-11-01T00:00:00Z",
  "until": "2026-11-02T00:00:00Z",
  "generated_at": "2026-11-03T00:00:00Z",
  "status": "insufficient_history",
  "reason": "no_completed_observations",
  "cohort": {
    "source": "hacker_news",
    "query_revision": 1,
    "generation": 1,
    "method_version": "hn-indexed-literal-sample/v1",
    "selected_listening_refs": 1,
    "excluded_selected_items": 0,
    "scope": "selected_listening_stream_cohort"
  },
  "method_version": "listening-collection-history/v1",
  "time_basis": "collection_completed_at_or_requested_at",
  "deduplication": "latest_observation_per_source_per_bin",
  "count_meaning": "bounded_collection_observations",
  "momentum_eligible": false,
  "forecast_eligible": false,
  "qualification_reason": "hn_partial_overlapping_sample_unqualified",
  "observed_bins": 0,
  "unknown_bins": 1,
  "bins": [
    {
      "start": "2026-11-01T00:00:00Z",
      "end": "2026-11-02T00:00:00Z",
      "period_partial": false,
      "state": "unknown",
      "counts": null,
      "runs": {
        "total": 0,
        "completed": 0,
        "successful": 0,
        "succeeded": 0,
        "partial": 0,
        "failed": 0,
        "cancelled": 0,
        "pending": 0
      },
      "source_windows": null,
      "gaps": [
        "unobserved"
      ],
      "coverage": "partial_indexed_sample"
    }
  ]
}

MCP: sosoapi_research_collection_history_query