InícioDocs para devsTodas as capacidades de extensão e onde implementá-las
Tutoriais de implementação 14 min de leitura

Todas as capacidades de extensão e onde implementá-las

Mapa explícito de cada método para seu projeto, helpers, superfícies, integrações de servidor e limites da release.

Como usar este mapa

Este índice cruza os contratos públicos da revisão 0e91fef do host 0.3.1 com os projetos de implementação. Ele cobre 139 métodos da API de domínio, 17 operações do SDK original, 13 superfícies e os helpers de ciclo de vida. O link de cada método leva a código executável, entradas e teste; não é uma promessa de que qualquer combinação arbitrária de ideias é suportada.

Comece pelo resultado que quer construir, e use a tabela para localizar uma capacidade específica. Uma receita pode reunir várias chamadas porque criar, configurar, consultar e apagar fazem parte do mesmo recurso. As receitas executam apenas por clique e identificam ações destrutivas. Use uma instalação/campanha descartável.

Qual pacote preciso criar

Quero entregarEstruturaTutorial completo
Ferramenta de diário, ficha, carta, áudio ou mesaPacote de navegador com entry e registerProjeto básico e famílias abaixo
RPG com fichas, tipos, iniciativa e catálogoUm único pacote system, entry, assets e content.compendiumsSistema completo
Traduzir meu móduloCatálogos privados registrados em api.i18nTradução e eventos
Acrescentar idioma à instalaçãoPacote locales sem system/DjangoPacote de idioma
Rota ou serviço Python confiávelPacote Django, ativação pelo dono/RunnerIntegração de servidor
Distribuir uma versão aprovadaZIP imutável, hash, assinatura e catálogo HTTPSPublicação

Não existe um enum global de tipos de módulo. “Compêndio” pode significar pack mutável da campanha, catálogo instalado com um sistema ou catálogo local do operador; cada origem tem regras próprias. A montagem depende da superfície, não do nome que você deu ao módulo.

Todos os métodos de domínio

Em métodos genéricos, use api.dominio.metodo(payload, {signal, requestId}) com os campos da receita. Leituras não precisam requestId. list/get são projeções autorizadas de state. actors.sheet, dice.roll, table.search, chat.remove e outras conveniências têm assinaturas próprias demonstradas nos guias. Não confunda o nome JavaScript com a ação da fachada Python.

api.actors

MétodoAção nativaProjeto com implementação
actors.createactor.createCódigo, entradas e teste
actors.updateactor.updateCódigo, entradas e teste
actors.deleteactor.deleteCódigo, entradas e teste
actors.setPermissionsactor.permissionsCódigo, entradas e teste
actors.saveSheetsheet.saveCódigo, entradas e teste
actors.createFolderfolder.createCódigo, entradas e teste
actors.updateFolderfolder.updateCódigo, entradas e teste
actors.deleteFolderfolder.deleteCódigo, entradas e teste
actors.deleteAssetasset.deleteCódigo, entradas e teste
actors.statestateCódigo, entradas e teste
actors.liststate projectionCódigo, entradas e teste
actors.getstate projectionCódigo, entradas e teste
actors.sheetsheetCódigo, entradas e teste

api.tokens

MétodoAção nativaProjeto com implementação
tokens.placeplaceCódigo, entradas e teste
tokens.movemoveCódigo, entradas e teste
tokens.removeremoveCódigo, entradas e teste
tokens.duplicateduplicateCódigo, entradas e teste
tokens.setHiddenhiddenCódigo, entradas e teste
tokens.setVisionvisionCódigo, entradas e teste
tokens.configureconfigureCódigo, entradas e teste
tokens.addConditioncondition-addCódigo, entradas e teste
tokens.removeConditioncondition-removeCódigo, entradas e teste
tokens.statestateCódigo, entradas e teste
tokens.liststate projectionCódigo, entradas e teste
tokens.getstate projectionCódigo, entradas e teste

api.maps

MétodoAção nativaProjeto com implementação
maps.updateupdateCódigo, entradas e teste
maps.movemoveCódigo, entradas e teste
maps.deletedeleteCódigo, entradas e teste
maps.activateactivateCódigo, entradas e teste
maps.updateObjectsobjectsCódigo, entradas e teste
maps.createFolderfolder-createCódigo, entradas e teste
maps.updateFolderfolder-updateCódigo, entradas e teste
maps.deleteFolderfolder-deleteCódigo, entradas e teste
maps.statestateCódigo, entradas e teste
maps.liststate projectionCódigo, entradas e teste
maps.getstate projectionCódigo, entradas e teste
maps.layerslayersCódigo, entradas e teste

api.journals

MétodoAção nativaProjeto com implementação
journals.createcreateCódigo, entradas e teste
journals.updateupdateCódigo, entradas e teste
journals.deletedeleteCódigo, entradas e teste
journals.movemoveCódigo, entradas e teste
journals.setAccessaccessCódigo, entradas e teste
journals.presentpresentCódigo, entradas e teste
journals.createFolderfolder-createCódigo, entradas e teste
journals.updateFolderfolder-updateCódigo, entradas e teste
journals.moveFolderfolder-moveCódigo, entradas e teste
journals.deleteFolderfolder-deleteCódigo, entradas e teste
journals.setStatusstatusCódigo, entradas e teste
journals.setObjectiveobjectiveCódigo, entradas e teste
journals.assignCharactersassignCódigo, entradas e teste
journals.createBoardQuestboard-createCódigo, entradas e teste
journals.addQuestboard-addCódigo, entradas e teste
journals.removeQuestboard-removeCódigo, entradas e teste
journals.pinQuestboard-pinCódigo, entradas e teste
journals.reorderQuestsboard-reorderCódigo, entradas e teste
journals.rollrollCódigo, entradas e teste
journals.resetresetCódigo, entradas e teste
journals.statestateCódigo, entradas e teste
journals.liststate projectionCódigo, entradas e teste
journals.getstate projectionCódigo, entradas e teste

api.items

MétodoAção nativaProjeto com implementação
items.createcreateCódigo, entradas e teste
items.updateupdateCódigo, entradas e teste
items.deletedeleteCódigo, entradas e teste
items.duplicateduplicateCódigo, entradas e teste
items.setPermissionspermissionsCódigo, entradas e teste
items.createFolderfolder-createCódigo, entradas e teste
items.updateFolderfolder-updateCódigo, entradas e teste
items.deleteFolderfolder-deleteCódigo, entradas e teste
items.statestateCódigo, entradas e teste
items.liststate projectionCódigo, entradas e teste
items.getstate projectionCódigo, entradas e teste

api.combat

MétodoAção nativaProjeto com implementação
combat.addaddCódigo, entradas e teste
combat.removeremoveCódigo, entradas e teste
combat.configureconfigureCódigo, entradas e teste
combat.setInitiativeinitiativeCódigo, entradas e teste
combat.rollInitiativerollCódigo, entradas e teste
combat.toggletoggleCódigo, entradas e teste
combat.moveUporder-upCódigo, entradas e teste
combat.moveDownorder-downCódigo, entradas e teste
combat.setTurnset-turnCódigo, entradas e teste
combat.nextRoundnext-roundCódigo, entradas e teste
combat.previousRoundprevious-roundCódigo, entradas e teste
combat.startstartCódigo, entradas e teste
combat.stopstopCódigo, entradas e teste
combat.nextTurnnextCódigo, entradas e teste
combat.previousTurnpreviousCódigo, entradas e teste
combat.statestateCódigo, entradas e teste

api.cards

MétodoAção nativaProjeto com implementação
cards.definedefineCódigo, entradas e teste
cards.instantiateinstantiateCódigo, entradas e teste
cards.createcreateCódigo, entradas e teste
cards.drawdrawCódigo, entradas e teste
cards.shuffleshuffleCódigo, entradas e teste
cards.resetresetCódigo, entradas e teste
cards.deleteDeckdelete-deckCódigo, entradas e teste
cards.discarddiscardCódigo, entradas e teste
cards.returnreturnCódigo, entradas e teste
cards.givegiveCódigo, entradas e teste
cards.placeplaceCódigo, entradas e teste
cards.taketakeCódigo, entradas e teste
cards.flipflipCódigo, entradas e teste
cards.movemoveCódigo, entradas e teste
cards.statestateCódigo, entradas e teste

api.audio

MétodoAção nativaProjeto com implementação
audio.updateTracktrack-updateCódigo, entradas e teste
audio.deleteTracktrack-deleteCódigo, entradas e teste
audio.createPlaylistplaylist-createCódigo, entradas e teste
audio.updatePlaylistplaylist-updateCódigo, entradas e teste
audio.deletePlaylistplaylist-deleteCódigo, entradas e teste
audio.createSpatialSoundspatial-createCódigo, entradas e teste
audio.updateSpatialSoundspatial-updateCódigo, entradas e teste
audio.deleteSpatialSoundspatial-deleteCódigo, entradas e teste
audio.playplayCódigo, entradas e teste
audio.pausepauseCódigo, entradas e teste
audio.stopstopCódigo, entradas e teste
audio.seekseekCódigo, entradas e teste
audio.setVolumevolumeCódigo, entradas e teste
audio.startScorescore-startCódigo, entradas e teste
audio.pauseScorescore-pauseCódigo, entradas e teste
audio.resumeScorescore-resumeCódigo, entradas e teste
audio.stopScorescore-stopCódigo, entradas e teste
audio.nextScorescore-nextCódigo, entradas e teste
audio.previousScorescore-previousCódigo, entradas e teste
audio.statestateCódigo, entradas e teste

api.compendiums

MétodoAção nativaProjeto com implementação
compendiums.createcreateCódigo, entradas e teste
compendiums.configureconfigureCódigo, entradas e teste
compendiums.readreadCódigo, entradas e teste
compendiums.deletedeleteCódigo, entradas e teste
compendiums.addaddCódigo, entradas e teste
compendiums.removeremoveCódigo, entradas e teste
compendiums.importimportCódigo, entradas e teste
compendiums.setPermissionspermissionsCódigo, entradas e teste
compendiums.statestateCódigo, entradas e teste

api.chat

MétodoAção nativaProjeto com implementação
chat.historyhistoryCódigo, entradas e teste
chat.sendsendCódigo, entradas e teste
chat.removeremoveCódigo, entradas e teste
chat.clearclearCódigo, entradas e teste

api.dice

MétodoAção nativaProjeto com implementação
dice.rollrollCódigo, entradas e teste

api.table

MétodoAção nativaProjeto com implementação
table.searchsearchCódigo, entradas e teste
table.lobbylobbyCódigo, entradas e teste
table.updateLobbyupdateLobbyCódigo, entradas e teste

Todas as operações do SDK original

Use host.call(nome,payload,{signal,onProgress}) somente com o contrato correspondente. File e Blob são objetos reais, não JSON nem caminhos locais. DTOs e expectedRevision do SDK original são diferentes de version/sheetVersion da API de domínio. Os projetos abaixo mostram essa diferença em código.

Operação originalTransporte/efeitoProjeto
actor.listjson / readImplementação completa
actor.readjson / readImplementação completa
actor.createjson / writeImplementação completa
actor.updatejson / writeImplementação completa
actor.data.readjson / readImplementação completa
actor.data.updatejson / writeImplementação completa
actor.deletejson / writeImplementação completa
token.readjson / readImplementação completa
token.movejson / writeImplementação completa
token.data.readjson / readImplementação completa
token.data.updatejson / writeImplementação completa
asset.listjson / readImplementação completa
asset.uploadmultipart / writeImplementação completa
asset.downloadbinary / readImplementação completa
actor.image.uploadmultipart / writeImplementação completa
card.asset.uploadmultipart / writeImplementação completa
locale.applyjson / localImplementação completa

Todas as superfícies de montagem

augment acrescenta controles à interface existente. replace assume o corpo completo daquela superfície; você passa a fornecer a navegação e ações que quer oferecer. Para ficha de ator/token, o sistema completo mostra substituição funcional; para agir na ficha existente, use augment. As 13 páginas abaixo fornecem arquivos completos para experimentar cada superfície.

SuperfícieModos aceitosExemplo completo
actor.directoryaugment, replaceactor.directory
actor.sheetaugment, replaceactor.sheet
token.sheetaugment, replacetoken.sheet
item.directoryaugment, replaceitem.directory
item.sheetaugment, replaceitem.sheet
scene.directoryaugment, replacescene.directory
scene.controlsaugment, replacescene.controls
scene.overlayaugment, replacescene.overlay
chat.logaugment, replacechat.log
combat.trackeraugment, replacecombat.tracker
journal.sheetaugment, replacejournal.sheet
preferencesaugment, replacepreferences
table.interfaceaugment, replacetable.interface

Helpers locais e ciclo de vida

CapacidadeAPI concretaProjeto para adaptar
Carregar arquivos do pacoteassets.url / text / json / bytesTradução e arquivos
Anexar/remover CSSstyles.use e disposerPrimeiro módulo
Preferência no navegadorstorage.local.get / set / deleteArmazenamento
Preferência por conta/mesastorage.user.get / set / delete / listArmazenamento
Configuração compartilhada GMstorage.table.get / set / delete / listArmazenamento
Configuração com interfacecustomize(context) e preferencesFormulário completo
Catálogos privadosapi.i18n.locale / t / has / number / register / onChangeTradução
Janela nativa e fechamentoapi.ui.openModal; close / suspend / resume; gravewright:sheet-flushCustomize e modais
Registrar componenteregister, equivalente ao registro de UI na fase registerProjeto básico
Atualização autorizadaapi.events.on e unsubscribeEventos
Avisos antigos de atorevents.on actor.created / actor.updated / actor.deletedContrato e limites
Coordenadas e pan/zoomviewport.sceneToViewport / viewportToScene; scene.viewport.changedOverlay executável
Cancelar e liberarsignal e onDispose em cada montagem; start / register / stopProjeto básico

Os eventos de domínio incluem actors.changed, tokens.changed, maps.changed, maps.layersChanged, journals.changed, items.changed, combat.changed, cards.changed, audio.changed, compendiums.changed, chat.changed, chat.message, table.presence e table.lobbyChanged. Podem agrupar invalidações e fazer leituras iniciais/reconexão; não disparam uma automação uma única vez garantida. Cada assinatura precisa ser liberada.

Map Builder e automação visual

Os quatro donos door/lever/torch/region, as conexões execution/data e os 44 node.type têm grafo completo, JSON e passos no editor. O catálogo de nós explica recursos, alvos e efeitos. Use a ação nativa de Test behavior/playtest antes de aplicar na cena. Esses grafos são documentos de desenvolvimento, não uma API browser para importar qualquer JSON nem um campo novo do manifesto.

O tutorial de cenas mostra a API pública de camadas/objetos. Criar novos kinds ou portas do editor exige contribuição ao core e seus testes; a release 0.3.1 não promete uma API de plugin para registrar tipos arbitrários de nó.

Integrações de servidor e limites da release

A integração Django mostra Context.from_request, comandos públicos, rotas autenticadas/CSRF e sinais depois do commit. As fachadas Python api.actors/tokens/maps/journals/items/combat/cards/audio/compendiums/resources/chat/dice/table/events têm assinaturas na referência. O contexto carrega IDs, sem congelar permissões; cada serviço revalida acesso. Contas, administração, instalação e campanhas são adaptadores globais da aplicação, não métodos do api entregue a uma montagem: consulte a referência de adaptadores para ferramentas do operador.

Não há maps.create ou audio.upload no SDK de domínio: os tutoriais preparam cena/arquivos pela interface nativa e usam as operações públicas disponíveis depois. Não há SQL/Python arbitrário por chamada de módulo browser, permissão de GM implícita, mudança de campanha por UUID nem bypass de conteúdo privado. system.combat aceita iniciativa declarativa. Provedores Python existentes são código confiável de servidor; não justificam distribuir um novo RPG como sistema mais Server Rules separado. Uma necessidade sem contrato deve ser apresentada como limitação, preservando a versão solicitada.

Como conferir a cobertura ao evoluir o host

Este mapa usa uma cópia versionada de frontend.json e registry.json em extension-contracts.json. Ao atualizar a documentação para outro host, compare os arquivos fonte e a revisão, atualize os projetos e execute suas receitas contra os serviços reais. Compatibilidade de nome não prova payload, permissão, efeito visual ou transação. Refaça testes de escrita e dados independentes em fixtures novas.