From 76151c9df438b433c82680f9f2307bda407f5b52 Mon Sep 17 00:00:00 2001 From: ali_mohaghegh Date: Tue, 25 Aug 2026 19:08:15 +0330 Subject: [PATCH] chore(legacy): add shipped HTML inventory-dash prototype as reference --- legacy/dash-prototype/README.md | 54 + legacy/dash-prototype/app-config.js | 6 + legacy/dash-prototype/callback.html | 92 + legacy/dash-prototype/casdoor-config.js | 9 + legacy/dash-prototype/change-inventory.html | 797 ++ legacy/dash-prototype/core.js | 582 + legacy/dash-prototype/inventory-system.html | 909 ++ legacy/dash-prototype/serve.py | 19 + legacy/dash-prototype/style.css | 685 ++ legacy/dash-prototype/swagger.json | 10555 ++++++++++++++++++ legacy/dash-prototype/test-logic-v3.mjs | 109 + 11 files changed, 13817 insertions(+) create mode 100644 legacy/dash-prototype/README.md create mode 100644 legacy/dash-prototype/app-config.js create mode 100644 legacy/dash-prototype/callback.html create mode 100644 legacy/dash-prototype/casdoor-config.js create mode 100644 legacy/dash-prototype/change-inventory.html create mode 100644 legacy/dash-prototype/core.js create mode 100644 legacy/dash-prototype/inventory-system.html create mode 100644 legacy/dash-prototype/serve.py create mode 100644 legacy/dash-prototype/style.css create mode 100644 legacy/dash-prototype/swagger.json create mode 100644 legacy/dash-prototype/test-logic-v3.mjs diff --git a/legacy/dash-prototype/README.md b/legacy/dash-prototype/README.md new file mode 100644 index 0000000..2db282e --- /dev/null +++ b/legacy/dash-prototype/README.md @@ -0,0 +1,54 @@ +# سامانه مدیریت انبار — فرانت‌اند متصل به استک (FastAPI + PostgreSQL + Casdoor) + +معماری نهایی: + +``` +مرورگر (فرانت HTML — inventory-system.html / change-inventory.html) + │ + ├── ورود: Casdoor (OIDC + PKCE) یا رمز آزمایشی محلی + │ → نقش/پروژه از پروفایل محلی (ایمیل ⇄ مدیر پروژه) + │ + └── داده: هدرهای X-User-Role / X-Project-Id / X-User-Name-B64 + → FastAPI (/api/v1) → PostgreSQL +``` + +## اجرا + +**استک (Docker):** +``` +cd v1.2 +docker compose up -d --build +``` +- فرانت: http://localhost:3000 (nginx — پراکسی /api به بک‌اند) +- API: http://localhost:8000/docs +- Casdoor: http://localhost:8080 (admin/123) — بعد از seed: کاربرها mousavi/goli/mohaghegh/razaei با رمز 123456 +- seed استک: `py seed_stack.py` (واحد/پروژه/برند/متریال/انبار/تراکنش نمونه) +- seed Casdoor: `cd casdoor && py seed.py` (سازمان/اپلیکیشن OIDC/کاربران + تولید casdoor-config.js) + +**اجرای محلی بدون Docker برای فرانت:** +``` +py -m http.server 8123 +``` +و `app-config.js` را با `apiBase: 'http://localhost:8000/api/v1'` بگذارید. + +## ساختار + +| فایل | نقش | +|---|---| +| `inventory-system.html` | داشبورد، کنترل روزانه، انبارها، سازمان‌دهی، ورود | +| `change-inventory.html` | صفحه تغییر موجودی (فایل مستقل — فقط «برگشت به داشبوردها») | +| `core.js` | هویت/نشست + لایه API (fetch + هدرهای نقش) + آینه داده‌ها | +| `style.css` | استایل مشترک | +| `casdoor-config.js` | تنظیمات اتصال به Casdoor (تولیدشده توسط seed) | +| `app-config.js` | آدرس API بک‌اند | +| `callback.html` | بازگشت OIDC (تبدیل کد به توکن و نشست) | +| `test-logic-v3.mjs` | تست (هویت + لایه API در برابر استک واقعی) → ALL_LOGIC_V3_OK | +| `v1.2/` | استک: backend (FastAPI) + frontend (nginx) + sql + seed_stack.py + docker-compose.yml | +| `casdoor/` | docker-compose Casdoor + PostgreSQL + seed.py | + +## مدل دسترسی + +- **ادمین**: فقط‌خواندنی برای موجودی؛ مدیریت ساختار (پروژه/انبار/مدیران) در «سازمان‌دهی». +- **مدیر پروژه**: ثبت و مشاهده فقط در انبارهای پروژه خودش (اعمال در بک‌اند با هدر X-Project-Id). +- کاربران محلی (ایمیل ⇄ نقش/پروژه) در `localStorage` نگهداری می‌شوند؛ هویت واقعی از Casdoor. +- رمزهای آزمایشی محلی: 10 ادمین، 1/2 مدیر پروژه برج آیتا، 3 مدیر پروژه الماس. diff --git a/legacy/dash-prototype/app-config.js b/legacy/dash-prototype/app-config.js new file mode 100644 index 0000000..ef59ce0 --- /dev/null +++ b/legacy/dash-prototype/app-config.js @@ -0,0 +1,6 @@ +// پیکربندی برنامه — آدرس API بک‌اند +// - در استک Docker (nginx): '/api/v1' (پراکسی به کانتینر api) +// - در اجرای محلی با http.server: آدرس کامل http://localhost:8000/api/v1 +window.APP_CONFIG = { + apiBase: 'http://localhost:8000/api/v1' +}; diff --git a/legacy/dash-prototype/callback.html b/legacy/dash-prototype/callback.html new file mode 100644 index 0000000..642f138 --- /dev/null +++ b/legacy/dash-prototype/callback.html @@ -0,0 +1,92 @@ + + + + + + +ورود — سامانه مدیریت انبار + + + + + + +
+ +
+ + +
+ +
+ + diff --git a/legacy/dash-prototype/casdoor-config.js b/legacy/dash-prototype/casdoor-config.js new file mode 100644 index 0000000..8645e46 --- /dev/null +++ b/legacy/dash-prototype/casdoor-config.js @@ -0,0 +1,9 @@ +// تنظیمات اتصال به Casdoor — توسط casdoor/seed.py تولید شده +window.CASDOOR_CONFIG = { + serverUrl: 'http://localhost:8080', + clientId: 'inventory-app-client', + clientSecret: 'inventory-app-secret-2026', + organization: 'inventory', + appName: 'inventory-app', + redirectUri: 'http://localhost:8123/callback.html' +}; diff --git a/legacy/dash-prototype/change-inventory.html b/legacy/dash-prototype/change-inventory.html new file mode 100644 index 0000000..f6a2c82 --- /dev/null +++ b/legacy/dash-prototype/change-inventory.html @@ -0,0 +1,797 @@ + + + + + + +تغییر موجودی — سامانه مدیریت انبار + + + + + + + + +
+ +
+ + + + + +
+ + + + + + + diff --git a/legacy/dash-prototype/core.js b/legacy/dash-prototype/core.js new file mode 100644 index 0000000..65950a3 --- /dev/null +++ b/legacy/dash-prototype/core.js @@ -0,0 +1,582 @@ +/* ============================================================ + core.js — بخش مشترک سامانه مدیریت انبار (نسخه متصل به API) + (ثابت‌ها، هویت/نشست، لایه API، نوار بالا، توست) + بارگذاری مشترک در inventory-system.html و change-inventory.html + داده‌ها از بک‌اند (FastAPI /api/v1) خوانده می‌شوند. + ============================================================ */ + +/* ---------- متریال‌ها و فهرست‌ها از API می‌آیند ---------- */ +var API_BASE = (typeof window!=='undefined' && window.APP_CONFIG && window.APP_CONFIG.apiBase) || '/api/v1'; + +var CATEGORY_FA = { + 'mechanical-installations-pipes': 'تأسیسات مکانیکی و آبی', + 'electrical-equipment-supplies': 'تجهیزات و لوازم برقی', + 'doors-windows-glass': 'درب، پنجره و شیشه', + 'metals-steel-sections': 'فلزات و مقاطع فولادی', + 'construction-materials': 'مصالح ساختمانی', + 'construction-chemicals': 'مواد شیمیایی ساختمانی', + 'finishing-interior-decoration': 'نازک‌کاری و دکوراسیون داخلی', + 'construction-tools-equipment': 'ابزار و تجهیزات کارگاهی' +}; + +var TX = { + PURCHASE: {label:'خرید', icon:'cart', color:'#16a34a', dir:'+', grp:'in'}, + WITHDRAWAL: {label:'برداشت', icon:'minusCirc', color:'#1d4ed8', dir:'−', grp:'out'}, + RETURN: {label:'برگشت', icon:'undo', color:'#16a34a', dir:'+', grp:'in'}, + TRANSFER_IN: {label:'انتقال (ورودی)', icon:'in', color:'#16a34a', dir:'+', grp:'in'}, + TRANSFER_OUT:{label:'انتقال (خروجی)', icon:'out', color:'#1d4ed8', dir:'−', grp:'out'}, + DAMAGE: {label:'ضایعات', icon:'warn', color:'#1d4ed8', dir:'−', grp:'out'}, + WASTE: {label:'اتلاف', icon:'trash', color:'#1d4ed8', dir:'−', grp:'out'}, + LOSS: {label:'مفقودی', icon:'pkgX', color:'#1d4ed8', dir:'−', grp:'out'}, + FOUND: {label:'پیدا شده', icon:'search', color:'#16a34a', dir:'+', grp:'in'}, + STOCK_COUNT: {label:'شمارش موجودی', icon:'check', color:'#64748b', dir:'±', grp:'cnt'} +}; +var TX_ORDER = ['PURCHASE','WITHDRAWAL','RETURN','TRANSFER_IN','TRANSFER_OUT','DAMAGE','WASTE','LOSS','FOUND','STOCK_COUNT']; + +var FORM_TYPES = [ + {t:'PURCHASE', icon:'cart', dirTxt:'افزایش', cls:'in'}, + {t:'WITHDRAWAL', icon:'minusCirc', dirTxt:'کاهش', cls:'out'}, + {t:'RETURN', icon:'undo', dirTxt:'افزایش', cls:'in'}, + {t:'TRANSFER', icon:'out', dirTxt:'جابه‌جایی', cls:'mv'}, + {t:'DAMAGE', icon:'warn', dirTxt:'کاهش', cls:'out'}, + {t:'WASTE', icon:'trash', dirTxt:'کاهش', cls:'out'}, + {t:'LOSS', icon:'pkgX', dirTxt:'کاهش', cls:'out'}, + {t:'FOUND', icon:'search', dirTxt:'افزایش', cls:'in'}, + {t:'STOCK_COUNT', icon:'check', dirTxt:'اصلاح', cls:'cnt'} +]; +var FORM_CLS_COLOR = {in:'#16a34a', out:'#1d4ed8', mv:'#4f46e5', cnt:'#64748b'}; + +var ICON_PATHS = { + cart: ['M2.05 2.05h2l2.66 12.42a2 2 0 0 0 2 1.58h9.78a2 2 0 0 0 1.95-1.57l1.65-7.43H5.12'], + minusCirc: ['M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20Z','M8 12h8'], + undo: ['M3 7v6h6','M21 17a9 9 0 0 0-15-6.7L3 13'], + in: ['M12 3v14','m6 9 6 6 6-6','M5 21h14'], + out: ['M12 21V7','m6 13 6-6 6 6','M5 3h14'], + warn: ['m21.73 18-8-14a2 2 0 0 0-3.46 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z','M12 9v4','M12 17h.01'], + trash: ['M3 6h18','M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6','M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2'], + pkgX: ['M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z','M3.3 7 12 12l8.7-5','M12 22V12','M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4','m10 17 5-5-5-5','M15 12H3'], + search: ['m21 21-4.34-4.34','M11 19a8 8 0 1 0 0-16 8 8 0 0 0 0 16Z'], + check: ['M20 6 9 17l-5-5'], + box: ['M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z','M3.3 7 12 12l8.7-5','M12 22V12'], + warehouse: ['M22 8.35V20a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V8.35A2 2 0 0 1 3.26 6.5l8-3.2a2 2 0 0 1 1.48 0l8 3.2A2 2 0 0 1 22 8.35Z','M6 18h12','M6 14h12','M6 10h12'], + plus: ['M12 5v14','M5 12h14'], + pencil: ['M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z'], + x: ['M18 6 6 18','m6 6 12 12'], + chev: ['m9 18 6-6-6-6'], + user: ['M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2','M12 3a4 4 0 1 0 0 8 4 4 0 0 0 0-8Z'], + note: ['M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8Z','M14 2v6h6','M16 13H8','M16 17H8','M10 9H8'], + lock: ['M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10Z','M12 8v4','M12 16h.01'], + sort: ['M11 5h10','M11 9h7','M11 13h4','m3 17 3 3 3-3','M6 18V4'], + tag: ['M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z','M7 7h.01'], + clock: ['M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20Z','M12 6v6l4 2'], + building: ['M6 22V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v18Z','M6 12H4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h2','M18 9h2a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2h-2','M10 6h4','M10 10h4','M10 14h4','M10 18h4'], + info: ['M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20Z','M12 16v-4','M12 8h.01'], + history: ['M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8','M3 3v5h5','M12 7v5l4 2'], + calendar: ['M8 2v4','M16 2v4','M3 10h18','M5 4h14a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2Z'], + logout: ['M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4','m16 17 5-5-5-5','M21 12H9'] +}; + +function icon(name, cls){ + var paths=(ICON_PATHS[name]||ICON_PATHS.box).map(function(d){ + return ''; + }).join(''); + return ''+paths+''; +} +function datalist(id,vals){ + return ''+vals.map(function(v){return ''; +} + +/* ============================================================ + ابزار + ============================================================ */ + +function esc(s){ + return String(s==null?'':s).replace(/&/g,'&').replace(//g,'>').replace(/"/g,'"').replace(/'/g,'''); +} +function fa(n){ return Number(n).toLocaleString('fa-IR',{maximumFractionDigits:4}); } +function faInt(n){ return String(n).replace(/\d/g,function(d){return '۰۱۲۳۴۵۶۷۸۹'[d];}); } +function toEnNum(s){ + if(typeof s!=='string') s=String(s); + return s.replace(/[۰-۹]/g,function(d){return '۰۱۲۳۴۵۶۷۸۹'.indexOf(d);}) + .replace(/[٠-٩]/g,function(d){return '٠١٢٣٤٥٦٧٨٩'.indexOf(d);}) + .replace(/[،,]/g,''); +} +function parseNum(s){ + var v=Number(toEnNum(s)); + return isFinite(v)?v:NaN; +} +function fmtDate(iso){ + try{return new Intl.DateTimeFormat('fa-IR',{year:'numeric',month:'2-digit',day:'2-digit'}).format(new Date(iso));} + catch(e){return iso;} +} +function fmtDateLong(iso){ + try{return new Intl.DateTimeFormat('fa-IR',{dateStyle:'full'}).format(new Date(iso));} + catch(e){return fmtDate(iso);} +} +function fmtTime(iso){ + try{return new Intl.DateTimeFormat('fa-IR',{timeStyle:'short'}).format(new Date(iso));} + catch(e){return '';} +} +function fmtDateTime(iso){ + try{return new Intl.DateTimeFormat('fa-IR',{dateStyle:'medium',timeStyle:'short'}).format(new Date(iso));} + catch(e){return iso;} +} +function toLocalInput(d){ + var x=new Date(d); x.setMinutes(x.getMinutes()-x.getTimezoneOffset()); + return x.toISOString().slice(0,16); +} +function gregKey(d){ + var y=d.getFullYear(),m=d.getMonth()+1,dd=d.getDate(); + return y+'-'+(m<10?'0':'')+m+'-'+(dd<10?'0':'')+dd; +} +function todayKey(){ return gregKey(new Date()); } +function specsHash(specs){ + var keys=Object.keys(specs||{}).filter(function(k){return specs[k]!==''&&specs[k]!=null;}).sort(); + var s=keys.map(function(k){return k+'='+specs[k];}).join('|'); + if(!s) return ''; + var h=5381,i; + for(i=0;i>>0; } + return 'h'+h.toString(16); +} +function specsText(specs){ + var keys=Object.keys(specs||{}).filter(function(k){return specs[k]!==''&&specs[k]!=null;}); + if(!keys.length) return '—'; + return keys.map(function(k){return k+' : '+specs[k];}).join(' · '); +} +function specsChips(specs){ + var keys=Object.keys(specs||{}).filter(function(k){return specs[k]!==''&&specs[k]!=null;}); + if(!keys.length) return ''; + return keys.map(function(k){return ''+esc(k)+' : '+esc(specs[k])+'';}).join(''); +} +function hexBg(hex,alpha){ + var r=parseInt(hex.slice(1,3),16),g=parseInt(hex.slice(3,5),16),b=parseInt(hex.slice(5,7),16); + return 'rgba('+r+','+g+','+b+','+alpha+')'; +} +function keyOf(wh,m,b,sh){ return wh+'|'+m+'|'+(b||'')+'|'+sh; } +function recById(id){ + if(!id) return null; + for(var i=0;i'+esc(msg)+''; + document.getElementById('toasts').appendChild(el); + setTimeout(function(){ el.classList.add('hide'); setTimeout(function(){el.remove();},350); },4000); +} + +/* ============================================================ + login / logout + ============================================================ */ + +function doLogin(){ + var pw=document.getElementById('login-pass').value.trim(); + var u=state.users.find(function(x){return x.pw===pw;}); + if(!u){ + document.getElementById('login-err').textContent='رمز عبور اشتباه است.'; + return; + } + session={pw:pw}; + saveSession(); + ui.form=emptyForm('PURCHASE'); + document.getElementById('login').classList.add('hidden'); + document.getElementById('app').classList.remove('hidden'); + toast('خوش آمدید، '+u.name+' ✓','ok'); + loadAll().then(function(ok){ renderChrome(); renderPage(); }); +} +function logout(){ + session=null; + try{ localStorage.removeItem(SESSION_KEY); }catch(e){} + document.getElementById('app').classList.add('hidden'); + document.getElementById('login').classList.remove('hidden'); + document.getElementById('login-pass').value=''; + document.getElementById('login-err').textContent=''; +} + +/* ============================================================ + ورود با حساب سازمانی (Casdoor — OIDC Authorization Code + PKCE) + ============================================================ */ + +function casdoorConfig(){ return (typeof window!=='undefined'&&window.CASDOOR_CONFIG)||null; } + +function b64urlFromBytes(bytes){ + var s=''; + for(var i=0;i'+icon(it.ic,'')+esc(it.label)+''; + return ''; + }).join(''); + var backBtn=document.getElementById('back-btn'); + if(backBtn){ + backBtn.style.display=ui.history.length?'inline-flex':'none'; + backBtn.title=ui.history.length?'بازگشت به '+esc(viewName(ui.history[ui.history.length-1])):''; + } + /* دکمه «تغییر موجودی» گوشه بالا-چپ — فقط برای مدیران پروژه (ادمین فقط‌خواندنی) */ + var chLink=document.getElementById('change-link'); + if(chLink) chLink.style.display=isAdmin()?'none':'inline-flex'; +} + +function renderSession(){ + var u=user(); + if(!u){ return; } + var html=''; + html+='
'+icon('user','')+esc(u.name)+' — '+esc(u.label)+'
'; + if(session&&session.mode==='casdoor'){ + html+=''+icon('lock','')+'حساب سازمانی (Casdoor)'; + } + if(u.role==='admin'){ + html+='
'+icon('building','')+'' + +'
'; + html+='
'+icon('lock','')+' فقط خواندنی — امکان ثبت و ویرایش وجود ندارد
'; + }else{ + html+='
' + +icon('building','')+esc(projName(u.projectId))+' — مدیر پروژه
'; + } + html+=''; + document.getElementById('sessionbar').innerHTML=html; +} + +function renderChrome(){ + renderNav(); + renderSession(); +} +function renderPage(){ + if(typeof renderAll==='function') renderAll(); + else if(typeof renderChange==='function') renderChange(); +} + +function onAdminProjectChange(v){ + ui.adminProject=v; + ui.filters={category:'',warehouse:'',material:''}; + ui.expandedId=null; ui.selTx=null; + renderChrome(); + renderPage(); +} + +/* ============================================================ + UI state + ============================================================ */ + +function emptyForm(type){ + return { + type:type||'PURCHASE', + whId:'', + matTxt:'', brandTxt:'', unitTxt:'', + specsRows:[{rid:1,label:'',value:''}], specSeq:2, + qty:'', note:'', dateInput:toLocalInput(new Date()), + selMatId:'', matTxt:'', + rows:[], + fromId:'', toId:'' + }; +} + +var ui={ + view:'dashboard', + adminProject:'', + filters:{category:'',warehouse:'',material:''}, + sort:'', + expandedId:null, selTx:null, + form:emptyForm('PURCHASE'), + cal:{anchor:new Date(), sel:todayKey(), actRec:null}, + history:[], + whEditId:null, whEditName:'', whEditDesc:'', + whNewName:'', whNewDesc:'', whNewProj:'', + newUserName:'', newUserPw:'', newUserProj:'', newUserEmail:'', + pmEditId:null, pmEditName:'', pmEditPw:'', pmEditProj:'', pmEditEmail:'' +}; + +/* ============================================================ + scope (انبارها/پروژه‌های قابل مشاهده) + ============================================================ */ + +function scopedWarehouses(){ + var u=user(); + if(!u) return []; + if(u.role==='admin'){ + var pid=ui.adminProject; + return pid?state.warehouses.filter(function(w){return w.project_id===pid;}):state.warehouses.slice(); + } + return state.warehouses.filter(function(w){return String(w.project_id)===String(u.projectId);}); +} +function scopedProjects(){ + var u=user(); + if(!u) return []; + if(u.role==='admin'){ + return ui.adminProject?[ui.adminProject]:state.projects.map(function(p){return p.id;}); + } + return u.projectId?[u.projectId]:[]; +} diff --git a/legacy/dash-prototype/inventory-system.html b/legacy/dash-prototype/inventory-system.html new file mode 100644 index 0000000..146bc18 --- /dev/null +++ b/legacy/dash-prototype/inventory-system.html @@ -0,0 +1,909 @@ + + + + + + +سامانه مدیریت انبار + + + + + + + + +
+ +
+ + + + +
+ + + + + + + diff --git a/legacy/dash-prototype/serve.py b/legacy/dash-prototype/serve.py new file mode 100644 index 0000000..a3f4c72 --- /dev/null +++ b/legacy/dash-prototype/serve.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +"""سرور استاتیک محلی بدون کش (جایگزین py -m http.server) +اجرا: py serve.py +""" +import http.server +import socketserver + +PORT = 8123 + + +class NoCacheHandler(http.server.SimpleHTTPRequestHandler): + def end_headers(self): + self.send_header('Cache-Control', 'no-store') + super().end_headers() + + +with socketserver.TCPServer(('', PORT), NoCacheHandler) as httpd: + print('Serving on http://localhost:%d (no-cache)' % PORT) + httpd.serve_forever() diff --git a/legacy/dash-prototype/style.css b/legacy/dash-prototype/style.css new file mode 100644 index 0000000..ebb2dfd --- /dev/null +++ b/legacy/dash-prototype/style.css @@ -0,0 +1,685 @@ +:root{ + --bg:#f3f5f9; --panel:#ffffff; --ink:#0f172a; --muted:#64748b; --line:#e5e9f0; + --accent:#4f46e5; --accent-dark:#4338ca; --accent-bg:#eef2ff; + --green:#16a34a; --green-bg:#dcfce7; + --blue:#1d4ed8; --blue-bg:#dbeafe; + --indigo:#4f46e5; --indigo-bg:#e0e7ff; + --red:#dc2626; --red-bg:#fee2e2; + --orange:#c2410c; --orange-bg:#ffedd5; + --slate:#64748b; --slate-bg:#f1f5f9; +} +*{box-sizing:border-box; margin:0; padding:0;} +html{font-size:14px;} +body{ + font-family:'Vazirmatn',Tahoma,'Segoe UI',sans-serif; + background:var(--bg); color:var(--ink); + min-height:100vh; line-height:1.7; + -webkit-font-smoothing:antialiased; +} +button{font-family:inherit; cursor:pointer;} +input,select,textarea{font-family:inherit; font-size:13px; color:var(--ink);} +svg{width:16px; height:16px; flex:none;} /* اندازه پیش‌فرض همه آیکون‌ها */ +.hidden{display:none !important;} + +/* ---------- login ---------- */ +#login{ + position:fixed; inset:0; background:linear-gradient(160deg,#eef2ff 0%,#f3f5f9 55%,#e0e7ff 100%); + display:flex; align-items:center; justify-content:center; padding:20px; z-index:200; +} +.login-card{ + background:#fff; border:1px solid var(--line); border-radius:16px; + padding:34px 30px 28px; width:min(420px,94vw); text-align:center; + box-shadow:0 20px 50px rgba(15,23,42,.12); +} +.login-logo{ + width:60px; height:60px; margin:0 auto 12px; border-radius:16px; background:var(--accent); + color:#fff; display:flex; align-items:center; justify-content:center; +} +.login-logo svg{width:30px; height:30px;} +.login-card h1{font-size:18px; font-weight:800; margin-bottom:4px;} +.login-card .sub{font-size:12px; color:var(--muted); margin-bottom:20px;} +.login-card label{display:block; text-align:right; font-size:12px; font-weight:700; color:var(--muted); margin-bottom:6px;} +.login-card input{ + width:100%; border:1px solid var(--line); border-radius:10px; padding:11px 14px; + font-size:14px; outline:none; text-align:center; letter-spacing:2px; direction:ltr; + transition:all .15s; +} +.login-card input:focus{border-color:var(--accent); box-shadow:0 0 0 3px var(--accent-bg);} +.login-btn{ + width:100%; margin-top:14px; background:var(--accent); color:#fff; border:none; + font-size:14px; font-weight:700; padding:11px; border-radius:10px; + display:flex; align-items:center; justify-content:center; gap:8px; +} +.login-btn:hover{background:var(--accent-dark);} +.login-btn svg{width:16px; height:16px;} +.login-divider{ + display:flex; align-items:center; gap:10px; margin-top:14px; + color:var(--muted); font-size:11px; font-weight:600; +} +.login-divider::before,.login-divider::after{content:""; flex:1; height:1px; background:var(--line);} +.casdoor-btn{ + background:#0ea5e9; box-shadow:0 2px 8px rgba(14,165,233,.3); +} +.casdoor-btn:hover{background:#0284c7 !important;} +.login-err{color:var(--red); font-size:12px; font-weight:600; margin-top:10px; min-height:18px;} +.demo-hint{ + margin-top:18px; padding:10px 12px; background:#f8fafc; border:1px dashed #cbd5e1; + border-radius:10px; font-size:11px; color:var(--muted); text-align:right; line-height:2; +} +.demo-hint b{color:var(--ink);} + +/* ---------- top bar ---------- */ +.topbar{ + background:var(--panel); border-bottom:1px solid var(--line); + padding:0 22px; display:flex; align-items:center; gap:20px; flex-wrap:wrap; + position:sticky; top:0; z-index:50; +} +.brand{display:flex; align-items:center; gap:12px; padding:10px 0;} +.brand .logo{ + width:38px; height:38px; border-radius:10px; background:var(--accent); color:#fff; + display:flex; align-items:center; justify-content:center; +} +.brand .logo svg{width:20px; height:20px;} +.brand h1{font-size:16px; font-weight:800;} +.brand .sub{font-size:11px; color:var(--muted);} +.nav{display:flex; gap:6px; margin-inline-start:auto; flex-wrap:wrap;} +.nav-btn{ + display:flex; align-items:center; gap:7px; border:1px solid var(--line); + background:var(--panel); color:var(--ink); padding:7px 14px; border-radius:9px; + font-size:13px; font-weight:500; transition:all .15s; +} +.nav-btn:hover{border-color:#c7d2fe; background:var(--accent-bg);} +.nav-btn.active{background:var(--accent); border-color:var(--accent); color:#fff;} +.nav-btn svg{width:16px; height:16px;} +.top-actions{margin-inline-start:auto;} +.ghost-btn{ + display:inline-flex; align-items:center; gap:6px; border:1px dashed #cbd5e1; + background:transparent; color:var(--muted); padding:6px 12px; border-radius:8px; font-size:12px; +} +.ghost-btn:hover{color:var(--red); border-color:#fca5a5; background:#fff5f5;} +.ghost-btn svg{width:14px; height:14px;} + +/* دکمه «تغییر موجودی» گوشه بالا-چپ صفحه اصلی */ +.change-link{ + display:inline-flex; align-items:center; gap:7px; text-decoration:none; + background:var(--accent); color:#fff; border:1px solid var(--accent); + border-radius:10px; padding:7px 14px; font-size:12.5px; font-weight:700; + transition:all .15s; +} +.change-link:hover{background:var(--accent-dark); border-color:var(--accent-dark); transform:translateY(-1px); box-shadow:0 3px 8px rgba(79,70,229,.25);} +.change-link svg{width:14px; height:14px;} + +/* دکمه «برگشت به داشبوردها» صفحه تغییر موجودی */ +.change-back{ + display:inline-flex; align-items:center; gap:7px; text-decoration:none; + background:#fff; color:var(--ink); border:1px solid var(--line); + border-radius:10px; padding:7px 14px; font-size:12.5px; font-weight:700; + transition:all .15s; +} +.change-back:hover{border-color:var(--accent); color:var(--accent-dark); background:var(--accent-bg);} +.change-back svg{width:14px; height:14px;} + +/* ---------- session bar ---------- */ +.sessionbar{ + background:var(--panel); border-bottom:1px solid var(--line); + padding:9px 22px; display:flex; align-items:center; gap:14px; flex-wrap:wrap; +} +.sb-field{display:flex; align-items:center; gap:7px; font-size:12px; color:var(--muted);} +.sb-field svg{width:14px; height:14px;} +.sb-field label{font-weight:600; white-space:nowrap;} +.sb-field select{ + border:1px solid var(--line); border-radius:8px; background:#fff; + padding:6px 10px; font-size:12.5px; min-width:130px; outline:none; +} +.sb-field select:focus{border-color:var(--accent); box-shadow:0 0 0 3px var(--accent-bg);} +.user-chip{ + display:inline-flex; align-items:center; gap:8px; background:var(--accent-bg); + color:var(--accent-dark); border:1px solid #c7d2fe; font-size:12px; font-weight:700; + padding:5px 14px; border-radius:999px; +} +.idp-chip{ + display:inline-flex; align-items:center; gap:6px; background:#e0f2fe; + color:#0369a1; border:1px solid #bae6fd; font-size:11px; font-weight:700; + padding:4px 12px; border-radius:999px; +} +.idp-chip svg{width:12px; height:12px;} +.user-chip svg{width:13px; height:13px;} +.readonly-chip{ + display:inline-flex; align-items:center; gap:6px; background:#fff7ed; + color:var(--orange); border:1px solid #fed7aa; font-size:12px; font-weight:600; + padding:5px 12px; border-radius:999px; +} +.readonly-chip svg{width:13px; height:13px;} +.logout-btn{ + margin-inline-start:auto; display:inline-flex; align-items:center; gap:6px; + border:1px solid var(--line); background:#fff; color:var(--red); + font-size:12px; font-weight:600; padding:6px 14px; border-radius:8px; +} +.logout-btn:hover{background:var(--red-bg); border-color:#fca5a5;} +.logout-btn svg{width:13px; height:13px;} + +/* ---------- layout ---------- */ +main{max-width:1280px; margin:0 auto; padding:20px 22px 60px;} +.card{background:var(--panel); border:1px solid var(--line); border-radius:12px; overflow:hidden;} +.card-head{ + padding:13px 18px; border-bottom:1px solid var(--line); + display:flex; align-items:center; gap:12px; flex-wrap:wrap; +} +.card-head h2{font-size:15px; font-weight:700; display:flex; align-items:center; gap:8px;} +.card-head h2 svg{width:17px; height:17px; color:var(--accent);} +.card-body{padding:16px 18px;} + +/* ---------- dashboard filters ---------- */ +.filterbar{display:flex; align-items:flex-end; gap:10px; flex-wrap:wrap; margin-bottom:14px;} +.fb-field{display:flex; flex-direction:column; gap:4px;} +.fb-field label{font-size:11.5px; font-weight:600; color:var(--muted);} +.fb-field select{ + border:1px solid var(--line); border-radius:9px; background:#fff; + padding:8px 12px; min-width:170px; outline:none; font-size:13px; +} +.fb-field select:focus{border-color:var(--accent); box-shadow:0 0 0 3px var(--accent-bg);} +.fb-field select:disabled{background:#f8fafc; color:#94a3b8; cursor:not-allowed;} +/* باکس تایپی متریال — دقیقاً هم‌شکل باکس‌های انتخاب و دکمه مرتب‌سازی */ +.fb-field input[list], #filt-mat-input{ + border:1px solid var(--line); border-radius:9px; background:#fff; + padding:8px 12px; min-width:170px; outline:none; font-size:13px; +} +.fb-field input[list]:focus, #filt-mat-input:focus{border-color:var(--accent); box-shadow:0 0 0 3px var(--accent-bg);} +.sort-btn{ + display:inline-flex; align-items:center; gap:7px; border:1px solid var(--line); + background:#fff; padding:8px 14px; border-radius:9px; font-size:12.5px; font-weight:500; + color:var(--ink); transition:all .15s; +} +.sort-btn:hover{border-color:#c7d2fe; background:var(--accent-bg);} +.sort-btn.active{background:var(--accent); color:#fff; border-color:var(--accent);} +.sort-btn svg{width:15px; height:15px;} +.clear-btn{ + border:none; background:transparent; color:var(--red); font-size:12px; font-weight:600; + padding:8px 6px; display:inline-flex; align-items:center; gap:5px; +} +.clear-btn:hover{text-decoration:underline;} +.clear-btn svg{width:13px; height:13px;} +.count-chip{ + margin-inline-start:auto; background:var(--slate-bg); color:var(--muted); + font-size:12px; font-weight:600; padding:6px 14px; border-radius:999px; +} + +/* ---------- inventory table ---------- */ +.tbl-wrap{overflow-x:auto;} +table.inv{width:100%; border-collapse:collapse; min-width:900px;} +table.inv th{ + font-size:12px; font-weight:700; color:var(--muted); text-align:right; + padding:10px 14px; background:#f8fafc; border-bottom:1px solid var(--line); white-space:nowrap; +} +table.inv td{padding:11px 14px; border-bottom:1px solid var(--line); font-size:13px; vertical-align:middle;} +table.inv tr.data-row{cursor:pointer; transition:background .12s;} +table.inv tr.data-row:hover{background:#f8faff;} +table.inv tr.data-row.expanded{background:var(--accent-bg);} +table.inv tr.data-row.expanded td{border-bottom-color:#c7d2fe;} +tr.tl-row td{background:#fbfcfe; padding:14px 18px; border-bottom:1px solid var(--line);} +.mat-cell{font-weight:700;} +.spec-chip{ + display:inline-block; background:var(--slate-bg); border:1px solid var(--line); + color:var(--ink); font-size:10.5px; padding:1px 8px; border-radius:5px; margin-inline-start:4px; font-weight:500; +} +.caret{width:18px; height:18px; color:#94a3b8; transition:transform .15s;} +tr.expanded .caret{transform:rotate(90deg); color:var(--accent);} +.qty-cell{font-weight:800; font-size:14px; white-space:nowrap;} +.unit-cell{color:var(--muted); font-size:12px;} +.date-cell{color:var(--muted); font-size:12px; white-space:nowrap;} +.wh-cell small{display:block; font-size:10.5px; color:var(--muted);} +.row-ico{width:16px; height:16px; color:#94a3b8;} +.empty-box{padding:34px; text-align:center; color:var(--muted); font-size:13px;} + +/* ---------- timeline ---------- */ +.tl-head{display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-bottom:8px;} +.tl-title{font-size:13px; font-weight:700; display:flex; align-items:center; gap:7px;} +.tl-title svg{width:15px; height:15px; color:var(--accent);} +.tl-hint{font-size:11px; color:var(--muted);} +.tl-track{ + display:flex; gap:24px; overflow-x:auto; padding:12px 4px 14px; + direction:rtl; align-items:stretch; +} +.tl-box{ + position:relative; min-width:118px; max-width:118px; flex:0 0 auto; + background:#fff; border:2px solid var(--line); border-radius:0; + padding:8px 10px 9px; cursor:pointer; transition:all .12s; text-align:center; +} +.tl-box::before{ + content:""; position:absolute; top:-2px; right:-2px; left:-2px; height:3px; + background:var(--boxc,#94a3b8); +} +.tl-box::after{ + content:"←"; position:absolute; left:-23px; top:50%; transform:translateY(-50%); + color:#94a3b8; font-size:13px; font-weight:700; width:16px; text-align:center; +} +.tl-box:last-child::after{content:none;} +.tl-box:hover{transform:translateY(-3px); box-shadow:0 6px 14px rgba(15,23,42,.12);} +.tl-box.sel{border-color:var(--boxc,#94a3b8); box-shadow:0 0 0 3px rgba(79,70,229,.18);} +.tl-ico{width:20px; height:20px; margin:0 auto 4px; color:var(--boxc,#64748b);} +.tl-type{font-size:11px; font-weight:700; color:var(--ink); white-space:nowrap;} +.tl-qty{font-size:13px; font-weight:800; margin-top:1px; white-space:nowrap; direction:ltr; color:var(--boxc,#0f172a);} +.tl-bal{font-size:11px; font-weight:700; margin-top:3px; white-space:nowrap; color:var(--ink);} +.tl-bal b{color:var(--accent-dark,#4338ca);} +.tl-scroll-hint{font-size:10.5px; color:#94a3b8; text-align:left; margin-top:-6px;} +.brand-break{display:flex; gap:8px; flex-wrap:wrap; margin:2px 0 10px;} +.brand-btn{ + display:inline-flex; align-items:center; gap:5px; border:1px solid var(--line); + background:#fff; border-radius:9px; padding:6px 12px; font-size:12px; color:var(--ink); + cursor:pointer; transition:all .12s; +} +.brand-btn:hover{border-color:#c7d2fe; background:var(--accent-bg);} +.brand-btn b{font-weight:800; color:var(--accent-dark,#4338ca);} +.brand-btn.act{background:var(--accent); border-color:var(--accent); color:#fff;} +.brand-btn.act b{color:#fff;} +.brand-btn .b-close{font-size:10px; opacity:.85;} +.tl-sub{ + display:flex; align-items:center; gap:6px; font-size:11.5px; font-weight:700; color:var(--muted); + margin:8px 0 2px; +} +.tl-sub svg{width:13px; height:13px;} +.tl-sub b{color:var(--ink);} + +/* ---------- tx detail (جمع‌وجور — فقط اطلاعات جدید) ---------- */ +.txdetail-min{ + background:#fff; border:1px solid var(--line); border-right:3px solid var(--boxc,#64748b); + border-radius:8px; padding:9px 14px; margin-top:6px; + display:flex; align-items:center; gap:8px 22px; flex-wrap:wrap; font-size:12px; +} +.txdetail-min .d-min{display:inline-flex; align-items:baseline; gap:6px;} +.txdetail-min .d-min .k{color:var(--muted); font-size:11px;} +.txdetail-min .d-min b{font-weight:600; color:var(--ink);} +.diff-row{ + display:flex; align-items:center; gap:10px; margin-top:12px; padding-top:10px; + border-top:1px dashed var(--line); flex-wrap:wrap; +} +.diff-pill{display:inline-flex; align-items:center; gap:6px; font-size:12px; font-weight:700; padding:4px 12px; border-radius:6px;} +.diff-pill.up{background:var(--green-bg); color:var(--green);} +.diff-pill.down{background:var(--blue-bg); color:var(--blue);} +.diff-pill.same{background:var(--slate-bg); color:var(--muted);} + +/* ---------- change-inventory page (تغییر موجودی) ---------- */ +.txp-layout{display:grid; grid-template-columns:240px 1fr; gap:16px; align-items:start;} +@media (max-width:860px){.txp-layout{grid-template-columns:1fr;}} +.tx-types{ + background:#fff; border:1px solid var(--line); border-radius:14px; padding:10px; + display:flex; flex-direction:column; gap:6px; + position:sticky; top:14px; box-shadow:0 1px 2px rgba(15,23,42,.04); +} +.tx-types h3{ + font-size:11.5px; font-weight:800; color:var(--muted); padding:6px 12px 4px; + display:flex; align-items:center; gap:7px; +} +.tx-types h3 svg{width:13px; height:13px;} +.tx-type-btn{ + position:relative; display:flex; align-items:center; gap:10px; + border:1px solid var(--line); background:#fff; border-radius:10px; + padding:10px 12px; font-size:12.5px; font-weight:600; color:var(--ink); + transition:all .15s; text-align:right; width:100%; +} +.tx-type-btn svg{width:16px; height:16px; color:var(--tc,#64748b); transition:color .15s;} +.tx-type-btn .dir{ + font-size:9.5px; font-weight:800; margin-inline-start:auto; + background:var(--tc-bg,#f1f5f9); color:var(--tc,#64748b); + border-radius:999px; padding:2px 9px; letter-spacing:.3px; white-space:nowrap; +} +.tx-type-btn:hover{border-color:var(--tc,#94a3b8); background:var(--tc-bg,#f8fafc); transform:translateY(-1px);} +.tx-type-btn.active{ + background:#fff; border-color:var(--tc,#4f46e5); + box-shadow:0 0 0 1px var(--tc,#4f46e5), 0 4px 10px rgba(79,70,229,.12); +} +.tx-type-btn.active::before{ + content:""; position:absolute; inset-inline-start:-1px; top:9px; bottom:9px; width:3px; + border-radius:3px; background:var(--tc,#4f46e5); +} +.tx-type-btn.active svg{color:var(--tc,#4f46e5);} +.tx-type-btn.active .dir{background:var(--tc,#4f46e5); color:#fff;} +.tx-form-card{ + background:#fff; border:1px solid var(--line); border-radius:14px; + padding:20px 22px; box-shadow:0 1px 2px rgba(15,23,42,.04); +} +.tx-form-card h2{ + font-size:15.5px; font-weight:800; display:flex; align-items:center; gap:10px; + padding-bottom:13px; border-bottom:1px solid var(--line); margin-bottom:6px; +} +.tx-form-card h2 svg{ + width:16px; height:16px; color:var(--tc,#4f46e5); + background:var(--tc-bg,#eef2ff); padding:6px; border-radius:9px; + box-sizing:content-box; +} +.tx-desc{font-size:12px; color:var(--muted); margin-bottom:18px; line-height:1.9;} +.f-grid{display:grid; grid-template-columns:1fr 1fr; gap:14px 22px;} +@media (max-width:760px){.f-grid{grid-template-columns:1fr;}} +.f-grid .f-row{margin-bottom:0;} +.f-row{margin-bottom:14px;} +.f-row label{ + display:flex; align-items:center; gap:5px; flex-wrap:wrap; + font-size:12px; font-weight:700; color:var(--ink); margin-bottom:6px; +} +.f-row label .req{color:var(--red);} +.f-row label .lbl-hint{font-size:10.5px; color:var(--muted); font-weight:500;} +.f-row select,.f-row input[type=text],.f-row input[type=number],.f-row input[type=datetime-local],.f-row textarea{ + width:100%; border:1px solid var(--line); border-radius:10px; padding:9px 13px; + outline:none; background:#fff; font-size:13px; color:var(--ink); + transition:border-color .15s, box-shadow .15s; +} +.f-row select:focus,.f-row input:focus,.f-row textarea:focus{ + border-color:var(--accent); box-shadow:0 0 0 3px var(--accent-bg); +} +.f-row textarea{min-height:72px; resize:vertical; line-height:1.8;} +.f-row input.ltr{direction:ltr; text-align:left;} +.f-help{font-size:11px; color:var(--muted); margin-top:4px; line-height:1.7;} +.f-help.warn{color:var(--red); font-weight:600;} +.f-help.ok{color:var(--green); font-weight:600;} +.fromto{display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-bottom:2px;} +.fromto .box{ + border:1px solid var(--line); border-radius:12px; padding:12px 14px; background:#fbfcfe; + transition:border-color .15s, box-shadow .15s; +} +.fromto .box:focus-within{border-color:var(--accent); box-shadow:0 0 0 3px var(--accent-bg);} +.fromto .box .lbl{font-size:11px; font-weight:800; color:var(--tc,#4f46e5); margin-bottom:7px; display:flex; align-items:center; gap:6px;} +.fromto .box .lbl svg{width:13px; height:13px;} +.fromto .box select{ + width:100%; border:1px solid var(--line); border-radius:9px; padding:8px 11px; + font-size:13px; outline:none; background:#fff; transition:border-color .15s; +} +.fromto .box select:focus{border-color:var(--accent); box-shadow:0 0 0 3px var(--accent-bg);} +.spec-box{ + border:1px solid var(--line); border-radius:12px; background:#fbfcfe; + padding:13px 13px 11px; margin-top:2px; +} +.spec-rows{margin-bottom:10px;} +.spec-row{display:flex; gap:8px; margin-bottom:8px; align-items:center;} +.spec-row input{ + border:1px solid var(--line); border-radius:9px; padding:8px 12px; font-size:13px; + outline:none; background:#fff; transition:border-color .15s, box-shadow .15s; +} +.spec-row input:focus{border-color:var(--accent); box-shadow:0 0 0 3px var(--accent-bg);} +.spec-row input.k{flex:0 0 30%;} +.spec-row input.v{flex:1;} +.spec-del{ + flex:none; width:32px; height:32px; border-radius:9px; border:1px solid var(--line); + background:#fff; color:var(--red); display:flex; align-items:center; justify-content:center; + transition:all .15s; +} +.spec-del:hover{background:var(--red-bg); border-color:#fca5a5;} +.spec-del svg{width:13px; height:13px;} +.add-spec{ + display:inline-flex; align-items:center; gap:6px; border:1.5px dashed var(--accent); + color:var(--accent-dark); background:var(--accent-bg); font-size:12px; font-weight:700; + padding:7px 14px; border-radius:9px; transition:all .15s; +} +.add-spec:hover{background:#e0e7ff; border-style:solid;} +.add-spec svg{width:13px; height:13px;} +.pcat-wrap{margin-top:14px;} +.pcat-wrap .f-row{margin-bottom:0;} + +/* ---------- records table (list ops) ---------- */ +.rows-tbl{ + width:100%; border-collapse:separate; border-spacing:0; + border:1px solid var(--line); border-radius:12px; overflow:hidden; +} +.rows-tbl th{ + font-size:11.5px; font-weight:800; color:var(--muted); text-align:right; + padding:10px 12px; background:#f8fafc; border-bottom:1px solid var(--line); white-space:nowrap; +} +.rows-tbl td{padding:10px 12px; border-bottom:1px solid var(--line); font-size:12.5px; vertical-align:middle;} +.rows-tbl tbody tr:last-child td{border-bottom:none;} +.rows-tbl tbody tr:hover{background:#f8faff;} +.rows-tbl td .cur{font-weight:800;} +.rows-tbl input.qty{ + width:92px; border:1px solid var(--line); border-radius:8px; padding:6px 10px; + font-size:12.5px; direction:ltr; text-align:center; outline:none; background:#fff; + transition:border-color .15s, box-shadow .15s; +} +.rows-tbl input.qty:focus{border-color:var(--accent); box-shadow:0 0 0 3px var(--accent-bg);} +.rows-tbl input.note{ + width:100%; min-width:130px; border:1px solid var(--line); border-radius:8px; + padding:6px 10px; font-size:12px; outline:none; background:#fff; + transition:border-color .15s, box-shadow .15s; +} +.rows-tbl input.note:focus{border-color:var(--accent); box-shadow:0 0 0 3px var(--accent-bg);} +.diff-live{font-size:11.5px; font-weight:800; white-space:nowrap;} +.diff-live.up{color:var(--green);} +.diff-live.down{color:var(--blue);} +.diff-live.same{color:var(--muted);} +.rows-empty{padding:30px 20px; text-align:center; color:var(--muted); font-size:12.5px; line-height:1.9;} +.hint-box{ + background:#f8fafc; border:1px solid var(--line); border-radius:10px; + padding:10px 13px; font-size:12px; color:var(--muted); margin-bottom:14px; + display:flex; align-items:flex-start; gap:8px; line-height:1.8; +} +.hint-box b{color:var(--ink);} +.hint-box.alert{background:#fff5f5; border-color:#fecaca; color:var(--red);} +.hint-box.alert b{color:var(--red);} +.hint-box svg{width:14px; height:14px; flex:none; margin-top:4px;} +.submit-bar{ + margin-top:18px; display:flex; align-items:center; gap:12px; flex-wrap:wrap; + background:#f8fafc; border:1px solid var(--line); border-radius:12px; padding:12px 16px; +} +.submit-bar .actor{font-size:12px; color:var(--muted); display:flex; align-items:center; gap:7px;} +.submit-bar .actor svg{width:14px; height:14px;} +.submit-bar .actor b{color:var(--ink); font-weight:700;} +.submit-btn{ + margin-inline-start:auto; background:var(--tc,#4f46e5); color:#fff; border:none; font-size:13.5px; + font-weight:700; padding:11px 28px; border-radius:10px; display:flex; align-items:center; gap:8px; + box-shadow:0 2px 8px rgba(79,70,229,.25); + transition:opacity .15s, transform .15s, box-shadow .15s; +} +.submit-btn:hover{opacity:.92; transform:translateY(-1px);} +.submit-btn:disabled{background:#cbd5e1; cursor:not-allowed; box-shadow:none; transform:none;} +.submit-btn svg{width:16px; height:16px;} +.readonly-block{ + max-width:520px; margin:60px auto; background:#fff; border:1px solid var(--line); + border-radius:14px; padding:34px; text-align:center; +} +.readonly-block .big-ico{ + width:52px; height:52px; margin:0 auto 14px; color:#f59e0b; background:#fffbeb; + border:1px solid #fde68a; border-radius:14px; display:flex; align-items:center; justify-content:center; +} +.readonly-block .big-ico svg{width:26px; height:26px;} +.readonly-block h3{font-size:16px; font-weight:800; margin-bottom:6px;} +.readonly-block p{font-size:13px; color:var(--muted);} + +/* ---------- calendar (کنترل روزانه) ---------- */ +.cal-layout{display:grid; grid-template-columns:390px 1fr; gap:16px; align-items:start;} +@media (max-width:960px){.cal-layout{grid-template-columns:1fr;}} +.cal-card{background:#fff; border:1px solid var(--line); border-radius:12px; padding:16px;} +.cal-head{display:flex; align-items:center; justify-content:space-between; margin-bottom:12px;} +.cal-head .month{font-size:14.5px; font-weight:800; display:flex; align-items:center; gap:8px;} +.cal-head .month svg{width:16px; height:16px; color:var(--accent);} +.cal-nav{display:flex; gap:6px; direction:ltr;} +.cal-nav button{ + width:30px; height:30px; border-radius:8px; border:1px solid var(--line); background:#fff; + color:var(--ink); display:flex; align-items:center; justify-content:center; font-size:15px; font-weight:700; +} +.cal-nav button:hover{border-color:#c7d2fe; background:var(--accent-bg);} +.cal-grid{display:grid; grid-template-columns:repeat(7,1fr); gap:4px;} +.cal-dow{font-size:11px; font-weight:700; color:var(--muted); text-align:center; padding:4px 0;} +.day-cell{ + position:relative; aspect-ratio:1/1.15; border:1px solid var(--line); border-radius:8px; + background:#fff; font-size:12.5px; font-weight:600; color:var(--ink); + display:flex; flex-direction:column; align-items:center; justify-content:center; gap:2px; + transition:all .12s; min-height:52px; +} +.day-cell:hover{border-color:#c7d2fe; background:var(--accent-bg);} +.day-cell.out{color:#cbd5e1; background:#fafbfd;} +.day-cell.today{border-color:var(--accent); box-shadow:0 0 0 2px var(--accent-bg);} +.day-cell.sel{background:var(--accent); border-color:var(--accent); color:#fff;} +.day-cell.sel .d-dot{background:#fff; color:var(--accent);} +.d-dot{ + min-width:17px; height:17px; padding:0 4px; border-radius:999px; background:var(--green); + color:#fff; font-size:9.5px; font-weight:800; display:flex; align-items:center; justify-content:center; +} +.day-cell.out .d-dot{opacity:.4;} +.day-panel{background:#fff; border:1px solid var(--line); border-radius:12px; overflow:hidden;} +.day-panel .dp-head{ + padding:13px 18px; border-bottom:1px solid var(--line); + display:flex; align-items:center; gap:12px; flex-wrap:wrap; +} +.day-panel .dp-head h2{font-size:14.5px; font-weight:800; display:flex; align-items:center; gap:8px;} +.day-panel .dp-head h2 svg{width:16px; height:16px; color:var(--accent);} +.dp-chips{display:flex; gap:8px; margin-inline-start:auto; flex-wrap:wrap;} +.dp-chip{font-size:11px; font-weight:700; padding:4px 12px; border-radius:999px;} +.dp-chip.in{background:var(--green-bg); color:var(--green);} +.dp-chip.out{background:var(--blue-bg); color:var(--blue);} +.dp-list{max-height:560px; overflow-y:auto;} +.dp-item{border-bottom:1px solid var(--line); font-size:12.5px;} +.dp-item.act{background:#f8faff;} +.dp-hit{ + display:flex; align-items:center; gap:12px; padding:11px 18px; width:100%; + background:none; border:none; text-align:right; color:inherit; font:inherit; cursor:pointer; +} +.dp-hit:hover{background:#f8faff;} +.dp-item .badge{ + flex:none; width:34px; height:34px; border-radius:9px; display:flex; align-items:center; justify-content:center; +} +.dp-item .badge svg{width:16px; height:16px;} +.dp-item .main{flex:1; min-width:0;} +.dp-item .main .t{font-weight:700;} +.dp-item .main .s{font-size:11px; color:var(--muted); margin-top:1px;} +.dp-item .qty{font-weight:800; white-space:nowrap;} +.dp-item .qty.in{color:var(--green);} +.dp-item .qty.out{color:var(--blue);} +.dp-item .time{color:var(--muted); font-size:11px; white-space:nowrap;} +.dp-actions{display:flex; gap:8px; padding:0 18px 12px;} +.dp-actions button{ + flex:1; display:inline-flex; align-items:center; justify-content:center; gap:6px; + border:1px solid var(--line); border-radius:8px; padding:8px 10px; font-size:12px; font-weight:700; + background:#fff; cursor:pointer; +} +.dp-actions button:hover{opacity:.85;} +.dp-actions button svg{width:13px; height:13px;} +.dp-actions .act-ret{color:var(--green); border-color:#bbf7d0; background:var(--green-bg);} +.dp-actions .act-out{color:var(--blue); border-color:#bfdbfe; background:var(--blue-bg);} +.dp-actions-noact{padding:0 18px 12px; font-size:11px; color:var(--muted);} +.dp-hint{padding:9px 18px; font-size:11.5px; color:var(--muted); background:#fbfcfe; border-bottom:1px solid var(--line);} + +/* ---------- warehouses ---------- */ +.wh-add{margin-bottom:14px;} +.wh-add h3{font-size:13.5px; font-weight:700; display:flex; align-items:center; gap:7px; margin-bottom:10px;} +.wh-add h3 svg{width:15px; height:15px; color:var(--accent);} +.wh-add-row{display:flex; gap:10px; flex-wrap:wrap; align-items:center;} +.wh-add-row input,.wh-add-row select{ + border:1px solid var(--line); border-radius:9px; background:#fff; padding:8px 12px; + outline:none; font-size:13px; min-width:180px; +} +.wh-add-row input:focus,.wh-add-row select:focus{border-color:var(--accent); box-shadow:0 0 0 3px var(--accent-bg);} + +/* ---------- org view (سازمان‌دهی) ---------- */ +.org-grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(360px,1fr)); gap:16px;} +@media (max-width:900px){.org-grid{grid-template-columns:1fr;}} +.org-card{ + background:#fff; border:1px solid var(--line); border-radius:14px; overflow:hidden; + box-shadow:0 1px 2px rgba(15,23,42,.04); +} +.org-head{ + display:flex; align-items:center; gap:9px; padding:14px 16px; + background:linear-gradient(180deg,#f8faff,#fff); border-bottom:1px solid var(--line); +} +.org-head svg{width:17px; height:17px; color:var(--accent);} +.org-head h3{font-size:14px; font-weight:800; flex:1;} +.org-badge{ + font-size:10.5px; font-weight:700; color:var(--accent-dark); + background:var(--accent-bg); border:1px solid #e0e7ff; + border-radius:999px; padding:3px 10px; white-space:nowrap; +} +.org-sec{padding:13px 16px 15px; border-bottom:1px solid var(--line);} +.org-sec:last-child{border-bottom:none;} +.org-sec h4{ + font-size:11.5px; font-weight:800; color:var(--muted); margin-bottom:9px; + display:flex; align-items:center; gap:6px; +} +.org-sec h4 svg{width:13px; height:13px;} +.org-chip{ + display:flex; align-items:center; gap:8px; border:1px solid var(--line); + border-radius:10px; padding:7px 11px; margin-bottom:7px; background:#fbfcfe; +} +.org-chip svg{width:14px; height:14px; color:var(--green);} +.org-chip .nm{font-weight:700; font-size:12.5px;} +.org-chip .pw{font-size:10.5px; color:var(--muted); background:#fff; border:1px solid var(--line); + border-radius:6px; padding:1px 7px;} +.org-chip.org-edit{flex-wrap:wrap; background:#fff;} +.org-chip.org-edit input{ + flex:1; min-width:110px; border:1px solid var(--line); border-radius:8px; + padding:6px 10px; font-size:12px; outline:none; background:#fff; +} +.org-chip.org-edit input:focus{border-color:var(--accent); box-shadow:0 0 0 3px var(--accent-bg);} +.org-chip.org-edit select{ + border:1px solid var(--line); border-radius:8px; padding:5px 8px; font-size:11.5px; + outline:none; background:#fff; +} +.org-chip.org-edit select:focus{border-color:var(--accent); box-shadow:0 0 0 3px var(--accent-bg);} +.org-del{ + margin-inline-start:auto; width:26px; height:26px; border-radius:8px; border:1px solid var(--line); + background:#fff; color:var(--red); display:flex; align-items:center; justify-content:center; + transition:all .15s; +} +.org-del:hover{background:var(--red-bg); border-color:#fca5a5;} +.org-del svg{width:12px; height:12px;} +.org-wh{ + display:flex; align-items:center; gap:10px; border:1px solid var(--line); + border-radius:10px; padding:8px 11px; margin-bottom:7px; background:#fbfcfe; +} +.org-wh .info{flex:1; min-width:0;} +.org-wh .info b{font-size:12.5px; display:block;} +.org-wh .info small{font-size:10.5px; color:var(--muted); display:block; overflow:hidden; + text-overflow:ellipsis; white-space:nowrap;} +.org-wh select{ + border:1px solid var(--line); border-radius:8px; padding:5px 8px; font-size:11.5px; + outline:none; background:#fff; max-width:170px; +} +.org-wh select:focus{border-color:var(--accent); box-shadow:0 0 0 3px var(--accent-bg);} +.org-none{font-size:11.5px; color:var(--muted); background:var(--slate-bg); border-radius:8px; + padding:8px 12px; margin-bottom:7px;} +.org-add{display:flex; gap:8px; flex-wrap:wrap;} +.org-add input{ + flex:1; min-width:120px; border:1px solid var(--line); border-radius:9px; + padding:7px 11px; font-size:12.5px; outline:none; background:#fff; +} +.org-add input:focus{border-color:var(--accent); box-shadow:0 0 0 3px var(--accent-bg);} +.wh-grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(280px,1fr)); gap:14px;} +.wh-card{background:#fff; border:1px solid var(--line); border-radius:12px; padding:16px;} +.wh-card h3{font-size:14px; font-weight:700; display:flex; align-items:center; gap:8px; margin-bottom:4px;} +.wh-card h3 svg{width:16px; height:16px; color:var(--accent);} +.wh-card .desc{font-size:12px; color:var(--muted); min-height:20px;} +.wh-meta{display:flex; gap:14px; flex-wrap:wrap; margin-top:10px; font-size:11.5px; color:var(--muted);} +.wh-meta b{color:var(--ink);} +.wh-actions{display:flex; gap:8px; margin-top:12px; padding-top:12px; border-top:1px solid var(--line);} +.wh-actions button{ + display:inline-flex; align-items:center; gap:5px; font-size:12px; font-weight:600; + border:1px solid var(--line); background:#fff; border-radius:8px; padding:5px 12px; color:var(--ink); +} +.wh-actions button:hover{border-color:#c7d2fe; background:var(--accent-bg);} +.wh-actions button svg{width:13px; height:13px;} +.wh-edit{border-top:1px dashed var(--line); margin-top:12px; padding-top:12px;} +.wh-edit input{ + width:100%; border:1px solid var(--line); border-radius:9px; padding:7px 12px; font-size:12.5px; + margin-bottom:8px; outline:none; +} +.wh-edit input:focus{border-color:var(--accent); box-shadow:0 0 0 3px var(--accent-bg);} +.mini-btn{ + border:1px solid var(--accent); background:var(--accent); color:#fff; font-size:12px; font-weight:600; + padding:7px 14px; border-radius:8px; white-space:nowrap; + display:inline-flex; align-items:center; gap:6px; +} +.mini-btn:hover{background:var(--accent-dark);} +.mini-btn svg{width:13px; height:13px;} + +/* ---------- toast ---------- */ +#toasts{position:fixed; top:14px; left:50%; transform:translateX(-50%); z-index:999; display:flex; flex-direction:column; gap:8px; width:min(92vw,430px);} +.toast{ + background:#0f172a; color:#fff; font-size:12.5px; font-weight:500; border-radius:10px; + padding:11px 16px; display:flex; align-items:center; gap:9px; + box-shadow:0 10px 26px rgba(15,23,42,.28); animation:tin .25s ease; +} +.toast svg{width:15px; height:15px; flex:none;} +.toast.ok svg{color:#4ade80;} +.toast.err{background:#7f1d1d;} +.toast.err svg{color:#fca5a5;} +.toast.info svg{color:#93c5fd;} +.toast.hide{opacity:0; transition:opacity .3s;} +@keyframes tin{from{opacity:0; transform:translateY(-8px);} to{opacity:1; transform:translateY(0);}} +.footer-note{margin-top:22px; text-align:center; font-size:11px; color:#94a3b8;} +/* nav buttons as links */ +a.nav-btn{display:inline-flex; text-decoration:none;} diff --git a/legacy/dash-prototype/swagger.json b/legacy/dash-prototype/swagger.json new file mode 100644 index 0000000..c130700 --- /dev/null +++ b/legacy/dash-prototype/swagger.json @@ -0,0 +1,10555 @@ +{ + "swagger": "2.0", + "info": { + "title": "Casdoor RESTful API", + "description": "Swagger Docs of Casdoor Backend API", + "version": "1.503.0", + "contact": { + "email": "casbin@googlegroups.com" + } + }, + "basePath": "/", + "schemes": [ + "https", + "http" + ], + "paths": { + "/.well-known/jwks": { + "get": { + "tags": [ + "OIDC API" + ], + "operationId": "RootController.GetJwks", + "responses": { + "200": { + "description": "", + "schema": { + "$ref": "#/definitions/jose.JSONWebKey" + } + } + } + } + }, + "/.well-known/openid-configuration": { + "get": { + "tags": [ + "OIDC API" + ], + "description": "Get Oidc Discovery", + "operationId": "RootController.GetOidcDiscovery", + "responses": { + "200": { + "description": "", + "schema": { + "$ref": "#/definitions/object.OidcDiscovery" + } + } + } + } + }, + "/.well-known/webfinger": { + "get": { + "tags": [ + "OIDC API" + ], + "operationId": "RootController.GetWebFinger", + "parameters": [ + { + "in": "query", + "name": "resource", + "description": "resource", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "", + "schema": { + "$ref": "#/definitions/object.WebFinger" + } + } + } + } + }, + "/.well-known/{application}/jwks": { + "get": { + "tags": [ + "OIDC API" + ], + "operationId": "RootController.GetJwksByApplication", + "parameters": [ + { + "in": "path", + "name": "application", + "description": "application name", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "", + "schema": { + "$ref": "#/definitions/jose.JSONWebKey" + } + } + } + } + }, + "/.well-known/{application}/openid-configuration": { + "get": { + "tags": [ + "OIDC API" + ], + "description": "Get Oidc Discovery for specific application", + "operationId": "RootController.GetOidcDiscoveryByApplication", + "parameters": [ + { + "in": "path", + "name": "application", + "description": "application name", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "", + "schema": { + "$ref": "#/definitions/object.OidcDiscovery" + } + } + } + } + }, + "/.well-known/{application}/webfinger": { + "get": { + "tags": [ + "OIDC API" + ], + "operationId": "RootController.GetWebFingerByApplication", + "parameters": [ + { + "in": "path", + "name": "application", + "description": "application name", + "required": true, + "type": "string" + }, + { + "in": "query", + "name": "resource", + "description": "resource", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "", + "schema": { + "$ref": "#/definitions/object.WebFinger" + } + } + } + } + }, + "/api/Callback": { + "post": { + "tags": [ + "Callback API" + ], + "description": "Get Login Error Counts", + "operationId": "ApiController.Callback", + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/object.Userinfo" + } + } + } + } + }, + "/api/add-adapter": { + "post": { + "tags": [ + "Adapter API" + ], + "description": "add adapter", + "operationId": "ApiController.AddAdapter", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "The details of the adapter", + "required": true, + "schema": { + "$ref": "#/definitions/object.Adapter" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/add-application": { + "post": { + "tags": [ + "Application API" + ], + "description": "add an application", + "operationId": "ApiController.AddApplication", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "The details of the application", + "required": true, + "schema": { + "$ref": "#/definitions/object.Application" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/add-cert": { + "post": { + "tags": [ + "Cert API" + ], + "description": "add cert", + "operationId": "ApiController.AddCert", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "The details of the cert", + "required": true, + "schema": { + "$ref": "#/definitions/object.Cert" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/add-enforcer": { + "post": { + "tags": [ + "Enforcer API" + ], + "description": "add enforcer", + "operationId": "ApiController.AddEnforcer", + "parameters": [ + { + "in": "body", + "name": "enforcer", + "description": "The enforcer object", + "required": true, + "schema": { + "$ref": "#/definitions/object" + } + } + ], + "responses": { + "200": { + "description": "", + "schema": { + "$ref": "#/definitions/object.Enforcer" + } + } + } + } + }, + "/api/add-form": { + "post": { + "tags": [ + "Form API" + ], + "description": "add form", + "operationId": "ApiController.AddForm", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "The details of the form", + "required": true, + "schema": { + "$ref": "#/definitions/object.Form" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/add-group": { + "post": { + "tags": [ + "Group API" + ], + "description": "add group", + "operationId": "ApiController.AddGroup", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "The details of the group", + "required": true, + "schema": { + "$ref": "#/definitions/object.Group" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/add-invitation": { + "post": { + "tags": [ + "Invitation API" + ], + "description": "add invitation", + "operationId": "ApiController.AddInvitation", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "The details of the invitation", + "required": true, + "schema": { + "$ref": "#/definitions/object.Invitation" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/add-ldap": { + "post": { + "tags": [ + "Account API" + ], + "description": "add ldap", + "operationId": "ApiController.AddLdap", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "The details of the ldap", + "required": true, + "schema": { + "$ref": "#/definitions/object.Ldap" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/add-model": { + "post": { + "tags": [ + "Model API" + ], + "description": "add model", + "operationId": "ApiController.AddModel", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "The details of the model", + "required": true, + "schema": { + "$ref": "#/definitions/object.Model" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/add-order": { + "post": { + "tags": [ + "Order API" + ], + "description": "add order", + "operationId": "ApiController.AddOrder", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "The details of the order", + "required": true, + "schema": { + "$ref": "#/definitions/object.Order" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/add-organization": { + "post": { + "tags": [ + "Organization API" + ], + "description": "add organization", + "operationId": "ApiController.AddOrganization", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "The details of the organization", + "required": true, + "schema": { + "$ref": "#/definitions/object.Organization" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/add-payment": { + "post": { + "tags": [ + "Payment API" + ], + "description": "add payment", + "operationId": "ApiController.AddPayment", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "The details of the payment", + "required": true, + "schema": { + "$ref": "#/definitions/object.Payment" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/add-permission": { + "post": { + "tags": [ + "Permission API" + ], + "description": "add permission", + "operationId": "ApiController.AddPermission", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "The details of the permission", + "required": true, + "schema": { + "$ref": "#/definitions/object.Permission" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/add-plan": { + "post": { + "tags": [ + "Plan API" + ], + "description": "add plan", + "operationId": "ApiController.AddPlan", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "The details of the plan", + "required": true, + "schema": { + "$ref": "#/definitions/object.Plan" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/add-policy": { + "post": { + "tags": [ + "Enforcer API" + ], + "description": "add policy", + "operationId": "ApiController.AddPolicy", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id ( owner/name ) of enforcer", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "body", + "description": "The policy to add", + "required": true, + "schema": { + "$ref": "#/definitions/xormadapter.CasbinRule" + } + } + ], + "responses": { + "200": { + "description": "", + "schema": { + "$ref": "#/definitions/Response" + } + } + } + } + }, + "/api/add-pricing": { + "post": { + "tags": [ + "Pricing API" + ], + "description": "add pricing", + "operationId": "ApiController.AddPricing", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "The details of the pricing", + "required": true, + "schema": { + "$ref": "#/definitions/object.Pricing" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/add-product": { + "post": { + "tags": [ + "Product API" + ], + "description": "add product", + "operationId": "ApiController.AddProduct", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "The details of the product", + "required": true, + "schema": { + "$ref": "#/definitions/object.Product" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/add-provider": { + "post": { + "tags": [ + "Provider API" + ], + "description": "add provider", + "operationId": "ApiController.AddProvider", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "The details of the provider", + "required": true, + "schema": { + "$ref": "#/definitions/object.Provider" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/add-record": { + "post": { + "tags": [ + "Record API" + ], + "description": "add a record", + "operationId": "ApiController.AddRecord", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "The details of the record", + "required": true, + "schema": { + "$ref": "#/definitions/object.Record" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/add-resource": { + "post": { + "tags": [ + "Resource API" + ], + "operationId": "ApiController.AddResource", + "parameters": [ + { + "in": "body", + "name": "resource", + "description": "Resource object", + "required": true, + "schema": { + "$ref": "#/definitions/object.Resource" + } + } + ], + "responses": { + "200": { + "description": "Success or error", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/add-role": { + "post": { + "tags": [ + "Role API" + ], + "description": "add role", + "operationId": "ApiController.AddRole", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "The details of the role", + "required": true, + "schema": { + "$ref": "#/definitions/object.Role" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/add-session": { + "post": { + "tags": [ + "Session API" + ], + "description": "Add session for one user in one application. If there are other existing sessions, join the session into the list.", + "operationId": "ApiController.AddSession", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "The session object to add", + "required": true, + "schema": { + "$ref": "#/definitions/object.Session" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/add-subscription": { + "post": { + "tags": [ + "Subscription API" + ], + "description": "add subscription", + "operationId": "ApiController.AddSubscription", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "The details of the subscription", + "required": true, + "schema": { + "$ref": "#/definitions/object.Subscription" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/add-syncer": { + "post": { + "tags": [ + "Syncer API" + ], + "description": "add syncer", + "operationId": "ApiController.AddSyncer", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "The details of the syncer", + "required": true, + "schema": { + "$ref": "#/definitions/object.Syncer" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/add-ticket": { + "post": { + "tags": [ + "Ticket API" + ], + "description": "add ticket", + "operationId": "ApiController.AddTicket", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "The details of the ticket", + "required": true, + "schema": { + "$ref": "#/definitions/object.Ticket" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/add-ticket-message": { + "post": { + "tags": [ + "Ticket API" + ], + "description": "add a message to a ticket", + "operationId": "ApiController.AddTicketMessage", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id ( owner/name ) of the ticket", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "body", + "description": "The message to add", + "required": true, + "schema": { + "$ref": "#/definitions/object.TicketMessage" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/add-token": { + "post": { + "tags": [ + "Token API" + ], + "description": "add token", + "operationId": "ApiController.AddToken", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "Details of the token", + "required": true, + "schema": { + "$ref": "#/definitions/object.Token" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/add-transaction": { + "post": { + "tags": [ + "Transaction API" + ], + "description": "add transaction", + "operationId": "ApiController.AddTransaction", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "The details of the transaction", + "required": true, + "schema": { + "$ref": "#/definitions/object.Transaction" + } + }, + { + "in": "query", + "name": "dryRun", + "description": "Dry run mode: set to 'true' or '1' to validate without committing", + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/add-user": { + "post": { + "tags": [ + "User API" + ], + "description": "add user", + "operationId": "ApiController.AddUser", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "The details of the user", + "required": true, + "schema": { + "$ref": "#/definitions/object.User" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/add-user-keys": { + "post": { + "tags": [ + "User API" + ], + "operationId": "ApiController.AddUserKeys", + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/object.Userinfo" + } + } + } + } + }, + "/api/add-webhook": { + "post": { + "tags": [ + "Webhook API" + ], + "description": "add webhook", + "operationId": "ApiController.AddWebhook", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "The details of the webhook", + "required": true, + "schema": { + "$ref": "#/definitions/object.Webhook" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/batch-enforce": { + "post": { + "tags": [ + "Enforcer API" + ], + "description": "Call Casbin BatchEnforce API", + "operationId": "ApiController.BatchEnforce", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "array of casbin requests", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "in": "query", + "name": "permissionId", + "description": "permission id", + "type": "string" + }, + { + "in": "query", + "name": "modelId", + "description": "model id", + "type": "string" + }, + { + "in": "query", + "name": "owner", + "description": "owner", + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/cancel-order": { + "post": { + "tags": [ + "Order API" + ], + "description": "cancel an order", + "operationId": "ApiController.CancelOrder", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id ( owner/name ) of the order", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/check-user-password": { + "post": { + "tags": [ + "User API" + ], + "operationId": "ApiController.CheckUserPassword", + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/object.Userinfo" + } + } + } + } + }, + "/api/buy-product": { + "post": { + "tags": [ + "Product API" + ], + "description": "buy product using the deprecated compatibility endpoint, prefer place-order plus pay-order for new integrations", + "operationId": "ApiController.BuyProduct", + "deprecated": true, + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id ( owner/name ) of the product", + "required": true, + "type": "string" + }, + { + "in": "query", + "name": "providerName", + "description": "The name of the provider", + "required": true, + "type": "string" + }, + { + "in": "query", + "name": "pricingName", + "description": "The name of the pricing (for subscription)", + "type": "string" + }, + { + "in": "query", + "name": "planName", + "description": "The name of the plan (for subscription)", + "type": "string" + }, + { + "in": "query", + "name": "userName", + "description": "The username to buy product for (admin only)", + "type": "string" + }, + { + "in": "query", + "name": "paymentEnv", + "description": "The payment environment", + "type": "string" + }, + { + "in": "query", + "name": "customPrice", + "description": "Custom price for recharge products", + "type": "number" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/delete-adapter": { + "post": { + "tags": [ + "Adapter API" + ], + "description": "delete adapter", + "operationId": "ApiController.DeleteAdapter", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "The details of the adapter", + "required": true, + "schema": { + "$ref": "#/definitions/object.Adapter" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/delete-application": { + "post": { + "tags": [ + "Application API" + ], + "description": "delete an application", + "operationId": "ApiController.DeleteApplication", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "The details of the application", + "required": true, + "schema": { + "$ref": "#/definitions/object.Application" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/delete-cert": { + "post": { + "tags": [ + "Cert API" + ], + "description": "delete cert", + "operationId": "ApiController.DeleteCert", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "The details of the cert", + "required": true, + "schema": { + "$ref": "#/definitions/object.Cert" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/delete-enforcer": { + "post": { + "tags": [ + "Enforcer API" + ], + "description": "delete enforcer", + "operationId": "ApiController.DeleteEnforcer", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "The enforcer object", + "required": true, + "schema": { + "$ref": "#/definitions/object.Enforcer" + } + } + ], + "responses": { + "200": { + "description": "", + "schema": { + "$ref": "#/definitions/object.Enforcer" + } + } + } + } + }, + "/api/delete-form": { + "post": { + "tags": [ + "Form API" + ], + "description": "delete form", + "operationId": "ApiController.DeleteForm", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "The details of the form", + "required": true, + "schema": { + "$ref": "#/definitions/object.Form" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/delete-group": { + "post": { + "tags": [ + "Group API" + ], + "description": "delete group", + "operationId": "ApiController.DeleteGroup", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "The details of the group", + "required": true, + "schema": { + "$ref": "#/definitions/object.Group" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/delete-invitation": { + "post": { + "tags": [ + "Invitation API" + ], + "description": "delete invitation", + "operationId": "ApiController.DeleteInvitation", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "The details of the invitation", + "required": true, + "schema": { + "$ref": "#/definitions/object.Invitation" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/delete-ldap": { + "post": { + "tags": [ + "Account API" + ], + "description": "delete ldap", + "operationId": "ApiController.DeleteLdap", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "The details of the ldap", + "required": true, + "schema": { + "$ref": "#/definitions/object.Ldap" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/delete-mfa/": { + "post": { + "tags": [ + "MFA API" + ], + "description": ": Delete MFA", + "operationId": "ApiController.DeleteMfa", + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/delete-model": { + "post": { + "tags": [ + "Model API" + ], + "description": "delete model", + "operationId": "ApiController.DeleteModel", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "The details of the model", + "required": true, + "schema": { + "$ref": "#/definitions/object.Model" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/delete-order": { + "post": { + "tags": [ + "Order API" + ], + "description": "delete order", + "operationId": "ApiController.DeleteOrder", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "The details of the order", + "required": true, + "schema": { + "$ref": "#/definitions/object.Order" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/delete-organization": { + "post": { + "tags": [ + "Organization API" + ], + "description": "delete organization", + "operationId": "ApiController.DeleteOrganization", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "The details of the organization", + "required": true, + "schema": { + "$ref": "#/definitions/object.Organization" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/delete-payment": { + "post": { + "tags": [ + "Payment API" + ], + "description": "delete payment", + "operationId": "ApiController.DeletePayment", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "The details of the payment", + "required": true, + "schema": { + "$ref": "#/definitions/object.Payment" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/delete-permission": { + "post": { + "tags": [ + "Permission API" + ], + "description": "delete permission", + "operationId": "ApiController.DeletePermission", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "The details of the permission", + "required": true, + "schema": { + "$ref": "#/definitions/object.Permission" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/delete-plan": { + "post": { + "tags": [ + "Plan API" + ], + "description": "delete plan", + "operationId": "ApiController.DeletePlan", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "The details of the plan", + "required": true, + "schema": { + "$ref": "#/definitions/object.Plan" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/delete-pricing": { + "post": { + "tags": [ + "Pricing API" + ], + "description": "delete pricing", + "operationId": "ApiController.DeletePricing", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "The details of the pricing", + "required": true, + "schema": { + "$ref": "#/definitions/object.Pricing" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/delete-product": { + "post": { + "tags": [ + "Product API" + ], + "description": "delete product", + "operationId": "ApiController.DeleteProduct", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "The details of the product", + "required": true, + "schema": { + "$ref": "#/definitions/object.Product" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/delete-provider": { + "post": { + "tags": [ + "Provider API" + ], + "description": "delete provider", + "operationId": "ApiController.DeleteProvider", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "The details of the provider", + "required": true, + "schema": { + "$ref": "#/definitions/object.Provider" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/delete-resource": { + "post": { + "tags": [ + "Resource API" + ], + "operationId": "ApiController.DeleteResource", + "parameters": [ + { + "in": "body", + "name": "resource", + "description": "Resource object", + "required": true, + "schema": { + "$ref": "#/definitions/object.Resource" + } + } + ], + "responses": { + "200": { + "description": "Success or error", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/delete-role": { + "post": { + "tags": [ + "Role API" + ], + "description": "delete role", + "operationId": "ApiController.DeleteRole", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "The details of the role", + "required": true, + "schema": { + "$ref": "#/definitions/object.Role" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/delete-session": { + "post": { + "tags": [ + "Session API" + ], + "description": "Delete session for one user in one application.", + "operationId": "ApiController.DeleteSession", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "The session object to delete", + "required": true, + "schema": { + "$ref": "#/definitions/object.Session" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/delete-subscription": { + "post": { + "tags": [ + "Subscription API" + ], + "description": "delete subscription", + "operationId": "ApiController.DeleteSubscription", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "The details of the subscription", + "required": true, + "schema": { + "$ref": "#/definitions/object.Subscription" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/delete-syncer": { + "post": { + "tags": [ + "Syncer API" + ], + "description": "delete syncer", + "operationId": "ApiController.DeleteSyncer", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "The details of the syncer", + "required": true, + "schema": { + "$ref": "#/definitions/object.Syncer" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/delete-ticket": { + "post": { + "tags": [ + "Ticket API" + ], + "description": "delete ticket", + "operationId": "ApiController.DeleteTicket", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "The details of the ticket", + "required": true, + "schema": { + "$ref": "#/definitions/object.Ticket" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/delete-token": { + "post": { + "tags": [ + "Token API" + ], + "description": "delete token", + "operationId": "ApiController.DeleteToken", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "Details of the token", + "required": true, + "schema": { + "$ref": "#/definitions/object.Token" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/delete-transaction": { + "post": { + "tags": [ + "Transaction API" + ], + "description": "delete transaction", + "operationId": "ApiController.DeleteTransaction", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "The details of the transaction", + "required": true, + "schema": { + "$ref": "#/definitions/object.Transaction" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/delete-user": { + "post": { + "tags": [ + "User API" + ], + "description": "delete user", + "operationId": "ApiController.DeleteUser", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "The details of the user", + "required": true, + "schema": { + "$ref": "#/definitions/object.User" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/delete-webhook": { + "post": { + "tags": [ + "Webhook API" + ], + "description": "delete webhook", + "operationId": "ApiController.DeleteWebhook", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "The details of the webhook", + "required": true, + "schema": { + "$ref": "#/definitions/object.Webhook" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/device-auth": { + "post": { + "tags": [ + "Device Authorization Endpoint" + ], + "description": "Endpoint for the device authorization flow", + "operationId": "ApiController.DeviceAuth", + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/object.DeviceAuthResponse" + } + } + } + } + }, + "/api/enforce": { + "post": { + "tags": [ + "Enforcer API" + ], + "description": "Call Casbin Enforce API", + "operationId": "ApiController.Enforce", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "Casbin request", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "in": "query", + "name": "permissionId", + "description": "permission id", + "type": "string" + }, + { + "in": "query", + "name": "modelId", + "description": "model id", + "type": "string" + }, + { + "in": "query", + "name": "resourceId", + "description": "resource id", + "type": "string" + }, + { + "in": "query", + "name": "owner", + "description": "owner", + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/exit-impersonation-user": { + "post": { + "tags": [ + "User API" + ], + "description": "clear impersonation info for current session", + "operationId": "ApiController.ExitImpersonateUser", + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/faceid-signin-begin": { + "get": { + "tags": [ + "Login API" + ], + "description": "FaceId Login Flow 1st stage", + "operationId": "ApiController.FaceIDSigninBegin", + "parameters": [ + { + "in": "query", + "name": "owner", + "description": "owner", + "required": true, + "type": "string" + }, + { + "in": "query", + "name": "name", + "description": "name", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/get-account": { + "get": { + "tags": [ + "Account API" + ], + "description": "get the details of the current account", + "operationId": "ApiController.GetAccount", + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/get-adapter": { + "get": { + "tags": [ + "Adapter API" + ], + "description": "get adapter", + "operationId": "ApiController.GetAdapter", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id ( owner/name ) of the adapter", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/object.Adapter" + } + } + } + } + }, + "/api/get-adapters": { + "get": { + "tags": [ + "Adapter API" + ], + "description": "get adapters", + "operationId": "ApiController.GetAdapters", + "parameters": [ + { + "in": "query", + "name": "owner", + "description": "The owner of adapters", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/object.Adapter" + } + } + } + } + } + }, + "/api/get-all-actions": { + "get": { + "tags": [ + "Enforcer API" + ], + "description": "Get all actions for a user (Casbin API)", + "operationId": "ApiController.GetAllActions", + "parameters": [ + { + "in": "query", + "name": "userId", + "description": "user id like built-in/admin", + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/get-all-objects": { + "get": { + "tags": [ + "Enforcer API" + ], + "description": "Get all objects for a user (Casbin API)", + "operationId": "ApiController.GetAllObjects", + "parameters": [ + { + "in": "query", + "name": "userId", + "description": "user id like built-in/admin", + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/get-all-roles": { + "get": { + "tags": [ + "Enforcer API" + ], + "description": "Get all roles for a user (Casbin API)", + "operationId": "ApiController.GetAllRoles", + "parameters": [ + { + "in": "query", + "name": "userId", + "description": "user id like built-in/admin", + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/get-app-login": { + "get": { + "tags": [ + "Login API" + ], + "description": "get application login", + "operationId": "ApiController.GetApplicationLogin", + "parameters": [ + { + "in": "query", + "name": "clientId", + "description": "client id", + "required": true, + "type": "string" + }, + { + "in": "query", + "name": "responseType", + "description": "response type", + "required": true, + "type": "string" + }, + { + "in": "query", + "name": "redirectUri", + "description": "redirect uri", + "required": true, + "type": "string" + }, + { + "in": "query", + "name": "scope", + "description": "scope", + "required": true, + "type": "string" + }, + { + "in": "query", + "name": "state", + "description": "state", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/get-application": { + "get": { + "tags": [ + "Application API" + ], + "description": "get the detail of an application", + "operationId": "ApiController.GetApplication", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id ( owner/name ) of the application.", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/object.Application" + } + } + } + } + }, + "/api/get-applications": { + "get": { + "tags": [ + "Application API" + ], + "description": "get all applications", + "operationId": "ApiController.GetApplications", + "parameters": [ + { + "in": "query", + "name": "owner", + "description": "The owner of applications.", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/object.Application" + } + } + } + } + } + }, + "/api/get-captcha": { + "get": { + "tags": [ + "Login API" + ], + "operationId": "ApiController.GetCaptcha", + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/object.Userinfo" + } + } + } + } + }, + "/api/get-captcha-status": { + "get": { + "tags": [ + "Token API" + ], + "description": "Get Login Error Counts", + "operationId": "ApiController.GetCaptchaStatus", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id ( owner/name ) of user", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/get-cert": { + "get": { + "tags": [ + "Cert API" + ], + "description": "get cert", + "operationId": "ApiController.GetCert", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id ( owner/name ) of the cert", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/object.Cert" + } + } + } + } + }, + "/api/get-certs": { + "get": { + "tags": [ + "Cert API" + ], + "description": "get certs", + "operationId": "ApiController.GetCerts", + "parameters": [ + { + "in": "query", + "name": "owner", + "description": "The owner of certs", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/object.Cert" + } + } + } + } + } + }, + "/api/get-dashboard": { + "get": { + "tags": [ + "System API" + ], + "description": "get information of dashboard", + "operationId": "ApiController.GetDashboard", + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/get-default-application": { + "get": { + "tags": [ + "Organization API" + ], + "description": "get default application", + "operationId": "ApiController.GetDefaultApplication", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "organization id", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/get-email-and-phone": { + "get": { + "tags": [ + "User API" + ], + "description": "get email and phone by username", + "operationId": "ApiController.GetEmailAndPhone", + "parameters": [ + { + "in": "formData", + "name": "username", + "description": "The username of the user", + "required": true, + "type": "string" + }, + { + "in": "formData", + "name": "organization", + "description": "The organization of the user", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/get-enforcer": { + "get": { + "tags": [ + "Enforcer API" + ], + "description": "get enforcer", + "operationId": "ApiController.GetEnforcer", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id ( owner/name ) of enforcer", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "", + "schema": { + "$ref": "#/definitions/object.Enforcer" + } + } + } + } + }, + "/api/get-enforcers": { + "get": { + "tags": [ + "Enforcer API" + ], + "description": "get enforcers", + "operationId": "ApiController.GetEnforcers", + "parameters": [ + { + "in": "query", + "name": "owner", + "description": "The owner of enforcers", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/object.Enforcer" + } + } + } + } + } + }, + "/api/get-filtered-policies": { + "post": { + "tags": [ + "Enforcer API" + ], + "description": "get filtered policies with support for multiple filters via POST body", + "operationId": "ApiController.GetFilteredPolicies", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id ( owner/name ) of enforcer", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "body", + "description": "Array of filter objects for multiple filters", + "required": true, + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/object.Filter" + } + } + } + ], + "responses": { + "200": { + "description": "", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/xormadapter.CasbinRule" + } + } + } + } + } + }, + "/api/get-form": { + "get": { + "tags": [ + "Form API" + ], + "description": "get form", + "operationId": "ApiController.GetForm", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id (owner/name) of form", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/object.Form" + } + } + } + } + }, + "/api/get-forms": { + "get": { + "tags": [ + "Form API" + ], + "description": "get forms", + "operationId": "ApiController.GetForms", + "parameters": [ + { + "in": "query", + "name": "owner", + "description": "The owner of form", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/object.Form" + } + } + } + } + } + }, + "/api/get-global-certs": { + "get": { + "tags": [ + "Cert API" + ], + "description": "get global certs", + "operationId": "ApiController.GetGlobalCerts", + "responses": { + "200": { + "description": "The Response object", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/object.Cert" + } + } + } + } + } + }, + "/api/get-global-forms": { + "get": { + "tags": [ + "Form API" + ], + "description": "get global forms", + "operationId": "ApiController.GetGlobalForms", + "responses": { + "200": { + "description": "The Response object", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/object.Form" + } + } + } + } + } + }, + "/api/get-global-providers": { + "get": { + "tags": [ + "Provider API" + ], + "description": "get Global providers", + "operationId": "ApiController.GetGlobalProviders", + "responses": { + "200": { + "description": "The Response object", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/object.Provider" + } + } + } + } + } + }, + "/api/get-global-users": { + "get": { + "tags": [ + "User API" + ], + "description": "get global users", + "operationId": "ApiController.GetGlobalUsers", + "responses": { + "200": { + "description": "The Response object", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/object.User" + } + } + } + } + } + }, + "/api/get-group": { + "get": { + "tags": [ + "Group API" + ], + "description": "get group", + "operationId": "ApiController.GetGroup", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id ( owner/name ) of the group", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/object.Group" + } + } + } + } + }, + "/api/get-groups": { + "get": { + "tags": [ + "Group API" + ], + "description": "get groups", + "operationId": "ApiController.GetGroups", + "parameters": [ + { + "in": "query", + "name": "owner", + "description": "The owner of groups", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/object.Group" + } + } + } + } + } + }, + "/api/get-invitation": { + "get": { + "tags": [ + "Invitation API" + ], + "description": "get invitation", + "operationId": "ApiController.GetInvitation", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id ( owner/name ) of the invitation", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/object.Invitation" + } + } + } + } + }, + "/api/get-invitation-info": { + "get": { + "tags": [ + "Invitation API" + ], + "description": "get invitation code information", + "operationId": "ApiController.GetInvitationCodeInfo", + "parameters": [ + { + "in": "query", + "name": "code", + "description": "Invitation code", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/object.Invitation" + } + } + } + } + }, + "/api/get-invitations": { + "get": { + "tags": [ + "Invitation API" + ], + "description": "get invitations", + "operationId": "ApiController.GetInvitations", + "parameters": [ + { + "in": "query", + "name": "owner", + "description": "The owner of invitations", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/object.Invitation" + } + } + } + } + } + }, + "/api/get-ldap": { + "get": { + "tags": [ + "Account API" + ], + "description": "get ldap", + "operationId": "ApiController.GetLdap", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "id", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/object.Ldap" + } + } + } + } + }, + "/api/get-ldap-users": { + "get": { + "tags": [ + "Account API" + ], + "description": "get ldap users", + "operationId": "ApiController.GetLdapser", + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.LdapResp" + } + } + } + } + }, + "/api/get-ldaps": { + "get": { + "tags": [ + "Account API" + ], + "description": "get ldaps", + "operationId": "ApiController.GetLdaps", + "parameters": [ + { + "in": "query", + "name": "owner", + "description": "owner", + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/object.Ldap" + } + } + } + } + } + }, + "/api/get-model": { + "get": { + "tags": [ + "Model API" + ], + "description": "get model", + "operationId": "ApiController.GetModel", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id ( owner/name ) of the model", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/object.Model" + } + } + } + } + }, + "/api/get-models": { + "get": { + "tags": [ + "Model API" + ], + "description": "get models", + "operationId": "ApiController.GetModels", + "parameters": [ + { + "in": "query", + "name": "owner", + "description": "The owner of models", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/object.Model" + } + } + } + } + } + }, + "/api/get-order": { + "get": { + "tags": [ + "Order API" + ], + "description": "get order", + "operationId": "ApiController.GetOrder", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id ( owner/name ) of the order", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/object.Order" + } + } + } + } + }, + "/api/get-orders": { + "get": { + "tags": [ + "Order API" + ], + "description": "get orders", + "operationId": "ApiController.GetOrders", + "parameters": [ + { + "in": "query", + "name": "owner", + "description": "The owner of orders", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/object.Order" + } + } + } + } + } + }, + "/api/get-organization": { + "get": { + "tags": [ + "Organization API" + ], + "description": "get organization", + "operationId": "ApiController.GetOrganization", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "organization id", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/object.Organization" + } + } + } + } + }, + "/api/get-organization-applications": { + "get": { + "tags": [ + "Application API" + ], + "description": "get the detail of the organization's application", + "operationId": "ApiController.GetOrganizationApplications", + "parameters": [ + { + "in": "query", + "name": "organization", + "description": "The organization name", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/object.Application" + } + } + } + } + } + }, + "/api/get-organization-names": { + "get": { + "tags": [ + "Organization API" + ], + "description": "get all organization name and displayName", + "operationId": "ApiController.GetOrganizationNames", + "parameters": [ + { + "in": "query", + "name": "owner", + "description": "owner", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/object.Organization" + } + } + } + } + } + }, + "/api/get-organizations": { + "get": { + "tags": [ + "Organization API" + ], + "description": "get organizations", + "operationId": "ApiController.GetOrganizations", + "parameters": [ + { + "in": "query", + "name": "owner", + "description": "owner", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/object.Organization" + } + } + } + } + } + }, + "/api/get-payment": { + "get": { + "tags": [ + "Verification API" + ], + "description": "get payment", + "operationId": "ApiController.GetVerification", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id ( owner/name ) of the payment", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/object.Verification" + } + } + } + } + }, + "/api/get-payments": { + "get": { + "tags": [ + "Verification API" + ], + "description": "get payments", + "operationId": "ApiController.GetVerifications", + "parameters": [ + { + "in": "query", + "name": "owner", + "description": "The owner of payments", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/object.Verification" + } + } + } + } + } + }, + "/api/get-permission": { + "get": { + "tags": [ + "Permission API" + ], + "description": "get permission", + "operationId": "ApiController.GetPermission", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id ( owner/name ) of the permission", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/object.Permission" + } + } + } + } + }, + "/api/get-permissions": { + "get": { + "tags": [ + "Permission API" + ], + "description": "get permissions", + "operationId": "ApiController.GetPermissions", + "parameters": [ + { + "in": "query", + "name": "owner", + "description": "The owner of permissions", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/object.Permission" + } + } + } + } + } + }, + "/api/get-permissions-by-role": { + "get": { + "tags": [ + "Permission API" + ], + "description": "get permissions by role", + "operationId": "ApiController.GetPermissionsByRole", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id ( owner/name ) of the role", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/object.Permission" + } + } + } + } + } + }, + "/api/get-permissions-by-submitter": { + "get": { + "tags": [ + "Permission API" + ], + "description": "get permissions by submitter", + "operationId": "ApiController.GetPermissionsBySubmitter", + "responses": { + "200": { + "description": "The Response object", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/object.Permission" + } + } + } + } + } + }, + "/api/get-plan": { + "get": { + "tags": [ + "Plan API" + ], + "description": "get plan", + "operationId": "ApiController.GetPlan", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id ( owner/name ) of the plan", + "required": true, + "type": "string" + }, + { + "in": "query", + "name": "includeOption", + "description": "Should include plan's option", + "type": "boolean" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/object.Plan" + } + } + } + } + }, + "/api/get-plans": { + "get": { + "tags": [ + "Plan API" + ], + "description": "get plans", + "operationId": "ApiController.GetPlans", + "parameters": [ + { + "in": "query", + "name": "owner", + "description": "The owner of plans", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/object.Plan" + } + } + } + } + } + }, + "/api/get-policies": { + "get": { + "tags": [ + "Enforcer API" + ], + "description": "get policies", + "operationId": "ApiController.GetPolicies", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id ( owner/name ) of enforcer", + "required": true, + "type": "string" + }, + { + "in": "query", + "name": "adapterId", + "description": "The adapter id", + "type": "string" + } + ], + "responses": { + "200": { + "description": "", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/xormadapter.CasbinRule" + } + } + } + } + } + }, + "/api/get-pricing": { + "get": { + "tags": [ + "Pricing API" + ], + "description": "get pricing", + "operationId": "ApiController.GetPricing", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id ( owner/name ) of the pricing", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/object.Pricing" + } + } + } + } + }, + "/api/get-pricings": { + "get": { + "tags": [ + "Pricing API" + ], + "description": "get pricings", + "operationId": "ApiController.GetPricings", + "parameters": [ + { + "in": "query", + "name": "owner", + "description": "The owner of pricings", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/object.Pricing" + } + } + } + } + } + }, + "/api/get-product": { + "get": { + "tags": [ + "Product API" + ], + "description": "get product", + "operationId": "ApiController.GetProduct", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id ( owner/name ) of the product", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/object.Product" + } + } + } + } + }, + "/api/get-products": { + "get": { + "tags": [ + "Product API" + ], + "description": "get products", + "operationId": "ApiController.GetProducts", + "parameters": [ + { + "in": "query", + "name": "owner", + "description": "The owner of products", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/object.Product" + } + } + } + } + } + }, + "/api/get-prometheus-info": { + "get": { + "tags": [ + "System API" + ], + "description": "get Prometheus Info", + "operationId": "ApiController.GetPrometheusInfo", + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/object.PrometheusInfo" + } + } + } + } + }, + "/api/get-provider": { + "get": { + "tags": [ + "Provider API" + ], + "description": "get provider", + "operationId": "ApiController.GetProvider", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id ( owner/name ) of the provider", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/object.Provider" + } + } + } + } + }, + "/api/get-providers": { + "get": { + "tags": [ + "Provider API" + ], + "description": "get providers", + "operationId": "ApiController.GetProviders", + "parameters": [ + { + "in": "query", + "name": "owner", + "description": "The owner of providers", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/object.Provider" + } + } + } + } + } + }, + "/api/get-qrcode": { + "get": { + "tags": [ + "System API" + ], + "operationId": "ApiController.GetWechatQRCode", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id ( owner/name ) of provider", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/get-records": { + "get": { + "tags": [ + "Record API" + ], + "description": "get all records", + "operationId": "ApiController.GetRecords", + "parameters": [ + { + "in": "query", + "name": "pageSize", + "description": "The size of each page", + "required": true, + "type": "string" + }, + { + "in": "query", + "name": "p", + "description": "The number of the page", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/object.Record" + } + } + } + } + }, + "/api/get-records-filter": { + "post": { + "tags": [ + "Record API" + ], + "description": "get records by filter", + "operationId": "ApiController.GetRecordsByFilter", + "parameters": [ + { + "in": "body", + "name": "filter", + "description": "filter Record message", + "required": true, + "schema": { + "type": "string" + }, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/object.Record" + } + } + } + } + }, + "/api/get-resource": { + "get": { + "tags": [ + "Resource API" + ], + "description": "get resource", + "operationId": "ApiController.GetResource", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id ( owner/name ) of resource", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/object.Resource" + } + } + } + } + }, + "/api/get-resources": { + "get": { + "tags": [ + "Resource API" + ], + "description": "get resources", + "operationId": "ApiController.GetResources", + "parameters": [ + { + "in": "query", + "name": "owner", + "description": "Owner", + "required": true, + "type": "string" + }, + { + "in": "query", + "name": "user", + "description": "User", + "required": true, + "type": "string" + }, + { + "in": "query", + "name": "pageSize", + "description": "Page Size", + "type": "integer" + }, + { + "in": "query", + "name": "p", + "description": "Page Number", + "type": "integer" + }, + { + "in": "query", + "name": "field", + "description": "Field", + "type": "string" + }, + { + "in": "query", + "name": "value", + "description": "Value", + "type": "string" + }, + { + "in": "query", + "name": "sortField", + "description": "Sort Field", + "type": "string" + }, + { + "in": "query", + "name": "sortOrder", + "description": "Sort Order", + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/object.Resource" + } + } + } + } + } + }, + "/api/get-role": { + "get": { + "tags": [ + "Role API" + ], + "description": "get role", + "operationId": "ApiController.GetRole", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id ( owner/name ) of the role", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/object.Role" + } + } + } + } + }, + "/api/get-roles": { + "get": { + "tags": [ + "Role API" + ], + "description": "get roles", + "operationId": "ApiController.GetRoles", + "parameters": [ + { + "in": "query", + "name": "owner", + "description": "The owner of roles", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/object.Role" + } + } + } + } + } + }, + "/api/get-session": { + "get": { + "tags": [ + "Session API" + ], + "description": "Get session for one user in one application.", + "operationId": "ApiController.GetSingleSession", + "parameters": [ + { + "in": "query", + "name": "sessionPkId", + "description": "The session ID in format: organization/user/application (e.g., built-in/admin/app-built-in)", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + }, + "/api/get-sessions": { + "get": { + "tags": [ + "Session API" + ], + "description": "Get organization user sessions.", + "operationId": "ApiController.GetSessions", + "parameters": [ + { + "in": "query", + "name": "owner", + "description": "The organization name", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + }, + "/api/get-sorted-users": { + "get": { + "tags": [ + "User API" + ], + "operationId": "ApiController.GetSortedUsers", + "parameters": [ + { + "in": "query", + "name": "owner", + "description": "The owner of users", + "required": true, + "type": "string" + }, + { + "in": "query", + "name": "sorter", + "description": "The DB column name to sort by, e.g., created_time", + "required": true, + "type": "string" + }, + { + "in": "query", + "name": "limit", + "description": "The count of users to return, e.g., 25", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/object.User" + } + } + } + } + } + }, + "/api/get-subscription": { + "get": { + "tags": [ + "Subscription API" + ], + "description": "get subscription", + "operationId": "ApiController.GetSubscription", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id ( owner/name ) of the subscription", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/object.Subscription" + } + } + } + } + }, + "/api/get-subscriptions": { + "get": { + "tags": [ + "Subscription API" + ], + "description": "get subscriptions", + "operationId": "ApiController.GetSubscriptions", + "parameters": [ + { + "in": "query", + "name": "owner", + "description": "The owner of subscriptions", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/object.Subscription" + } + } + } + } + } + }, + "/api/get-syncer": { + "get": { + "tags": [ + "Syncer API" + ], + "description": "get syncer", + "operationId": "ApiController.GetSyncer", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id ( owner/name ) of the syncer", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/object.Syncer" + } + } + } + } + }, + "/api/get-syncers": { + "get": { + "tags": [ + "Syncer API" + ], + "description": "get syncers", + "operationId": "ApiController.GetSyncers", + "parameters": [ + { + "in": "query", + "name": "owner", + "description": "The owner of syncers", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/object.Syncer" + } + } + } + } + } + }, + "/api/get-system-info": { + "get": { + "tags": [ + "System API" + ], + "description": "get system info like CPU and memory usage", + "operationId": "ApiController.GetSystemInfo", + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/util.SystemInfo" + } + } + } + } + }, + "/api/get-ticket": { + "get": { + "tags": [ + "Ticket API" + ], + "description": "get ticket", + "operationId": "ApiController.GetTicket", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id ( owner/name ) of the ticket", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/object.Ticket" + } + } + } + } + }, + "/api/get-tickets": { + "get": { + "tags": [ + "Ticket API" + ], + "description": "get tickets", + "operationId": "ApiController.GetTickets", + "parameters": [ + { + "in": "query", + "name": "owner", + "description": "The owner of tickets", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/object.Ticket" + } + } + } + } + } + }, + "/api/get-token": { + "get": { + "tags": [ + "Token API" + ], + "description": "get token", + "operationId": "ApiController.GetToken", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The token ID in format: organization/token-name (e.g., built-in/token-123456)", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/object.Token" + } + } + } + } + }, + "/api/get-tokens": { + "get": { + "tags": [ + "Token API" + ], + "description": "get tokens", + "operationId": "ApiController.GetTokens", + "parameters": [ + { + "in": "query", + "name": "owner", + "description": "The organization name (e.g., built-in)", + "required": true, + "type": "string" + }, + { + "in": "query", + "name": "pageSize", + "description": "The size of each page", + "required": true, + "type": "string" + }, + { + "in": "query", + "name": "p", + "description": "The number of the page", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/object.Token" + } + } + } + } + } + }, + "/api/get-transaction": { + "get": { + "tags": [ + "Transaction API" + ], + "description": "get transaction", + "operationId": "ApiController.GetTransaction", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id ( owner/name ) of the transaction", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/object.Transaction" + } + } + } + } + }, + "/api/get-transactions": { + "get": { + "tags": [ + "Transaction API" + ], + "description": "get transactions", + "operationId": "ApiController.GetTransactions", + "parameters": [ + { + "in": "query", + "name": "owner", + "description": "The owner of transactions", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/object.Transaction" + } + } + } + } + } + }, + "/api/get-user": { + "get": { + "tags": [ + "User API" + ], + "description": "get user", + "operationId": "ApiController.GetUser", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id ( owner/name ) of the user", + "type": "string" + }, + { + "in": "query", + "name": "owner", + "description": "The owner of the user", + "type": "string" + }, + { + "in": "query", + "name": "email", + "description": "The email of the user", + "type": "string" + }, + { + "in": "query", + "name": "phone", + "description": "The phone of the user", + "type": "string" + }, + { + "in": "query", + "name": "userId", + "description": "The userId of the user", + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/object.User" + } + } + } + } + }, + "/api/get-user-application": { + "get": { + "tags": [ + "Application API" + ], + "description": "get the detail of the user's application", + "operationId": "ApiController.GetUserApplication", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id ( owner/name ) of the user", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/object.Application" + } + } + } + } + }, + "/api/get-user-count": { + "get": { + "tags": [ + "User API" + ], + "operationId": "ApiController.GetUserCount", + "parameters": [ + { + "in": "query", + "name": "owner", + "description": "The owner of users", + "required": true, + "type": "string" + }, + { + "in": "query", + "name": "isOnline", + "description": "The filter for query, 1 for online, 0 for offline, empty string for all users", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "{int} int The count of filtered users for an organization" + } + } + } + }, + "/api/get-user-orders": { + "get": { + "tags": [ + "Order API" + ], + "description": "get orders for a user", + "operationId": "ApiController.GetUserOrders", + "parameters": [ + { + "in": "query", + "name": "owner", + "description": "The owner of orders", + "required": true, + "type": "string" + }, + { + "in": "query", + "name": "user", + "description": "The username of the user", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/object.Order" + } + } + } + } + } + }, + "/api/get-user-payments": { + "get": { + "tags": [ + "Verification API" + ], + "description": "get payments for a user", + "operationId": "ApiController.GetUserVerifications", + "parameters": [ + { + "in": "query", + "name": "owner", + "description": "The owner of payments", + "required": true, + "type": "string" + }, + { + "in": "query", + "name": "organization", + "description": "The organization of the user", + "required": true, + "type": "string" + }, + { + "in": "query", + "name": "user", + "description": "The username of the user", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/object.Verification" + } + } + } + } + } + }, + "/api/get-users": { + "get": { + "tags": [ + "User API" + ], + "operationId": "ApiController.GetUsers", + "parameters": [ + { + "in": "query", + "name": "owner", + "description": "The owner of users", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/object.User" + } + } + } + } + } + }, + "/api/get-version-info": { + "get": { + "tags": [ + "System API" + ], + "description": "get version info like Casdoor release version and commit ID", + "operationId": "ApiController.GetVersionInfo", + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/util.VersionInfo" + } + } + } + } + }, + "/api/get-webhook": { + "get": { + "tags": [ + "Webhook API" + ], + "description": "get webhook", + "operationId": "ApiController.GetWebhook", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id ( owner/name ) of the webhook", + "required": true, + "type": "string", + "default": "built-in/admin" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/object.Webhook" + } + } + } + } + }, + "/api/get-webhook-event": { + "get": { + "tags": [ + "System API" + ], + "operationId": "ApiController.GetWebhookEventType", + "parameters": [ + { + "in": "query", + "name": "ticket", + "description": "The eventId of QRCode", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/get-webhooks": { + "get": { + "tags": [ + "Webhook API" + ], + "description": "get webhooks", + "operationId": "ApiController.GetWebhooks", + "parameters": [ + { + "in": "query", + "name": "owner", + "description": "The owner of webhooks", + "required": true, + "type": "string", + "default": "built-in/admin" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/object.Webhook" + } + } + } + }, + "security": [ + { + "test_apiKey": [] + } + ] + } + }, + "/api/health": { + "get": { + "tags": [ + "System API" + ], + "description": "check if the system is live", + "operationId": "ApiController.Health", + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/impersonation-user": { + "post": { + "tags": [ + "User API" + ], + "description": "set impersonation user for current admin session", + "operationId": "ApiController.ImpersonateUser", + "parameters": [ + { + "in": "formData", + "name": "username", + "description": "The username to impersonate (owner/name)", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/invoice-payment": { + "post": { + "tags": [ + "Payment API" + ], + "description": "invoice payment", + "operationId": "ApiController.InvoicePayment", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id ( owner/name ) of the payment", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/is-session-duplicated": { + "get": { + "tags": [ + "Session API" + ], + "description": "Check if there are other different sessions for one user in one application.", + "operationId": "ApiController.IsSessionDuplicated", + "parameters": [ + { + "in": "query", + "name": "sessionPkId", + "description": "The session ID in format: organization/user/application (e.g., built-in/admin/app-built-in)", + "required": true, + "type": "string" + }, + { + "in": "query", + "name": "sessionId", + "description": "The specific session ID to check", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + }, + "/api/login": { + "post": { + "tags": [ + "Login API" + ], + "description": "login", + "operationId": "ApiController.Login", + "parameters": [ + { + "in": "query", + "name": "clientId", + "description": "clientId", + "required": true, + "type": "string" + }, + { + "in": "query", + "name": "responseType", + "description": "responseType", + "required": true, + "type": "string" + }, + { + "in": "query", + "name": "redirectUri", + "description": "redirectUri", + "required": true, + "type": "string" + }, + { + "in": "query", + "name": "scope", + "description": "scope", + "type": "string" + }, + { + "in": "query", + "name": "state", + "description": "state", + "type": "string" + }, + { + "in": "query", + "name": "nonce", + "description": "nonce", + "type": "string" + }, + { + "in": "query", + "name": "code_challenge_method", + "description": "code_challenge_method", + "type": "string" + }, + { + "in": "query", + "name": "code_challenge", + "description": "code_challenge", + "type": "string" + }, + { + "in": "body", + "name": "form", + "description": "Login information", + "required": true, + "schema": { + "$ref": "#/definitions/controllers.AuthForm" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/login/oauth/access_token": { + "post": { + "tags": [ + "Token API" + ], + "description": "get OAuth access token", + "operationId": "ApiController.GetOAuthToken", + "parameters": [ + { + "in": "query", + "name": "grant_type", + "description": "OAuth grant type", + "required": true, + "type": "string" + }, + { + "in": "query", + "name": "client_id", + "description": "OAuth client id", + "required": true, + "type": "string" + }, + { + "in": "query", + "name": "client_secret", + "description": "OAuth client secret", + "required": true, + "type": "string" + }, + { + "in": "query", + "name": "code", + "description": "OAuth code", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/object.TokenWrapper" + } + }, + "400": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/object.TokenError" + } + }, + "401": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/object.TokenError" + } + } + } + } + }, + "/api/login/oauth/introspect": { + "post": { + "tags": [ + "Login API" + ], + "description": "The introspection endpoint is an OAuth 2.0 endpoint that takes a", + "operationId": "ApiController.IntrospectToken", + "parameters": [ + { + "in": "formData", + "name": "token", + "description": "access_token's value or refresh_token's value", + "required": true, + "type": "string" + }, + { + "in": "formData", + "name": "token_type_hint", + "description": "the token type access_token or refresh_token", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/object.IntrospectionResponse" + } + }, + "400": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/object.TokenError" + } + }, + "401": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/object.TokenError" + } + } + } + } + }, + "/api/login/oauth/refresh_token": { + "post": { + "tags": [ + "Token API" + ], + "description": "refresh OAuth access token", + "operationId": "ApiController.RefreshToken", + "parameters": [ + { + "in": "query", + "name": "grant_type", + "description": "OAuth grant type", + "required": true, + "type": "string" + }, + { + "in": "query", + "name": "refresh_token", + "description": "OAuth refresh token", + "required": true, + "type": "string" + }, + { + "in": "query", + "name": "scope", + "description": "OAuth scope", + "required": true, + "type": "string" + }, + { + "in": "query", + "name": "client_id", + "description": "OAuth client id", + "required": true, + "type": "string" + }, + { + "in": "query", + "name": "client_secret", + "description": "OAuth client secret", + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/object.TokenWrapper" + } + }, + "400": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/object.TokenError" + } + }, + "401": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/object.TokenError" + } + } + } + } + }, + "/api/logout": { + "post": { + "tags": [ + "Login API" + ], + "description": "logout the current user", + "operationId": "ApiController.Logout", + "parameters": [ + { + "in": "query", + "name": "id_token_hint", + "description": "id_token_hint", + "type": "string" + }, + { + "in": "query", + "name": "post_logout_redirect_uri", + "description": "post_logout_redirect_uri", + "type": "string" + }, + { + "in": "query", + "name": "state", + "description": "state", + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/metrics": { + "get": { + "tags": [ + "System API" + ], + "description": "get Prometheus metrics", + "operationId": "ApiController.GetMetrics", + "responses": { + "200": { + "description": "{string} Prometheus metrics in text format" + } + } + } + }, + "/api/mfa/setup/enable": { + "post": { + "tags": [ + "MFA API" + ], + "description": "enable totp", + "operationId": "ApiController.MfaSetupEnable", + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/mfa/setup/initiate": { + "post": { + "tags": [ + "MFA API" + ], + "description": "setup MFA", + "operationId": "ApiController.MfaSetupInitiate", + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/mfa/setup/verify": { + "post": { + "tags": [ + "MFA API" + ], + "description": "setup verify totp", + "operationId": "ApiController.MfaSetupVerify", + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/notify-payment": { + "post": { + "tags": [ + "Payment API" + ], + "description": "notify payment", + "operationId": "ApiController.NotifyPayment", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "The details of the payment", + "required": true, + "schema": { + "$ref": "#/definitions/object.Payment" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/pay-order": { + "post": { + "tags": [ + "Order API" + ], + "description": "pay an existing order", + "operationId": "ApiController.PayOrder", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id ( owner/name ) of the order", + "required": true, + "type": "string" + }, + { + "in": "query", + "name": "providerName", + "description": "The name of the provider", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/place-order": { + "post": { + "tags": [ + "Order API" + ], + "description": "place an order for a product", + "operationId": "ApiController.PlaceOrder", + "parameters": [ + { + "in": "query", + "name": "productId", + "description": "The id ( owner/name ) of the product", + "required": true, + "type": "string" + }, + { + "in": "query", + "name": "pricingName", + "description": "The name of the pricing (for subscription)", + "type": "string" + }, + { + "in": "query", + "name": "planName", + "description": "The name of the plan (for subscription)", + "type": "string" + }, + { + "in": "query", + "name": "customPrice", + "description": "Custom price for recharge products", + "type": "number" + }, + { + "in": "query", + "name": "userName", + "description": "The username to place order for (admin only)", + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/object.Order" + } + } + } + } + }, + "/api/refresh-engines": { + "post": { + "tags": [ + "CLI API" + ], + "description": "Refresh all CLI engines", + "operationId": "ApiController.RefreshEngines", + "parameters": [ + { + "in": "query", + "name": "m", + "description": "Hash for request validation", + "required": true, + "type": "string" + }, + { + "in": "query", + "name": "t", + "description": "Timestamp for request validation", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/remove-policy": { + "post": { + "tags": [ + "Enforcer API" + ], + "description": "remove policy", + "operationId": "ApiController.RemovePolicy", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id ( owner/name ) of enforcer", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "body", + "description": "The policy to remove", + "required": true, + "schema": { + "$ref": "#/definitions/xormadapter.CasbinRule" + } + } + ], + "responses": { + "200": { + "description": "", + "schema": { + "$ref": "#/definitions/Response" + } + } + } + } + }, + "/api/reset-email-or-phone": { + "post": { + "tags": [ + "Account API" + ], + "operationId": "ApiController.ResetEmailOrPhone", + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/object.Userinfo" + } + } + } + } + }, + "/api/run-casbin-command": { + "get": { + "tags": [ + "Enforcer API" + ], + "description": "Call Casbin CLI commands", + "operationId": "ApiController.RunCasbinCommand", + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/run-syncer": { + "get": { + "tags": [ + "Syncer API" + ], + "description": "run syncer", + "operationId": "ApiController.RunSyncer", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "The details of the syncer", + "required": true, + "schema": { + "$ref": "#/definitions/object.Syncer" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/send-email": { + "post": { + "tags": [ + "Service API" + ], + "description": "This API is not for Casdoor frontend to call, it is for Casdoor SDKs.", + "operationId": "ApiController.SendEmail", + "parameters": [ + { + "in": "query", + "name": "clientId", + "description": "The clientId of the application", + "required": true, + "type": "string" + }, + { + "in": "query", + "name": "clientSecret", + "description": "The clientSecret of the application", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "from", + "description": "Details of the email request", + "required": true, + "schema": { + "$ref": "#/definitions/controllers.EmailForm" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/send-invitation": { + "post": { + "tags": [ + "Invitation API" + ], + "description": "verify invitation", + "operationId": "ApiController.VerifyInvitation", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id ( owner/name ) of the invitation", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "body", + "description": "The details of the invitation", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/send-notification": { + "post": { + "tags": [ + "Service API" + ], + "description": "This API is not for Casdoor frontend to call, it is for Casdoor SDKs.", + "operationId": "ApiController.SendNotification", + "parameters": [ + { + "in": "body", + "name": "from", + "description": "Details of the notification request", + "required": true, + "schema": { + "$ref": "#/definitions/controllers.NotificationForm" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/send-sms": { + "post": { + "tags": [ + "Service API" + ], + "description": "This API is not for Casdoor frontend to call, it is for Casdoor SDKs.", + "operationId": "ApiController.SendSms", + "parameters": [ + { + "in": "query", + "name": "clientId", + "description": "The clientId of the application", + "required": true, + "type": "string" + }, + { + "in": "query", + "name": "clientSecret", + "description": "The clientSecret of the application", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "from", + "description": "Details of the sms request", + "required": true, + "schema": { + "$ref": "#/definitions/controllers.SmsForm" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/send-verification-code": { + "post": { + "tags": [ + "Verification API" + ], + "operationId": "ApiController.SendVerificationCode", + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/object.Userinfo" + } + } + } + } + }, + "/api/set-password": { + "post": { + "tags": [ + "Account API" + ], + "description": "set password", + "operationId": "ApiController.SetPassword", + "parameters": [ + { + "in": "formData", + "name": "userOwner", + "description": "The owner of the user", + "required": true, + "type": "string" + }, + { + "in": "formData", + "name": "userName", + "description": "The name of the user", + "required": true, + "type": "string" + }, + { + "in": "formData", + "name": "oldPassword", + "description": "The old password of the user", + "required": true, + "type": "string" + }, + { + "in": "formData", + "name": "newPassword", + "description": "The new password of the user", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/set-preferred-mfa": { + "post": { + "tags": [ + "MFA API" + ], + "description": ": Set specific Mfa Preferred", + "operationId": "ApiController.SetPreferredMfa", + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/signup": { + "post": { + "tags": [ + "Login API" + ], + "description": "sign up a new user", + "operationId": "ApiController.Signup", + "parameters": [ + { + "in": "formData", + "name": "username", + "description": "The username to sign up", + "required": true, + "type": "string" + }, + { + "in": "formData", + "name": "password", + "description": "The password", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/sso-logout": { + "get": { + "tags": [ + "Login API" + ], + "description": "logout the current user from all applications or current session only", + "operationId": "ApiController.SsoLogout", + "parameters": [ + { + "in": "query", + "name": "logoutAll", + "description": "Whether to logout from all sessions. Accepted values: 'true', '1', or empty (default: true). Any other value means false.", + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + }, + "post": { + "tags": [ + "Login API" + ], + "description": "logout the current user from all applications or current session only", + "operationId": "ApiController.SsoLogout", + "parameters": [ + { + "in": "query", + "name": "logoutAll", + "description": "Whether to logout from all sessions. Accepted values: 'true', '1', or empty (default: true). Any other value means false.", + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/sync-ldap-users": { + "post": { + "tags": [ + "Account API" + ], + "description": "sync ldap users", + "operationId": "ApiController.SyncLdapUsers", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "id", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.LdapSyncResp" + } + } + } + } + }, + "/api/unlink": { + "post": { + "tags": [ + "Login API" + ], + "operationId": "ApiController.Unlink", + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/object.Userinfo" + } + } + } + } + }, + "/api/update-adapter": { + "post": { + "tags": [ + "Adapter API" + ], + "description": "update adapter", + "operationId": "ApiController.UpdateAdapter", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id ( owner/name ) of the adapter", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "body", + "description": "The details of the adapter", + "required": true, + "schema": { + "$ref": "#/definitions/object.Adapter" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/update-application": { + "post": { + "tags": [ + "Application API" + ], + "description": "update an application", + "operationId": "ApiController.UpdateApplication", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id ( owner/name ) of the application", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "body", + "description": "The details of the application", + "required": true, + "schema": { + "$ref": "#/definitions/object.Application" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/update-cert": { + "post": { + "tags": [ + "Cert API" + ], + "description": "update cert", + "operationId": "ApiController.UpdateCert", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id ( owner/name ) of the cert", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "body", + "description": "The details of the cert", + "required": true, + "schema": { + "$ref": "#/definitions/object.Cert" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/update-enforcer": { + "post": { + "tags": [ + "Enforcer API" + ], + "description": "update enforcer", + "operationId": "ApiController.UpdateEnforcer", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id ( owner/name ) of enforcer", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "enforcer", + "description": "The enforcer object", + "required": true, + "schema": { + "$ref": "#/definitions/object" + } + } + ], + "responses": { + "200": { + "description": "", + "schema": { + "$ref": "#/definitions/object.Enforcer" + } + } + } + } + }, + "/api/update-form": { + "post": { + "tags": [ + "Form API" + ], + "description": "update form", + "operationId": "ApiController.UpdateForm", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id (owner/name) of the form", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "body", + "description": "The details of the form", + "required": true, + "schema": { + "$ref": "#/definitions/object.Form" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/update-group": { + "post": { + "tags": [ + "Group API" + ], + "description": "update group", + "operationId": "ApiController.UpdateGroup", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id ( owner/name ) of the group", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "body", + "description": "The details of the group", + "required": true, + "schema": { + "$ref": "#/definitions/object.Group" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/update-invitation": { + "post": { + "tags": [ + "Invitation API" + ], + "description": "update invitation", + "operationId": "ApiController.UpdateInvitation", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id ( owner/name ) of the invitation", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "body", + "description": "The details of the invitation", + "required": true, + "schema": { + "$ref": "#/definitions/object.Invitation" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/update-ldap": { + "post": { + "tags": [ + "Account API" + ], + "description": "update ldap", + "operationId": "ApiController.UpdateLdap", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "The details of the ldap", + "required": true, + "schema": { + "$ref": "#/definitions/object.Ldap" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/update-model": { + "post": { + "tags": [ + "Model API" + ], + "description": "update model", + "operationId": "ApiController.UpdateModel", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id ( owner/name ) of the model", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "body", + "description": "The details of the model", + "required": true, + "schema": { + "$ref": "#/definitions/object.Model" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/update-order": { + "post": { + "tags": [ + "Order API" + ], + "description": "update order", + "operationId": "ApiController.UpdateOrder", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id ( owner/name ) of the order", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "body", + "description": "The details of the order", + "required": true, + "schema": { + "$ref": "#/definitions/object.Order" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/update-organization": { + "post": { + "tags": [ + "Organization API" + ], + "description": "update organization", + "operationId": "ApiController.UpdateOrganization", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id ( owner/name ) of the organization", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "body", + "description": "The details of the organization", + "required": true, + "schema": { + "$ref": "#/definitions/object.Organization" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/update-payment": { + "post": { + "tags": [ + "Payment API" + ], + "description": "update payment", + "operationId": "ApiController.UpdatePayment", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id ( owner/name ) of the payment", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "body", + "description": "The details of the payment", + "required": true, + "schema": { + "$ref": "#/definitions/object.Payment" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/update-permission": { + "post": { + "tags": [ + "Permission API" + ], + "description": "update permission", + "operationId": "ApiController.UpdatePermission", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id ( owner/name ) of the permission", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "body", + "description": "The details of the permission", + "required": true, + "schema": { + "$ref": "#/definitions/object.Permission" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/update-plan": { + "post": { + "tags": [ + "Plan API" + ], + "description": "update plan", + "operationId": "ApiController.UpdatePlan", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id ( owner/name ) of the plan", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "body", + "description": "The details of the plan", + "required": true, + "schema": { + "$ref": "#/definitions/object.Plan" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/update-policy": { + "post": { + "tags": [ + "Enforcer API" + ], + "description": "update policy", + "operationId": "ApiController.UpdatePolicy", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id ( owner/name ) of enforcer", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "body", + "description": "Array containing old and new policy", + "required": true, + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/xormadapter.CasbinRule" + } + } + } + ], + "responses": { + "200": { + "description": "", + "schema": { + "$ref": "#/definitions/Response" + } + } + } + } + }, + "/api/update-pricing": { + "post": { + "tags": [ + "Pricing API" + ], + "description": "update pricing", + "operationId": "ApiController.UpdatePricing", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id ( owner/name ) of the pricing", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "body", + "description": "The details of the pricing", + "required": true, + "schema": { + "$ref": "#/definitions/object.Pricing" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/update-product": { + "post": { + "tags": [ + "Product API" + ], + "description": "update product", + "operationId": "ApiController.UpdateProduct", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id ( owner/name ) of the product", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "body", + "description": "The details of the product", + "required": true, + "schema": { + "$ref": "#/definitions/object.Product" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/update-provider": { + "post": { + "tags": [ + "Provider API" + ], + "description": "update provider", + "operationId": "ApiController.UpdateProvider", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id ( owner/name ) of the provider", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "body", + "description": "The details of the provider", + "required": true, + "schema": { + "$ref": "#/definitions/object.Provider" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/update-resource": { + "post": { + "tags": [ + "Resource API" + ], + "description": "get resource", + "operationId": "ApiController.UpdateResource", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id ( owner/name ) of resource", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "resource", + "description": "The resource object", + "required": true, + "schema": { + "$ref": "#/definitions/object.Resource" + } + } + ], + "responses": { + "200": { + "description": "Success or error", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/update-role": { + "post": { + "tags": [ + "Role API" + ], + "description": "update role", + "operationId": "ApiController.UpdateRole", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id ( owner/name ) of the role", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "body", + "description": "The details of the role", + "required": true, + "schema": { + "$ref": "#/definitions/object.Role" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/update-session": { + "post": { + "tags": [ + "Session API" + ], + "description": "Update session for one user in one application.", + "operationId": "ApiController.UpdateSession", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "The session object to update", + "required": true, + "schema": { + "$ref": "#/definitions/object.Session" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/update-subscription": { + "post": { + "tags": [ + "Subscription API" + ], + "description": "update subscription", + "operationId": "ApiController.UpdateSubscription", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id ( owner/name ) of the subscription", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "body", + "description": "The details of the subscription", + "required": true, + "schema": { + "$ref": "#/definitions/object.Subscription" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/update-syncer": { + "post": { + "tags": [ + "Syncer API" + ], + "description": "update syncer", + "operationId": "ApiController.UpdateSyncer", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id ( owner/name ) of the syncer", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "body", + "description": "The details of the syncer", + "required": true, + "schema": { + "$ref": "#/definitions/object.Syncer" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/update-ticket": { + "post": { + "tags": [ + "Ticket API" + ], + "description": "update ticket", + "operationId": "ApiController.UpdateTicket", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id ( owner/name ) of the ticket", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "body", + "description": "The details of the ticket", + "required": true, + "schema": { + "$ref": "#/definitions/object.Ticket" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/update-token": { + "post": { + "tags": [ + "Token API" + ], + "description": "update token", + "operationId": "ApiController.UpdateToken", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The token ID in format: organization/token-name (e.g., built-in/token-123456)", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "body", + "description": "Details of the token", + "required": true, + "schema": { + "$ref": "#/definitions/object.Token" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/update-transaction": { + "post": { + "tags": [ + "Transaction API" + ], + "description": "update transaction", + "operationId": "ApiController.UpdateTransaction", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id ( owner/name ) of the transaction", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "body", + "description": "The details of the transaction", + "required": true, + "schema": { + "$ref": "#/definitions/object.Transaction" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/update-user": { + "post": { + "tags": [ + "User API" + ], + "description": "update user", + "operationId": "ApiController.UpdateUser", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id ( owner/name ) of the user", + "type": "string" + }, + { + "in": "query", + "name": "userId", + "description": "The userId (UUID) of the user", + "type": "string" + }, + { + "in": "query", + "name": "owner", + "description": "The owner of the user (required when using userId)", + "type": "string" + }, + { + "in": "body", + "name": "body", + "description": "The details of the user", + "required": true, + "schema": { + "$ref": "#/definitions/object.User" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/update-webhook": { + "post": { + "tags": [ + "Webhook API" + ], + "description": "update webhook", + "operationId": "ApiController.UpdateWebhook", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id ( owner/name ) of the webhook", + "required": true, + "type": "string", + "default": "built-in/admin" + }, + { + "in": "body", + "name": "body", + "description": "The details of the webhook", + "required": true, + "schema": { + "$ref": "#/definitions/object.Webhook" + } + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/upload-resource": { + "post": { + "tags": [ + "Resource API" + ], + "operationId": "ApiController.UploadResource", + "parameters": [ + { + "in": "query", + "name": "owner", + "description": "Owner", + "required": true, + "type": "string" + }, + { + "in": "query", + "name": "user", + "description": "User", + "required": true, + "type": "string" + }, + { + "in": "query", + "name": "application", + "description": "Application", + "required": true, + "type": "string" + }, + { + "in": "query", + "name": "tag", + "description": "Tag", + "type": "string" + }, + { + "in": "query", + "name": "parent", + "description": "Parent", + "type": "string" + }, + { + "in": "query", + "name": "fullFilePath", + "description": "Full File Path", + "required": true, + "type": "string" + }, + { + "in": "query", + "name": "createdTime", + "description": "Created Time", + "type": "string" + }, + { + "in": "query", + "name": "description", + "description": "Description", + "type": "string" + }, + { + "in": "formData", + "name": "file", + "description": "Resource file", + "required": true, + "type": "file" + } + ], + "responses": { + "200": { + "description": "FileUrl, objectKey", + "schema": { + "$ref": "#/definitions/object.Resource" + } + } + } + } + }, + "/api/user": { + "get": { + "tags": [ + "Account API" + ], + "description": "return Laravel compatible user information according to OAuth 2.0", + "operationId": "ApiController.UserInfo2", + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.LaravelResponse" + } + } + } + } + }, + "/api/userinfo": { + "get": { + "tags": [ + "Account API" + ], + "description": "return user information according to OIDC standards", + "operationId": "ApiController.UserInfo", + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/object.Userinfo" + } + } + } + } + }, + "/api/verify-captcha": { + "post": { + "tags": [ + "Verification API" + ], + "operationId": "ApiController.VerifyCaptcha", + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/object.Userinfo" + } + } + } + } + }, + "/api/verify-code": { + "post": { + "tags": [ + "Verification API" + ], + "operationId": "ApiController.VerifyCode", + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/object.Userinfo" + } + } + } + } + }, + "/api/verify-identification": { + "post": { + "tags": [ + "User API" + ], + "description": "verify user's real identity using ID Verification provider", + "operationId": "ApiController.VerifyIdentification", + "parameters": [ + { + "in": "query", + "name": "owner", + "description": "The owner of the user (optional, defaults to logged-in user)", + "type": "string" + }, + { + "in": "query", + "name": "name", + "description": "The name of the user (optional, defaults to logged-in user)", + "type": "string" + }, + { + "in": "query", + "name": "provider", + "description": "The name of the ID Verification provider (optional, auto-selected if not provided)", + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/verify-invitation": { + "get": { + "tags": [ + "Invitation API" + ], + "description": "verify invitation", + "operationId": "ApiController.VerifyInvitation", + "parameters": [ + { + "in": "query", + "name": "id", + "description": "The id ( owner/name ) of the invitation", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/webauthn/signin/begin": { + "get": { + "tags": [ + "Login API" + ], + "description": "WebAuthn Login Flow 1st stage", + "operationId": "ApiController.WebAuthnSigninBegin", + "parameters": [ + { + "in": "query", + "name": "owner", + "description": "owner", + "required": true, + "type": "string" + }, + { + "in": "query", + "name": "name", + "description": "name", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The CredentialAssertion object", + "schema": { + "$ref": "#/definitions/protocol.CredentialAssertion" + } + } + } + } + }, + "/api/webauthn/signin/finish": { + "post": { + "tags": [ + "Login API" + ], + "description": "WebAuthn Login Flow 2nd stage", + "operationId": "ApiController.WebAuthnSigninFinish", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "authenticator assertion Response", + "required": true, + "schema": { + "$ref": "#/definitions/protocol.CredentialAssertionResponse" + } + } + ], + "responses": { + "200": { + "description": "\"The Response object\"", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/webauthn/signup/begin": { + "get": { + "tags": [ + "User API" + ], + "description": "WebAuthn Registration Flow 1st stage", + "operationId": "ApiController.WebAuthnSignupBegin", + "responses": { + "200": { + "description": "The CredentialCreationOptions object", + "schema": { + "$ref": "#/definitions/protocol.CredentialCreation" + } + } + } + } + }, + "/api/webauthn/signup/finish": { + "post": { + "tags": [ + "User API" + ], + "description": "WebAuthn Registration Flow 2nd stage", + "operationId": "ApiController.WebAuthnSignupFinish", + "parameters": [ + { + "in": "body", + "name": "body", + "description": "authenticator attestation Response", + "required": true, + "schema": { + "$ref": "#/definitions/protocol.CredentialCreationResponse" + } + } + ], + "responses": { + "200": { + "description": "\"The Response object\"", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + }, + "/api/webhook": { + "post": { + "tags": [ + "System API" + ], + "operationId": "ApiController.HandleOfficialAccountEvent", + "responses": { + "200": { + "description": "The Response object", + "schema": { + "$ref": "#/definitions/controllers.Response" + } + } + } + } + } + }, + "definitions": { + "232967.\u003cnil\u003e.string": { + "title": "string", + "type": "object" + }, + "233025.string.string": { + "title": "string", + "type": "object" + }, + "McpResponse": { + "title": "McpResponse", + "type": "object" + }, + "Response": { + "title": "Response", + "type": "object" + }, + "casbin.Enforcer": { + "title": "Enforcer", + "type": "object" + }, + "casvisorsdk.Record": { + "title": "Record", + "type": "object" + }, + "controllers.AuthForm": { + "title": "AuthForm", + "type": "object" + }, + "controllers.EmailForm": { + "title": "EmailForm", + "type": "object", + "properties": { + "content": { + "type": "string" + }, + "provider": { + "type": "string" + }, + "providerObject": { + "$ref": "#/definitions/object.Provider" + }, + "receivers": { + "type": "array", + "items": { + "type": "string" + } + }, + "sender": { + "type": "string" + }, + "title": { + "type": "string" + } + } + }, + "controllers.LaravelResponse": { + "title": "LaravelResponse", + "type": "object", + "properties": { + "created_at": { + "type": "string" + }, + "email": { + "type": "string" + }, + "email_verified_at": { + "type": "string" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "updated_at": { + "type": "string" + } + } + }, + "controllers.LdapResp": { + "title": "LdapResp", + "type": "object", + "properties": { + "existUuids": { + "type": "array", + "items": { + "type": "string" + } + }, + "users": { + "type": "array", + "items": { + "$ref": "#/definitions/object.LdapUser" + } + } + } + }, + "controllers.LdapSyncResp": { + "title": "LdapSyncResp", + "type": "object", + "properties": { + "exist": { + "type": "array", + "items": { + "$ref": "#/definitions/object.LdapUser" + } + }, + "failed": { + "type": "array", + "items": { + "$ref": "#/definitions/object.LdapUser" + } + } + } + }, + "controllers.NotificationForm": { + "title": "NotificationForm", + "type": "object", + "properties": { + "content": { + "type": "string" + } + } + }, + "controllers.Response": { + "title": "Response", + "type": "object", + "properties": { + "data": { + "additionalProperties": { + "description": "support string, struct or []struct", + "type": "string" + } + }, + "data2": { + "additionalProperties": { + "description": "support string, struct or []struct", + "type": "string" + } + }, + "data3": { + "additionalProperties": { + "description": "support string, struct or []struct", + "type": "string" + } + }, + "msg": { + "type": "string" + }, + "name": { + "type": "string" + }, + "status": { + "type": "string" + }, + "sub": { + "type": "string" + } + } + }, + "controllers.SmsForm": { + "title": "SmsForm", + "type": "object", + "properties": { + "content": { + "type": "string" + }, + "organizationId": { + "type": "string" + }, + "receivers": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "jose.JSONWebKey": { + "title": "JSONWebKey", + "type": "object" + }, + "model.Model": { + "title": "Model", + "type": "object" + }, + "object": { + "title": "object", + "type": "object" + }, + "object.AccountItem": { + "title": "AccountItem", + "type": "object", + "properties": { + "modifyRule": { + "type": "string" + }, + "name": { + "type": "string" + }, + "regex": { + "type": "string" + }, + "tab": { + "type": "string" + }, + "viewRule": { + "type": "string" + }, + "visible": { + "type": "boolean" + } + } + }, + "object.Adapter": { + "title": "Adapter", + "type": "object", + "properties": { + "createdTime": { + "type": "string" + }, + "database": { + "type": "string" + }, + "databaseType": { + "type": "string" + }, + "host": { + "type": "string" + }, + "name": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "password": { + "type": "string" + }, + "port": { + "type": "integer", + "format": "int64" + }, + "table": { + "type": "string" + }, + "type": { + "type": "string" + }, + "useSameDb": { + "type": "boolean" + }, + "user": { + "type": "string" + } + } + }, + "object.Address": { + "title": "Address", + "type": "object", + "properties": { + "city": { + "type": "string" + }, + "line1": { + "type": "string" + }, + "line2": { + "type": "string" + }, + "region": { + "type": "string" + }, + "state": { + "type": "string" + }, + "tag": { + "type": "string" + }, + "zipCode": { + "type": "string" + } + } + }, + "object.Application": { + "title": "Application", + "type": "object", + "properties": { + "affiliationUrl": { + "type": "string" + }, + "cert": { + "type": "string" + }, + "certPublicKey": { + "type": "string" + }, + "clientId": { + "type": "string" + }, + "clientSecret": { + "type": "string" + }, + "codeResendTimeout": { + "type": "integer", + "format": "int64" + }, + "cookieExpireInHours": { + "type": "integer", + "format": "int64" + }, + "createdTime": { + "type": "string" + }, + "defaultGroup": { + "type": "string" + }, + "description": { + "type": "string" + }, + "disableSamlAttributes": { + "type": "boolean" + }, + "disableSignin": { + "type": "boolean" + }, + "displayName": { + "type": "string" + }, + "enableAutoSignin": { + "type": "boolean" + }, + "enableCodeSignin": { + "type": "boolean" + }, + "enableExclusiveSignin": { + "type": "boolean" + }, + "enableLinkWithEmail": { + "type": "boolean" + }, + "enablePassword": { + "type": "boolean" + }, + "enableSamlAssertionSignature": { + "type": "boolean" + }, + "enableSamlC14n10": { + "type": "boolean" + }, + "enableSamlCompress": { + "type": "boolean" + }, + "enableSamlPostBinding": { + "type": "boolean" + }, + "enableSignUp": { + "type": "boolean" + }, + "enableSigninSession": { + "type": "boolean" + }, + "enableWebAuthn": { + "type": "boolean" + }, + "expireInHours": { + "type": "number", + "format": "double" + }, + "failedSigninFrozenTime": { + "type": "integer", + "format": "int64" + }, + "failedSigninLimit": { + "type": "integer", + "format": "int64" + }, + "favicon": { + "type": "string" + }, + "footerHtml": { + "type": "string" + }, + "forcedRedirectOrigin": { + "type": "string" + }, + "forgetUrl": { + "type": "string" + }, + "formBackgroundUrl": { + "type": "string" + }, + "formBackgroundUrlMobile": { + "type": "string" + }, + "formCss": { + "type": "string" + }, + "formCssMobile": { + "type": "string" + }, + "formOffset": { + "type": "integer", + "format": "int64" + }, + "formSideHtml": { + "type": "string" + }, + "grantTypes": { + "type": "array", + "items": { + "type": "string" + } + }, + "headerHtml": { + "type": "string" + }, + "homepageUrl": { + "type": "string" + }, + "ipRestriction": { + "type": "string" + }, + "ipWhitelist": { + "type": "string" + }, + "isShared": { + "type": "boolean" + }, + "logo": { + "type": "string" + }, + "name": { + "type": "string" + }, + "order": { + "type": "integer", + "format": "int64" + }, + "orgChoiceMode": { + "type": "string" + }, + "organization": { + "type": "string" + }, + "organizationObj": { + "$ref": "#/definitions/object.Organization" + }, + "owner": { + "type": "string" + }, + "providers": { + "type": "array", + "items": { + "$ref": "#/definitions/object.ProviderItem" + } + }, + "redirectUris": { + "type": "array", + "items": { + "type": "string" + } + }, + "refreshExpireInHours": { + "type": "number", + "format": "double" + }, + "samlAttributes": { + "type": "array", + "items": { + "$ref": "#/definitions/object.SamlItem" + } + }, + "samlHashAlgorithm": { + "type": "string" + }, + "samlReplyUrl": { + "type": "string" + }, + "signinHtml": { + "type": "string" + }, + "signinItems": { + "type": "array", + "items": { + "$ref": "#/definitions/object.SigninItem" + } + }, + "signinMethods": { + "type": "array", + "items": { + "$ref": "#/definitions/object.SigninMethod" + } + }, + "signinUrl": { + "type": "string" + }, + "signupHtml": { + "type": "string" + }, + "signupItems": { + "type": "array", + "items": { + "$ref": "#/definitions/object.SignupItem" + } + }, + "signupUrl": { + "type": "string" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + }, + "termsOfUse": { + "type": "string" + }, + "themeData": { + "$ref": "#/definitions/object.ThemeData" + }, + "title": { + "type": "string" + }, + "tokenAttributes": { + "type": "array", + "items": { + "$ref": "#/definitions/object.JwtItem" + } + }, + "tokenFields": { + "type": "array", + "items": { + "type": "string" + } + }, + "tokenFormat": { + "type": "string" + }, + "tokenSigningMethod": { + "type": "string" + }, + "useEmailAsSamlNameId": { + "type": "boolean" + } + } + }, + "object.Cert": { + "title": "Cert", + "type": "object", + "properties": { + "bitSize": { + "type": "integer", + "format": "int64" + }, + "certificate": { + "type": "string" + }, + "createdTime": { + "type": "string" + }, + "cryptoAlgorithm": { + "type": "string" + }, + "displayName": { + "type": "string" + }, + "expireInYears": { + "type": "integer", + "format": "int64" + }, + "name": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "privateKey": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "type": { + "type": "string" + } + } + }, + "object.DeviceAuthResponse": { + "title": "DeviceAuthResponse", + "type": "object", + "properties": { + "device_code": { + "type": "string" + }, + "expires_in": { + "type": "integer", + "format": "int64" + }, + "interval": { + "type": "integer", + "format": "int64" + }, + "user_code": { + "type": "string" + }, + "verification_uri": { + "type": "string" + } + } + }, + "object.Enforcer": { + "title": "Enforcer", + "type": "object", + "properties": { + "adapter": { + "type": "string" + }, + "createdTime": { + "type": "string" + }, + "description": { + "type": "string" + }, + "displayName": { + "type": "string" + }, + "model": { + "type": "string" + }, + "modelCfg": { + "additionalProperties": { + "type": "string" + } + }, + "name": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "updatedTime": { + "type": "string" + } + } + }, + "object.FaceId": { + "title": "FaceId", + "type": "object", + "properties": { + "ImageUrl": { + "type": "string" + }, + "faceIdData": { + "type": "array", + "items": { + "type": "number", + "format": "double" + } + }, + "name": { + "type": "string" + } + } + }, + "object.Filter": { + "title": "Filter", + "type": "object", + "properties": { + "fieldIndex": { + "type": "integer", + "format": "int64" + }, + "fieldValues": { + "type": "array", + "items": { + "type": "string" + } + }, + "ptype": { + "type": "string" + } + } + }, + "object.Form": { + "title": "Form", + "type": "object", + "properties": { + "createdTime": { + "type": "string" + }, + "displayName": { + "type": "string" + }, + "formItems": { + "type": "array", + "items": { + "$ref": "#/definitions/object.FormItem" + } + }, + "name": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "tag": { + "type": "string" + }, + "type": { + "type": "string" + } + } + }, + "object.FormItem": { + "title": "FormItem", + "type": "object", + "properties": { + "label": { + "type": "string" + }, + "name": { + "type": "string" + }, + "visible": { + "type": "boolean" + }, + "width": { + "type": "string" + } + } + }, + "object.GaugeVecInfo": { + "title": "GaugeVecInfo", + "type": "object", + "properties": { + "method": { + "type": "string" + }, + "name": { + "type": "string" + }, + "throughput": { + "type": "number", + "format": "double" + } + } + }, + "object.Group": { + "title": "Group", + "type": "object", + "properties": { + "children": { + "type": "array", + "items": { + "$ref": "#/definitions/object.Group" + } + }, + "contactEmail": { + "type": "string" + }, + "createdTime": { + "type": "string" + }, + "displayName": { + "type": "string" + }, + "haveChildren": { + "type": "boolean" + }, + "isEnabled": { + "type": "boolean" + }, + "isTopGroup": { + "type": "boolean" + }, + "key": { + "type": "string" + }, + "manager": { + "type": "string" + }, + "name": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "parentId": { + "type": "string" + }, + "parentName": { + "type": "string" + }, + "title": { + "type": "string" + }, + "type": { + "type": "string" + }, + "updatedTime": { + "type": "string" + }, + "users": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "object.Header": { + "title": "Header", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + } + }, + "object.HistogramVecInfo": { + "title": "HistogramVecInfo", + "type": "object", + "properties": { + "count": { + "type": "integer", + "format": "int64" + }, + "latency": { + "type": "string" + }, + "method": { + "type": "string" + }, + "name": { + "type": "string" + } + } + }, + "object.IntrospectionResponse": { + "title": "IntrospectionResponse", + "type": "object", + "properties": { + "active": { + "type": "boolean" + }, + "aud": { + "type": "array", + "items": { + "type": "string" + } + }, + "client_id": { + "type": "string" + }, + "exp": { + "type": "integer", + "format": "int64" + }, + "iat": { + "type": "integer", + "format": "int64" + }, + "iss": { + "type": "string" + }, + "jti": { + "type": "string" + }, + "nbf": { + "type": "integer", + "format": "int64" + }, + "scope": { + "type": "string" + }, + "sub": { + "type": "string" + }, + "token_type": { + "type": "string" + }, + "username": { + "type": "string" + } + } + }, + "object.Invitation": { + "title": "Invitation", + "type": "object", + "properties": { + "application": { + "type": "string" + }, + "code": { + "type": "string" + }, + "createdTime": { + "type": "string" + }, + "defaultCode": { + "type": "string" + }, + "displayName": { + "type": "string" + }, + "email": { + "type": "string" + }, + "isRegexp": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "phone": { + "type": "string" + }, + "quota": { + "type": "integer", + "format": "int64" + }, + "signupGroup": { + "type": "string" + }, + "state": { + "type": "string" + }, + "updatedTime": { + "type": "string" + }, + "usedCount": { + "type": "integer", + "format": "int64" + }, + "username": { + "type": "string" + } + } + }, + "object.JwtItem": { + "title": "JwtItem", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "type": { + "type": "string" + }, + "value": { + "type": "string" + } + } + }, + "object.Ldap": { + "title": "Ldap", + "type": "object", + "properties": { + "allowSelfSignedCert": { + "type": "boolean" + }, + "autoSync": { + "type": "integer", + "format": "int64" + }, + "baseDn": { + "type": "string" + }, + "createdTime": { + "type": "string" + }, + "customAttributes": { + "additionalProperties": { + "type": "string" + } + }, + "defaultGroup": { + "type": "string" + }, + "enableSsl": { + "type": "boolean" + }, + "filter": { + "type": "string" + }, + "filterFields": { + "type": "array", + "items": { + "type": "string" + } + }, + "host": { + "type": "string" + }, + "id": { + "type": "string" + }, + "lastSync": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "password": { + "type": "string" + }, + "passwordType": { + "type": "string" + }, + "port": { + "type": "integer", + "format": "int64" + }, + "serverName": { + "type": "string" + }, + "username": { + "type": "string" + } + } + }, + "object.LdapUser": { + "title": "LdapUser", + "type": "object", + "properties": { + "EmailAddress": { + "type": "string" + }, + "Mail": { + "type": "string" + }, + "MobileTelephoneNumber": { + "type": "string" + }, + "PostalAddress": { + "type": "string" + }, + "RegisteredAddress": { + "type": "string" + }, + "TelephoneNumber": { + "type": "string" + }, + "address": { + "type": "string" + }, + "attributes": { + "additionalProperties": { + "type": "string" + } + }, + "cn": { + "type": "string" + }, + "country": { + "type": "string" + }, + "countryName": { + "type": "string" + }, + "displayName": { + "type": "string" + }, + "email": { + "type": "string" + }, + "gidNumber": { + "type": "string" + }, + "groupId": { + "type": "string" + }, + "memberOf": { + "type": "string" + }, + "mobile": { + "type": "string" + }, + "uid": { + "type": "string" + }, + "uidNumber": { + "type": "string" + }, + "userPrincipalName": { + "type": "string" + }, + "uuid": { + "type": "string" + } + } + }, + "object.ManagedAccount": { + "title": "ManagedAccount", + "type": "object", + "properties": { + "application": { + "type": "string" + }, + "password": { + "type": "string" + }, + "signinUrl": { + "type": "string" + }, + "username": { + "type": "string" + } + } + }, + "object.MfaAccount": { + "title": "MfaAccount", + "type": "object", + "properties": { + "accountName": { + "type": "string" + }, + "issuer": { + "type": "string" + }, + "origin": { + "type": "string" + }, + "secretKey": { + "type": "string" + } + } + }, + "object.MfaItem": { + "title": "MfaItem", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "rule": { + "type": "string" + } + } + }, + "object.MfaProps": { + "title": "MfaProps", + "type": "object", + "properties": { + "countryCode": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "isPreferred": { + "type": "boolean" + }, + "mfaRememberInHours": { + "type": "integer", + "format": "int64" + }, + "mfaType": { + "type": "string" + }, + "recoveryCodes": { + "type": "array", + "items": { + "type": "string" + } + }, + "secret": { + "type": "string" + }, + "url": { + "type": "string" + } + } + }, + "object.Model": { + "title": "Model", + "type": "object", + "properties": { + "createdTime": { + "type": "string" + }, + "description": { + "type": "string" + }, + "displayName": { + "type": "string" + }, + "modelText": { + "type": "string" + }, + "name": { + "type": "string" + }, + "owner": { + "type": "string" + } + } + }, + "object.OidcDiscovery": { + "title": "OidcDiscovery", + "type": "object", + "properties": { + "authorization_endpoint": { + "type": "string" + }, + "claims_supported": { + "type": "array", + "items": { + "type": "string" + } + }, + "device_authorization_endpoint": { + "type": "string" + }, + "end_session_endpoint": { + "type": "string" + }, + "grant_types_supported": { + "type": "array", + "items": { + "type": "string" + } + }, + "id_token_signing_alg_values_supported": { + "type": "array", + "items": { + "type": "string" + } + }, + "introspection_endpoint": { + "type": "string" + }, + "issuer": { + "type": "string" + }, + "jwks_uri": { + "type": "string" + }, + "request_object_signing_alg_values_supported": { + "type": "array", + "items": { + "type": "string" + } + }, + "request_parameter_supported": { + "type": "boolean" + }, + "response_modes_supported": { + "type": "array", + "items": { + "type": "string" + } + }, + "response_types_supported": { + "type": "array", + "items": { + "type": "string" + } + }, + "scopes_supported": { + "type": "array", + "items": { + "type": "string" + } + }, + "subject_types_supported": { + "type": "array", + "items": { + "type": "string" + } + }, + "token_endpoint": { + "type": "string" + }, + "userinfo_endpoint": { + "type": "string" + } + } + }, + "object.Order": { + "title": "Order", + "type": "object", + "properties": { + "createdTime": { + "type": "string" + }, + "currency": { + "type": "string" + }, + "displayName": { + "type": "string" + }, + "message": { + "type": "string" + }, + "name": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "payment": { + "type": "string" + }, + "price": { + "type": "number", + "format": "double" + }, + "productInfos": { + "type": "array", + "items": { + "$ref": "#/definitions/object.ProductInfo" + } + }, + "products": { + "type": "array", + "items": { + "type": "string" + } + }, + "state": { + "type": "string" + }, + "updateTime": { + "type": "string" + }, + "user": { + "type": "string" + } + } + }, + "object.Organization": { + "title": "Organization", + "type": "object", + "properties": { + "accountItems": { + "type": "array", + "items": { + "$ref": "#/definitions/object.AccountItem" + } + }, + "accountMenu": { + "type": "string" + }, + "balanceCredit": { + "type": "number", + "format": "double" + }, + "balanceCurrency": { + "type": "string" + }, + "countryCodes": { + "type": "array", + "items": { + "type": "string" + } + }, + "createdTime": { + "type": "string" + }, + "defaultApplication": { + "type": "string" + }, + "defaultAvatar": { + "type": "string" + }, + "defaultPassword": { + "type": "string" + }, + "disableSignin": { + "type": "boolean" + }, + "displayName": { + "type": "string" + }, + "enableSoftDeletion": { + "type": "boolean" + }, + "enableTour": { + "type": "boolean" + }, + "favicon": { + "type": "string" + }, + "hasPrivilegeConsent": { + "type": "boolean" + }, + "initScore": { + "type": "integer", + "format": "int64" + }, + "ipRestriction": { + "type": "string" + }, + "ipWhitelist": { + "type": "string" + }, + "isProfilePublic": { + "type": "boolean" + }, + "languages": { + "type": "array", + "items": { + "type": "string" + } + }, + "logo": { + "type": "string" + }, + "logoDark": { + "type": "string" + }, + "masterPassword": { + "type": "string" + }, + "masterVerificationCode": { + "type": "string" + }, + "mfaItems": { + "type": "array", + "items": { + "$ref": "#/definitions/object.MfaItem" + } + }, + "mfaRememberInHours": { + "type": "integer", + "format": "int64" + }, + "name": { + "type": "string" + }, + "navItems": { + "type": "array", + "items": { + "type": "string" + } + }, + "orgBalance": { + "type": "number", + "format": "double" + }, + "owner": { + "type": "string" + }, + "passwordExpireDays": { + "type": "integer", + "format": "int64" + }, + "passwordObfuscatorKey": { + "type": "string" + }, + "passwordObfuscatorType": { + "type": "string" + }, + "passwordOptions": { + "type": "array", + "items": { + "type": "string" + } + }, + "passwordSalt": { + "type": "string" + }, + "passwordType": { + "type": "string" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + }, + "themeData": { + "$ref": "#/definitions/object.ThemeData" + }, + "useEmailAsUsername": { + "type": "boolean" + }, + "userBalance": { + "type": "number", + "format": "double" + }, + "userNavItems": { + "type": "array", + "items": { + "type": "string" + } + }, + "userTypes": { + "type": "array", + "items": { + "type": "string" + } + }, + "websiteUrl": { + "type": "string" + }, + "widgetItems": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "object.Ormer": { + "title": "Ormer", + "type": "object", + "properties": { + "Db": { + "$ref": "#/definitions/sql.DB" + }, + "Engine": { + "$ref": "#/definitions/xorm.Engine" + }, + "dataSourceName": { + "type": "string" + }, + "dbName": { + "type": "string" + }, + "driverName": { + "type": "string" + } + } + }, + "object.Payment": { + "title": "Payment", + "type": "object", + "properties": { + "createdTime": { + "type": "string" + }, + "currency": { + "type": "string" + }, + "detail": { + "type": "string" + }, + "displayName": { + "type": "string" + }, + "invoiceRemark": { + "type": "string" + }, + "invoiceTaxId": { + "type": "string" + }, + "invoiceTitle": { + "type": "string" + }, + "invoiceType": { + "type": "string" + }, + "invoiceUrl": { + "type": "string" + }, + "message": { + "type": "string" + }, + "name": { + "type": "string" + }, + "order": { + "type": "string" + }, + "orderObj": { + "$ref": "#/definitions/object.Order" + }, + "outOrderId": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "payUrl": { + "type": "string" + }, + "personEmail": { + "type": "string" + }, + "personIdCard": { + "type": "string" + }, + "personName": { + "type": "string" + }, + "personPhone": { + "type": "string" + }, + "price": { + "type": "number", + "format": "double" + }, + "products": { + "type": "array", + "items": { + "type": "string" + } + }, + "productsDisplayName": { + "type": "string" + }, + "provider": { + "type": "string" + }, + "state": { + "$ref": "#/definitions/pp.PaymentState" + }, + "successUrl": { + "type": "string" + }, + "type": { + "type": "string" + }, + "user": { + "type": "string" + } + } + }, + "object.Permission": { + "title": "Permission", + "type": "object", + "properties": { + "actions": { + "type": "array", + "items": { + "type": "string" + } + }, + "adapter": { + "type": "string" + }, + "approveTime": { + "type": "string" + }, + "approver": { + "type": "string" + }, + "createdTime": { + "type": "string" + }, + "description": { + "type": "string" + }, + "displayName": { + "type": "string" + }, + "domains": { + "type": "array", + "items": { + "type": "string" + } + }, + "effect": { + "type": "string" + }, + "groups": { + "type": "array", + "items": { + "type": "string" + } + }, + "isEnabled": { + "type": "boolean" + }, + "model": { + "type": "string" + }, + "name": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "resourceType": { + "type": "string" + }, + "resources": { + "type": "array", + "items": { + "type": "string" + } + }, + "roles": { + "type": "array", + "items": { + "type": "string" + } + }, + "state": { + "type": "string" + }, + "submitter": { + "type": "string" + }, + "users": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "object.Plan": { + "title": "Plan", + "type": "object", + "properties": { + "createdTime": { + "type": "string" + }, + "currency": { + "type": "string" + }, + "description": { + "type": "string" + }, + "displayName": { + "type": "string" + }, + "isEnabled": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "options": { + "type": "array", + "items": { + "type": "string" + } + }, + "owner": { + "type": "string" + }, + "paymentProviders": { + "type": "array", + "items": { + "type": "string" + } + }, + "period": { + "type": "string" + }, + "price": { + "type": "number", + "format": "double" + }, + "product": { + "type": "string" + }, + "role": { + "type": "string" + } + } + }, + "object.Pricing": { + "title": "Pricing", + "type": "object", + "properties": { + "application": { + "type": "string" + }, + "createdTime": { + "type": "string" + }, + "description": { + "type": "string" + }, + "displayName": { + "type": "string" + }, + "isEnabled": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "plans": { + "type": "array", + "items": { + "type": "string" + } + }, + "trialDuration": { + "type": "integer", + "format": "int64" + } + } + }, + "object.Product": { + "title": "Product", + "type": "object", + "properties": { + "createdTime": { + "type": "string" + }, + "currency": { + "type": "string" + }, + "description": { + "type": "string" + }, + "detail": { + "type": "string" + }, + "disableCustomRecharge": { + "type": "boolean" + }, + "displayName": { + "type": "string" + }, + "image": { + "type": "string" + }, + "isRecharge": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "price": { + "type": "number", + "format": "double" + }, + "providerObjs": { + "type": "array", + "items": { + "$ref": "#/definitions/object.Provider" + } + }, + "providers": { + "type": "array", + "items": { + "type": "string" + } + }, + "quantity": { + "type": "integer", + "format": "int64" + }, + "rechargeOptions": { + "type": "array", + "items": { + "type": "number", + "format": "double" + } + }, + "sold": { + "type": "integer", + "format": "int64" + }, + "state": { + "type": "string" + }, + "successUrl": { + "type": "string" + }, + "tag": { + "type": "string" + } + } + }, + "object.ProductInfo": { + "title": "ProductInfo", + "type": "object", + "properties": { + "currency": { + "type": "string" + }, + "detail": { + "type": "string" + }, + "displayName": { + "type": "string" + }, + "image": { + "type": "string" + }, + "isRecharge": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "planName": { + "type": "string" + }, + "price": { + "type": "number", + "format": "double" + }, + "pricingName": { + "type": "string" + }, + "quantity": { + "type": "integer", + "format": "int64" + } + } + }, + "object.PrometheusInfo": { + "title": "PrometheusInfo", + "type": "object", + "properties": { + "apiLatency": { + "type": "array", + "items": { + "$ref": "#/definitions/object.HistogramVecInfo" + } + }, + "apiThroughput": { + "type": "array", + "items": { + "$ref": "#/definitions/object.GaugeVecInfo" + } + }, + "totalThroughput": { + "type": "number", + "format": "double" + } + } + }, + "object.Provider": { + "title": "Provider", + "type": "object", + "properties": { + "appId": { + "type": "string" + }, + "bucket": { + "type": "string" + }, + "category": { + "type": "string" + }, + "cert": { + "type": "string" + }, + "clientId": { + "type": "string" + }, + "clientId2": { + "type": "string" + }, + "clientSecret": { + "type": "string" + }, + "clientSecret2": { + "type": "string" + }, + "content": { + "type": "string" + }, + "createdTime": { + "type": "string" + }, + "customAuthUrl": { + "type": "string" + }, + "customLogo": { + "type": "string" + }, + "customTokenUrl": { + "type": "string" + }, + "customUserInfoUrl": { + "type": "string" + }, + "disableSsl": { + "type": "boolean" + }, + "displayName": { + "type": "string" + }, + "domain": { + "type": "string" + }, + "emailRegex": { + "type": "string" + }, + "enablePkce": { + "type": "boolean" + }, + "enableProxy": { + "type": "boolean" + }, + "enableSignAuthnRequest": { + "type": "boolean" + }, + "endpoint": { + "type": "string" + }, + "host": { + "type": "string" + }, + "httpHeaders": { + "additionalProperties": { + "type": "string" + } + }, + "idP": { + "type": "string" + }, + "intranetEndpoint": { + "type": "string" + }, + "issuerUrl": { + "type": "string" + }, + "metadata": { + "type": "string" + }, + "method": { + "type": "string" + }, + "name": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "pathPrefix": { + "type": "string" + }, + "port": { + "type": "integer", + "format": "int64" + }, + "providerUrl": { + "type": "string" + }, + "receiver": { + "type": "string" + }, + "regionId": { + "type": "string" + }, + "scopes": { + "type": "string" + }, + "signName": { + "type": "string" + }, + "subType": { + "type": "string" + }, + "templateCode": { + "type": "string" + }, + "title": { + "type": "string" + }, + "type": { + "type": "string" + }, + "userMapping": { + "additionalProperties": { + "type": "string" + } + } + } + }, + "object.ProviderItem": { + "title": "ProviderItem", + "type": "object", + "properties": { + "canSignIn": { + "type": "boolean" + }, + "canSignUp": { + "type": "boolean" + }, + "canUnlink": { + "type": "boolean" + }, + "countryCodes": { + "type": "array", + "items": { + "type": "string" + } + }, + "name": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "prompted": { + "type": "boolean" + }, + "provider": { + "$ref": "#/definitions/object.Provider" + }, + "rule": { + "type": "string" + }, + "signupGroup": { + "type": "string" + } + } + }, + "object.Record": { + "title": "Record", + "type": "object" + }, + "object.Resource": { + "title": "Resource", + "type": "object", + "properties": { + "application": { + "type": "string" + }, + "createdTime": { + "type": "string" + }, + "description": { + "type": "string" + }, + "fileFormat": { + "type": "string" + }, + "fileName": { + "type": "string" + }, + "fileSize": { + "type": "integer", + "format": "int64" + }, + "fileType": { + "type": "string" + }, + "name": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "parent": { + "type": "string" + }, + "provider": { + "type": "string" + }, + "tag": { + "type": "string" + }, + "url": { + "type": "string" + }, + "user": { + "type": "string" + } + } + }, + "object.Role": { + "title": "Role", + "type": "object", + "properties": { + "createdTime": { + "type": "string" + }, + "description": { + "type": "string" + }, + "displayName": { + "type": "string" + }, + "domains": { + "type": "array", + "items": { + "type": "string" + } + }, + "groups": { + "type": "array", + "items": { + "type": "string" + } + }, + "isEnabled": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "roles": { + "type": "array", + "items": { + "type": "string" + } + }, + "users": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "object.SamlItem": { + "title": "SamlItem", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "nameFormat": { + "type": "string" + }, + "value": { + "type": "string" + } + } + }, + "object.Session": { + "title": "Session", + "type": "object", + "properties": { + "ExclusiveSignin": { + "type": "boolean" + }, + "application": { + "type": "string" + }, + "createdTime": { + "type": "string" + }, + "name": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "sessionId": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "object.SigninItem": { + "title": "SigninItem", + "type": "object", + "properties": { + "customCss": { + "type": "string" + }, + "isCustom": { + "type": "boolean" + }, + "label": { + "type": "string" + }, + "name": { + "type": "string" + }, + "placeholder": { + "type": "string" + }, + "rule": { + "type": "string" + }, + "visible": { + "type": "boolean" + } + } + }, + "object.SigninMethod": { + "title": "SigninMethod", + "type": "object", + "properties": { + "displayName": { + "type": "string" + }, + "name": { + "type": "string" + }, + "rule": { + "type": "string" + } + } + }, + "object.SignupItem": { + "title": "SignupItem", + "type": "object", + "properties": { + "customCss": { + "type": "string" + }, + "label": { + "type": "string" + }, + "name": { + "type": "string" + }, + "options": { + "type": "array", + "items": { + "type": "string" + } + }, + "placeholder": { + "type": "string" + }, + "prompted": { + "type": "boolean" + }, + "regex": { + "type": "string" + }, + "required": { + "type": "boolean" + }, + "rule": { + "type": "string" + }, + "type": { + "type": "string" + }, + "visible": { + "type": "boolean" + } + } + }, + "object.Subscription": { + "title": "Subscription", + "type": "object", + "properties": { + "createdTime": { + "type": "string" + }, + "description": { + "type": "string" + }, + "displayName": { + "type": "string" + }, + "endTime": { + "type": "string" + }, + "name": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "payment": { + "type": "string" + }, + "period": { + "type": "string" + }, + "plan": { + "type": "string" + }, + "pricing": { + "type": "string" + }, + "startTime": { + "type": "string" + }, + "state": { + "$ref": "#/definitions/object.SubscriptionState" + }, + "user": { + "type": "string" + } + } + }, + "object.SubscriptionState": { + "title": "SubscriptionState", + "type": "string", + "enum": [ + "SubStatePending = \"Pending\"", + "SubStateError = \"Error\"", + "SubStateSuspended = \"Suspended\"", + "SubStateActive = \"Active\"", + "SubStateUpcoming = \"Upcoming\"", + "SubStateExpired = \"Expired\"" + ], + "example": "Pending" + }, + "object.Syncer": { + "title": "Syncer", + "type": "object", + "properties": { + "affiliationTable": { + "type": "string" + }, + "avatarBaseUrl": { + "type": "string" + }, + "cert": { + "type": "string" + }, + "createdTime": { + "type": "string" + }, + "database": { + "type": "string" + }, + "databaseType": { + "type": "string" + }, + "errorText": { + "type": "string" + }, + "host": { + "type": "string" + }, + "isEnabled": { + "type": "boolean" + }, + "isReadOnly": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "organization": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "password": { + "type": "string" + }, + "port": { + "type": "integer", + "format": "int64" + }, + "sshHost": { + "type": "string" + }, + "sshPassword": { + "type": "string" + }, + "sshPort": { + "type": "integer", + "format": "int64" + }, + "sshType": { + "type": "string" + }, + "sshUser": { + "type": "string" + }, + "sslMode": { + "type": "string" + }, + "syncInterval": { + "type": "integer", + "format": "int64" + }, + "table": { + "type": "string" + }, + "tableColumns": { + "type": "array", + "items": { + "$ref": "#/definitions/object.TableColumn" + } + }, + "type": { + "type": "string" + }, + "user": { + "type": "string" + } + } + }, + "object.TableColumn": { + "title": "TableColumn", + "type": "object", + "properties": { + "casdoorName": { + "type": "string" + }, + "isHashed": { + "type": "boolean" + }, + "isKey": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "type": { + "type": "string" + }, + "values": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "object.ThemeData": { + "title": "ThemeData", + "type": "object", + "properties": { + "borderRadius": { + "type": "integer", + "format": "int64" + }, + "colorPrimary": { + "type": "string" + }, + "isCompact": { + "type": "boolean" + }, + "isEnabled": { + "type": "boolean" + }, + "themeType": { + "type": "string" + } + } + }, + "object.Ticket": { + "title": "Ticket", + "type": "object", + "properties": { + "content": { + "type": "string" + }, + "createdTime": { + "type": "string" + }, + "displayName": { + "type": "string" + }, + "messages": { + "type": "array", + "items": { + "$ref": "#/definitions/object.TicketMessage" + } + }, + "name": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "state": { + "type": "string" + }, + "title": { + "type": "string" + }, + "updatedTime": { + "type": "string" + }, + "user": { + "type": "string" + } + } + }, + "object.TicketMessage": { + "title": "TicketMessage", + "type": "object", + "properties": { + "author": { + "type": "string" + }, + "isAdmin": { + "type": "boolean" + }, + "text": { + "type": "string" + }, + "timestamp": { + "type": "string" + } + } + }, + "object.Token": { + "title": "Token", + "type": "object", + "properties": { + "accessToken": { + "type": "string" + }, + "accessTokenHash": { + "type": "string" + }, + "application": { + "type": "string" + }, + "code": { + "type": "string" + }, + "codeChallenge": { + "type": "string" + }, + "codeExpireIn": { + "type": "integer", + "format": "int64" + }, + "codeIsUsed": { + "type": "boolean" + }, + "createdTime": { + "type": "string" + }, + "expiresIn": { + "type": "integer", + "format": "int64" + }, + "name": { + "type": "string" + }, + "organization": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "refreshToken": { + "type": "string" + }, + "refreshTokenHash": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "tokenType": { + "type": "string" + }, + "user": { + "type": "string" + } + } + }, + "object.TokenError": { + "title": "TokenError", + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "error_description": { + "type": "string" + } + } + }, + "object.TokenWrapper": { + "title": "TokenWrapper", + "type": "object", + "properties": { + "access_token": { + "type": "string" + }, + "expires_in": { + "type": "integer", + "format": "int64" + }, + "id_token": { + "type": "string" + }, + "refresh_token": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "token_type": { + "type": "string" + } + } + }, + "object.Transaction": { + "title": "Transaction", + "type": "object", + "properties": { + "amount": { + "type": "number", + "format": "double" + }, + "application": { + "type": "string" + }, + "category": { + "$ref": "#/definitions/object.TransactionCategory" + }, + "createdTime": { + "type": "string" + }, + "currency": { + "type": "string" + }, + "displayName": { + "type": "string" + }, + "domain": { + "type": "string" + }, + "name": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "payment": { + "type": "string" + }, + "provider": { + "type": "string" + }, + "state": { + "type": "string" + }, + "subtype": { + "type": "string" + }, + "tag": { + "type": "string" + }, + "type": { + "type": "string" + }, + "user": { + "type": "string" + } + } + }, + "object.TransactionCategory": { + "title": "TransactionCategory", + "type": "string", + "enum": [ + "TransactionCategoryPurchase = \"Purchase\"", + "TransactionCategoryRecharge = \"Recharge\"" + ], + "example": "Purchase" + }, + "object.User": { + "title": "User", + "type": "object", + "properties": { + "accessKey": { + "type": "string" + }, + "accessSecret": { + "type": "string" + }, + "accessToken": { + "type": "string" + }, + "address": { + "type": "array", + "items": { + "type": "string" + } + }, + "addresses": { + "type": "array", + "items": { + "$ref": "#/definitions/object.Address" + } + }, + "adfs": { + "type": "string" + }, + "affiliation": { + "type": "string" + }, + "alipay": { + "type": "string" + }, + "amazon": { + "type": "string" + }, + "apple": { + "type": "string" + }, + "auth0": { + "type": "string" + }, + "avatar": { + "type": "string" + }, + "avatarType": { + "type": "string" + }, + "azuread": { + "type": "string" + }, + "azureadb2c": { + "type": "string" + }, + "baidu": { + "type": "string" + }, + "balance": { + "type": "number", + "format": "double" + }, + "balanceCredit": { + "type": "number", + "format": "double" + }, + "balanceCurrency": { + "type": "string" + }, + "battlenet": { + "type": "string" + }, + "bilibili": { + "type": "string" + }, + "bio": { + "type": "string" + }, + "birthday": { + "type": "string" + }, + "bitbucket": { + "type": "string" + }, + "box": { + "type": "string" + }, + "cart": { + "type": "array", + "items": { + "$ref": "#/definitions/object.ProductInfo" + } + }, + "casdoor": { + "type": "string" + }, + "cloudfoundry": { + "type": "string" + }, + "countryCode": { + "type": "string" + }, + "createdIp": { + "type": "string" + }, + "createdTime": { + "type": "string" + }, + "currency": { + "type": "string" + }, + "custom": { + "type": "string" + }, + "custom10": { + "type": "string" + }, + "custom2": { + "type": "string" + }, + "custom3": { + "type": "string" + }, + "custom4": { + "type": "string" + }, + "custom5": { + "type": "string" + }, + "custom6": { + "type": "string" + }, + "custom7": { + "type": "string" + }, + "custom8": { + "type": "string" + }, + "custom9": { + "type": "string" + }, + "dailymotion": { + "type": "string" + }, + "deezer": { + "type": "string" + }, + "deletedTime": { + "type": "string" + }, + "digitalocean": { + "type": "string" + }, + "dingtalk": { + "type": "string" + }, + "discord": { + "type": "string" + }, + "displayName": { + "type": "string" + }, + "douyin": { + "type": "string" + }, + "dropbox": { + "type": "string" + }, + "education": { + "type": "string" + }, + "email": { + "type": "string" + }, + "emailVerified": { + "type": "boolean" + }, + "eveonline": { + "type": "string" + }, + "externalId": { + "type": "string" + }, + "faceIds": { + "type": "array", + "items": { + "$ref": "#/definitions/object.FaceId" + } + }, + "facebook": { + "type": "string" + }, + "firstName": { + "type": "string" + }, + "fitbit": { + "type": "string" + }, + "gender": { + "type": "string" + }, + "gitea": { + "type": "string" + }, + "gitee": { + "type": "string" + }, + "github": { + "type": "string" + }, + "gitlab": { + "type": "string" + }, + "google": { + "type": "string" + }, + "groups": { + "type": "array", + "items": { + "type": "string" + } + }, + "hash": { + "type": "string" + }, + "heroku": { + "type": "string" + }, + "homepage": { + "type": "string" + }, + "id": { + "type": "string" + }, + "idCard": { + "type": "string" + }, + "idCardType": { + "type": "string" + }, + "influxcloud": { + "type": "string" + }, + "infoflow": { + "type": "string" + }, + "instagram": { + "type": "string" + }, + "intercom": { + "type": "string" + }, + "invitation": { + "type": "string" + }, + "invitationCode": { + "type": "string" + }, + "ipWhitelist": { + "type": "string" + }, + "isAdmin": { + "type": "boolean" + }, + "isDefaultAvatar": { + "type": "boolean" + }, + "isDeleted": { + "type": "boolean" + }, + "isForbidden": { + "type": "boolean" + }, + "isOnline": { + "type": "boolean" + }, + "isVerified": { + "type": "boolean" + }, + "kakao": { + "type": "string" + }, + "karma": { + "type": "integer", + "format": "int64" + }, + "kwai": { + "type": "string" + }, + "language": { + "type": "string" + }, + "lark": { + "type": "string" + }, + "lastChangePasswordTime": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "lastSigninIp": { + "type": "string" + }, + "lastSigninTime": { + "type": "string" + }, + "lastSigninWrongTime": { + "type": "string" + }, + "lastfm": { + "type": "string" + }, + "ldap": { + "type": "string" + }, + "line": { + "type": "string" + }, + "linkedin": { + "type": "string" + }, + "location": { + "type": "string" + }, + "mailru": { + "type": "string" + }, + "managedAccounts": { + "type": "array", + "items": { + "$ref": "#/definitions/object.ManagedAccount" + } + }, + "meetup": { + "type": "string" + }, + "metamask": { + "type": "string" + }, + "mfaAccounts": { + "type": "array", + "items": { + "$ref": "#/definitions/object.MfaAccount" + } + }, + "mfaEmailEnabled": { + "type": "boolean" + }, + "mfaItems": { + "type": "array", + "items": { + "$ref": "#/definitions/object.MfaItem" + } + }, + "mfaPhoneEnabled": { + "type": "boolean" + }, + "mfaPushEnabled": { + "type": "boolean" + }, + "mfaPushProvider": { + "type": "string" + }, + "mfaPushReceiver": { + "type": "string" + }, + "mfaRadiusEnabled": { + "type": "boolean" + }, + "mfaRadiusProvider": { + "type": "string" + }, + "mfaRadiusUsername": { + "type": "string" + }, + "mfaRememberDeadline": { + "type": "string" + }, + "microsoftonline": { + "type": "string" + }, + "multiFactorAuths": { + "type": "array", + "items": { + "$ref": "#/definitions/object.MfaProps" + } + }, + "name": { + "type": "string" + }, + "naver": { + "type": "string" + }, + "needUpdatePassword": { + "type": "boolean" + }, + "nextcloud": { + "type": "string" + }, + "okta": { + "type": "string" + }, + "onedrive": { + "type": "string" + }, + "originalRefreshToken": { + "type": "string" + }, + "originalToken": { + "type": "string" + }, + "oura": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "password": { + "type": "string" + }, + "passwordSalt": { + "type": "string" + }, + "passwordType": { + "type": "string" + }, + "patreon": { + "type": "string" + }, + "paypal": { + "type": "string" + }, + "permanentAvatar": { + "type": "string" + }, + "permissions": { + "type": "array", + "items": { + "$ref": "#/definitions/object.Permission" + } + }, + "phone": { + "type": "string" + }, + "preHash": { + "type": "string" + }, + "preferredMfaType": { + "type": "string" + }, + "properties": { + "additionalProperties": { + "type": "string" + } + }, + "qq": { + "type": "string" + }, + "ranking": { + "type": "integer", + "format": "int64" + }, + "realName": { + "type": "string" + }, + "recoveryCodes": { + "type": "array", + "items": { + "type": "string" + } + }, + "region": { + "type": "string" + }, + "registerSource": { + "type": "string" + }, + "registerType": { + "type": "string" + }, + "roles": { + "type": "array", + "items": { + "$ref": "#/definitions/object.Role" + } + }, + "salesforce": { + "type": "string" + }, + "score": { + "type": "integer", + "format": "int64" + }, + "shopify": { + "type": "string" + }, + "signinWrongTimes": { + "type": "integer", + "format": "int64" + }, + "signupApplication": { + "type": "string" + }, + "slack": { + "type": "string" + }, + "soundcloud": { + "type": "string" + }, + "spotify": { + "type": "string" + }, + "steam": { + "type": "string" + }, + "strava": { + "type": "string" + }, + "stripe": { + "type": "string" + }, + "tag": { + "type": "string" + }, + "tiktok": { + "type": "string" + }, + "title": { + "type": "string" + }, + "totpSecret": { + "type": "string" + }, + "tumblr": { + "type": "string" + }, + "twitch": { + "type": "string" + }, + "twitter": { + "type": "string" + }, + "type": { + "type": "string" + }, + "typetalk": { + "type": "string" + }, + "uber": { + "type": "string" + }, + "updatedTime": { + "type": "string" + }, + "vk": { + "type": "string" + }, + "web3onboard": { + "type": "string" + }, + "webauthnCredentials": { + "type": "array", + "items": { + "$ref": "#/definitions/webauthn.Credential" + } + }, + "wechat": { + "type": "string" + }, + "wecom": { + "type": "string" + }, + "weibo": { + "type": "string" + }, + "wepay": { + "type": "string" + }, + "xero": { + "type": "string" + }, + "yahoo": { + "type": "string" + }, + "yammer": { + "type": "string" + }, + "yandex": { + "type": "string" + }, + "zoom": { + "type": "string" + } + } + }, + "object.Userinfo": { + "title": "Userinfo", + "type": "object", + "properties": { + "address": { + "type": "string" + }, + "aud": { + "type": "string" + }, + "email": { + "type": "string" + }, + "email_verified": { + "type": "boolean" + }, + "groups": { + "type": "array", + "items": { + "type": "string" + } + }, + "is_verified": { + "type": "boolean" + }, + "iss": { + "type": "string" + }, + "name": { + "type": "string" + }, + "permissions": { + "type": "array", + "items": { + "type": "string" + } + }, + "phone": { + "type": "string" + }, + "picture": { + "type": "string" + }, + "preferred_username": { + "type": "string" + }, + "real_name": { + "type": "string" + }, + "roles": { + "type": "array", + "items": { + "type": "string" + } + }, + "sub": { + "type": "string" + } + } + }, + "object.Verification": { + "title": "Verification", + "type": "object" + }, + "object.WebFinger": { + "title": "WebFinger", + "type": "object", + "properties": { + "aliases": { + "$ref": "#/definitions/232967.\u003cnil\u003e.string" + }, + "links": { + "type": "array", + "items": { + "$ref": "#/definitions/object.WebFingerLink" + } + }, + "properties": { + "$ref": "#/definitions/233025.string.string" + }, + "subject": { + "type": "string" + } + } + }, + "object.WebFingerLink": { + "title": "WebFingerLink", + "type": "object", + "properties": { + "href": { + "type": "string" + }, + "rel": { + "type": "string" + } + } + }, + "object.Webhook": { + "title": "Webhook", + "type": "object", + "properties": { + "contentType": { + "type": "string" + }, + "createdTime": { + "type": "string" + }, + "events": { + "type": "array", + "items": { + "type": "string" + } + }, + "headers": { + "type": "array", + "items": { + "$ref": "#/definitions/object.Header" + } + }, + "isEnabled": { + "type": "boolean" + }, + "isUserExtended": { + "type": "boolean" + }, + "method": { + "type": "string" + }, + "name": { + "type": "string" + }, + "objectFields": { + "type": "array", + "items": { + "type": "string" + } + }, + "organization": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "singleOrgOnly": { + "type": "boolean" + }, + "tokenFields": { + "type": "array", + "items": { + "type": "string" + } + }, + "url": { + "type": "string" + } + } + }, + "pp.PaymentState": { + "title": "PaymentState", + "type": "string", + "enum": [ + "PaymentStatePaid = \"Paid\"", + "PaymentStateCreated = \"Created\"", + "PaymentStateCanceled = \"Canceled\"", + "PaymentStateTimeout = \"Timeout\"", + "PaymentStateError = \"Error\"" + ], + "example": "Paid" + }, + "protocol.CredentialAssertion": { + "title": "CredentialAssertion", + "type": "object" + }, + "protocol.CredentialAssertionResponse": { + "title": "CredentialAssertionResponse", + "type": "object" + }, + "protocol.CredentialCreation": { + "title": "CredentialCreation", + "type": "object" + }, + "protocol.CredentialCreationResponse": { + "title": "CredentialCreationResponse", + "type": "object" + }, + "sql.DB": { + "title": "DB", + "type": "object" + }, + "ssh.Client": { + "title": "Client", + "type": "object" + }, + "util.SystemInfo": { + "title": "SystemInfo", + "type": "object", + "properties": { + "cpuUsage": { + "type": "array", + "items": { + "type": "number", + "format": "double" + } + }, + "memoryTotal": { + "type": "integer", + "format": "int64" + }, + "memoryUsed": { + "type": "integer", + "format": "int64" + } + } + }, + "util.VersionInfo": { + "title": "VersionInfo", + "type": "object", + "properties": { + "commitId": { + "type": "string" + }, + "commitOffset": { + "type": "integer", + "format": "int64" + }, + "version": { + "type": "string" + } + } + }, + "webauthn.Credential": { + "title": "Credential", + "type": "object" + }, + "xorm.Engine": { + "title": "Engine", + "type": "object" + }, + "xormadapter.Adapter": { + "title": "Adapter", + "type": "object" + }, + "xormadapter.CasbinRule": { + "title": "CasbinRule", + "type": "object" + } + }, + "securityDefinitions": { + "AccessToken": { + "type": "apiKey", + "name": "Authorization", + "in": "header" + } + } +} diff --git a/legacy/dash-prototype/test-logic-v3.mjs b/legacy/dash-prototype/test-logic-v3.mjs new file mode 100644 index 0000000..edfcbac --- /dev/null +++ b/legacy/dash-prototype/test-logic-v3.mjs @@ -0,0 +1,109 @@ +import { readFileSync } from 'node:fs'; +const core = readFileSync('C:/Users/Administrator/Downloads/v1.2/core.js', 'utf8'); +const invHtml = readFileSync('C:/Users/Administrator/Downloads/v1.2/inventory-system.html', 'utf8'); +const chgHtml = readFileSync('C:/Users/Administrator/Downloads/v1.2/change-inventory.html', 'utf8'); +const m1 = invHtml.match(/