Workspace
La organización: personas y accesos, ajustes, empresa y marcas.
Privacidad y analítica
Utilizamos cookies técnicas necesarias y, solo si das tu consentimiento, analítica y pixels de marketing para mejorar la web y medir campañas.
La organización: personas y accesos, ajustes, empresa y marcas.
La política de agentes de todas las marcas del workspace que no tengan la suya: solo leer, con aprobación o directo.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/workspace.agent_policy.set |
| Herramienta MCP | workspace_agent_policy_set |
| Alcance | workspace.write |
| Rol mínimo | workspace.settings.edit |
| Confirmación humana | No |
| Puertas | Pantallas, Apps |
| Estado | Disponible |
Entrada
{
policy: "read_only" | "approval" | "direct" | null
}Salida
{
ok: true
}Una identidad para integraciones del workspace, con un rol en todas o algunas marcas. Pide un inicio de sesión reciente.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/workspace.service_accounts.create |
| Herramienta MCP | workspace_service_accounts_create |
| Alcance | workspace.write |
| Rol mínimo | workspace.api_keys.manage |
| Confirmación humana | No |
| Puertas | Pantallas |
| Estado | Disponible |
Entrada
{
name: string // ≤ 80
description?: string | null
scope: "all_brands" | "selected_brands"
role: "admin" | "member" | "viewer"
brandIds?: string[] // ≤ 200 items · default []
}Salida
{
id: string // uuid
}La cuenta de servicio y todos sus tokens dejan de funcionar. Pide un inicio de sesión reciente.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/workspace.service_accounts.disable |
| Herramienta MCP | workspace_service_accounts_disable |
| Alcance | workspace.write |
| Rol mínimo | workspace.api_keys.manage |
| Confirmación humana | Sí |
| Puertas | Pantallas |
| Estado | Disponible |
Entrada
{
serviceAccountId: string // uuid
}Salida
{
ok: true
}Un token (nmw_) de una cuenta de servicio, con permisos, caducidad y marcas del workspace. Se ve una sola vez.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/workspace.service_tokens.create |
| Herramienta MCP | workspace_service_tokens_create |
| Alcance | workspace.write |
| Rol mínimo | workspace.api_keys.manage |
| Confirmación humana | No |
| Puertas | Pantallas |
| Estado | Disponible |
Entrada
{
serviceAccountId: string // uuid
name: string // ≤ 80
expiresAt?: string | null // ISO date; empty takes the default lifetime.
scopes: string[] // ≤ 200 items
brandIds?: string[] // ≤ 200 items · default []
}Salida
{
token: string
credential: {
id: string // uuid
kind: string
name: string
prefix: string
scopes: string[]
brandIds: string[] | null
createdAt: string
expiresAt: string
lastUsedAt: string | null
revokedAt: string | null
revokedSource: string | null
legacy: boolean
serviceAccountId: string | null
}
}Emite el sustituto; el anterior vale las horas de gracia elegidas.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/workspace.service_tokens.rotate |
| Herramienta MCP | workspace_service_tokens_rotate |
| Alcance | workspace.write |
| Rol mínimo | workspace.api_keys.manage |
| Confirmación humana | No |
| Puertas | Pantallas |
| Estado | Disponible |
Entrada
{
id: string // uuid
graceHours: integer // 0–720
}Salida
{
token: string
credential: {
id: string // uuid
kind: string
name: string
prefix: string
scopes: string[]
brandIds: string[] | null
createdAt: string
expiresAt: string
lastUsedAt: string | null
revokedAt: string | null
revokedSource: string | null
legacy: boolean
serviceAccountId: string | null
}
}El token deja de funcionar al momento.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/workspace.service_tokens.revoke |
| Herramienta MCP | workspace_service_tokens_revoke |
| Alcance | workspace.write |
| Rol mínimo | workspace.api_keys.manage |
| Confirmación humana | Sí |
| Puertas | Pantallas |
| Estado | Disponible |
Entrada
{
id: string // uuid
}Salida
{
ok: true
}Envía la solicitud de un workspace de agencia o grupo; Nömad la revisa antes de crearlo.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/workspace.requests.submit |
| Herramienta MCP | workspace_requests_submit |
| Alcance | workspace.write |
| Rol mínimo | self |
| Confirmación humana | No |
| Puertas | API, Pantallas, Apps |
| Estado | Disponible |
Entrada
{
name: string // ≤ 120
workspaceType: "agency" | "group"
companyWebsite: string | null
contactEmail: string // email · ≤ 180
expectedBrands: integer // 1–10000
intendedUse: string // ≤ 2000
}Salida
{
requestId: string
}Cambia el nombre del workspace. Solo su propietario o el equipo de Nömad que gestiona workspaces.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/workspace.rename |
| Herramienta MCP | workspace_rename |
| Alcance | workspace.write |
| Rol mínimo | self |
| Confirmación humana | No |
| Puertas | API, Pantallas, Apps |
| Estado | Disponible |
Entrada
{
workspaceId: string // uuid
name: string // ≤ 120
}Salida
{
ok: true
}Razón social, NIF, correo, teléfono y dirección de facturación del workspace; se copia a las marcas que facturan con él.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/workspace.company.save |
| Herramienta MCP | workspace_company_save |
| Alcance | workspace.write |
| Rol mínimo | self |
| Confirmación humana | No |
| Puertas | API, Pantallas, Apps |
| Estado | Disponible |
Entrada
{
workspaceId: string // uuid
company: {
legalName: string // ≤ 200
taxId: string // ≤ 32
billingEmail: string // ≤ 180
billingPhone: string // ≤ 40
address: Record<string, string> // line1, line2, city, state, postal_code and the ISO country code.
}
}Salida
{
brandAccountsSynced: integer // -9007199254740991–9007199254740991
}Una marca factura con los datos del workspace o con su propia empresa.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/workspace.brand_billing.set |
| Herramienta MCP | workspace_brand_billing_set |
| Alcance | workspace.write |
| Rol mínimo | self |
| Confirmación humana | No |
| Puertas | API, Pantallas, Apps |
| Estado | Disponible |
Entrada
{
workspaceId: string // uuid
brandId: string // uuid
source: "workspace" | "own"
company: {
legalName: string // ≤ 200
taxId: string // ≤ 32
billingEmail: string // ≤ 180
billingPhone: string // ≤ 40
address: Record<string, string> // line1, line2, city, state, postal_code and the ISO country code.
}
| null
}Salida
{
source: "workspace" | "own"
}El rol de una persona en cada marca del workspace. Solo el propietario.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/workspace.members.brand_roles.set |
| Herramienta MCP | workspace_members_brand_roles_set |
| Alcance | workspace.write |
| Rol mínimo | self |
| Confirmación humana | No |
| Puertas | API, Pantallas, Apps |
| Estado | Disponible |
Entrada
{
workspaceId: string // uuid
userId: string // uuid
roles: Record<string, "admin" | "billing" | "member" | "viewer">
}Salida
{
ok: true
}Da a una persona todas las marcas del workspace, presentes y futuras, con un rol.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/workspace.members.all_brands.set |
| Herramienta MCP | workspace_members_all_brands_set |
| Alcance | workspace.write |
| Rol mínimo | self |
| Confirmación humana | No |
| Puertas | API, Pantallas, Apps |
| Estado | Disponible |
Entrada
{
workspaceId: string // uuid
userId: string // uuid
role: "admin" | "billing" | "member" | "viewer"
}Salida
{
ok: true
}Invita a alguien a todas las marcas del workspace con un rol y le envía el correo.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/workspace.invites.all_brands.send |
| Herramienta MCP | workspace_invites_all_brands_send |
| Alcance | workspace.write |
| Rol mínimo | self |
| Confirmación humana | No |
| Puertas | API, Pantallas, Apps |
| Estado | Disponible |
Entrada
{
workspaceId: string // uuid
email: string // email · ≤ 320
role: "admin" | "billing" | "member" | "viewer"
anchorBrandId?: string | null
}Salida
{
ok: true
}Propone mover una marca a otro workspace: quién sigue, cuándo pasa la suscripción y desde qué día factura el nuevo.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/workspace.brand_transfers.request |
| Herramienta MCP | workspace_brand_transfers_request |
| Alcance | workspace.write |
| Rol mínimo | self |
| Confirmación humana | No |
| Puertas | API, Pantallas, Apps |
| Estado | Disponible |
Entrada
{
brandId: string // uuid
sourceWorkspaceId: string // uuid
targetWorkspaceId: string // uuid
carryMembers: Record<string, "admin" | "billing" | "member" | "viewer">
subscriptionHandover: "next_renewal" | "immediate"
billingEffectiveOn: string
note: string | null
}Salida
{
transferId: string
}Acepta, rechaza o cancela un traslado de marca pendiente.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/workspace.brand_transfers.decide |
| Herramienta MCP | workspace_brand_transfers_decide |
| Alcance | workspace.write |
| Rol mínimo | self |
| Confirmación humana | No |
| Puertas | API, Pantallas, Apps |
| Estado | Disponible |
Entrada
{
transferId: string // uuid
decision: "accept" | "decline" | "cancel"
carryMembers?: Record<string, "admin" | "billing" | "member" | "viewer"> | null
note?: string | null
workspaceIds: string[] // ≤ 2 items · The two workspaces of the transfer, to refresh their pages.
}Salida
{
sourceWorkspaceOutcome: string | null
}Administrador, Miembro, Facturación o Lector para una persona. Propietario solo se cambia transfiriendo.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/workspace.people.org_role.set |
| Herramienta MCP | workspace_people_org_role_set |
| Alcance | workspace.write |
| Rol mínimo | self |
| Confirmación humana | No |
| Puertas | API, Pantallas, Apps |
| Estado | Disponible |
Entrada
{
workspaceId: string // uuid
role: "admin" | "member" | "billing" | "viewer"
reason?: string // ≤ 500
userId: string // uuid
}Salida
{
changed: boolean
}El mismo rol para varias personas, una a una con las mismas comprobaciones: un rechazo deja hechas las demás.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/workspace.people.org_role.set_many |
| Herramienta MCP | workspace_people_org_role_set_many |
| Alcance | workspace.write |
| Rol mínimo | self |
| Confirmación humana | No |
| Puertas | API, Pantallas, Apps |
| Estado | Disponible |
Entrada
{
workspaceId: string // uuid
role: "admin" | "member" | "billing" | "viewer"
reason?: string // ≤ 500
userIds: string[] // ≤ 100 items
}Salida
{
done: string[]
failed: Array<{
id: string
error: string
missing?: string[]
}>
}«Todas las marcas» con un rol, algunas marcas con un rol cada una, o ninguna.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/workspace.people.access.set |
| Herramienta MCP | workspace_people_access_set |
| Alcance | workspace.write |
| Rol mínimo | self |
| Confirmación humana | No |
| Puertas | API, Pantallas, Apps |
| Estado | Disponible |
Entrada
{
workspaceId: string // uuid
access: {
scope: "all" | "selected" | "none"
allRole: "admin" | "member" | "viewer" | "billing" | null
brandRoles: Record<string, "admin" | "member" | "viewer" | "billing">
}
reason?: string // ≤ 500
brandIds?: string[] // ≤ 500 items · Brands whose pages refresh afterwards.
userId: string // uuid
}Salida
{
ok: true
}El mismo acceso a marcas para varias personas, una a una.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/workspace.people.access.set_many |
| Herramienta MCP | workspace_people_access_set_many |
| Alcance | workspace.write |
| Rol mínimo | self |
| Confirmación humana | No |
| Puertas | API, Pantallas, Apps |
| Estado | Disponible |
Entrada
{
workspaceId: string // uuid
access: {
scope: "all" | "selected" | "none"
allRole: "admin" | "member" | "viewer" | "billing" | null
brandRoles: Record<string, "admin" | "member" | "viewer" | "billing">
}
reason?: string // ≤ 500
brandIds?: string[] // ≤ 500 items · Brands whose pages refresh afterwards.
userIds: string[] // ≤ 100 items
}Salida
{
done: string[]
failed: Array<{
id: string
error: string
missing?: string[]
}>
}Una invitación a la organización y sus marcas para varias direcciones, con rol, alcance, nota y validez del enlace.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/workspace.invites.send |
| Herramienta MCP | workspace_invites_send |
| Alcance | workspace.write |
| Rol mínimo | self |
| Confirmación humana | No |
| Puertas | API, Pantallas, Apps |
| Estado | Disponible |
Entrada
{
workspaceId: string // uuid
emails: string[] // ≤ 50 items
orgRole: "admin" | "member" | "billing" | "viewer"
scope: "all" | "selected"
allRole: "admin" | "member" | "viewer" | "billing" | null
brandRoles: Record<string, "admin" | "member" | "viewer" | "billing">
message?: string // ≤ 500
validDays?: 1 | 7 | 30 // default 7
}Salida
{
sent: string[]
failed: Array<{
email: string
error: string
missing?: string[]
}>
}Un enlace nuevo (el anterior deja de valer), la misma validez desde ahora y el correo otra vez.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/workspace.invites.resend |
| Herramienta MCP | workspace_invites_resend |
| Alcance | workspace.write |
| Rol mínimo | self |
| Confirmación humana | No |
| Puertas | API, Pantallas, Apps |
| Estado | Disponible |
Entrada
{
inviteId: string // uuid
}Salida
{
expiresAt: string
}«Reenviar» para varias invitaciones a la vez.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/workspace.invites.resend_many |
| Herramienta MCP | workspace_invites_resend_many |
| Alcance | workspace.write |
| Rol mínimo | self |
| Confirmación humana | No |
| Puertas | API, Pantallas, Apps |
| Estado | Disponible |
Entrada
{
inviteIds: string[] // ≤ 100 items
}Salida
{
done: string[]
failed: Array<{
id: string
error: string
missing?: string[]
}>
}Crea un enlace nuevo para mandarlo por otro canal; el enviado por correo deja de valer.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/workspace.invites.copy_link |
| Herramienta MCP | workspace_invites_copy_link |
| Alcance | workspace.write |
| Rol mínimo | self |
| Confirmación humana | No |
| Puertas | Pantallas, Apps |
| Estado | Disponible |
Entrada
{
inviteId: string // uuid
}Salida
{
url: string
expiresAt: string
}La invitación termina ahora; el enlace ya no abre nada.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/workspace.invites.revoke |
| Herramienta MCP | workspace_invites_revoke |
| Alcance | workspace.write |
| Rol mínimo | self |
| Confirmación humana | Sí |
| Puertas | API, Pantallas, Apps |
| Estado | Disponible |
Entrada
{
inviteId: string // uuid
reason?: string // ≤ 500
}Salida
{
ok: true
}«Revocar» para varias invitaciones; cada una pasa la misma comprobación.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/workspace.invites.revoke_many |
| Herramienta MCP | workspace_invites_revoke_many |
| Alcance | workspace.write |
| Rol mínimo | self |
| Confirmación humana | Sí |
| Puertas | API, Pantallas, Apps |
| Estado | Disponible |
Entrada
{
inviteIds: string[] // ≤ 100 items
reason?: string // ≤ 500
}Salida
{
done: string[]
failed: Array<{
id: string
error: string
missing?: string[]
}>
}«Rechazar» en la página de la invitación: termina para siempre y quien invitó se entera.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/workspace.invites.decline |
| Herramienta MCP | workspace_invites_decline |
| Alcance | workspace.write |
| Rol mínimo | self |
| Confirmación humana | No |
| Puertas | Pantallas, Apps |
| Estado | Disponible |
Entrada
{
token: string // ≤ 512
}Salida
{
ok: true
}Pide acceso a una marca con un mensaje; pedirlo otra vez devuelve la solicitud pendiente.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/workspace.access_requests.create |
| Herramienta MCP | workspace_access_requests_create |
| Alcance | workspace.write |
| Rol mínimo | self |
| Confirmación humana | No |
| Puertas | API, Pantallas, Apps |
| Estado | Disponible |
Entrada
{
brand: string // ≤ 64
message?: string // ≤ 500
requestedRole?: "viewer" | "member" | null
}Salida
{
requestId: string | null
}Retira tu propia solicitud de acceso pendiente.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/workspace.access_requests.cancel |
| Herramienta MCP | workspace_access_requests_cancel |
| Alcance | workspace.write |
| Rol mínimo | self |
| Confirmación humana | No |
| Puertas | API, Pantallas, Apps |
| Estado | Disponible |
Entrada
{
requestId: string // uuid
}Salida
{
ok: true
}«Aprobar» con rol y alcance, o «Rechazar» con nota; quien pidió lee la respuesta donde pidió.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/workspace.access_requests.decide |
| Herramienta MCP | workspace_access_requests_decide |
| Alcance | workspace.write |
| Rol mínimo | self |
| Confirmación humana | No |
| Puertas | API, Pantallas, Apps |
| Estado | Disponible |
Entrada
{
requestId: string // uuid
workspaceId: string // uuid
brandId: string | null
decision: "approve" | "deny"
orgRole?: "admin" | "member" | "billing" | "viewer" | null
access?: {
scope: "all" | "selected" | "none"
allRole: "admin" | "member" | "viewer" | "billing" | null
brandRoles: Record<string, "admin" | "member" | "viewer" | "billing">
}
note?: string // ≤ 500
}Salida
{
status: "approved" | "denied"
}Los dominios de correo con los que se entra a la organización y cuáles se pueden añadir.
| Campo | Valor |
|---|---|
| Tipo | Lectura |
| Método HTTP | POST /api/v1/workspace.join_domains.read |
| Herramienta MCP | workspace_join_domains_read |
| Alcance | workspace.read |
| Rol mínimo | self |
| Confirmación humana | No |
| Puertas | API, Pantallas, Apps |
| Estado | Disponible |
Entrada
{
workspaceId: string // uuid
}Salida
{
can_manage: boolean
domains: Record<string, unknown>[]
available: string[]
}Añade o cambia un dominio con el que unirse: entra directo o pide, con qué rol y a qué marcas.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/workspace.join_domains.set |
| Herramienta MCP | workspace_join_domains_set |
| Alcance | workspace.write |
| Rol mínimo | self |
| Confirmación humana | No |
| Puertas | API, Pantallas, Apps |
| Estado | Disponible |
Entrada
{
workspaceId: string // uuid
domain: string // ≤ 260
mode: "join" | "request"
orgRole: "member" | "viewer"
brandScope: "none" | "all"
brandRole: "member" | "viewer" | null
reason?: string // ≤ 500
}Salida
{
domain: string
}Nadie más entra con ese dominio; quien ya entró sigue.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/workspace.join_domains.remove |
| Herramienta MCP | workspace_join_domains_remove |
| Alcance | workspace.write |
| Rol mínimo | self |
| Confirmación humana | Sí |
| Puertas | API, Pantallas, Apps |
| Estado | Disponible |
Entrada
{
workspaceId: string // uuid
domain: string // ≤ 260
reason?: string // ≤ 500
}Salida
{
ok: true
}«Unirme» con el correo de empresa confirmado, o «Pedir unirme» cuando el dominio lo pide.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/workspace.join |
| Herramienta MCP | workspace_join |
| Alcance | workspace.write |
| Rol mínimo | self |
| Confirmación humana | No |
| Puertas | Pantallas, Apps |
| Estado | Disponible |
Entrada
{
workspaceId: string // uuid
message?: string // ≤ 500
}Salida
{
status: "joined" | "pending" | "member"
}Pasa a otra persona las tareas, las aprobaciones pendientes, las invitaciones y quién vuelve a conectar cada conexión. La primera mitad de quitar a alguien.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/workspace.people.handover |
| Herramienta MCP | workspace_people_handover |
| Alcance | workspace.write |
| Rol mínimo | self |
| Confirmación humana | No |
| Puertas | API, Pantallas, Apps |
| Estado | Disponible |
Entrada
{
workspaceId: string // uuid
brandId?: string | null
from: string // uuid
choice: {
to: string // uuid
tasks: boolean
approvals: boolean
invites: boolean
reconnect?: Record<string, string>
}
reason?: string // ≤ 500
}Salida
{
tasks_moved: number
tasks_left: number
approvals_moved: number
approvals_left: number
invites_moved: number
}La persona a la que se pidió volver a conectar una cuenta cierra su propia petición.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/workspace.reconnect_requests.dismiss |
| Herramienta MCP | workspace_reconnect_requests_dismiss |
| Alcance | workspace.write |
| Rol mínimo | self |
| Confirmación humana | No |
| Puertas | API, Pantallas, Apps |
| Estado | Disponible |
Entrada
{
requestId: string // uuid
}Salida
{
ok: true
}Actualizado el 1 de enero de 1970