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

الحسابات ومساحات العمل

تحديث الملف الشخصي للمستخدم

تغيير ملف المستخدم المسجّل نفسه (display_name و timezone و avatar_url و theme). أرسِل الحقول المراد تغييرها فقط.

POST /identity-api/user/profile/update

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

نظرة عامة

تغيير ملف المستخدم المسجّل نفسه (display_name و timezone و avatar_url و theme). أرسِل الحقول المراد تغييرها فقط.

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

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

فئات بيانات الاعتماد المقبولة
user_session, delegated_oauth, personal_access_token
إمكانية مفوّضة
agent:operate
الحد الأدنى لدور مساحة العمل
لا حد أدنى لدور مساحة العمل في هذا العقد؛ تظل فحوص الملكية والتفويض سارية.
نطاق الوصول
الموارد التي يحق لهذا المستخدم الوصول إليها
تلزم موافقة تشمل جميع مساحات العمل
لا
يغيّر الحالة
نعم
متى تُعدّ العملية مكتملة
synchronous_http_response

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

حقول الطلب

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

حقول الطلب
الحقل / الفرعالنوع / مطلوبالقيود
$objectمطلوب في العنصر الأب
  • additionalProperties: false
display_namestringاختياري / عنصر
  • minLength: 0
  • maxLength: 120
timezonestringاختياري / عنصر
  • minLength: 1
  • maxLength: 64
avatar_urlstringاختياري / عنصر
  • minLength: 0
  • maxLength: 2048
themestringاختياري / عنصر
  • enum: ["light","dark","system"]
expected_versionintegerاختياري / عنصر

اختياري. الإصدار الذي قرأته. إذا تغيّر بعد ذلك، يفشل التحديث برمز 409 VERSION_CONFLICT بدلاً من الاستبدال.

  • maximum: 2147483647
  • exclusiveMinimum: 0
include_versionbooleanاختياري / عنصر

اختياري. تضيف true إصدار المورد إلى الإجابة.

—
مخطط JSON Schema الكامل
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "display_name": {
      "type": "string",
      "minLength": 0,
      "maxLength": 120
    },
    "timezone": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64
    },
    "avatar_url": {
      "type": "string",
      "minLength": 0,
      "maxLength": 2048
    },
    "theme": {
      "type": "string",
      "enum": [
        "light",
        "dark",
        "system"
      ]
    },
    "expected_version": {
      "description": "Optional. The version you read. If it changed since, the update fails with 409 VERSION_CONFLICT instead of overwriting.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 2147483647
    },
    "include_version": {
      "description": "Optional. true adds the resource version to the answer.",
      "type": "boolean"
    }
  },
  "additionalProperties": false
}

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

رموز نجاح HTTP: 200. عندما تكتمل العملية: synchronous_http_response.

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

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

الاستجابة والاكتمال
الحقل / الفرعالنوع / مطلوبالقيود
$objectمطلوب في العنصر الأب—
actionstringمطلوب في العنصر الأب
  • const: "update"
profileobjectمطلوب في العنصر الأب—
profile.user_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)$"
profile.display_namestring | nullمطلوب في العنصر الأب—
profile.display_nameanyOf 1stringمطلوب في العنصر الأب—
profile.display_nameanyOf 2nullمطلوب في العنصر الأب—
profile.timezonestring | nullمطلوب في العنصر الأب—
profile.timezoneanyOf 1stringمطلوب في العنصر الأب—
profile.timezoneanyOf 2nullمطلوب في العنصر الأب—
profile.avatar_urlstring | nullمطلوب في العنصر الأب—
profile.avatar_urlanyOf 1stringمطلوب في العنصر الأب—
profile.avatar_urlanyOf 2nullمطلوب في العنصر الأب—
profile.avatar_preview_urlstring | nullاختياري / عنصر—
profile.avatar_preview_urlanyOf 1stringاختياري / عنصر
  • format: "uri"
profile.avatar_preview_urlanyOf 2nullاختياري / عنصر—
profile.avatar_preview_expires_atstring | nullاختياري / عنصر—
profile.avatar_preview_expires_atanyOf 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))$"
profile.avatar_preview_expires_atanyOf 2nullاختياري / عنصر—
profile.themestring | nullمطلوب في العنصر الأب—
profile.themeanyOf 1stringمطلوب في العنصر الأب
  • enum: ["light","dark","system"]
profile.themeanyOf 2nullمطلوب في العنصر الأب—
profile.created_atstring | nullمطلوب في العنصر الأب—
profile.created_atanyOf 1stringمطلوب في العنصر الأب—
profile.created_atanyOf 2nullمطلوب في العنصر الأب—
profile.updated_atstring | nullمطلوب في العنصر الأب—
profile.updated_atanyOf 1stringمطلوب في العنصر الأب—
profile.updated_atanyOf 2nullمطلوب في العنصر الأب—
profile.deletion_scheduled_atstring | nullمطلوب في العنصر الأب—
profile.deletion_scheduled_atanyOf 1stringمطلوب في العنصر الأب—
profile.deletion_scheduled_atanyOf 2nullمطلوب في العنصر الأب—
profile.hard_delete_atstring | nullمطلوب في العنصر الأب—
profile.hard_delete_atanyOf 1stringمطلوب في العنصر الأب—
profile.hard_delete_atanyOf 2nullمطلوب في العنصر الأب—
profile.versionintegerاختياري / عنصر
  • maximum: 9007199254740991
  • exclusiveMinimum: 0
مخطط JSON Schema الكامل
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "action": {
      "type": "string",
      "const": "update"
    },
    "profile": {
      "type": "object",
      "properties": {
        "user_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)$"
        },
        "display_name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "timezone": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "avatar_url": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "avatar_preview_url": {
          "anyOf": [
            {
              "type": "string",
              "format": "uri"
            },
            {
              "type": "null"
            }
          ]
        },
        "avatar_preview_expires_at": {
          "anyOf": [
            {
              "type": "string",
              "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))$"
            },
            {
              "type": "null"
            }
          ]
        },
        "theme": {
          "anyOf": [
            {
              "type": "string",
              "enum": [
                "light",
                "dark",
                "system"
              ]
            },
            {
              "type": "null"
            }
          ]
        },
        "created_at": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "updated_at": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "deletion_scheduled_at": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "hard_delete_at": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "version": {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        }
      },
      "required": [
        "user_id",
        "display_name",
        "timezone",
        "avatar_url",
        "theme",
        "created_at",
        "updated_at",
        "deletion_scheduled_at",
        "hard_delete_at"
      ]
    }
  },
  "required": [
    "action",
    "profile"
  ]
}

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

افحص حالة 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

{}

cURL

curl --request POST \
  "https://gqeshlawtcexsapabaui.supabase.co/functions/v1/identity-api/user/profile/update" \
  -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/identity-api/user/profile/update", {
  method: "POST",
  headers: { "Content-Type": "application/json", Authorization: "Bearer " + token },
  body: JSON.stringify({})
});
const result = await response.json();
// Check response.ok, the operation-specific body and completion state before continuing.

CLI

npx sosoapi api post /identity-api/user/profile/update < request.json

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

{
  "action": "update",
  "profile": {
    "user_id": "11111111-1111-4111-8111-111111111111",
    "display_name": null,
    "timezone": null,
    "avatar_url": null,
    "theme": null,
    "created_at": null,
    "updated_at": null,
    "deletion_scheduled_at": null,
    "hard_delete_at": null
  }
}

MCP: sosoapi_update_user_profile