मीडिया और एसेट
एसेट क्वेरी करें
asset_type, source या tag से Workspace के एसेट खोजें; एक पेज (limit अधिकतम 100, साथ में offset) और कुल संख्या लौटाता है। workspace_id स्पष्ट रूप से दें।
POST /assets-api/listकॉन्ट्रैक्ट की समीक्षा: · sha256:563d2d581da0ad29
परिचय
asset_type, source या tag से Workspace के एसेट खोजें; एक पेज (limit अधिकतम 100, साथ में offset) और कुल संख्या लौटाता है। workspace_id स्पष्ट रूप से दें।
सफल HTTP रिस्पॉन्स का अर्थ अनुरोध पूरा होने के बजाय स्वीकार होना हो सकता है। बैकग्राउंड काम में लौटाई ID सहेजें और समाप्ति तक वही ऑपरेशन जाँचें। निर्धारित या स्वीकृत पोस्ट प्लेटफ़ॉर्म की पुष्टि पर ही प्रकाशित है; क्लाइंट टाइमआउट परिणाम सिद्ध नहीं करता।
प्रमाणीकरण और अनुमतियाँ
टोकन केवल मालिक के अधिकार इस्तेमाल कर सकता है। हर अनुरोध वर्कस्पेस सदस्यता, संसाधन स्वामित्व, चुने वर्कस्पेस और दी क्षमताएँ जाँचता है। Core और full प्रोफ़ाइल दिखने वाले टूल बदलते हैं; एक्सेस नहीं देते।
अनुरोध के फ़ील्ड
Required का अर्थ पैरेंट ऑब्जेक्ट और चुनी शाखा के भीतर अनिवार्य है। अनिवार्य चाइल्ड से वैकल्पिक पैरेंट अनिवार्य नहीं होता। नीचे के नियम और फ़ील्ड नाम कॉन्ट्रैक्ट से लिए गए हैं।
| फ़ील्ड / शाखा | प्रकार / अनिवार्य | शर्तें |
|---|---|---|
$ | objectपैरेंट में अनिवार्य |
|
workspace_id | stringवैकल्पिक / आइटम |
|
asset_type | string | arrayवैकल्पिक / आइटम | — |
asset_typeanyOf 1 | stringवैकल्पिक / आइटम |
|
asset_typeanyOf 2 | arrayवैकल्पिक / आइटम | — |
asset_type[]anyOf 2 | stringवैकल्पिक / आइटम |
|
source | stringवैकल्पिक / आइटम |
|
tag | stringवैकल्पिक / आइटम |
|
limit | integerवैकल्पिक / आइटम |
|
offset | integerवैकल्पिक / आइटम | छोड़ने वाली पंक्तियाँ। अधिकतम 100000 तक; उसके बाद 400 OFFSET_TOO_LARGE। बहुत आगे पेज बदलने के बजाय फ़िल्टर को प्राथमिकता दें।
|
include_version | booleanवैकल्पिक / आइटम | वैकल्पिक। true से उत्तर में संसाधन का संस्करण जुड़ता है। — |
संपूर्ण 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)$"
},
"asset_type": {
"anyOf": [
{
"type": "string",
"enum": [
"text",
"image",
"video",
"audio"
]
},
{
"type": "array",
"items": {
"type": "string",
"enum": [
"text",
"image",
"video",
"audio"
]
}
}
]
},
"source": {
"type": "string",
"maxLength": 64
},
"tag": {
"type": "string",
"maxLength": 64
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"offset": {
"description": "Rows to skip. Served up to 100000; beyond it 400 OFFSET_TOO_LARGE. Prefer filters to paging deep.",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"include_version": {
"description": "Optional. true adds the resource version to the answer.",
"type": "boolean"
}
},
"additionalProperties": false
}रिस्पॉन्स और पूर्णता
सफल HTTP स्टेटस: 200. When the operation is complete: synchronous_http_response.
सफल HTTP रिस्पॉन्स का अर्थ अनुरोध पूरा होने के बजाय स्वीकार होना हो सकता है। बैकग्राउंड काम में लौटाई ID सहेजें और समाप्ति तक वही ऑपरेशन जाँचें। निर्धारित या स्वीकृत पोस्ट प्लेटफ़ॉर्म की पुष्टि पर ही प्रकाशित है; क्लाइंट टाइमआउट परिणाम सिद्ध नहीं करता।
Required का अर्थ पैरेंट ऑब्जेक्ट और चुनी शाखा के भीतर अनिवार्य है। अनिवार्य चाइल्ड से वैकल्पिक पैरेंट अनिवार्य नहीं होता। नीचे के नियम और फ़ील्ड नाम कॉन्ट्रैक्ट से लिए गए हैं।
| फ़ील्ड / शाखा | प्रकार / अनिवार्य | शर्तें |
|---|---|---|
$ | objectपैरेंट में अनिवार्य | — |
assets | arrayपैरेंट में अनिवार्य | — |
assets[] | objectवैकल्पिक / आइटम | — |
assets[].id | integer | stringपैरेंट में अनिवार्य | — |
assets[].idanyOf 1 | integerपैरेंट में अनिवार्य |
|
assets[].idanyOf 2 | stringपैरेंट में अनिवार्य | — |
assets[].workspace_id | stringपैरेंट में अनिवार्य |
|
assets[].user_id | stringपैरेंट में अनिवार्य |
|
assets[].asset_type | stringपैरेंट में अनिवार्य |
|
assets[].asset_url | string | nullपैरेंट में अनिवार्य | — |
assets[].asset_urlanyOf 1 | stringपैरेंट में अनिवार्य | — |
assets[].asset_urlanyOf 2 | nullपैरेंट में अनिवार्य | — |
assets[].preview_url | string | nullवैकल्पिक / आइटम | Workspace-अधिकृत अस्थायी रीड URL। preview_expires_at के बाद Asset read/list से रिफ़्रेश करें; स्थायी मीडिया पहचान के रूप में asset_url रखें। — |
assets[].preview_urlanyOf 1 | stringवैकल्पिक / आइटम |
|
assets[].preview_urlanyOf 2 | nullवैकल्पिक / आइटम | — |
assets[].preview_expires_at | string | nullवैकल्पिक / आइटम | — |
assets[].preview_expires_atanyOf 1 | stringवैकल्पिक / आइटम |
|
assets[].preview_expires_atanyOf 2 | nullवैकल्पिक / आइटम | — |
assets[].title | string | nullपैरेंट में अनिवार्य | — |
assets[].titleanyOf 1 | stringपैरेंट में अनिवार्य | — |
assets[].titleanyOf 2 | nullपैरेंट में अनिवार्य | — |
assets[].description | string | nullपैरेंट में अनिवार्य | — |
assets[].descriptionanyOf 1 | stringपैरेंट में अनिवार्य | — |
assets[].descriptionanyOf 2 | nullपैरेंट में अनिवार्य | — |
assets[].tags | array | nullपैरेंट में अनिवार्य | — |
assets[].tagsanyOf 1 | arrayपैरेंट में अनिवार्य | — |
assets[].tags[]anyOf 1 | stringवैकल्पिक / आइटम | — |
assets[].tagsanyOf 2 | nullपैरेंट में अनिवार्य | — |
assets[].metadata | object | nullपैरेंट में अनिवार्य | — |
assets[].metadataanyOf 1 | objectपैरेंट में अनिवार्य |
|
assets[].metadata.*anyOf 1 | any JSON valueवैकल्पिक / आइटम | — |
assets[].metadataanyOf 2 | nullपैरेंट में अनिवार्य | — |
assets[].source | string | nullवैकल्पिक / आइटम | — |
assets[].sourceanyOf 1 | stringवैकल्पिक / आइटम | — |
assets[].sourceanyOf 2 | nullवैकल्पिक / आइटम | — |
assets[].source_metadata | object | nullवैकल्पिक / आइटम | — |
assets[].source_metadataanyOf 1 | objectवैकल्पिक / आइटम |
|
assets[].source_metadata.*anyOf 1 | any JSON valueवैकल्पिक / आइटम | — |
assets[].source_metadataanyOf 2 | nullवैकल्पिक / आइटम | — |
assets[].created_at | stringपैरेंट में अनिवार्य | — |
assets[].version | integerवैकल्पिक / आइटम |
|
total | integerपैरेंट में अनिवार्य |
|
संपूर्ण JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"assets": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "string"
}
]
},
"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)$"
},
"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)$"
},
"asset_type": {
"type": "string",
"enum": [
"text",
"image",
"video",
"audio"
]
},
"asset_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"preview_url": {
"description": "Workspace-authorized temporary read URL. Refresh through Asset read/list after preview_expires_at; keep asset_url as persisted media identity.",
"anyOf": [
{
"type": "string",
"format": "uri"
},
{
"type": "null"
}
]
},
"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"
}
]
},
"title": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"tags": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
]
},
"metadata": {
"anyOf": [
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
{
"type": "null"
}
]
},
"source": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"source_metadata": {
"anyOf": [
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
{
"type": "null"
}
]
},
"created_at": {
"type": "string"
},
"version": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"id",
"workspace_id",
"user_id",
"asset_type",
"asset_url",
"title",
"description",
"tags",
"metadata",
"created_at"
]
}
},
"total": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"assets",
"total"
]
}त्रुटियाँ और सुरक्षित पुनः प्रयास
HTTP स्टेटस और रिस्पॉन्स बॉडी जाँचें। 400 वैलिडेशन त्रुटि में ZodError हो सकता है; हैंडलर त्रुटियाँ error, message और code फ़ील्ड इस्तेमाल करती हैं। जाँच के लिए request_id या x-request-id रखें, क्रेडेंशियल के बिना। फिर प्रयास से पहले 401/403 एक्सेस त्रुटियाँ ठीक करें और 429 के लिए Retry-After का पालन करें। राइट अनिश्चित हो या 5xx लौटाए, तो पहले मौजूदा परिणाम पढ़ें। idempotency key केवल समर्थित स्थान पर दोबारा इस्तेमाल करें; पुनः प्रयास का व्यवहार ऑपरेशन के अनुसार बदलता है और ठीक एक बार डिलीवरी की गारंटी नहीं देता।
समस्या निवारण गाइडउदाहरण
उदाहरणों में स्कीमा से जाँचे काल्पनिक मान हैं। IDs को अधिकृत IDs, मीडिया को तैयार एसेट और तारीखों को पुष्ट प्रकाशन समय से बदलें। राइट सबमिट करने से पहले खाते की पात्रता जाँचें। यह पेज API अनुरोध नहीं भेजता।
सर्वर पर SOSOAPI_ACCESS_TOKEN को इस ऑपरेशन के स्वीकार्य क्रेडेंशियल से सेट करें और ब्राउज़र कोड से बाहर रखें। एजेंट के लिए sosoapi auth login से ब्राउज़र साइन-इन करें और CLI को क्रेडेंशियल रिफ़्रेश करने दें।
request.json
{}cURL
curl --request POST \
"https://gqeshlawtcexsapabaui.supabase.co/functions/v1/assets-api/list" \
-H "Authorization: Bearer $SOSOAPI_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
--data-binary @request.jsonJavaScript
// 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/assets-api/list", {
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 /assets-api/list < request.jsonकृत्रिम रिस्पॉन्स का उदाहरण
{
"assets": [],
"total": 0
}संबंधित टूल और गाइड
MCP: sosoapi_query_assets