{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-get-started/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["quickfacts","fact","roles","role","cap","flow","step","status","admonition"]},"type":"markdown"},"seo":{"title":"Members & roles - workspace access","projectTitle":"Vilna Docs","description":"Invite teammates to a Vilna workspace and control access with workspace and project roles - Owner, Admin, Member, Editor, Viewer.","siteUrl":"https://docs.vilna.io","lang":"en-US","image":"https://cdn.vilna.io/docs/og/26103121/en/get-started-members.png","meta":[{"name":"og:type","content":"website"},{"name":"og:site_name","content":"Vilna Documentation"},{"name":"og:image:width","content":"1200"},{"name":"og:image:height","content":"630"},{"name":"twitter:card","content":"summary_large_image"},{"name":"robots","content":"max-image-preview:large"}],"llmstxt":{"title":"Vilna API Documentation","description":"Vilna Platform API monitors public blockchain activity, balances and invoices and delivers signed webhooks. It does not sign or broadcast transactions. VKS separately coordinates account setup, signer approvals and signing, retains signed results and can submit a complete transaction to a node. Node acceptance is not blockchain confirmation. Each API uses its own scoped credential in X-Api-Key. Workspace setup and VKS-key issuance start in the Dashboard.\n","details":{"content":"**Platform monitoring.** Platform observes merchant-controlled addresses,\nsupplied directly or derived from the merchant's extended public key (xPub).\nInvoices report incoming on-chain activity; they do not initiate transfers.\n\n**APIs and their credentials.**\n\n- Platform API (api.vilna.io) - monitor addresses and extended public keys, read\n  balances and transactions, reconcile incoming payments, create invoices, and\n  receive events.\n- Blockchain RPC (rpc.vilna.io) - JSON-RPC and gRPC node access across every\n  supported network behind one key.\n- Management API (mgmt.vilna.io) - published workspace, project, member and key\n  operations, with Dashboard bootstrap and credential grant limits.\n- VKS API (vks.vilna.io) - workspace signers, vaults, accounts, signing requests,\n  signed results and optional asynchronous send. Uses a Dashboard-issued VKS key\n  with vks:access; the public Management API has no VKS-key issuance route.\n\n**Pages with no markdown source**, so they cannot be linked below:\n\n- Product overview: https://docs.vilna.io/\n- All guides: https://docs.vilna.io/guides\n"},"excludeFiles":["legal/terms.md","legal/privacy.md","legal/cookies.md","@l10n/ru/legal/terms.md","@l10n/ru/legal/privacy.md","@l10n/ru/legal/cookies.md"],"sections":[{"title":"Getting Started","description":"What the platform is, how to make a first call, and answers to common questions","includeFiles":["get-started/quickstart.md","get-started/dashboard.md","get-started/core-concepts.md","get-started/members.md","get-started/faq.md"]},{"title":"API Reference","description":"Authentication, permissions, idempotency, errors, standards, and per-service endpoint documentation","includeFiles":["apis/authentication.md","apis/permissions.md","apis/idempotency.md","apis/errors.md","apis/standards.md","apis/networks.md","apis/platform/@v2/index.md","apis/platform/@v2/webhooks.md","apis/platform/@v2/api.yaml","apis/mgmt/index.md","apis/mgmt/api.yaml","apis/vks/index.md","apis/vks/api.yaml","apis/rpc/index.md","apis/rpc/json-rpc.md","apis/rpc/grpc.md"]},{"title":"Developer Guides","description":"Integration patterns, events, notifications, and tooling","includeFiles":["guides/events.md","guides/channels.md","guides/tokens.md","guides/integration-patterns.md","guides/mcp.md","guides/simulation.md","guides/invoices.md","guides/vks.md"]},{"title":"Trust and custody","description":"The non-custodial model in plain terms","includeFiles":["legal/non-custodial.md"]},{"title":"Optional","description":"Background reading and release history","includeFiles":["get-started/blockchain-basics.md","changelog.md"]}]},"priority":0.6,"jsonLd":{"@context":"https://schema.org","@graph":[{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://docs.vilna.io/"},{"@type":"ListItem","position":2,"name":"Get Started","item":"https://docs.vilna.io/get-started"},{"@type":"ListItem","position":3,"name":"Members & roles"}]},{"@type":"TechArticle","headline":"Members & roles","description":"Invite teammates to a Vilna workspace and control access with workspace and project roles - Owner, Admin, Member, Editor, Viewer.","url":"https://docs.vilna.io/get-started/members","datePublished":"2026-06-08","dateModified":"2026-11-01","proficiencyLevel":"Beginner","author":{"@id":"https://vilna.io/#organization"},"publisher":{"@id":"https://vilna.io/#organization"}}]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"members--roles","__idx":0},"children":["Members & roles"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["workspace"]}," is where your team works together. You invite teammates to a workspace and give each one a role that controls what they can see and do. Inside a workspace, ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["projects"]}," group your monitoring work, and you can grant per-project access on top of the workspace role."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This page explains the roles and how to invite people. For the exact permission each role carries, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/apis/permissions"},"children":["Permissions"]},"."]},{"$$mdtype":"Tag","name":"QuickFacts","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"Fact","attributes":{"icon":"building"},"children":["Workspace · ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Owner"]},", Admin, Member"]}," ",{"$$mdtype":"Tag","name":"Fact","attributes":{"icon":"grid"},"children":["Project · ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Editor"]},", Viewer"]}," ",{"$$mdtype":"Tag","name":"Fact","attributes":{"icon":"send"},"children":["Invite by email"]}," ",{"$$mdtype":"Tag","name":"Fact","attributes":{"icon":"shield"},"children":["Role maps to permissions"]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"workspace-roles","__idx":1},"children":["Workspace roles"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Every member of a workspace has exactly one workspace role; it sets their baseline access across the whole workspace."]},{"$$mdtype":"Tag","name":"Roles","attributes":{},"children":[{"$$mdtype":"Tag","name":"Role","attributes":{"name":"Owner"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The person who creates the workspace. Everything an admin can do, plus deleting or transferring the workspace. There is exactly one owner, and it is never handed out through an invitation."]}]},{"$$mdtype":"Tag","name":"Role","attributes":{"name":"Admin"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Manages members, projects, invitations, and API keys, with implicit access to every project. Can do everything except delete or transfer the workspace."]}]},{"$$mdtype":"Tag","name":"Role","attributes":{"name":"Member"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Read-only at the workspace level. Sees only the projects they are explicitly assigned to."]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For VKS, an authorized user can separately manage a member’s ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["vks:access"]}," grant in the dashboard. Role permissions and explicit VKS access are described in ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/apis/permissions#roles"},"children":["Permissions"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"project-roles","__idx":2},"children":["Project roles"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["On top of the workspace role, a member can be assigned a role on individual projects."]},{"$$mdtype":"Tag","name":"Roles","attributes":{},"children":[{"$$mdtype":"Tag","name":"Role","attributes":{"name":"Editor"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Read and write access to the project's resources: addresses, channels, invoices, and so on."]}]},{"$$mdtype":"Tag","name":"Role","attributes":{"name":"Viewer"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Read project resources and simulate transactions without broadcasting them."]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"what-each-role-can-do","__idx":3},"children":["What each role can do"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The workspace role sets the baseline; project assignments add reach into individual projects on top of it."]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Workspace capability"},"children":["Workspace capability"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"center","data-label":"Owner"},"children":["Owner"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"center","data-label":"Admin"},"children":["Admin"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"center","data-label":"Member"},"children":["Member"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["See the workspace"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":[{"$$mdtype":"Tag","name":"Cap","attributes":{"on":true},"children":[]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":[{"$$mdtype":"Tag","name":"Cap","attributes":{"on":true},"children":[]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":[{"$$mdtype":"Tag","name":"Cap","attributes":{"on":true},"children":[]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Manage members and invitations"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":[{"$$mdtype":"Tag","name":"Cap","attributes":{"on":true},"children":[]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":[{"$$mdtype":"Tag","name":"Cap","attributes":{"on":true},"children":[]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":[{"$$mdtype":"Tag","name":"Cap","attributes":{"on":false},"children":[]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Create and manage projects"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":[{"$$mdtype":"Tag","name":"Cap","attributes":{"on":true},"children":[]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":[{"$$mdtype":"Tag","name":"Cap","attributes":{"on":true},"children":[]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":[{"$$mdtype":"Tag","name":"Cap","attributes":{"on":false},"children":[]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Create and manage keys (API, RPC, management)"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":[{"$$mdtype":"Tag","name":"Cap","attributes":{"on":true},"children":[]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":[{"$$mdtype":"Tag","name":"Cap","attributes":{"on":true},"children":[]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":[{"$$mdtype":"Tag","name":"Cap","attributes":{"on":false},"children":[]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Reach every project automatically"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":[{"$$mdtype":"Tag","name":"Cap","attributes":{"on":true},"children":[]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":[{"$$mdtype":"Tag","name":"Cap","attributes":{"on":true},"children":[]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":[{"$$mdtype":"Tag","name":"Cap","attributes":{"on":false},"children":[]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Delete or transfer the workspace"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":[{"$$mdtype":"Tag","name":"Cap","attributes":{"on":true},"children":[]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":[{"$$mdtype":"Tag","name":"Cap","attributes":{"on":false},"children":[]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":[{"$$mdtype":"Tag","name":"Cap","attributes":{"on":false},"children":[]}]}]}]}]}]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Project capability"},"children":["Project capability"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"center","data-label":"Editor"},"children":["Editor"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"center","data-label":"Viewer"},"children":["Viewer"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Read project resources"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":[{"$$mdtype":"Tag","name":"Cap","attributes":{"on":true},"children":[]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":[{"$$mdtype":"Tag","name":"Cap","attributes":{"on":true},"children":[]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Create, update, and delete project resources"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":[{"$$mdtype":"Tag","name":"Cap","attributes":{"on":true},"children":[]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"center"},"children":[{"$$mdtype":"Tag","name":"Cap","attributes":{"on":false},"children":[]}]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A workspace ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["member"]}," does not inherit project access; they must be assigned ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Editor"]}," or ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Viewer"]}," on each project they should reach, and they see only the projects they are assigned. Removing a member from the workspace revokes all of their project assignments at once."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"inviting-a-member","__idx":4},"children":["Inviting a member"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Workspace admins add teammates from the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://app.vilna.io"},"children":["dashboard"]}," under workspace settings."]},{"$$mdtype":"Tag","name":"Flow","attributes":{},"children":[{"$$mdtype":"Tag","name":"Step","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Send the invite."]}," From workspace settings, enter the teammate's email, pick the workspace role (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["admin"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["member"]},"), and optionally assign project roles."]}]},{"$$mdtype":"Tag","name":"Step","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["They accept."]}," Once the invitee accepts, they become a workspace member with the role you chose."]}]},{"$$mdtype":"Tag","name":"Step","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Adjust anytime."]}," Change their workspace role or project assignments from the same settings, or revoke access by removing them."]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You can also manage members programmatically with the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/apis/mgmt"},"children":["Management API"]}," using a management key that carries the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["mgt:workspace:member:write"]}," permission."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"invitation-lifecycle","__idx":5},"children":["Invitation lifecycle"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Invitations have the statuses below. Any workspace admin can revoke a pending invitation; unanswered invitations expire at the specified deadline."]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Status"},"children":["Status"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Meaning"},"children":["Meaning"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"Status","attributes":{"state":"pending"},"children":["pending"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Invitation sent, waiting for a response"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"Status","attributes":{"state":"accepted"},"children":["accepted"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The invitee accepted and a membership was created"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"Status","attributes":{"state":"declined"},"children":["declined"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The invitee declined the invitation"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"Status","attributes":{"state":"revoked"},"children":["revoked"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["An admin cancelled the invitation"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"Status","attributes":{"state":"expired"},"children":["expired"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["No response before the expiration time"]}]}]}]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"The owner is fixed"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Every workspace has exactly one owner, set when it is created. Invitations and role changes only assign ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["admin"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["member"]},"; ownership is never granted this way. Only the owner can delete or transfer the workspace."]}]}]},"headings":[{"value":"Members & roles","id":"members--roles","depth":1},{"value":"Workspace roles","id":"workspace-roles","depth":2},{"value":"Project roles","id":"project-roles","depth":2},{"value":"What each role can do","id":"what-each-role-can-do","depth":2},{"value":"Inviting a member","id":"inviting-a-member","depth":2},{"value":"Invitation lifecycle","id":"invitation-lifecycle","depth":2}],"frontmatter":{"seo":{"title":"Members & roles - workspace access","description":"Invite teammates to a Vilna workspace and control access with workspace and project roles - Owner, Admin, Member, Editor, Viewer.","priority":0.6,"image":"https://cdn.vilna.io/docs/og/26103121/en/get-started-members.png","jsonLd":{"@context":"https://schema.org","@graph":[{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://docs.vilna.io/"},{"@type":"ListItem","position":2,"name":"Get Started","item":"https://docs.vilna.io/get-started"},{"@type":"ListItem","position":3,"name":"Members & roles"}]},{"@type":"TechArticle","headline":"Members & roles","description":"Invite teammates to a Vilna workspace and control access with workspace and project roles - Owner, Admin, Member, Editor, Viewer.","url":"https://docs.vilna.io/get-started/members","datePublished":"2026-06-08","dateModified":"2026-11-01","proficiencyLevel":"Beginner","author":{"@id":"https://vilna.io/#organization"},"publisher":{"@id":"https://vilna.io/#organization"}}]}}},"lastModified":"2026-10-31T22:57:01.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/get-started/members","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}