{
  "schemaVersion": 1,
  "name": "Textxt Mini App Bridge",
  "bridgeVersion": "1.0",
  "hostVersion": "1.1.0",
  "artifacts": {
    "developerGuide": "https://textxt.com/mini-apps/developers/",
    "aiBuildGuide": "https://textxt.com/mini-apps/developers/ai-build.md",
    "manifestSchema": "https://textxt.com/mini-apps/schema/manifest-v1.json",
    "sdk": "https://textxt.com/mini-apps/sdk/1.0.3/textxt-mini-app.js",
    "types": "https://textxt.com/mini-apps/sdk/textxt-mini-app.d.ts",
    "starter": "https://textxt.com/mini-apps/starter/"
  },
  "permissions": {
    "readContext": "Read chat context (user, theme, topic)",
    "sendMessage": "Send messages into the chat",
    "setDraft": "Update draft text in composer",
    "openTopic": "Switch active topic",
    "uploadFile": "Upload files to the chat",
    "generateImages": "Generate and edit images with AI",
    "wallet": "View TXT balance and request confirmed payments",
    "gptPro": "Use GPT PRO AI and spend TXT",
    "invokeServices": "Use services provided by this Mini App",
    "boards": "Create, read, and update mini app boards",
    "polls": "Create polls and record votes"
  },
  "commands": {
    "getContext": { "permission": "readContext" },
    "pickChatContent": { "permission": "readContext" },
    "sendMessage": { "permission": "sendMessage" },
    "setDraft": { "permission": "setDraft" },
    "updateMessage": { "permission": "sendMessage" },
    "listBoards": { "permission": "boards" },
    "createBoard": { "permission": "boards" },
    "createCaroMatch": { "permission": "boards" },
    "getBoard": { "permission": "boards" },
    "mutateCaroMatch": { "permission": "boards" },
    "saveBoard": { "permission": "boards" },
    "subscribeBoard": { "permission": "boards" },
    "unsubscribeBoard": { "permission": "boards" },
    "shareMiniAppMessage": { "permission": "sendMessage" },
    "openTopic": { "permission": "openTopic" },
    "closeMiniApp": { "permission": null },
    "resize": { "permission": null },
    "logEvent": { "permission": null },
    "reportError": { "permission": null },
    "uploadFile": { "permission": "uploadFile" },
    "generateImage": { "permission": "generateImages" },
    "getTxtWallet": { "permission": "wallet" },
    "requestTxtPayment": { "permission": "wallet" },
    "invokeTextxtService": { "permission": "invokeServices" },
    "getGptProConfig": { "permission": "gptPro" },
    "getGptProCreditRequest": { "permission": "gptPro" },
    "createGptProCreditRequest": { "permission": "gptPro" },
    "createGptProPublicShare": { "permission": "gptPro" },
    "saveGptProResponseToTextxt": { "permission": "gptPro" },
    "listGptProConversations": { "permission": "gptPro" },
    "getGptProConversation": { "permission": "gptPro" },
    "submitGptProQuestion": { "permission": "gptPro" },
    "getGptProResult": { "permission": "gptPro" },
    "cancelGptProQuestion": { "permission": "gptPro" },
    "downloadGptProOutput": { "permission": "gptPro" },
    "startGptProGameSession": { "permission": "gptPro" },
    "submitGptProGameScore": { "permission": "gptPro" },
    "getGptProGameLeaderboard": { "permission": "gptPro" },
    "openCreditWallet": { "permission": null },
    "createPoll": { "permission": "polls" },
    "getPoll": { "permission": "polls" },
    "listPolls": { "permission": "polls" },
    "castVote": { "permission": "polls" },
    "closePoll": { "permission": "polls" }
  },
  "events": [
    "context",
    "permissionsChanged",
    "boardChanged",
    "pollUpdated",
    "themeChanged",
    "localeChanged",
    "networkChanged",
    "layoutChanged",
    "visibilityChanged",
    "fullscreenChanged",
    "sessionExpired"
  ],
  "envelope": {
    "type": ["command", "event", "response"],
    "required": ["type", "name"],
    "properties": {
      "type": { "type": "string" },
      "name": { "type": "string", "minLength": 1 },
      "requestId": { "type": "string" },
      "payload": {}
    }
  },
  "security": {
    "sessionIsAuthentication": false,
    "directFirestoreAccess": false,
    "rawPostMessageSupported": false,
    "productionHttpsRequired": true,
    "immutableVersionedStartUrlRequired": true,
    "requiredFrameAncestors": [
      "https://textxt.com",
      "https://textxt-14209.web.app"
    ]
  }
}
