[{"data":1,"prerenderedAt":880},["ShallowReactive",2],{"navigation_docs_es":3,"-es-developers-api-authentication":408,"-es-developers-api-authentication-surround":875},[4,25,74,124,238,253,313,342,388],{"title":5,"path":6,"stem":7,"children":8,"page":24},"Getting Started","\u002Fes\u002Fgetting-started","es\u002F1.getting-started",[9,14,19],{"title":10,"path":11,"stem":12,"icon":13},"Introducción","\u002Fes\u002Fgetting-started\u002Fintroduction","es\u002F1.getting-started\u002F1.introduction","i-lucide-house",{"title":15,"path":16,"stem":17,"icon":18},"Quickstart","\u002Fes\u002Fgetting-started\u002Fquickstart","es\u002F1.getting-started\u002F2.quickstart","i-lucide-rocket",{"title":20,"path":21,"stem":22,"icon":23},"Conceptos","\u002Fes\u002Fgetting-started\u002Fconcepts","es\u002F1.getting-started\u002F3.concepts","i-lucide-book-open",false,{"title":26,"path":27,"stem":28,"children":29,"page":24},"Live Production","\u002Fes\u002Flive-production","es\u002F2.live-production",[30,35,55,60],{"title":31,"path":32,"stem":33,"icon":34},"On air","\u002Fes\u002Flive-production\u002Fon-air","es\u002F2.live-production\u002F1.on-air","i-lucide-radio",{"title":36,"path":37,"stem":38,"children":39,"page":24},"Live Streams","\u002Fes\u002Flive-production\u002Flive-streams","es\u002F2.live-production\u002F2.live-streams",[40,45,50],{"title":41,"path":42,"stem":43,"icon":44},"Overview","\u002Fes\u002Flive-production\u002Flive-streams\u002Foverview","es\u002F2.live-production\u002F2.live-streams\u002F1.overview","i-lucide-list",{"title":46,"path":47,"stem":48,"icon":49},"Options","\u002Fes\u002Flive-production\u002Flive-streams\u002Flive-stream-options","es\u002F2.live-production\u002F2.live-streams\u002F2.live-stream-options","i-lucide-file-text",{"title":51,"path":52,"stem":53,"icon":54},"Inicio y parada","\u002Fes\u002Flive-production\u002Flive-streams\u002Fstart-stop","es\u002F2.live-production\u002F2.live-streams\u002F3.start-stop","i-lucide-play-circle",{"title":56,"path":57,"stem":58,"icon":59},"Scheduler","\u002Fes\u002Flive-production\u002Fscheduler","es\u002F2.live-production\u002F3.scheduler","i-lucide-calendar-clock",{"title":61,"path":62,"stem":63,"children":64,"page":24},"Recordings","\u002Fes\u002Flive-production\u002Frecordings","es\u002F2.live-production\u002F4.recordings",[65,69],{"title":41,"path":66,"stem":67,"icon":68},"\u002Fes\u002Flive-production\u002Frecordings\u002Foverview","es\u002F2.live-production\u002F4.recordings\u002F1.overview","i-lucide-circle-dot",{"title":70,"path":71,"stem":72,"icon":73},"Editor","\u002Fes\u002Flive-production\u002Frecordings\u002Feditor","es\u002F2.live-production\u002F4.recordings\u002F2.editor","i-lucide-scissors",{"title":75,"path":76,"stem":77,"children":78,"page":24},"Configuration","\u002Fes\u002Fconfiguration","es\u002F3.configuration",[79,93,98,111],{"title":80,"path":81,"stem":82,"children":83,"page":24},"Devices","\u002Fes\u002Fconfiguration\u002Fdevices","es\u002F3.configuration\u002F1.devices",[84,88],{"title":80,"path":85,"stem":86,"icon":87},"\u002Fes\u002Fconfiguration\u002Fdevices\u002Fdevices","es\u002F3.configuration\u002F1.devices\u002F1.devices","i-lucide-server",{"title":89,"path":90,"stem":91,"icon":92},"Groups","\u002Fes\u002Fconfiguration\u002Fdevices\u002Fgroups","es\u002F3.configuration\u002F1.devices\u002F2.groups","i-lucide-network",{"title":94,"path":95,"stem":96,"icon":97},"Sources","\u002Fes\u002Fconfiguration\u002Fsources","es\u002F3.configuration\u002F2.sources","i-lucide-cable",{"title":99,"path":100,"stem":101,"children":102,"page":24},"Encodings","\u002Fes\u002Fconfiguration\u002Fencodings","es\u002F3.configuration\u002F3.encodings",[103,107],{"title":99,"path":104,"stem":105,"icon":106},"\u002Fes\u002Fconfiguration\u002Fencodings\u002Fprofiles","es\u002F3.configuration\u002F3.encodings\u002F1.profiles","i-lucide-sliders-horizontal",{"title":89,"path":108,"stem":109,"icon":110},"\u002Fes\u002Fconfiguration\u002Fencodings\u002Fgroups","es\u002F3.configuration\u002F3.encodings\u002F2.groups","i-lucide-layers",{"title":112,"path":113,"stem":114,"children":115,"page":24},"Destinations","\u002Fes\u002Fconfiguration\u002Fdestinations","es\u002F3.configuration\u002F4.destinations",[116,120],{"title":112,"path":117,"stem":118,"icon":119},"\u002Fes\u002Fconfiguration\u002Fdestinations\u002Fdestinations","es\u002F3.configuration\u002F4.destinations\u002F1.destinations","i-lucide-send",{"title":89,"path":121,"stem":122,"icon":123},"\u002Fes\u002Fconfiguration\u002Fdestinations\u002Fpublishing-groups","es\u002F3.configuration\u002F4.destinations\u002F2.publishing-groups","i-lucide-share-2",{"title":125,"path":126,"stem":127,"children":128,"page":24},"Settings","\u002Fes\u002Fsettings","es\u002F4.settings",[129,142,147,163,179],{"title":130,"path":131,"stem":132,"children":133,"page":24},"Users","\u002Fes\u002Fsettings\u002Fusers","es\u002F4.settings\u002F1.users",[134,138],{"title":130,"path":135,"stem":136,"icon":137},"\u002Fes\u002Fsettings\u002Fusers\u002Fusers","es\u002F4.settings\u002F1.users\u002F1.users","i-lucide-user",{"title":89,"path":139,"stem":140,"icon":141},"\u002Fes\u002Fsettings\u002Fusers\u002Fuser-groups","es\u002F4.settings\u002F1.users\u002F2.user-groups","i-lucide-users",{"title":143,"path":144,"stem":145,"icon":146},"Security","\u002Fes\u002Fsettings\u002Fsecurity","es\u002F4.settings\u002F2.security","i-lucide-shield",{"title":148,"icon":149,"path":150,"stem":151,"children":152,"page":24},"Assets","i-lucide-image","\u002Fes\u002Fsettings\u002Fassets","es\u002F4.settings\u002F3.assets",[153,158],{"title":154,"path":155,"stem":156,"icon":157},"Logos","\u002Fes\u002Fsettings\u002Fassets\u002Flogos","es\u002F4.settings\u002F3.assets\u002F1.logos","i-lucide-images",{"title":159,"path":160,"stem":161,"icon":162},"Files","\u002Fes\u002Fsettings\u002Fassets\u002Ffiles","es\u002F4.settings\u002F3.assets\u002F2.files","i-lucide-clapperboard",{"title":164,"icon":165,"path":166,"stem":167,"children":168,"page":24},"External Storage","i-lucide-folder-cog","\u002Fes\u002Fsettings\u002Fexternal-storage","es\u002F4.settings\u002F4.external-storage",[169,174],{"title":170,"path":171,"stem":172,"icon":173},"Remote Folders","\u002Fes\u002Fsettings\u002Fexternal-storage\u002Fremote-folders","es\u002F4.settings\u002F4.external-storage\u002F1.remote-folders","i-lucide-folder-archive",{"title":175,"path":176,"stem":177,"icon":178},"Target Folders","\u002Fes\u002Fsettings\u002Fexternal-storage\u002Ftarget-folders","es\u002F4.settings\u002F4.external-storage\u002F2.target-folders","i-lucide-folder-up",{"title":180,"path":181,"stem":182,"children":183,"page":24},"Integrations","\u002Fes\u002Fsettings\u002Fintegrations","es\u002F4.settings\u002F5.integrations",[184,188,193,207],{"title":41,"path":185,"stem":186,"icon":187},"\u002Fes\u002Fsettings\u002Fintegrations\u002Foverview","es\u002F4.settings\u002F5.integrations\u002F1.overview","i-lucide-plug",{"title":189,"path":190,"stem":191,"icon":192},"MediaCopilot","\u002Fes\u002Fsettings\u002Fintegrations\u002Fmediacopilot","es\u002F4.settings\u002F5.integrations\u002F2.mediacopilot","i-lucide-sparkles",{"title":194,"icon":195,"path":196,"stem":197,"children":198,"page":24},"C21 Live Cloud","i-lucide-cloud","\u002Fes\u002Fsettings\u002Fintegrations\u002Fc21livecloud","es\u002F4.settings\u002F5.integrations\u002F3.c21livecloud",[199,202],{"title":41,"path":200,"stem":201,"icon":195},"\u002Fes\u002Fsettings\u002Fintegrations\u002Fc21livecloud\u002Foverview","es\u002F4.settings\u002F5.integrations\u002F3.c21livecloud\u002F1.overview",{"title":203,"path":204,"stem":205,"icon":206},"Accounts","\u002Fes\u002Fsettings\u002Fintegrations\u002Fc21livecloud\u002Faccounts","es\u002F4.settings\u002F5.integrations\u002F3.c21livecloud\u002F2.accounts","i-lucide-key-round",{"title":208,"icon":146,"path":209,"stem":210,"children":211,"page":24},"DRM Providers","\u002Fes\u002Fsettings\u002Fintegrations\u002Fdrm","es\u002F4.settings\u002F5.integrations\u002F4.drm",[212,216,220,224,228,233],{"title":41,"path":213,"stem":214,"icon":215},"\u002Fes\u002Fsettings\u002Fintegrations\u002Fdrm\u002Foverview","es\u002F4.settings\u002F5.integrations\u002F4.drm\u002F1.overview","i-lucide-shield-check",{"title":217,"path":218,"stem":219,"icon":146},"Widevine","\u002Fes\u002Fsettings\u002Fintegrations\u002Fdrm\u002Fwidevine","es\u002F4.settings\u002F5.integrations\u002F4.drm\u002F2.widevine",{"title":221,"path":222,"stem":223,"icon":146},"PlayReady","\u002Fes\u002Fsettings\u002Fintegrations\u002Fdrm\u002Fplayready","es\u002F4.settings\u002F5.integrations\u002F4.drm\u002F3.playready",{"title":225,"path":226,"stem":227,"icon":146},"FairPlay","\u002Fes\u002Fsettings\u002Fintegrations\u002Fdrm\u002Ffairplay","es\u002F4.settings\u002F5.integrations\u002F4.drm\u002F4.fairplay",{"title":229,"path":230,"stem":231,"icon":232},"Providers","\u002Fes\u002Fsettings\u002Fintegrations\u002Fdrm\u002Fproviders","es\u002F4.settings\u002F5.integrations\u002F4.drm\u002F5.providers","i-lucide-shield-half",{"title":234,"path":235,"stem":236,"icon":237},"Workflow","\u002Fes\u002Fsettings\u002Fintegrations\u002Fdrm\u002Fworkflow","es\u002F4.settings\u002F5.integrations\u002F4.drm\u002F6.workflow","i-lucide-workflow",{"title":239,"path":240,"stem":241,"children":242,"page":24},"System Status","\u002Fes\u002Fsystem-status","es\u002F5.system-status",[243,248],{"title":244,"path":245,"stem":246,"icon":247},"Commands","\u002Fes\u002Fsystem-status\u002Fcommands","es\u002F5.system-status\u002F1.commands","i-lucide-square-terminal",{"title":249,"path":250,"stem":251,"icon":252},"Logs","\u002Fes\u002Fsystem-status\u002Flogs","es\u002F5.system-status\u002F2.logs","i-lucide-scroll-text",{"title":254,"path":255,"stem":256,"children":257,"page":24},"How Tos","\u002Fes\u002Fhow-tos","es\u002F6.how-tos",[258,263,268,273,277,281,285,290,294,299,304,309],{"title":259,"path":260,"stem":261,"icon":262},"Arrancar y detener un Live stream","\u002Fes\u002Fhow-tos\u002Fstart-stream-via-api","es\u002F6.how-tos\u002F1.start-stream-via-api","i-lucide-terminal",{"title":264,"path":265,"stem":266,"icon":267},"Ingestar una emisión de YouTube Live","\u002Fes\u002Fhow-tos\u002Fingest-youtube-live","es\u002F6.how-tos\u002F10.ingest-youtube-live","i-lucide-youtube",{"title":269,"path":270,"stem":271,"icon":272},"Source Synchronized Encoding (SSE) — redundancia bit-idéntica","\u002Fes\u002Fhow-tos\u002Fsource-synchronized-encoding","es\u002F6.how-tos\u002F11.source-synchronized-encoding","i-lucide-copy-check",{"title":274,"path":275,"stem":276,"icon":34},"Emitir radio como vídeo","\u002Fes\u002Fhow-tos\u002Fbroadcast-radio-as-video","es\u002F6.how-tos\u002F12.broadcast-radio-as-video",{"title":278,"path":279,"stem":280,"icon":215},"Proteger un Live stream con multi-DRM","\u002Fes\u002Fhow-tos\u002Fmulti-drm-destination","es\u002F6.how-tos\u002F2.multi-drm-destination",{"title":282,"path":283,"stem":284,"icon":59},"Programar una emisión semanal recurrente","\u002Fes\u002Fhow-tos\u002Fweekly-recurring-broadcast","es\u002F6.how-tos\u002F3.weekly-recurring-broadcast",{"title":286,"path":287,"stem":288,"icon":289},"Cortar un clip en el Editor y enviarlo a MediaCopilot","\u002Fes\u002Fhow-tos\u002Fexport-recording-to-mediacopilot","es\u002F6.how-tos\u002F4.export-recording-to-mediacopilot","i-lucide-upload-cloud",{"title":291,"path":292,"stem":293,"icon":149},"Aplicar un logo a un Live stream en emisión","\u002Fes\u002Fhow-tos\u002Fapply-logo-overlay","es\u002F6.how-tos\u002F5.apply-logo-overlay",{"title":295,"path":296,"stem":297,"icon":298},"Hacer blackout o sustituir el programa de un Live stream","\u002Fes\u002Fhow-tos\u002Fbroadcast-blackout","es\u002F6.how-tos\u002F6.broadcast-blackout","i-lucide-square",{"title":300,"path":301,"stem":302,"icon":303},"Cambiar la fuente de un Live stream en emisión","\u002Fes\u002Fhow-tos\u002Fruntime-source-switch","es\u002F6.how-tos\u002F7.runtime-source-switch","i-lucide-repeat-2",{"title":305,"path":306,"stem":307,"icon":308},"Activar \u002F desactivar un Publishing en mitad de la emisión","\u002Fes\u002Fhow-tos\u002Ftoggle-publishing-mid-broadcast","es\u002F6.how-tos\u002F8.toggle-publishing-mid-broadcast","i-lucide-toggle-right",{"title":310,"path":311,"stem":312,"icon":34},"Contribuir una señal en directo a MediaCopilot Live","\u002Fes\u002Fhow-tos\u002Fcontribute-to-mediacopilot-live","es\u002F6.how-tos\u002F9.contribute-to-mediacopilot-live",{"title":314,"path":315,"stem":316,"children":317,"page":24},"Installation","\u002Fes\u002Finstallation","es\u002F7.installation",[318,323,328,333,338],{"title":319,"path":320,"stem":321,"icon":322},"Preparar el host","\u002Fes\u002Finstallation\u002Fprepare-host","es\u002F7.installation\u002F1.prepare-host","i-lucide-server-cog",{"title":324,"path":325,"stem":326,"icon":327},"Instalar C21 Live Control","\u002Fes\u002Finstallation\u002Fcontrol","es\u002F7.installation\u002F2.control","i-lucide-cloud-download",{"title":329,"path":330,"stem":331,"icon":332},"Instalar C21 Live Encoder","\u002Fes\u002Finstallation\u002Fencoder","es\u002F7.installation\u002F3.encoder","i-lucide-cpu",{"title":334,"path":335,"stem":336,"icon":337},"Actualizaciones","\u002Fes\u002Finstallation\u002Fupdates","es\u002F7.installation\u002F4.updates","i-lucide-refresh-cw",{"title":339,"path":340,"stem":341,"icon":206},"Licencias","\u002Fes\u002Finstallation\u002Flicenses","es\u002F7.installation\u002F5.licenses",{"title":343,"path":344,"stem":345,"children":346,"page":24},"Developers","\u002Fes\u002Fdevelopers","es\u002F8.developers",[347,351,369],{"title":41,"path":348,"stem":349,"icon":350},"\u002Fes\u002Fdevelopers\u002Foverview","es\u002F8.developers\u002F1.overview","i-lucide-code",{"title":352,"icon":350,"path":353,"stem":354,"children":355,"page":24},"API","\u002Fes\u002Fdevelopers\u002Fapi","es\u002F8.developers\u002F2.api",[356,359,364],{"title":41,"path":357,"stem":358,"icon":350},"\u002Fes\u002Fdevelopers\u002Fapi\u002Foverview","es\u002F8.developers\u002F2.api\u002F1.overview",{"title":360,"path":361,"stem":362,"icon":363},"Autenticación","\u002Fes\u002Fdevelopers\u002Fapi\u002Fauthentication","es\u002F8.developers\u002F2.api\u002F2.authentication","i-lucide-key",{"title":365,"path":366,"stem":367,"icon":368},"Paginación y errores","\u002Fes\u002Fdevelopers\u002Fapi\u002Fpagination-errors","es\u002F8.developers\u002F2.api\u002F3.pagination-errors","i-lucide-list-ordered",{"title":370,"icon":371,"path":372,"stem":373,"children":374,"page":24},"MCP Server","i-lucide-bot","\u002Fes\u002Fdevelopers\u002Fmcp-server","es\u002F8.developers\u002F3.mcp-server",[375,378,383],{"title":41,"path":376,"stem":377,"icon":371},"\u002Fes\u002Fdevelopers\u002Fmcp-server\u002Foverview","es\u002F8.developers\u002F3.mcp-server\u002F1.overview",{"title":379,"path":380,"stem":381,"icon":382},"Tools","\u002Fes\u002Fdevelopers\u002Fmcp-server\u002Ftools","es\u002F8.developers\u002F3.mcp-server\u002F2.tools","i-lucide-wrench",{"title":384,"path":385,"stem":386,"icon":387},"Examples","\u002Fes\u002Fdevelopers\u002Fmcp-server\u002Fexamples","es\u002F8.developers\u002F3.mcp-server\u002F3.examples","i-lucide-play",{"title":389,"path":390,"stem":391,"children":392,"page":24},"Resources","\u002Fes\u002Fresources","es\u002F9.resources",[393,398,403],{"title":394,"path":395,"stem":396,"icon":397},"Enlaces","\u002Fes\u002Fresources\u002Flinks","es\u002F9.resources\u002F1.links","i-lucide-link",{"title":399,"path":400,"stem":401,"icon":402},"Release Notes","\u002Fes\u002Fresources\u002Frelease-notes","es\u002F9.resources\u002F2.release-notes","i-lucide-clipboard-list",{"title":404,"path":405,"stem":406,"icon":407},"Glosario","\u002Fes\u002Fresources\u002Fglossary","es\u002F9.resources\u002F3.glossary","i-lucide-book-a",{"id":409,"title":360,"body":410,"description":868,"extension":869,"links":870,"meta":871,"navigation":872,"path":361,"seo":873,"stem":362,"__hash__":874},"docs_es\u002Fes\u002F8.developers\u002F2.api\u002F2.authentication.md",{"type":411,"value":412,"toc":856},"minimark",[413,421,441,444,449,454,461,501,508,682,688,691,695,698,706,709,713,731,735,748,752,759,779,783,805,809,812,826,830,852],[414,415,416,420],"p",{},[417,418,419],"strong",{},"C21 Live Control"," autentica dos clases de caller:",[422,423,424,431],"ul",{},[425,426,427,430],"li",{},[417,428,429],{},"Operadores humanos"," que entran a la UI web usan una cookie de sesión. La sesión se establece con el formulario de sign-in estándar contra el catálogo de usuarios.",[425,432,433,436,437,440],{},[417,434,435],{},"Callers no interactivos"," — la REST API y el servidor MCP — usan un ",[417,438,439],{},"API token",", una credencial bearer emitida a un usuario existente.",[414,442,443],{},"Ambos caminos comparten el mismo modelo de autorización: cada llamada se asocia a un usuario, y el rol del usuario (System Administrator u Operator) controla lo que la llamada puede hacer.",[445,446,448],"h2",{"id":447},"api-tokens","API tokens",[450,451,453],"h3",{"id":452},"crear","Crear",[414,455,456,460],{},[457,458,459],"code",{},"POST \u002Fc21apiv2\u002Fsecurity\u002Ftokens"," emite un nuevo token. El cuerpo acepta:",[462,463,464,477],"table",{},[465,466,467],"thead",{},[468,469,470,474],"tr",{},[471,472,473],"th",{},"Campo",[471,475,476],{},"Notas",[478,479,480,491],"tbody",{},[468,481,482,488],{},[483,484,485],"td",{},[457,486,487],{},"name",[483,489,490],{},"Obligatorio. Etiqueta legible (1–100 caracteres).",[468,492,493,498],{},[483,494,495],{},[457,496,497],{},"expires_days",[483,499,500],{},"Opcional. Vida en días (1–3650). Omítelo para un token sin expiración.",[414,502,503,504,507],{},"La respuesta lleva el token completo ",[417,505,506],{},"exactamente una vez",":",[509,510,515],"pre",{"className":511,"code":512,"language":513,"meta":514,"style":514},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"data\": {\n    \"id\": 12,\n    \"kid\": \"\u003Ckey-id>\",\n    \"token\": \"\u003Cla cadena bearer completa>\",\n    \"name\": \"mcp-server-dev\",\n    \"created_at\": \"2026-05-18T10:00:00Z\",\n    \"expires_at\": \"2026-08-16T10:00:00Z\"\n  }\n}\n","json","",[457,516,517,526,544,565,588,609,629,650,670,676],{"__ignoreMap":514},[518,519,522],"span",{"class":520,"line":521},"line",1,[518,523,525],{"class":524},"sMK4o","{\n",[518,527,529,532,536,539,541],{"class":520,"line":528},2,[518,530,531],{"class":524},"  \"",[518,533,535],{"class":534},"spNyl","data",[518,537,538],{"class":524},"\"",[518,540,507],{"class":524},[518,542,543],{"class":524}," {\n",[518,545,547,550,554,556,558,562],{"class":520,"line":546},3,[518,548,549],{"class":524},"    \"",[518,551,553],{"class":552},"sBMFI","id",[518,555,538],{"class":524},[518,557,507],{"class":524},[518,559,561],{"class":560},"sbssI"," 12",[518,563,564],{"class":524},",\n",[518,566,568,570,573,575,577,580,584,586],{"class":520,"line":567},4,[518,569,549],{"class":524},[518,571,572],{"class":552},"kid",[518,574,538],{"class":524},[518,576,507],{"class":524},[518,578,579],{"class":524}," \"",[518,581,583],{"class":582},"sfazB","\u003Ckey-id>",[518,585,538],{"class":524},[518,587,564],{"class":524},[518,589,591,593,596,598,600,602,605,607],{"class":520,"line":590},5,[518,592,549],{"class":524},[518,594,595],{"class":552},"token",[518,597,538],{"class":524},[518,599,507],{"class":524},[518,601,579],{"class":524},[518,603,604],{"class":582},"\u003Cla cadena bearer completa>",[518,606,538],{"class":524},[518,608,564],{"class":524},[518,610,612,614,616,618,620,622,625,627],{"class":520,"line":611},6,[518,613,549],{"class":524},[518,615,487],{"class":552},[518,617,538],{"class":524},[518,619,507],{"class":524},[518,621,579],{"class":524},[518,623,624],{"class":582},"mcp-server-dev",[518,626,538],{"class":524},[518,628,564],{"class":524},[518,630,632,634,637,639,641,643,646,648],{"class":520,"line":631},7,[518,633,549],{"class":524},[518,635,636],{"class":552},"created_at",[518,638,538],{"class":524},[518,640,507],{"class":524},[518,642,579],{"class":524},[518,644,645],{"class":582},"2026-05-18T10:00:00Z",[518,647,538],{"class":524},[518,649,564],{"class":524},[518,651,653,655,658,660,662,664,667],{"class":520,"line":652},8,[518,654,549],{"class":524},[518,656,657],{"class":552},"expires_at",[518,659,538],{"class":524},[518,661,507],{"class":524},[518,663,579],{"class":524},[518,665,666],{"class":582},"2026-08-16T10:00:00Z",[518,668,669],{"class":524},"\"\n",[518,671,673],{"class":520,"line":672},9,[518,674,675],{"class":524},"  }\n",[518,677,679],{"class":520,"line":678},10,[518,680,681],{"class":524},"}\n",[414,683,684,685,687],{},"El servidor solo almacena el hash del token. Guarda el valor ",[457,686,595],{}," devuelto en un secret manager — no se vuelve a devolver.",[414,689,690],{},"Crear un token requiere rol System Administrator.",[450,692,694],{"id":693},"usar","Usar",[414,696,697],{},"Los callers pasan el token en la cabecera bearer estándar:",[509,699,704],{"className":700,"code":702,"language":703,"meta":514},[701],"language-text","Authorization: Bearer \u003CYOUR_API_TOKEN>\n","text",[457,705,702],{"__ignoreMap":514},[414,707,708],{},"El token autentica como el usuario al que se emitió y hereda el rol de ese usuario.",[450,710,712],{"id":711},"listar","Listar",[414,714,715,718,719,721,722,721,724,721,726,721,728,730],{},[457,716,717],{},"GET \u002Fc21apiv2\u002Fsecurity\u002Ftokens"," devuelve el catálogo de tokens. Cada fila expone ",[457,720,553],{},", ",[457,723,572],{},[457,725,487],{},[457,727,636],{},[457,729,657],{}," — el valor secreto no se devuelve nunca.",[450,732,734],{"id":733},"revocar","Revocar",[414,736,737,740,741,743,744,747],{},[457,738,739],{},"DELETE \u002Fc21apiv2\u002Fsecurity\u002Ftokens\u002F{kid}"," revoca un token por su ",[457,742,572],{},". Las llamadas siguientes con ese token devuelven ",[457,745,746],{},"401 Unauthorized",".",[450,749,751],{"id":750},"rotar","Rotar",[414,753,754,755,758],{},"No hay operación ",[457,756,757],{},"rotate",". Para rotar un token sin downtime:",[760,761,762,768,771,774],"ol",{},[425,763,764,765,767],{},"Crea un nuevo token (",[457,766,459],{},").",[425,769,770],{},"Actualiza la integración para usar el nuevo token.",[425,772,773],{},"Confirma que la integración opera contra el nuevo token.",[425,775,776,777,767],{},"Revoca el antiguo (",[457,778,739],{},[445,780,782],{"id":781},"límites-de-longitud-de-campo","Límites de longitud de campo",[414,784,785,786,721,789,792,793,796,797,800,801,804],{},"Los campos ",[457,787,788],{},"username",[457,790,791],{},"first_name"," y ",[457,794,795],{},"last_name"," tienen un límite de 30 caracteres; ",[457,798,799],{},"email"," admite hasta 75. La API rechaza valores que excedan con un error de validación en HTTP 400 y nombra el campo ofensor en el envelope. El spec OpenAPI expone los ",[457,802,803],{},"maxLength"," en cada definición de campo.",[445,806,808],{"id":807},"recomendaciones-de-almacenamiento","Recomendaciones de almacenamiento",[414,810,811],{},"Trata los API tokens como secretos:",[422,813,814,817,820,823],{},[425,815,816],{},"Nunca commitees un token al control de versiones.",[425,818,819],{},"Guarda los tokens en el secret store del host (Kubernetes secrets, HashiCorp Vault, AWS Secrets Manager, GCP Secret Manager, GitHub Actions secrets).",[425,821,822],{},"Rota con calendario. Recrea el token, cambia, verifica, revoca el antiguo.",[425,824,825],{},"Un token por caller. La auditoría se vuelve ambigua y la revocación se vuelve destructiva cuando los tokens se comparten entre servicios no relacionados.",[445,827,829],{"id":828},"faq","FAQ",[831,832,833,838,845],"accordion",{},[834,835,837],"accordion-item",{"label":836},"¿Lleva el token un scope o conjunto de permisos separado?","No. El token hereda el rol del usuario al que se emitió. Para limitar lo que un token puede hacer, emítelo a un usuario cuyo rol ya esté limitado (un Operator, no un System Administrator).",[834,839,841,842,844],{"label":840},"¿Qué pasa con las peticiones en vuelo cuando se revoca un token?","Las respuestas en vuelo completan normalmente. La siguiente petición del token revocado devuelve ",[457,843,746],{}," y el token no puede reactivarse — crea uno nuevo.",[834,846,848,849,851],{"label":847},"¿Puedo emitir un token sin expiración?","Sí. Omite ",[457,850,497],{}," al crearlo y el token se emite sin fecha de expiración. Permanece válido hasta que se revoca.",[853,854,855],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":514,"searchDepth":528,"depth":528,"links":857},[858,865,866,867],{"id":447,"depth":528,"text":448,"children":859},[860,861,862,863,864],{"id":452,"depth":546,"text":453},{"id":693,"depth":546,"text":694},{"id":711,"depth":546,"text":712},{"id":733,"depth":546,"text":734},{"id":750,"depth":546,"text":751},{"id":781,"depth":528,"text":782},{"id":807,"depth":528,"text":808},{"id":828,"depth":528,"text":829},"API tokens y cómo C21 Live Control autentica a quien llama.","md",null,{},{"icon":363},{"title":360,"description":868},"Gb9pPhMpfxVWXnvpf4TsxVuYbmH0ICt79SasGhZMPnc",[876,878],{"title":41,"path":357,"stem":358,"description":877,"icon":350,"children":-1},"Acceso programático a C21 Live Control mediante su REST API.",{"title":365,"path":366,"stem":367,"description":879,"icon":368,"children":-1},"Convenciones compartidas de respuesta, envelope de error y guía de reintentos.",1782916477789]