Documentazione Notion as Code, un prodotto in alpha chiusa, consultata il 3 agosto 2026 sul workspace Notion Ambassadors — senza autore né data, e con un avviso che raccomanda di provarlo su un workspace nuovo e mette in guardia su possibili breaking changes.
Il principio è l'infrastructure as code applicata a un workspace documentale: « Instead of having to make individual public API requests, you can describe the final state and we handle updating your workspace to match. » Due componenti fondamentali: un SDK TypeScript per descrivere lo stato desiderato, e l'endpoint /v1/infra_as_code per implementarlo.
Instead of having to make individual public API requests, you can describe the final state and we handle updating your workspace to match.
— **Notion** — documentation produit publiée sur l'espace public **Notion Ambassadors**. **Aucun auteur nommé , app.notion.com
Il meccanismo che regge tutto è l'indirezione tramite identificatore. Lo script non contiene alcun identificatore Notion: dichiara valori resourceId scelti dall'autore. Il primo deployment restituisce una tabella di mappatura tra questi identificatori logici e i record effettivamente creati; ripassata nelle chiamate successive, garantisce che gli stessi record vengano aggiornati anziché ricreati.
Ne derivano tre proprietà. Lo script diventa idempotente. Diventa disaccoppiato dal workspace — più tabelle di mappatura permettono di distribuire lo stesso script su più workspace. E trattandosi di codice, supporta variabili e cicli: l'esempio fornito è la costruzione di dieci team di struttura identica cambiando solo alcuni nomi.
Il contratto API è asincrono: una POST restituisce un taskId, interrogato fino al completamento; la risposta porta le tabelle di mappatura da conservare — l'equivalente di un file di stato.
Due differenze operative: il prodotto richiede personal access token anziché i consueti token bot, il che attribuisce le azioni a una persona anziché a un'integrazione; e il rate limit scende a 5 richieste al minuto, una chiamata essendo ormai un batch anziché una singola entità.
Il prodotto presuppone l'agente. L'SDK è presentato come costruito « for you or your coding agent », e il percorso di onboarding consiste nel lasciare che un agente legga il README dell'SDK. Un descrittore di stato tipizzato è effettivamente uno strumento migliore per un agente rispetto a una serie di chiamate imperative: l'errore vi è replicabile anziché cumulativo.
Cosa manca: nessuna menzione dell'eliminazione degli elementi rimossi dallo script, nessuna modalità di anteprima prima dell'applicazione, nulla sulla concorrenza, e nessuna data su una documentazione destinata a cambiare.
Punti chiave
Cos'è, in una frase.infrastructure as code per un workspace documentale. Lo stato finale desiderato viene descritto in TypeScript, e Notion riconcilia il workspace per farlo corrispondere. È il modello Terraform, applicato a pagine, database e team anziché a risorse cloud.
Il meccanismo centrale — l'identificatore di risorsa, e perché fa tutto. lo script non contiene alcun identificatore Notion. Usa valori resourceId scelti dall'autore. Il primo deployment restituisce una tabella di mappaturaresourceId → RecordPointer, che viene poi ripassata tramite existingResources / existingProperties. Ne derivano tre proprietà, inseparabili tra loro: 1. Idempotenza — ridistribuire aggiorna anziché ricreare. 2. Disaccoppiamento dal workspace — « since the script is not coupled to one workspace, you can easily have multiple mappings… allowing you to use the same script to deploy many workspaces »: una tabella di mappatura per workspace, un unico script. 3. Programmabilità — è codice, da cui variabili e cicli: « build 10 teams that all have a very similar structure and just need some nouns renamed ». → L'indirezione tramite identificatore logico è ciò che trasforma uno script API in un descrittore di stato riutilizzabile. È esattamente il ruolo che gli indirizzi di risorsa svolgono nello state di Terraform.
Il contratto API, in due fasi (asincrono).POST /v1/infra_as_code (campi intents — una rappresentazione JSON serializzata dello script —, existingResources, existingProperties) restituisce un taskId; GET /v1/async_tasks/{taskId} viene interrogato fino a status: succeeded, con la risposta che porta createdRecordCounts, resourceIdToPointerMappings e resourceIdToPropertyIdMappings. Le due tabelle di mappatura in uscita sono ciò che deve essere conservato — sono l'equivalente di un file di stato.
Due differenze operative da conoscere prima di provarlo.
Personal access token obbligatori. , anziché i consueti token bot dell'API pubblica. Una conseguenza che la pagina non discute: le azioni sono attribuite a una persona, non a un'integrazione — sollevando la stessa questione di responsabilità di « who consumes, and on whose behalf » in [[girard-acp-deux-protocoles-un-sigle-2026-08-02]]. Un agente che effettua il deployment con il token personale di un amministratore agisce per suo conto.
5 richieste al minuto. , « since this API is not a 1 request → 1 entity created or updated ». Il tasso è abbassato perché una chiamata è un batch.
La menzione degli agenti, inserita senza enfasi.« A typescript SDK for you or your coding agent to describe what you want in your Notion workspace », e il percorso consigliato è clonare l'SDK e poi lasciare che « either you or your favorite coding agent » legga il README. → Il prodotto è progettato assumendo che un agente lo utilizzi, e l'SDK tipizzato è precisamente ciò che rende questo sicuro: i tipi vincolano ciò che l'agente può descrivere, e la riconciliazione rende un errore correggibile tramite un nuovo deployment anziché una pulizia manuale. Un descrittore di stato tipizzato è uno strumento di gran lunga migliore per un agente rispetto a una serie di chiamate API imperative — l'errore vi è replicabile, non cumulativo.
Limitazioni dichiarate. può solo creare o aggiornare all'interno di un workspace esistente (impossibilità di creare un workspace); non tutte le entità sono coperte — fare riferimento al file di definizione dei tipi dell'SDK, con i primitivi di alto livello che dovrebbero funzionare; rate limit abbassato.
Ciò che la pagina non dice, e che va tenuto presente.
Nessuna menzione della distruzione. L'API "crea o aggiorna". Cosa succede a un elemento rimosso dallo script? Un vero strumento di gestione dello stato sa eliminare ciò che non è più dichiarato — qui nulla lo indica, il che suggerisce una riconciliazione additiva e quindi una possibile deriva tra lo script e il workspace effettivo.
Nessuna modalità "plan". e nessuna anteprima prima dell'applicazione. Si distribuisce e si osserva.
Nessuna gestione della concorrenza. due deployment simultanei sullo stesso workspace non vengono discussi.
Nessun autore, nessuna data. Per una documentazione alpha in evoluzione, si tratta di una lacuna che renderà rapidamente obsoleta qualsiasi citazione — da cui la datazione basata sull'osservazione in questa scheda.
Angolo di veille — perché questo conta al di là di Notion. è un ulteriore segnale della migrazione del modello dichiarativo fuori dall'infrastruttura. Dopo il cloud, i workspace documentali; e il fattore scatenante riconosciuto è l'agente di codifica, che necessita di un formato descrivibile, tipizzato, replicabile anziché di una sequenza di azioni. Da mettere in relazione con la logica "un file anziché un team" in [[isenberg-meng-to-google-design-md-design-team-in-a-file-2026-05-06]], e con la disciplina della specifica versionata in [[lassiege-usine-logicielle-heure-ia-2026-07-28]].
Meta / riferimenti incrociati. la questione del token personale e dell'agire per conto altrui in [[girard-acp-deux-protocoles-un-sigle-2026-08-02]]; l'identità di un agente e il suo ambito d'azione in uber-engineering-agent-identity-crisis-zero-trust-spire-2026-05-21 e valente-zalewski-beyond-zero-enterprise-security-ai-era-2026-07-20; gli artefatti dichiarativi guidati da agente in isenberg-meng-to-google-design-md-design-team-in-a-file-2026-05-06.
Affermazioni attribuite
il prodotto è in sviluppo, soggetto a breaking changes, e limitato alla creazione o all'aggiornamento in uno spazio esistente
— Notion as Code
Il grafo di conoscenza estratto da questa fiche — 4 entità, 12 relazioni.
In questo grafo :Notion as Code · How to use Notion as Code · identifiant de ressource logique · Notion