AI projects
จัดการ โปรเจกต์ AI (บริบท workspace สำหรับ feed, job, chat, library) — ใส่ domain ลงทะเบียน ในทุก form ตาม Authentication
บน https://api.gommo.net มีสอง API:
| API | เมื่อไหร่ใช้ |
|---|---|
Legacy POST /ai/projects | รายการย่อ — ใช้ id_base เป็น project_id |
V2 POST /api/v2/ai-projects | จัดการโปรเจกต์เต็ม (scopes, สมาชิก, CRUD) |
Playground
Playground เมื่อรัน npm run docs:stack: พื้นที่โปรเจกต, คลังโปรเจกต, งบโปรเจกต, แพลตฟอร์ม (legacy: Legacy API) — ตาราง worker ด้านล่าง
ที่เกี่ยวข้อง: Cookbook home feed · Endpoint map · Gommo public API
Auth
Bearer + form access_token, domain จาก $env:GOMMO_API_DOMAIN
V2 ส่ง device_id, device_name, device_info — gateway เติมให้ได้ถ้าไม่ส่ง
Legacy list
$domain = $env:GOMMO_API_DOMAIN
if (-not $domain) { throw 'Set GOMMO_API_DOMAIN' }
$h = @{ Authorization = "Bearer $env:TOKEN"; 'Content-Type' = 'application/x-www-form-urlencoded' }
Invoke-RestMethod -Method Post -Uri 'https://api.gommo.net/ai/projects' -Headers $h -Body "access_token=$env:TOKEN&domain=$domain"Self-host: POST {gateway}/gateway/projects
V2 manager
POST https://api.gommo.net/api/v2/ai-projects — field action:
action | ฟิลด์จำเป็น | หมายเหตุ |
|---|---|---|
list | token, domain | data[] มี scopes, สมาชิก, session |
create | name, description | คำอธิบาย ≥ 10 ตัวอักษร |
get | id_base | object ใน data; password ทางเลือกเมื่อ protected — ปลดล็อก (Mở dự án). ผิด: success: false, needs_password: true |
set_password | id_base, password | แท็บ Chi tiết — MẬT KHẨU TÀI DỰ ÁN; protected: true; password ว่าง = ลบ |
update | id_base, name, description | ชื่อ/คำอธิบาย — ไม่ ใช่รหัสผ่านโปรเจกต์ |
delete | id_base | ใช้ id_base ไม่ใช่ id ตัวเลข |
member_list | id_base | แท็บ Thành viên — members[], invites[], my_scopes |
member_kick | id_base, user_id | ลบสมาชิก — user_id จาก member_list (verify แล้ว) |
invite | id_base, identifier, role, access, scopes | เชิญ — role: member / mod / admin |
invite_revoke | invite_id | ยกเลิกคำเชิญ — จาก data.invites[] |
set_budget | id_base, budget | แท็บ Hạn mức — จำนวนเต็ม; 0 = ไม่จำกัด |
stats | id_base, period | แท็บ Thống kê — all, today, yesterday, this_month, last_month |
activity_list | id_base, limit, offset | แท็บ Lịch sử hoạt động — UI ส่ง limit=50, offset=0 |
Credit pools: Credit pools
Media tab (project modal)
แท็บ Media (Ảnh / Video / Audio / Music) ไม่ ใช้ ai-projects — scope คือ UUID โปรเจกต์ (id_base จาก list)
ภาพและวิดีโอ (files-manager)
POST https://api.gommo.net/api/v2/files-manager — action=list
| Field | จำเป็น | หมายเหตุ |
|---|---|---|
project | ใช่ | UUID โปรเจกต์ (ไม่ ใช้ project_id ที่นี่) |
media_type | ใช่ | image หรือ video |
status | ไม่ | UI dealer ส่ง ready |
signed_previews | ไม่ | true — preview ใน data.items[] |
limit | ไม่ | UI 30 |
offset | ไม่ | แบ่งหน้า |
Response: data.items[], limit, offset. Mode B: POST {gateway}/gateway/files-manager. Playground: สื่อโปรเจกต (ภาพ / วิดีโอ)
อาจเรียก POST /ai/images หรือ /ai/videos + project_id — capture มัก data: []; grid UI ใช้ files-manager
ช่องค้นหา: กรอง ฝั่ง client — payload files-manager list ไม่ มี field search
Audio
POST https://api.gommo.net/ai/audio — action_type=get.list, project_id (ไม่ใช่ TTS getLists). Gateway: /gateway/project-media/audio. Playground: สื่อโปรเจกต (audio list)
Music
POST …/ai_musics/getAll + project_id, domain, token, device. Gateway: /gateway/project-media/music. Playground: สื่อโปรเจกต (music getAll) — ต่างจาก library user (/ai/library/musics) และ job สร้าง music
Project stats (action=stats)
data.summary, data.chart, data.project — ไม่ใช่ usage-history. Playground: สถิติการใช้งาน
Activity history (action=activity_list)
แท็บ modal Lịch sử hoạt động — endpoint V2 เดียวกัน
| Field | จำเป็น | หมายเหตุ |
|---|---|---|
id_base | ใช่ | UUID โปรเจกต์ |
limit | ไม่ | UI dealer มัก 50 |
offset | ไม่ | 0 หน้าแรก; เพิ่มตาม limit สำหรับหน้าถัดไป |
Response: data.items[] — audit (actor_*, summary ตาม locale, รหัส action ไม่ตรงชื่อ API เช่น invite / member_kick), target_type, target_id, payload, created_time (Unix วินาที)
ตัวอย่าง action: project.create, project.update, budget.set, share_credit.on / off, member.invite, member.revoke, member.kick, member.accept — pool create / deposit / delete อาจมีเมื่อ upstream บันทึก
Gateway Mode B:
{
"action": "activity_list",
"id_base": "<id_base จาก list>",
"limit": 50,
"offset": 0,
"language": "vi"
}Playground: บันทึกกิจกรรม
ตัวอย่าง PowerShell
$domain = $env:GOMMO_API_DOMAIN
if (-not $domain) { throw 'Set GOMMO_API_DOMAIN' }
$h = @{ Authorization = "Bearer $env:TOKEN"; 'Content-Type' = 'application/x-www-form-urlencoded' }
$uri = 'https://api.gommo.net/api/v2/ai-projects'
$list = "access_token=$env:TOKEN&domain=$domain&action=list&language=vi"
Invoke-RestMethod -Method Post -Uri $uri -Headers $h -Body $list
$idBase = '<id_base_from_list>'
$get = "access_token=$env:TOKEN&domain=$domain&action=get&id_base=$idBase&language=vi"
Invoke-RestMethod -Method Post -Uri $uri -Headers $h -Body $get
$members = "access_token=$env:TOKEN&domain=$domain&action=member_list&id_base=$idBase&language=vi"
Invoke-RestMethod -Method Post -Uri $uri -Headers $h -Body $members
$kick = "access_token=$env:TOKEN&domain=$domain&action=member_kick&id_base=$idBase&user_id=75965&language=vi"
Invoke-RestMethod -Method Post -Uri $uri -Headers $h -Body $kick
$budget = "access_token=$env:TOKEN&domain=$domain&action=set_budget&id_base=$idBase&budget=48790&language=vi"
Invoke-RestMethod -Method Post -Uri $uri -Headers $h -Body $budget
$setPwd = "access_token=$env:TOKEN&domain=$domain&action=set_password&id_base=$idBase&password=YOUR_PASSWORD&language=vi"
Invoke-RestMethod -Method Post -Uri $uri -Headers $h -Body $setPwd
$getProtected = "access_token=$env:TOKEN&domain=$domain&action=get&id_base=$idBase&password=YOUR_PASSWORD&language=vi"
Invoke-RestMethod -Method Post -Uri $uri -Headers $h -Body $getProtectedGateway Mode B
POST {gateway}/gateway/ai-projects — JSON + Bearer. Gateway เติม domain เมื่อไม่ส่ง. Alias: idBase/projectId → id_base; userId → user_id; inviteId → invite_id. OpenAPI: openapi.yaml
{ "action": "list", "language": "vi" }{
"action": "get",
"id_base": "<id_base_from_list>",
"password": "<when protected>",
"language": "vi"
}{
"action": "set_password",
"id_base": "<id_base_from_list>",
"password": "<empty string clears>",
"language": "vi"
}Playground (Home feed)
เมื่อรัน npm run docs:stack — Playground proxy gateway (same-origin). เมนู Home feed ใช้กลุ่ม Legacy API, พื้นที่โปรเจกต, คลังโปรเจกต, งบโปรเจกต, แพลตฟอร์ม (ชื่อตรง UI):
| กลุ่ม | Worker | action | ฟอร์มหลัก |
|---|---|---|---|
| พื้นที่โปรเจกต | เรียกดูโปรเจกต | list | language |
| พื้นที่โปรเจกต | เปิดโปรเจกต | get | id_base, password (optional) |
| พื้นที่โปรเจกต | รหัสผ่านโปรเจกต | set_password | id_base, password |
| พื้นที่โปรเจกต | สมาชิก / เชิญ / ลบ / ยกเลิกคำเชิญ | member_list, invite, member_kick, invite_revoke | ดู EN reference |
| พื้นที่โปรเจกต | วงเงิน / สถิติ / บันทึก | set_budget, stats, activity_list | id_base + fields ตาม action |
| พื้นที่โปรเจกต | ขั้นสูง: action กำหนดเอง | captured action | pass-through |
Home feed ไม่ ใช้ Limit / After ID ของ media library.
Request tab vs Send: preview อาจแสดง placeholder เมื่อช่องว่าง; Send ส่งเฉพาะค่าที่กรอก
Kick / invite / revoke (Mode B)
{
"action": "member_kick",
"id_base": "<id_base>",
"user_id": 75965,
"language": "vi"
}{
"action": "invite",
"id_base": "<id_base>",
"identifier": "username",
"role": "member",
"access": "view",
"scopes": { "...": "copy from dealer Network" },
"language": "vi"
}Gateway default access: member → view, mod/admin → edit.
{
"action": "invite_revoke",
"invite_id": "<uuid from data.invites[]>",
"language": "vi"
}Unknown action (pass-through)
Typed handlers ครอบคลุมตาราง V2 รวม set_password. action ใหม่จาก upstream ใช้ JSON capture หรือ Playground custom action V2.
project_id
ใช้ id_base จาก list/get เป็น project_id (newfeeds, jobs, library) — default: "default"
Credit vs budget
| ยอดบัญชี (เมนูโปรไฟล์) | กระเป๋าผู้ใช้ — ไม่หักอัตโนมัติเมื่อสร้าง job |
budget (set_budget) | เพดาน ที่โปรเจกต์ใช้ได้ |
credit_balance | ยอดใช้จ่ายบนโปรเจกต์ (มัก 0 จนกว่าจะ fund pool) |
| Credit pools | แท็บ Ngân sách — list, create, deposit (Bơm), delete, ledger, share credit |
Pool & share credit
ดู Credit pools — deposit (Bơm), delete (pool_id จาก list); deposit: wallet ≥ amount + 100k reserve; delete: ok: true ไม่ รับประกันคืนกระเป๋าส่วนตัว
ยังไม่ได้ document
อัปโหลด บนแท็บ Media (นอก list) — capture แยก
