先获取能力清单
const w = await mn.api('/writing/capabilities');
if (!w) return;
mn.log(w.limits, w.routes);{
"carriers": [
"blank",
"focus"
],
"routes": {
"content": "/writing/content",
"context": "/writing/context",
"resolve": "/writing/resolve",
"windows": "/writing/windows"
},
"prepare": false,
"includesUnsavedCanvas": false,
"managedLayers": false,
"windowEnumeration": true,
"confirmsWritable": false,
"pencilCommit": {
"canSwitch": false,
"carriers": [
"focus"
],
"inputFrozen": false,
"operationRecord": "process-local",
"requiresConfirm": true,
"result": "/writing/pencil-result",
"submit": "/writing/pencil-commit"
},
"focusTransition": {
"changesLayer": false,
"createsAttempt": false,
"result": "/writing/transition-result",
"savesCurrentPencil": true,
"submit": "/writing/focus-enter"
},
"ownedBlankEntry": {
"changesLayer": false,
"createsAttempt": false,
"opensOwnedBlank": true,
"result": "/writing/transition-result",
"submit": "/writing/blank-enter"
},
"stage": "persisted-inspection",
"practiceSessionRecord": {
"assess": "/writing/session-assess",
"blankBegin": "/writing/session-blank-begin",
"canCreate": true,
"canSwitch": false,
"cancel": "/writing/session-cancel",
"create": "/writing/session-create",
"finish": "/writing/session-finish",
"focusBegin": "/writing/session-focus-begin",
"pause": "/writing/session-pause",
"preview": "/writing/session-preview",
"read": "/writing/session-read",
"ready": false,
"reconcile": "/writing/session-reconcile",
"reserve": "/writing/session-reserve",
"restore": "/writing/session-layer-restore",
"result": "/writing/transition-result",
"resume": "/writing/session-resume",
"storage": "device-local"
},
"bridgeApiVersion": "0.91",
"documentPencilCommit": {
"canSwitch": false,
"inputFrozen": false,
"requiresConfirm": true,
"result": "/writing/pencil-result",
"submit": "/writing/pencil-document-commit",
"targetFrom": "context.surfaces[].state.visiblePages[].continuousCommitTarget|pagedCommitTarget",
"writers": [
"continuous",
"paged"
]
},
"ownedBlankPreparation": {
"changesLayer": false,
"createsAttempt": false,
"opensAnswerSpace": false,
"result": "/writing/transition-result",
"submit": "/writing/blank-prepare"
},
"sessionContext": false,
"resolve": true,
"flush": false,
"pencilInputGate": {
"grantsCallerLease": false,
"maximumSeconds": 15,
"programmaticNavigationBlocked": false,
"scope": "application-ui-only"
},
"liveWindowContext": true,
"contentInventory": true,
"practiceOnCurrentLayer": {
"blankEnter": "/writing/session-blank-enter",
"changesLayer": false,
"createsAttempt": false,
"exit": "/writing/session-exit",
"focusEnter": "/writing/session-focus-enter",
"restoresOnExit": false,
"result": "/writing/transition-result",
"takesLease": false
},
"managedLayerTrial": {
"blankBegin": "/writing/blank-begin",
"canSwitch": false,
"compact": "/writing/layer-compact",
"confirmsPersistedLayer": true,
"createsAttempt": false,
"focusBegin": "/writing/focus-begin",
"leaseStorage": "device-local",
"read": "/writing/layer-leases",
"ready": false,
"restore": "/writing/layer-restore",
"result": "/writing/transition-result"
},
"schemaVersion": 1,
"snapshot": false,
"practicePlan": {
"maxQuestions": 20,
"read": "/writing/plan-read",
"save": "/writing/plan-save",
"startsWriting": false,
"storage": "device-local"
},
"switch": false,
"limits": {
"layerIds": 32,
"parts": 2048,
"rows": 256
}
}手写会话
获取手写能力清单
调用手写会话的其他路由之前须先读取该接口,确认 MarginNote 支持的子能力。
该接口返回能力清单,不构成可写许可。清单里某项开关为假时,对应的那一类操作当前不可用。
GET
/
writing
/
capabilities
先获取能力清单
const w = await mn.api('/writing/capabilities');
if (!w) return;
mn.log(w.limits, w.routes);{
"carriers": [
"blank",
"focus"
],
"routes": {
"content": "/writing/content",
"context": "/writing/context",
"resolve": "/writing/resolve",
"windows": "/writing/windows"
},
"prepare": false,
"includesUnsavedCanvas": false,
"managedLayers": false,
"windowEnumeration": true,
"confirmsWritable": false,
"pencilCommit": {
"canSwitch": false,
"carriers": [
"focus"
],
"inputFrozen": false,
"operationRecord": "process-local",
"requiresConfirm": true,
"result": "/writing/pencil-result",
"submit": "/writing/pencil-commit"
},
"focusTransition": {
"changesLayer": false,
"createsAttempt": false,
"result": "/writing/transition-result",
"savesCurrentPencil": true,
"submit": "/writing/focus-enter"
},
"ownedBlankEntry": {
"changesLayer": false,
"createsAttempt": false,
"opensOwnedBlank": true,
"result": "/writing/transition-result",
"submit": "/writing/blank-enter"
},
"stage": "persisted-inspection",
"practiceSessionRecord": {
"assess": "/writing/session-assess",
"blankBegin": "/writing/session-blank-begin",
"canCreate": true,
"canSwitch": false,
"cancel": "/writing/session-cancel",
"create": "/writing/session-create",
"finish": "/writing/session-finish",
"focusBegin": "/writing/session-focus-begin",
"pause": "/writing/session-pause",
"preview": "/writing/session-preview",
"read": "/writing/session-read",
"ready": false,
"reconcile": "/writing/session-reconcile",
"reserve": "/writing/session-reserve",
"restore": "/writing/session-layer-restore",
"result": "/writing/transition-result",
"resume": "/writing/session-resume",
"storage": "device-local"
},
"bridgeApiVersion": "0.91",
"documentPencilCommit": {
"canSwitch": false,
"inputFrozen": false,
"requiresConfirm": true,
"result": "/writing/pencil-result",
"submit": "/writing/pencil-document-commit",
"targetFrom": "context.surfaces[].state.visiblePages[].continuousCommitTarget|pagedCommitTarget",
"writers": [
"continuous",
"paged"
]
},
"ownedBlankPreparation": {
"changesLayer": false,
"createsAttempt": false,
"opensAnswerSpace": false,
"result": "/writing/transition-result",
"submit": "/writing/blank-prepare"
},
"sessionContext": false,
"resolve": true,
"flush": false,
"pencilInputGate": {
"grantsCallerLease": false,
"maximumSeconds": 15,
"programmaticNavigationBlocked": false,
"scope": "application-ui-only"
},
"liveWindowContext": true,
"contentInventory": true,
"practiceOnCurrentLayer": {
"blankEnter": "/writing/session-blank-enter",
"changesLayer": false,
"createsAttempt": false,
"exit": "/writing/session-exit",
"focusEnter": "/writing/session-focus-enter",
"restoresOnExit": false,
"result": "/writing/transition-result",
"takesLease": false
},
"managedLayerTrial": {
"blankBegin": "/writing/blank-begin",
"canSwitch": false,
"compact": "/writing/layer-compact",
"confirmsPersistedLayer": true,
"createsAttempt": false,
"focusBegin": "/writing/focus-begin",
"leaseStorage": "device-local",
"read": "/writing/layer-leases",
"ready": false,
"restore": "/writing/layer-restore",
"result": "/writing/transition-result"
},
"schemaVersion": 1,
"snapshot": false,
"practicePlan": {
"maxQuestions": 20,
"read": "/writing/plan-read",
"save": "/writing/plan-save",
"startsWriting": false,
"storage": "device-local"
},
"switch": false,
"limits": {
"layerIds": 32,
"parts": 2048,
"rows": 256
}
}响应
200 - application/json
能力清单。可读的子项与 GET /capabilities 的手写会话分组同形。
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes