@hgdc/docs 0.4.2 → 0.4.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/integration.ts +8 -1
- package/src/styles/theme.css +44 -10
- package/template/.astro/content-modules.mjs +15 -35
- package/template/.build/.well-known/llms.txt +34 -51
- package/template/.build/404.html +4 -4
- package/template/.build/_astro/Search.astro_astro_type_script_index_0_lang.VKDD8r2I.js +1 -0
- package/template/.build/_astro/common.Ixp7olnv.css +3 -0
- package/template/.build/_astro/logo-clair.BqNh6JNi.svg +1 -0
- package/template/.build/_astro/logo-sombre.BkgsFXxh.svg +1 -0
- package/template/.build/_hgdc/corpus.json +1 -1
- package/template/.build/demarrer/premiere-doc/index.html +25 -0
- package/template/.build/demarrer/premiere-doc.md +65 -0
- package/template/.build/explications/donnees/index.html +55 -0
- package/template/.build/explications/donnees.md +28 -0
- package/template/.build/explications/fonctionnement/index.html +33 -0
- package/template/.build/explications/fonctionnement.md +32 -0
- package/template/.build/guides/agents/index.html +59 -0
- package/template/.build/guides/agents.md +54 -0
- package/template/.build/guides/assistant/index.html +60 -0
- package/template/.build/guides/assistant.md +46 -0
- package/template/.build/guides/composants/index.html +38 -0
- package/template/.build/guides/composants.md +103 -0
- package/template/.build/guides/ecrire/index.html +56 -0
- package/template/.build/guides/ecrire.md +63 -0
- package/template/.build/guides/elements/index.html +1 -0
- package/template/.build/guides/navigation/index.html +30 -0
- package/template/.build/guides/navigation.md +63 -0
- package/template/.build/guides/publier/index.html +27 -0
- package/template/.build/guides/publier.md +65 -0
- package/template/.build/guides/theme/index.html +27 -0
- package/template/.build/guides/theme.md +33 -0
- package/template/.build/images/favicon.svg +1 -0
- package/template/.build/images/logo-clair.svg +1 -0
- package/template/.build/images/logo-sombre.svg +1 -0
- package/template/.build/index.html +14 -18
- package/template/.build/index.md +21 -59
- package/template/.build/llms-full.txt +515 -2331
- package/template/.build/llms.txt +34 -51
- package/template/.build/pagefind/fragment/fr-ch_1aa5706.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_21308c9.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_256be83.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_3786e05.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_3e2d7bf.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_53e6d95.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_7011e1a.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_7252d5b.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_8a5f581.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_9221692.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_a4b68e2.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_d4ef5e9.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_edaf413.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_f017e56.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_fe71cc1.pf_fragment +0 -0
- package/template/.build/pagefind/index/fr-ch_481c81a.pf_index +0 -0
- package/template/.build/pagefind/pagefind-entry.json +1 -1
- package/template/.build/pagefind/pagefind.fr-ch_46a632d8eba7e.pf_meta +0 -0
- package/template/.build/reference/api-assistant/index.html +102 -0
- package/template/.build/reference/api-assistant.md +60 -0
- package/template/.build/reference/cli/index.html +11 -153
- package/template/.build/reference/cli.md +23 -159
- package/template/.build/reference/docs-json/index.html +157 -0
- package/template/.build/reference/docs-json.md +47 -0
- package/template/.build/reference/mcp/index.html +92 -0
- package/template/.build/reference/mcp.md +49 -0
- package/template/node_modules/.vite/deps/_metadata.json +8 -8
- package/template/.astro/data-store.json +0 -1
- package/template/.astro/settings.json +0 -5
- package/template/.build/_astro/Search.astro_astro_type_script_index_0_lang.D7EcezBU.js +0 -1
- package/template/.build/_astro/common.Dx3aBIS0.css +0 -3
- package/template/.build/_astro/logo.BPu921Tp.svg +0 -1
- package/template/.build/concepts/confidentialite/index.html +0 -50
- package/template/.build/concepts/confidentialite.md +0 -38
- package/template/.build/concepts/deploiements/index.html +0 -106
- package/template/.build/concepts/deploiements.md +0 -70
- package/template/.build/concepts/organisations-et-roles/index.html +0 -83
- package/template/.build/concepts/organisations-et-roles.md +0 -39
- package/template/.build/concepts/preversion/index.html +0 -49
- package/template/.build/concepts/preversion.md +0 -52
- package/template/.build/concepts/secrets-et-coffre/index.html +0 -70
- package/template/.build/concepts/secrets-et-coffre.md +0 -54
- package/template/.build/demarrer/depuis-github/index.html +0 -34
- package/template/.build/demarrer/depuis-github.md +0 -68
- package/template/.build/demarrer/premier-site/index.html +0 -28
- package/template/.build/demarrer/premier-site.md +0 -94
- package/template/.build/guides/brancher-un-domaine/index.html +0 -91
- package/template/.build/guides/brancher-un-domaine.md +0 -81
- package/template/.build/guides/cle-d-api/index.html +0 -62
- package/template/.build/guides/cle-d-api.md +0 -78
- package/template/.build/guides/depannage/index.html +0 -64
- package/template/.build/guides/depannage.md +0 -69
- package/template/.build/guides/deployer-depuis-github/index.html +0 -45
- package/template/.build/guides/deployer-depuis-github.md +0 -70
- package/template/.build/guides/deployer-un-framework/index.html +0 -81
- package/template/.build/guides/deployer-un-framework.md +0 -74
- package/template/.build/guides/github-actions-sans-application/index.html +0 -53
- package/template/.build/guides/github-actions-sans-application.md +0 -95
- package/template/.build/guides/inviter-une-personne/index.html +0 -28
- package/template/.build/guides/inviter-une-personne.md +0 -38
- package/template/.build/guides/lire-les-logs/index.html +0 -37
- package/template/.build/guides/lire-les-logs.md +0 -48
- package/template/.build/guides/migrer-depuis-vercel/index.html +0 -25
- package/template/.build/guides/migrer-depuis-vercel.md +0 -51
- package/template/.build/guides/monorepo/index.html +0 -40
- package/template/.build/guides/monorepo.md +0 -42
- package/template/.build/guides/revenir-en-arriere/index.html +0 -39
- package/template/.build/guides/revenir-en-arriere.md +0 -50
- package/template/.build/guides/site-statique/index.html +0 -41
- package/template/.build/guides/site-statique.md +0 -59
- package/template/.build/guides/synchroniser-doppler/index.html +0 -46
- package/template/.build/guides/synchroniser-doppler.md +0 -63
- package/template/.build/guides/variables-d-environnement/index.html +0 -73
- package/template/.build/guides/variables-d-environnement.md +0 -92
- package/template/.build/images/famille/account.svg +0 -1
- package/template/.build/images/famille/analytics.svg +0 -1
- package/template/.build/images/famille/docs.svg +0 -1
- package/template/.build/images/famille/host.svg +0 -1
- package/template/.build/images/famille/mail.svg +0 -1
- package/template/.build/images/famille/portal.svg +0 -1
- package/template/.build/images/famille/status.svg +0 -1
- package/template/.build/images/logo.svg +0 -1
- package/template/.build/pagefind/fragment/fr-ch_16987e2.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_2b4c97b.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_3294a5c.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_34858c9.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_39ddba1.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_4ab1899.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_4d3a52a.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_506c187.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_5aa255a.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_6841c7d.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_6dc7a2d.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_847edff.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_8745af7.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_8aac5e6.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_916b233.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_9fd014a.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_a0808f8.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_a4e1f69.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_a80a53d.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_a9e725b.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_ac3f64c.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_af292f1.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_af3e716.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_b0689a4.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_baed996.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_c89e27a.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_cd6ca13.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_d09af09.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_d4bcea8.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_dc2a134.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_ded7ddc.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_e2528cb.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_e3cbb4e.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_e7902d9.pf_fragment +0 -0
- package/template/.build/pagefind/fragment/fr-ch_f48ca47.pf_fragment +0 -0
- package/template/.build/pagefind/index/fr-ch_8a5f905.pf_index +0 -0
- package/template/.build/pagefind/index/fr-ch_fbd9c96.pf_index +0 -0
- package/template/.build/pagefind/pagefind.fr-ch_211aacbfa7f0e.pf_meta +0 -0
- package/template/.build/reference/api/deploiements/index.html +0 -326
- package/template/.build/reference/api/deploiements.md +0 -170
- package/template/.build/reference/api/erreurs/index.html +0 -102
- package/template/.build/reference/api/erreurs.md +0 -50
- package/template/.build/reference/api/fichiers/index.html +0 -82
- package/template/.build/reference/api/fichiers.md +0 -62
- package/template/.build/reference/api/introduction/index.html +0 -126
- package/template/.build/reference/api/introduction.md +0 -84
- package/template/.build/reference/api/projets/index.html +0 -184
- package/template/.build/reference/api/projets.md +0 -102
- package/template/.build/reference/api/utilisateur/index.html +0 -96
- package/template/.build/reference/api/utilisateur.md +0 -89
- package/template/.build/reference/api/variables/index.html +0 -75
- package/template/.build/reference/api/variables.md +0 -58
- package/template/.build/reference/compatibilite/index.html +0 -196
- package/template/.build/reference/compatibilite.md +0 -64
- package/template/.build/reference/domaines/index.html +0 -171
- package/template/.build/reference/domaines.md +0 -76
- package/template/.build/reference/limites/index.html +0 -159
- package/template/.build/reference/limites.md +0 -56
- package/template/.build/reference/variables/index.html +0 -164
- package/template/.build/reference/variables.md +0 -63
- package/template/.build/reference/vercel-json/index.html +0 -65
- package/template/.build/reference/vercel-json.md +0 -51
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html><html lang="fr-CH" dir="ltr" data-theme="dark" data-has-toc data-has-sidebar class="astro-mxbotnn6"><head><meta charset="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><title>Envoyer un fichier | Host</title><style>:root{--sl-color-accent-low:#172544;--sl-color-accent:#4b8eff;--sl-color-accent-high:#87d3ff;--hgdc-on-accent:#000000;}:root:not([data-hd-theme="dark"]){--sl-color-accent-low:#dcf1ff;--sl-color-accent:#194ff7;--sl-color-accent-high:#0400bf;--hgdc-on-accent:#ffffff;}</style><link rel="shortcut icon" href="/docs/images/logo.svg" type="image/svg+xml"/><meta name="generator" content="Astro v7.3.8"/><meta name="generator" content="Starlight v0.42.6"/><meta property="og:title" content="Envoyer un fichier"/><meta property="og:type" content="article"/><meta property="og:locale" content="fr-CH"/><meta property="og:description" content="Envoyer le contenu d'un fichier à Host, adressé par son empreinte SHA1, avant de créer un déploiement."/><meta property="og:site_name" content="Host"/><meta name="twitter:card" content="summary_large_image"/><meta name="description" content="Envoyer le contenu d'un fichier à Host, adressé par son empreinte SHA1, avant de créer un déploiement."/><link rel="alternate" type="text/markdown" href="/docs/reference/api/fichiers.md"><link rel="describedby" type="text/markdown" href="/docs/llms.txt"><script>
|
|
2
|
-
;(() => {
|
|
3
|
-
let stored = null
|
|
4
|
-
try {
|
|
5
|
-
stored = localStorage.getItem("starlight-theme")
|
|
6
|
-
} catch {}
|
|
7
|
-
const dark =
|
|
8
|
-
stored === "dark" || (stored === "auto" && matchMedia("(prefers-color-scheme: dark)").matches)
|
|
9
|
-
const theme = dark ? "dark" : "light"
|
|
10
|
-
document.documentElement.dataset.theme = theme
|
|
11
|
-
document.documentElement.dataset.hdTheme = theme
|
|
12
|
-
window.StarlightThemeProvider = { updatePickers() {} }
|
|
13
|
-
})()
|
|
14
|
-
</script><link rel="stylesheet" href="/docs/_astro/print.ehPL0gv-.css" media="print"><link rel="stylesheet" href="/docs/_astro/common.Dx3aBIS0.css"><style>@layer starlight.components{svg:where(.astro-lgqmsw3b){color:var(--sl-icon-color);font-size:var(--sl-icon-size,1em);width:1em;height:1em;overflow:visible}}
|
|
15
|
-
@layer starlight.components{starlight-tabs:where(.astro-a5blunwz){display:block}.tablist-wrapper:where(.astro-a5blunwz){overflow-x:auto}:where(.astro-a5blunwz)[role=tablist]{border-bottom:2px solid var(--sl-color-gray-5);padding:0;list-style:none;display:flex}.tab:where(.astro-a5blunwz){display:flex}.tab:where(.astro-a5blunwz)>:where(.astro-a5blunwz)[role=tab]{--sl-tab-color-border:var(--sl-color-gray-5);line-height:var(--sl-line-height-headings);box-shadow:0 2px 0 var(--sl-tab-color-border);color:var(--sl-color-gray-3);outline-offset:var(--sl-outline-offset-inside);overflow-wrap:initial;align-items:center;gap:.5rem;padding:.275rem 1.25rem;text-decoration:none;display:flex}.tab:where(.astro-a5blunwz) :where(.astro-a5blunwz)[role=tab][aria-selected=true]{--sl-tab-color-border:var(--sl-color-text-accent);color:var(--sl-color-white);font-weight:600}.tablist-wrapper:where(.astro-a5blunwz)~[role=tabpanel]{margin-top:1rem}}
|
|
16
|
-
</style><script type="module" src="/docs/_astro/page.cNngjUgL.js"></script></head><body class="astro-mxbotnn6"><a class="sl-skip-link astro-k4td3kwj" href="#_top">Aller au contenu</a><div class="hd-page"><header class="hd-topbar"><div class="hd-header"><div class="hd-header__start"><button type="button" class="hd-icon-button hd-menu-button" popovertarget="starlight__sidebar" aria-label="Menu de la documentation" aria-controls="starlight__sidebar"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M4 7h16M4 12h16M4 17h10"></path></svg></button><a class="hd-brand" href="/docs/"><span class="hd-brand__mark"><img class="hd-brand__light" src="/docs/images/logo.svg" alt="" width="24" height="24"><img class="hd-brand__dark" src="/docs/images/logo.svg" alt="" width="24" height="24"></span><span class="hd-brand__name">Host</span></a></div><div class="hd-header__end"><hd-search data-base="/docs" data-assistant><button type="button" class="hd-search-trigger" data-open aria-haspopup="dialog" aria-label="Rechercher (Ctrl K)"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M11 18a7 7 0 1 0 0-14 7 7 0 0 0 0 14Zm5-2 4 4"></path></svg><span class="hd-search-trigger__label">Rechercher</span><kbd class="hd-kbd" data-shortcut>Ctrl K</kbd></button><dialog class="hd-palette" aria-label="Rechercher dans la documentation"><div class="hd-palette__box"><div class="hd-palette__field"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M11 18a7 7 0 1 0 0-14 7 7 0 0 0 0 14Zm5-2 4 4"></path></svg><input type="search" data-input placeholder="Rechercher dans la documentation" autocomplete="off" spellcheck="false" role="combobox" aria-expanded="false" aria-controls="hd-palette-results" aria-autocomplete="list"><button type="button" class="hd-kbd hd-kbd--button" data-close>Échap</button></div><div class="hd-palette__results" id="hd-palette-results" role="listbox" aria-label="Résultats" data-results></div><p class="hd-palette__status" data-status role="status">Tape un mot pour chercher dans les pages.</p><footer class="hd-palette__hints" aria-hidden="true"><span><kbd class="hd-kbd">↑</kbd><kbd class="hd-kbd">↓</kbd> Choisir</span><span><kbd class="hd-kbd">↵</kbd> Ouvrir</span><span><kbd class="hd-kbd">Échap</kbd> Fermer</span></footer></div></dialog></hd-search><script type="module" src="/docs/_astro/Search.astro_astro_type_script_index_0_lang.D7EcezBU.js"></script><button type="button" class="hd-icon-button" data-hgdc-ask aria-label="Demander à l'assistant" title="Demander à l'assistant (Ctrl I)"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M12 3.5 13.6 8a3 3 0 0 0 1.9 1.9L20 11.5l-4.5 1.6a3 3 0 0 0-1.9 1.9L12 19.5 10.4 15a3 3 0 0 0-1.9-1.9L4 11.5 8.5 9.9A3 3 0 0 0 10.4 8ZM19 3v3M20.5 4.5h-3"></path></svg></button><button type="button" class="hd-icon-button hd-theme-button" data-hd-theme-toggle aria-label="Passer au thème sombre"><svg class="hd-icon hd-theme-button__moon" aria-hidden="true" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M20 14.5A8 8 0 1 1 9.5 4a6.5 6.5 0 0 0 10.5 10.5Z"></path></svg><svg class="hd-icon hd-theme-button__sun" aria-hidden="true" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M12 16a4 4 0 1 0 0-8 4 4 0 0 0 0 8ZM12 2.5v2M12 19.5v2M4.6 4.6 6 6M18 18l1.4 1.4M2.5 12h2M19.5 12h2M4.6 19.4 6 18M18 6l1.4-1.4"></path></svg></button><script type="module">var e=`starlight-theme`,t=()=>{try{return localStorage.getItem(e)||`light`}catch{return`light`}},n=()=>matchMedia(`(prefers-color-scheme: light)`).matches?`light`:`dark`,r=t=>{try{localStorage.setItem(e,t)}catch{}let r=t===`auto`?n():t;document.documentElement.dataset.theme=r,document.documentElement.dataset.hdTheme=r,i()},i=()=>{let e=t(),n=document.documentElement.dataset.theme===`dark`;for(let e of document.querySelectorAll(`[data-hd-theme-toggle]`))e.setAttribute(`aria-label`,n?`Passer au thème clair`:`Passer au thème sombre`);for(let t of document.querySelectorAll(`[data-hd-theme]`)){let n=t.dataset.hdTheme===e;t.setAttribute(`aria-checked`,String(n)),t.tabIndex=n?0:-1}};for(let e of document.querySelectorAll(`[data-hd-theme-toggle]`))e.addEventListener(`click`,()=>r(document.documentElement.dataset.theme===`dark`?`light`:`dark`));for(let e of document.querySelectorAll(`.hd-theme-choice`)){let t=[...e.querySelectorAll(`[data-hd-theme]`)];for(let e of t)e.addEventListener(`click`,()=>r(e.dataset.hdTheme));e.addEventListener(`keydown`,e=>{let n=e.key===`ArrowRight`||e.key===`ArrowDown`?1:e.key===`ArrowLeft`||e.key===`ArrowUp`?-1:0;if(!n)return;e.preventDefault();let i=t.findIndex(e=>e.getAttribute(`aria-checked`)===`true`),a=t[(i+n+t.length)%t.length];r(a.dataset.hdTheme),a.focus()})}matchMedia(`(prefers-color-scheme: light)`).addEventListener(`change`,()=>{t()===`auto`&&r(`auto`)}),i();</script></div></div></header><nav class="hd-sidebar" aria-label="Navigation de la documentation"><script type="module">for(let e of document.querySelectorAll(`[data-hgdc-version]`))e.addEventListener(`change`,()=>window.location.assign(e.value));var e=document.querySelector(`.sidebar-pane`);if(e){let t=`hd-sidebar-scroll`;try{let n=Number(sessionStorage.getItem(t));n&&(e.scrollTop=n)}catch{}let n=e.querySelector(`[aria-current="page"]`);if(n){let t=e.getBoundingClientRect(),r=n.getBoundingClientRect();(r.top<t.top||r.bottom>t.bottom)&&n.scrollIntoView({block:`center`})}addEventListener(`pagehide`,()=>{try{sessionStorage.setItem(t,String(e.scrollTop))}catch{}})}</script><hd-sidebar-pane popover="auto" id="starlight__sidebar" class="sidebar-pane"><div class="hd-sidebar__content"><div class="hd-mobile-only hd-sidebar-head"><a class="hd-brand" href="/docs/"><span class="hd-brand__name">Host</span></a><button type="button" class="hd-icon-button" popovertarget="starlight__sidebar" popovertargetaction="hide" aria-label="Fermer le menu"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M6 6l12 12M18 6 6 18"></path></svg></button></div><ul class="hd-nav hd-nav--depth-0"><li class="hd-nav__group"><p class="hd-nav__heading">Démarrer</p><ul class="hd-nav hd-nav--depth-1"><li><a href="/docs/" class="hd-nav__link"><span>Accueil</span></a></li><li><a href="/docs/demarrer/premier-site/" class="hd-nav__link"><span>Premier site</span></a></li><li><a href="/docs/demarrer/depuis-github/" class="hd-nav__link"><span>Depuis GitHub</span></a></li></ul></li><li class="hd-nav__group"><p class="hd-nav__heading">Guides</p><ul class="hd-nav hd-nav--depth-1"><li><a href="/docs/guides/cle-d-api/" class="hd-nav__link"><span>Clés d'API</span></a></li><li><a href="/docs/guides/deployer-depuis-github/" class="hd-nav__link"><span>Depuis GitHub</span></a></li><li><a href="/docs/guides/github-actions-sans-application/" class="hd-nav__link"><span>GitHub Actions sans l'app</span></a></li><li><a href="/docs/guides/deployer-un-framework/" class="hd-nav__link"><span>Un framework</span></a></li><li><a href="/docs/guides/site-statique/" class="hd-nav__link"><span>Site statique</span></a></li><li><a href="/docs/guides/monorepo/" class="hd-nav__link"><span>Monorepo</span></a></li><li><a href="/docs/guides/brancher-un-domaine/" class="hd-nav__link"><span>Brancher un domaine</span></a></li><li><a href="/docs/guides/variables-d-environnement/" class="hd-nav__link"><span>Variables</span></a></li><li><a href="/docs/guides/synchroniser-doppler/" class="hd-nav__link"><span>Doppler</span></a></li><li><a href="/docs/guides/revenir-en-arriere/" class="hd-nav__link"><span>Revenir en arrière</span></a></li><li><a href="/docs/guides/inviter-une-personne/" class="hd-nav__link"><span>Inviter une personne</span></a></li><li><a href="/docs/guides/lire-les-logs/" class="hd-nav__link"><span>Lire les logs</span></a></li><li><a href="/docs/guides/migrer-depuis-vercel/" class="hd-nav__link"><span>Migrer depuis Vercel</span></a></li><li><a href="/docs/guides/depannage/" class="hd-nav__link"><span>Dépannage</span></a></li></ul></li><li class="hd-nav__group"><p class="hd-nav__heading">Référence</p><ul class="hd-nav hd-nav--depth-1"><li><a href="/docs/reference/cli/" class="hd-nav__link"><span>CLI</span></a></li><li><a href="/docs/reference/variables/" class="hd-nav__link"><span>Variables</span></a></li><li><a href="/docs/reference/domaines/" class="hd-nav__link"><span>Domaines</span></a></li><li><a href="/docs/reference/vercel-json/" class="hd-nav__link"><span>vercel.json</span></a></li><li><a href="/docs/reference/compatibilite/" class="hd-nav__link"><span>Compatibilité</span></a></li><li><a href="/docs/reference/limites/" class="hd-nav__link"><span>Limites</span></a></li><li><details class="hd-nav__fold" open><summary class="hd-nav__link"><span>API</span><svg class="hd-icon hd-nav__chevron" aria-hidden="true" viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="m9 6 6 6-6 6"></path></svg></summary><ul class="hd-nav hd-nav--depth-2"><li><a href="/docs/reference/api/introduction/" class="hd-nav__link"><span>Introduction</span></a></li><li><a href="/docs/reference/api/erreurs/" class="hd-nav__link"><span>Erreurs</span></a></li><li><a href="/docs/reference/api/utilisateur/" class="hd-nav__link"><span>Utilisateur et organisation</span></a></li><li><a href="/docs/reference/api/projets/" class="hd-nav__link"><span>Projets</span></a></li><li><a href="/docs/reference/api/deploiements/" class="hd-nav__link"><span>Déploiements</span></a></li><li><a href="/docs/reference/api/fichiers/" class="hd-nav__link" aria-current="page"><span>Envoyer un fichier</span></a></li><li><a href="/docs/reference/api/variables/" class="hd-nav__link"><span>Variables</span></a></li></ul></details></li></ul></li><li class="hd-nav__group"><p class="hd-nav__heading">Concepts</p><ul class="hd-nav hd-nav--depth-1"><li><a href="/docs/concepts/deploiements/" class="hd-nav__link"><span>Déploiements</span></a></li><li><a href="/docs/concepts/organisations-et-roles/" class="hd-nav__link"><span>Organisations et rôles</span></a></li><li><a href="/docs/concepts/secrets-et-coffre/" class="hd-nav__link"><span>Secrets et coffre</span></a></li><li><a href="/docs/concepts/preversion/" class="hd-nav__link"><span>Préversion</span></a></li><li><a href="/docs/concepts/confidentialite/" class="hd-nav__link"><span>Sécurité et confidentialité</span></a></li></ul></li></ul><div class="hd-mobile-only hd-sidebar-footer"><div class="hd-theme-choice" role="radiogroup" aria-label="Thème"><button type="button" role="radio" aria-checked="false" data-hd-theme="auto" aria-label="Système" title="Système"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M4 5h16a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1Zm4 15h8m-4-3v3"></path></svg></button><button type="button" role="radio" aria-checked="false" data-hd-theme="light" aria-label="Clair" title="Clair"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M12 16a4 4 0 1 0 0-8 4 4 0 0 0 0 8ZM12 2.5v2M12 19.5v2M4.6 4.6 6 6M18 18l1.4 1.4M2.5 12h2M19.5 12h2M4.6 19.4 6 18M18 6l1.4-1.4"></path></svg></button><button type="button" role="radio" aria-checked="false" data-hd-theme="dark" aria-label="Sombre" title="Sombre"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M20 14.5A8 8 0 1 1 9.5 4a6.5 6.5 0 0 0 10.5 10.5Z"></path></svg></button></div></div></div></hd-sidebar-pane></nav><div class="hd-main-frame main-frame"><script type="module">var e=document.getElementById(`starlight__sidebar`),t=e?.querySelector(`sl-sidebar-state-persist`),n=`sl-sidebar-state`,r=()=>{let r=[],i=t?.dataset.hash||``;try{let e=sessionStorage.getItem(n),t=JSON.parse(e||`{}`);Array.isArray(t.open)&&t.hash===i&&(r=t.open)}catch{}return{hash:i,open:r,scroll:e?.scrollTop||0}},i=e=>{try{sessionStorage.setItem(n,JSON.stringify(e))}catch{}},a=()=>i(r()),o=(e,t)=>{let n=r();n.open[t]=e,i(n)};t?.addEventListener(`click`,e=>{if(!(e.target instanceof Element))return;let t=e.target.closest(`summary`)?.closest(`details`);if(!t)return;let n=t.querySelector(`sl-sidebar-restore`),r=parseInt(n?.dataset.index||``);isNaN(r)||o(!t.open,r)}),addEventListener(`visibilitychange`,()=>{document.visibilityState===`hidden`&&a()});</script><div class="hd-columns hd-columns--toc"><div class="hd-columns__main main-pane"><main data-pagefind-body class="astro-mxbotnn6" lang="fr-CH" dir="ltr"><div class="content-panel astro-64cflj2q"><div class="sl-container astro-64cflj2q"><div class="hd-title not-content"><p class="hd-eyebrow" data-pagefind-meta="section">Référence</p><div class="hd-title__row"><h1 id="_top">Envoyer un fichier</h1><div class="hd-page-actions" data-hgdc-skip data-pagefind-ignore><div class="hd-split"><button type="button" class="hd-split__main" data-hgdc-copy="/docs/reference/api/fichiers.md"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M9 9h10a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1V10a1 1 0 0 1 1-1Zm-4 6H4.5A1.5 1.5 0 0 1 3 13.5v-9A1.5 1.5 0 0 1 4.5 3h9A1.5 1.5 0 0 1 15 4.5V5"></path></svg><span data-label>Copier la page</span></button><details class="hd-menu"><summary class="hd-split__more" aria-label="Autres formats de la page"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="m6 9 6 6 6-6"></path></svg></summary><ul class="hd-menu__list"><li><button type="button" data-hgdc-copy-item><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M9 9h10a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1V10a1 1 0 0 1 1-1Zm-4 6H4.5A1.5 1.5 0 0 1 3 13.5v-9A1.5 1.5 0 0 1 4.5 3h9A1.5 1.5 0 0 1 15 4.5V5"></path></svg><span><strong>Copier la page</strong><small>En Markdown, pour un LLM</small></span></button></li><li><a href="/docs/reference/api/fichiers.md"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M4 6h16a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1Zm3 9V9l2.5 3L12 9v6m5-6v6m-2-2 2 2 2-2"></path></svg><span><strong>Voir en Markdown</strong><small>La page en texte brut</small></span></a></li><li><a data-hgdc-open="claude" href="https://claude.ai/new" target="_blank" rel="noopener"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M7 17 17 7M8 7h9v9"></path></svg><span><strong>Ouvrir dans Claude</strong><small>Poser une question sur cette page</small></span></a></li><li><a data-hgdc-open="chatgpt" href="https://chatgpt.com/" target="_blank" rel="noopener"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M7 17 17 7M8 7h9v9"></path></svg><span><strong>Ouvrir dans ChatGPT</strong><small>Poser une question sur cette page</small></span></a></li><li><a href="/docs/llms.txt"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M14 3H7a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8Zm0 0v5h5M9 13h6m-6 4h4"></path></svg><span><strong>llms.txt</strong><small>L'index de la doc pour les agents</small></span></a></li></ul></details></div><span class="sr-only" role="status" aria-live="polite" data-hgdc-copy-status></span></div></div><p class="hd-lead">Envoyer le contenu d'un fichier à Host, adressé par son empreinte SHA1, avant de créer un déploiement.</p></div><script type="module">var e=document.querySelector(`[data-hgdc-copy-status]`),t=document.querySelector(`[data-hgdc-copy]`);async function n(){if(!t)return;let n=t.querySelector(`[data-label]`),r=t=>{n.textContent=t,e&&(e.textContent=t),setTimeout(()=>n.textContent=`Copier la page`,2e3)};try{let e=await fetch(t.dataset.hgdcCopy);if(!e.ok)throw Error(String(e.status));await navigator.clipboard.writeText(await e.text()),r(`Page copiée`)}catch{r(`Copie impossible`)}}if(t?.addEventListener(`click`,()=>void n()),document.querySelector(`[data-hgdc-copy-item]`)?.addEventListener(`click`,()=>{document.querySelector(`.hd-menu`).open=!1,n()}),t){let e=`Lis ${new URL(t.dataset.hgdcCopy,location.href).href} et réponds à mes questions sur cette page.`;for(let t of document.querySelectorAll(`[data-hgdc-open]`))t.href=`${t.dataset.hgdcOpen===`claude`?`https://claude.ai/new`:`https://chatgpt.com/`}?q=${encodeURIComponent(e)}`}for(let e of document.querySelectorAll(`.hd-menu`))document.addEventListener(`click`,t=>{e.open&&!e.contains(t.target)&&(e.open=!1)}),e.addEventListener(`keydown`,t=>{t.key===`Escape`&&e.open&&(t.stopPropagation(),e.open=!1,e.querySelector(`summary`)?.focus())});</script></div></div><div class="content-panel astro-64cflj2q"><div class="sl-container astro-64cflj2q"><div class="sl-markdown-content"><p>Un fichier s’envoie par son empreinte SHA1. Host ne stocke jamais deux fois le même contenu pour une organisation : tu n’envoies que les fichiers que <a href="/docs/reference/api/deploiements/">Créer un déploiement</a> signale comme manquants.</p>
|
|
17
|
-
<h2 class="hd-endpoint" id="post-v2files"><span class="hd-method" data-method="post">POST</span> <code class="hd-path">/v2/files</code></h2>
|
|
18
|
-
<div class="expressive-code"><link rel="stylesheet" href="/docs/_astro/ec.t9qpe.css"><script type="module" src="/docs/_astro/ec.0vx5m.js"></script><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="bash"><code><div class="ec-line"><div class="code"><span style="--0:#1F2328;--1:#E6EDF3">SHA</span><span style="--0:#CA212D;--1:#FF7B72">=</span><span style="--0:#1F2328;--1:#E6EDF3">$(</span><span style="--0:#953800;--1:#FFA657">sha1sum</span><span style="--0:#1F2328;--1:#E6EDF3"> </span><span style="--0:#0A3069;--1:#A5D6FF">index.html</span><span style="--0:#1F2328;--1:#E6EDF3"> </span><span style="--0:#CA212D;--1:#FF7B72">|</span><span style="--0:#1F2328;--1:#E6EDF3"> </span><span style="--0:#953800;--1:#FFA657">cut</span><span style="--0:#1F2328;--1:#E6EDF3"> </span><span style="--0:#0550AE;--1:#79C0FF">-d</span><span style="--0:#0A3069;--1:#A5D6FF">' '</span><span style="--0:#1F2328;--1:#E6EDF3"> </span><span style="--0:#0550AE;--1:#79C0FF">-f1</span><span style="--0:#1F2328;--1:#E6EDF3">)</span></div></div><div class="ec-line"><div class="code"><span style="--0:#953800;--1:#FFA657">curl</span><span style="--0:#1F2328;--1:#E6EDF3"> </span><span style="--0:#0550AE;--1:#79C0FF">-X</span><span style="--0:#1F2328;--1:#E6EDF3"> </span><span style="--0:#0A3069;--1:#A5D6FF">POST</span><span style="--0:#1F2328;--1:#E6EDF3"> </span><span style="--0:#0A3069;--1:#A5D6FF">https://api.host.hgdc.ch/v2/files</span><span style="--0:#1F2328;--1:#E6EDF3"> </span><span style="--0:#CA212D;--1:#FF7B72">\</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#0550AE;--1:#79C0FF">-H</span><span style="--0:#1F2328;--1:#E6EDF3"> </span><span style="--0:#0A3069;--1:#A5D6FF">"Authorization: Bearer </span><span style="--0:#1F2328;--1:#E6EDF3">$VERCEL_TOKEN</span><span style="--0:#0A3069;--1:#A5D6FF">"</span><span style="--0:#1F2328;--1:#E6EDF3"> </span><span style="--0:#CA212D;--1:#FF7B72">\</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#0550AE;--1:#79C0FF">-H</span><span style="--0:#1F2328;--1:#E6EDF3"> </span><span style="--0:#0A3069;--1:#A5D6FF">"x-vercel-digest: </span><span style="--0:#1F2328;--1:#E6EDF3">$SHA</span><span style="--0:#0A3069;--1:#A5D6FF">"</span><span style="--0:#1F2328;--1:#E6EDF3"> </span><span style="--0:#CA212D;--1:#FF7B72">\</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#0550AE;--1:#79C0FF">-H</span><span style="--0:#1F2328;--1:#E6EDF3"> </span><span style="--0:#0A3069;--1:#A5D6FF">"Content-Type: application/octet-stream"</span><span style="--0:#1F2328;--1:#E6EDF3"> </span><span style="--0:#CA212D;--1:#FF7B72">\</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#0550AE;--1:#79C0FF">--data-binary</span><span style="--0:#1F2328;--1:#E6EDF3"> </span><span style="--0:#0A3069;--1:#A5D6FF">@index.html</span></div></div></code></pre><div class="copy"><div aria-live="polite"></div><button title="Copier dans le presse-papiers" data-copied="Copié !" data-code="SHA=$(sha1sum index.html | cut -d' ' -f1)curl -X POST https://api.host.hgdc.ch/v2/files \ -H "Authorization: Bearer $VERCEL_TOKEN" \ -H "x-vercel-digest: $SHA" \ -H "Content-Type: application/octet-stream" \ --data-binary @index.html"><div></div></button></div></figure></div>
|
|
19
|
-
<p>En Node.js, calcule l’empreinte avant l’envoi :</p>
|
|
20
|
-
<div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="javascript"><code><div class="ec-line"><div class="code"><span style="--0:#CA212D;--1:#FF7B72">import</span><span style="--0:#1F2328;--1:#E6EDF3"> { createHash } </span><span style="--0:#CA212D;--1:#FF7B72">from</span><span style="--0:#1F2328;--1:#E6EDF3"> </span><span style="--0:#0A3069;--1:#A5D6FF">"node:crypto"</span></div></div><div class="ec-line"><div class="code"><span style="--0:#CA212D;--1:#FF7B72">import</span><span style="--0:#1F2328;--1:#E6EDF3"> { readFile } </span><span style="--0:#CA212D;--1:#FF7B72">from</span><span style="--0:#1F2328;--1:#E6EDF3"> </span><span style="--0:#0A3069;--1:#A5D6FF">"node:fs/promises"</span></div></div><div class="ec-line"><div class="code">
|
|
21
|
-
</div></div><div class="ec-line"><div class="code"><span style="--0:#CA212D;--1:#FF7B72">const</span><span style="--0:#1F2328;--1:#E6EDF3"> </span><span style="--0:#0550AE;--1:#79C0FF">bytes</span><span style="--0:#1F2328;--1:#E6EDF3"> </span><span style="--0:#CA212D;--1:#FF7B72">=</span><span style="--0:#1F2328;--1:#E6EDF3"> </span><span style="--0:#CA212D;--1:#FF7B72">await</span><span style="--0:#1F2328;--1:#E6EDF3"> </span><span style="--0:#7A4BD1;--1:#D2A8FF">readFile</span><span style="--0:#1F2328;--1:#E6EDF3">(</span><span style="--0:#0A3069;--1:#A5D6FF">"index.html"</span><span style="--0:#1F2328;--1:#E6EDF3">)</span></div></div><div class="ec-line"><div class="code"><span style="--0:#CA212D;--1:#FF7B72">const</span><span style="--0:#1F2328;--1:#E6EDF3"> </span><span style="--0:#0550AE;--1:#79C0FF">sha</span><span style="--0:#1F2328;--1:#E6EDF3"> </span><span style="--0:#CA212D;--1:#FF7B72">=</span><span style="--0:#1F2328;--1:#E6EDF3"> </span><span style="--0:#7A4BD1;--1:#D2A8FF">createHash</span><span style="--0:#1F2328;--1:#E6EDF3">(</span><span style="--0:#0A3069;--1:#A5D6FF">"sha1"</span><span style="--0:#1F2328;--1:#E6EDF3">).</span><span style="--0:#7A4BD1;--1:#D2A8FF">update</span><span style="--0:#1F2328;--1:#E6EDF3">(bytes).</span><span style="--0:#7A4BD1;--1:#D2A8FF">digest</span><span style="--0:#1F2328;--1:#E6EDF3">(</span><span style="--0:#0A3069;--1:#A5D6FF">"hex"</span><span style="--0:#1F2328;--1:#E6EDF3">)</span></div></div><div class="ec-line"><div class="code">
|
|
22
|
-
</div></div><div class="ec-line"><div class="code"><span style="--0:#CA212D;--1:#FF7B72">await</span><span style="--0:#1F2328;--1:#E6EDF3"> </span><span style="--0:#7A4BD1;--1:#D2A8FF">fetch</span><span style="--0:#1F2328;--1:#E6EDF3">(</span><span style="--0:#0A3069;--1:#A5D6FF">"https://api.host.hgdc.ch/v2/files"</span><span style="--0:#1F2328;--1:#E6EDF3">, {</span></div></div><div class="ec-line"><div class="code"><span class="indent"><span style="--0:#1F2328;--1:#E6EDF3"> </span></span><span style="--0:#1F2328;--1:#E6EDF3">method: </span><span style="--0:#0A3069;--1:#A5D6FF">"POST"</span><span style="--0:#1F2328;--1:#E6EDF3">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"><span style="--0:#1F2328;--1:#E6EDF3"> </span></span><span style="--0:#1F2328;--1:#E6EDF3">headers: {</span></div></div><div class="ec-line"><div class="code"><span class="indent"><span style="--0:#1F2328;--1:#E6EDF3"> </span></span><span style="--0:#1F2328;--1:#E6EDF3">Authorization: </span><span style="--0:#0A3069;--1:#A5D6FF">`Bearer ${</span><span style="--0:#1F2328;--1:#E6EDF3">process</span><span style="--0:#0A3069;--1:#A5D6FF">.</span><span style="--0:#1F2328;--1:#E6EDF3">env</span><span style="--0:#0A3069;--1:#A5D6FF">.</span><span style="--0:#0550AE;--1:#79C0FF">VERCEL_TOKEN</span><span style="--0:#0A3069;--1:#A5D6FF">}`</span><span style="--0:#1F2328;--1:#E6EDF3">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#0A3069;--1:#A5D6FF">"x-vercel-digest"</span><span style="--0:#1F2328;--1:#E6EDF3">: sha,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#0A3069;--1:#A5D6FF">"Content-Type"</span><span style="--0:#1F2328;--1:#E6EDF3">: </span><span style="--0:#0A3069;--1:#A5D6FF">"application/octet-stream"</span><span style="--0:#1F2328;--1:#E6EDF3">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"><span style="--0:#1F2328;--1:#E6EDF3"> </span></span><span style="--0:#1F2328;--1:#E6EDF3">},</span></div></div><div class="ec-line"><div class="code"><span class="indent"><span style="--0:#1F2328;--1:#E6EDF3"> </span></span><span style="--0:#1F2328;--1:#E6EDF3">body: bytes,</span></div></div><div class="ec-line"><div class="code"><span style="--0:#1F2328;--1:#E6EDF3">})</span></div></div></code></pre><div class="copy"><div aria-live="polite"></div><button title="Copier dans le presse-papiers" data-copied="Copié !" data-code="import { createHash } from "node:crypto"import { readFile } from "node:fs/promises"const bytes = await readFile("index.html")const sha = createHash("sha1").update(bytes).digest("hex")await fetch("https://api.host.hgdc.ch/v2/files", { method: "POST", headers: { Authorization: `Bearer ${process.env.VERCEL_TOKEN}`, "x-vercel-digest": sha, "Content-Type": "application/octet-stream", }, body: bytes,})"><div></div></button></div></figure></div>
|
|
23
|
-
<h3 id="en-têtes">En-têtes</h3>
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
<div class="hd-table"><table><thead><tr><th>En-tête</th><th>Valeur</th><th>Requis</th></tr></thead><tbody><tr><td><code>Authorization</code></td><td><code>Bearer ah_…</code></td><td>Oui</td></tr><tr><td><code>x-vercel-digest</code></td><td>Empreinte SHA1 du contenu, en hexadécimal, 40 caractères</td><td>Oui. <code>x-now-digest</code> est aussi accepté</td></tr><tr><td><code>Content-Type</code></td><td><code>application/octet-stream</code></td><td>Recommandé</td></tr></tbody></table></div>
|
|
50
|
-
<h3 id="corps">Corps</h3>
|
|
51
|
-
<p>Le contenu brut du fichier, 20 Mo au plus.</p>
|
|
52
|
-
<h3 id="réponse">Réponse</h3>
|
|
53
|
-
<p>Réponse <code>200</code> avec un objet vide, <code>{}</code>.</p>
|
|
54
|
-
<h3 id="erreurs">Erreurs</h3>
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
<div class="hd-table"><table><thead><tr><th>Statut</th><th>Code</th><th>Cause</th></tr></thead><tbody><tr><td><code>400</code></td><td><code>bad_request</code></td><td>En-tête <code>x-vercel-digest</code> absent ou mal formé</td></tr><tr><td><code>400</code></td><td><code>invalid_digest</code></td><td>Le contenu ne correspond pas à l’empreinte annoncée. Recalcule le SHA1</td></tr><tr><td><code>413</code></td><td><code>file_too_large</code></td><td>Le fichier dépasse 20 Mo</td></tr></tbody></table></div>
|
|
81
|
-
<h2 id="limites">Limites</h2>
|
|
82
|
-
<p>L’envoi de fichiers a son propre débit : 6 000 par minute, avec des rafales de 3 000 par clé. Un site Next.js compte souvent des milliers de fichiers : envoie-les en parallèle, mais sans dépasser ce débit. Voir <a href="/docs/reference/limites/">Limites</a>.</p></div><hgdc-feedback class="hgdc-feedback not-content" data-endpoint="https://docs.hgdc.ch/api/v1/feedback" data-project="js743wp3001k1jvrdad0fwcjx18gc789" data-pagefind-ignore="true"><div data-step="ask"><p class="hgdc-feedback__question">Cette page t'a aidé ?</p><div class="hgdc-feedback__choices"><button type="button" data-helpful="true"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M7 10v11M15 5.9 14 10h5.8a2 2 0 0 1 1.9 2.5l-2.3 7A2 2 0 0 1 17.5 21H4a1 1 0 0 1-1-1v-9a1 1 0 0 1 1-1h2.8a2 2 0 0 0 1.8-1.1L12 2a3.1 3.1 0 0 1 3 3.9Z"></path></svg>Oui</button><button type="button" data-helpful="false"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M17 14V3M9 18.1 10 14H4.2a2 2 0 0 1-1.9-2.5l2.3-7A2 2 0 0 1 6.5 3H20a1 1 0 0 1 1 1v9a1 1 0 0 1-1 1h-2.8a2 2 0 0 0-1.8 1.1L12 22a3.1 3.1 0 0 1-3-3.9Z"></path></svg>Non</button></div></div><form data-step="comment" hidden><label for="hgdc-feedback-comment">Qu'est-ce qui manquait ou pourrait être plus clair ? (facultatif)</label><textarea id="hgdc-feedback-comment" name="comment" rows="3" maxlength="1000"></textarea><div class="hgdc-feedback__choices"><button type="submit">Envoyer</button><button type="button" data-skip>Passer</button></div></form><p data-step="done" class="hgdc-feedback__done" role="status" hidden>Merci, c'est noté.</p></hgdc-feedback><nav class="hd-pagination not-content" aria-label="Pages voisines" data-pagefind-ignore><a class="hd-pagination__link" href="/docs/reference/api/deploiements/" rel="prev"><span class="hd-pagination__hint"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="m15 6-6 6 6 6"></path></svg>Précédent</span><span class="hd-pagination__title">Déploiements</span></a><a class="hd-pagination__link hd-pagination__link--next" href="/docs/reference/api/variables/" rel="next"><span class="hd-pagination__hint">Suivant<svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="m9 6 6 6-6 6"></path></svg></span><span class="hd-pagination__title">Variables</span></a></nav><script type="module" src="/docs/_astro/Footer.astro_astro_type_script_index_0_lang.DzCnn3OT.js"></script></div></div></main><form class="hd-askbar" data-askbar data-pagefind-ignore><label class="sr-only" for="hd-askbar-input">Pose une question à l'assistant</label><input id="hd-askbar-input" data-askbar-input type="text" maxlength="1000" placeholder="Pose une question…" autocomplete="off"><kbd class="hd-kbd" data-shortcut aria-hidden="true">Ctrl I</kbd><button type="submit" class="hd-send" aria-label="Envoyer la question"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M12 19V5m-6 6 6-6 6 6"></path></svg></button></form></div><aside class="hd-columns__toc" aria-label="Sur cette page"><div class="hd-toc-scroll"><starlight-toc data-min-h="2" data-max-h="3"><nav aria-labelledby="starlight__on-this-page"><h2 id="starlight__on-this-page">Sur cette page</h2><ul class="astro-jxyovztp" style="--depth: 0;"><li style="--depth: 0;" class="astro-jxyovztp"><a href="#_top" style="--depth: 0;" class="astro-jxyovztp"><span style="--depth: 0;" class="astro-jxyovztp">Vue d’ensemble</span></a></li><li style="--depth: 0;" class="astro-jxyovztp"><a href="#post-v2files" style="--depth: 0;" class="astro-jxyovztp"><span style="--depth: 0;" class="astro-jxyovztp">POST /v2/files</span></a><ul class="astro-jxyovztp" style="--depth: 1;"><li style="--depth: 1;" class="astro-jxyovztp"><a href="#en-têtes" style="--depth: 1;" class="astro-jxyovztp"><span style="--depth: 1;" class="astro-jxyovztp">En-têtes</span></a></li><li style="--depth: 1;" class="astro-jxyovztp"><a href="#corps" style="--depth: 1;" class="astro-jxyovztp"><span style="--depth: 1;" class="astro-jxyovztp">Corps</span></a></li><li style="--depth: 1;" class="astro-jxyovztp"><a href="#réponse" style="--depth: 1;" class="astro-jxyovztp"><span style="--depth: 1;" class="astro-jxyovztp">Réponse</span></a></li><li style="--depth: 1;" class="astro-jxyovztp"><a href="#erreurs" style="--depth: 1;" class="astro-jxyovztp"><span style="--depth: 1;" class="astro-jxyovztp">Erreurs</span></a></li></ul></li><li style="--depth: 0;" class="astro-jxyovztp"><a href="#limites" style="--depth: 0;" class="astro-jxyovztp"><span style="--depth: 0;" class="astro-jxyovztp">Limites</span></a></li></ul></nav></starlight-toc><script type="module">var e=`_top`,t=class extends HTMLElement{_current=this.querySelector(`a[aria-current="true"]`);minH=parseInt(this.dataset.minH||`2`,10);maxH=parseInt(this.dataset.maxH||`3`,10);tocHeadingSelector=`h1#${e},:where(${[...Array.from({length:1+this.maxH-this.minH}).map((e,t)=>`h${this.minH+t}`)].join()})[id]`;set current(e){e!==this._current&&(this._current&&this._current.removeAttribute(`aria-current`),e.setAttribute(`aria-current`,`true`),this._current=e)}onIdle=e=>(window.requestIdleCallback||(e=>setTimeout(e,1)))(e);constructor(){super(),this.onIdle(()=>this.init())}init=()=>{let t=[...this.querySelectorAll(`a`)],n=e=>e.matches(this.tocHeadingSelector),r=t=>{for(;t;){if(t.matches(`.sl-markdown-content, main > *`))return document.getElementById(e);if(n(t))return t;let r=t.querySelector(this.tocHeadingSelector);if(r)return r;let i=t.previousElementSibling;for(;i?.lastElementChild;)i=i.lastElementChild;t=i??t.parentElement}return null},i=e=>{for(let{isIntersecting:n,target:i}of e){if(!n)continue;let e=r(i);if(!e)continue;let a=t.find(t=>t.hash===`#`+encodeURIComponent(e.id));if(a){this.current=a;break}}},a=document.querySelectorAll([`main :where(${this.tocHeadingSelector})`,`main :where(${this.tocHeadingSelector}, .sl-heading-wrapper) ~ *:not(:has(${this.tocHeadingSelector}))`,`main .sl-markdown-content > *:not(:has(${this.tocHeadingSelector}))`,`main > *:not(:has(${this.tocHeadingSelector}))`].join()),o,s=()=>{o||(o=new IntersectionObserver(i,{rootMargin:this.getRootMargin()}),a.forEach(e=>o.observe(e)))};s();let c;window.addEventListener(`resize`,()=>{o&&=(o.disconnect(),void 0),clearTimeout(c),c=setTimeout(()=>this.onIdle(s),200)})};getRootMargin(){let e=(document.querySelector(`header`)?.getBoundingClientRect().height||0)+(this.querySelector(`summary`)?.getBoundingClientRect().height||0)+32;return`-${e}px 0% ${e+53-document.documentElement.clientHeight}px`}};customElements.define(`starlight-toc`,t);</script></div></aside></div><footer class="hd-site-footer" data-pagefind-ignore><div class="hd-site-footer__row"><a class="hd-brand hd-brand--footer" href="/docs/"><span class="hd-brand__mark"><img class="hd-brand__light" src="/docs/images/logo.svg" alt="" width="20" height="20" loading="lazy"><img class="hd-brand__dark" src="/docs/images/logo.svg" alt="" width="20" height="20" loading="lazy"></span><span class="hd-brand__name">Host</span></a></div><div class="hd-site-footer__row hd-site-footer__row--meta"><p>Ton site en ligne, déployé à chaque modification.</p><div class="hd-theme-choice" role="radiogroup" aria-label="Thème"><button type="button" role="radio" aria-checked="false" data-hd-theme="auto" aria-label="Système" title="Système"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M4 5h16a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1Zm4 15h8m-4-3v3"></path></svg></button><button type="button" role="radio" aria-checked="false" data-hd-theme="light" aria-label="Clair" title="Clair"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M12 16a4 4 0 1 0 0-8 4 4 0 0 0 0 8ZM12 2.5v2M12 19.5v2M4.6 4.6 6 6M18 18l1.4 1.4M2.5 12h2M19.5 12h2M4.6 19.4 6 18M18 6l1.4-1.4"></path></svg></button><button type="button" role="radio" aria-checked="false" data-hd-theme="dark" aria-label="Sombre" title="Sombre"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M20 14.5A8 8 0 1 1 9.5 4a6.5 6.5 0 0 0 10.5 10.5Z"></path></svg></button></div></div></footer></div><hgdc-assistant data-endpoint="https://docs.hgdc.ch/api/v1/ask" data-project="js743wp3001k1jvrdad0fwcjx18gc789" data-name="Host"><section class="hgdc-panel" role="dialog" aria-modal="false" aria-labelledby="hgdc-assistant-title" data-panel inert><div class="hgdc-panel__grip" aria-hidden="true"></div><header class="hgdc-panel__header"><h2 id="hgdc-assistant-title"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M12 3.5 13.6 8a3 3 0 0 0 1.9 1.9L20 11.5l-4.5 1.6a3 3 0 0 0-1.9 1.9L12 19.5 10.4 15a3 3 0 0 0-1.9-1.9L4 11.5 8.5 9.9A3 3 0 0 0 10.4 8ZM19 3v3M20.5 4.5h-3"></path></svg>Assistant</h2><div class="hgdc-panel__tools"><button type="button" class="hd-icon-button" data-reset aria-label="Nouvelle conversation" title="Nouvelle conversation" hidden><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M4 12a8 8 0 1 0 2.3-5.7M4 4v4h4"></path></svg></button><button type="button" class="hd-icon-button" data-close aria-label="Fermer l'assistant" title="Fermer (Échap)"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M6 6l12 12M18 6 6 18"></path></svg></button></div></header><div class="hgdc-panel__body" data-log aria-live="polite"><div class="hgdc-empty" data-empty><p class="hgdc-empty__title">Pose ta question sur Host.</p><p>Je cherche dans les pages de cette documentation et je cite mes sources. Si la réponse n'y est pas, je te le dis.</p></div></div><form class="hgdc-panel__form" data-form><label class="sr-only" for="hgdc-question">Ta question</label><textarea id="hgdc-question" data-input rows="1" maxlength="1000" placeholder="Pose une question…" required></textarea><button type="submit" class="hd-send" data-send aria-label="Envoyer la question"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M12 19V5m-6 6 6-6 6 6"></path></svg></button></form><p class="hgdc-panel__note">Réponses générées par IA (Claude, d'Anthropic), à vérifier. Les questions sont conservées 90 jours pour améliorer cette documentation.</p></section></hgdc-assistant><script type="module" src="/docs/_astro/Assistant.astro_astro_type_script_index_0_lang.C1pz7yK1.js"></script></div><script type="module">var e=class extends HTMLElement{connectedCallback(){let e=matchMedia(`(min-width: 50em)`),t=()=>{e.matches&&this.matches(`:popover-open`)&&this.hidePopover(),this.popover=e.matches?null:`auto`};t(),e.addEventListener(`change`,t),this.addEventListener(`toggle`,e=>{let t=e.newState===`open`;for(let e of document.querySelectorAll(`.hd-main-frame, .hd-askbar`))e.toggleAttribute(`inert`,t);document.documentElement.toggleAttribute(`data-hd-menu`,t)}),this.addEventListener(`click`,e=>{e.target.closest(`a`)&&this.matches(`:popover-open`)&&this.hidePopover()})}};customElements.define(`hd-sidebar-pane`,e);</script></body></html>
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
# Envoyer un fichier
|
|
2
|
-
|
|
3
|
-
Un fichier s’envoie par son empreinte SHA1. Host ne stocke jamais deux fois le même contenu pour une organisation : tu n’envoies que les fichiers que [Créer un déploiement](/docs/reference/api/deploiements/) signale comme manquants.
|
|
4
|
-
|
|
5
|
-
## POST `/v2/files`
|
|
6
|
-
|
|
7
|
-
```bash
|
|
8
|
-
SHA=$(sha1sum index.html | cut -d' ' -f1)
|
|
9
|
-
curl -X POST https://api.host.hgdc.ch/v2/files \
|
|
10
|
-
-H "Authorization: Bearer $VERCEL_TOKEN" \
|
|
11
|
-
-H "x-vercel-digest: $SHA" \
|
|
12
|
-
-H "Content-Type: application/octet-stream" \
|
|
13
|
-
--data-binary @index.html
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
En Node.js, calcule l’empreinte avant l’envoi :
|
|
17
|
-
|
|
18
|
-
```javascript
|
|
19
|
-
import { createHash } from "node:crypto"
|
|
20
|
-
import { readFile } from "node:fs/promises"
|
|
21
|
-
|
|
22
|
-
const bytes = await readFile("index.html")
|
|
23
|
-
const sha = createHash("sha1").update(bytes).digest("hex")
|
|
24
|
-
|
|
25
|
-
await fetch("https://api.host.hgdc.ch/v2/files", {
|
|
26
|
-
method: "POST",
|
|
27
|
-
headers: {
|
|
28
|
-
Authorization: `Bearer ${process.env.VERCEL_TOKEN}`,
|
|
29
|
-
"x-vercel-digest": sha,
|
|
30
|
-
"Content-Type": "application/octet-stream",
|
|
31
|
-
},
|
|
32
|
-
body: bytes,
|
|
33
|
-
})
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
### En-têtes
|
|
37
|
-
|
|
38
|
-
| En-tête | Valeur | Requis |
|
|
39
|
-
| ----------------- | -------------------------------------------------------- | ------------------------------------- |
|
|
40
|
-
| `Authorization` | `Bearer ah_…` | Oui |
|
|
41
|
-
| `x-vercel-digest` | Empreinte SHA1 du contenu, en hexadécimal, 40 caractères | Oui. `x-now-digest` est aussi accepté |
|
|
42
|
-
| `Content-Type` | `application/octet-stream` | Recommandé |
|
|
43
|
-
|
|
44
|
-
### Corps
|
|
45
|
-
|
|
46
|
-
Le contenu brut du fichier, 20 Mo au plus.
|
|
47
|
-
|
|
48
|
-
### Réponse
|
|
49
|
-
|
|
50
|
-
Réponse `200` avec un objet vide, `{}`.
|
|
51
|
-
|
|
52
|
-
### Erreurs
|
|
53
|
-
|
|
54
|
-
| Statut | Code | Cause |
|
|
55
|
-
| ------ | ---------------- | ---------------------------------------------------------------------- |
|
|
56
|
-
| `400` | `bad_request` | En-tête `x-vercel-digest` absent ou mal formé |
|
|
57
|
-
| `400` | `invalid_digest` | Le contenu ne correspond pas à l’empreinte annoncée. Recalcule le SHA1 |
|
|
58
|
-
| `413` | `file_too_large` | Le fichier dépasse 20 Mo |
|
|
59
|
-
|
|
60
|
-
## Limites
|
|
61
|
-
|
|
62
|
-
L’envoi de fichiers a son propre débit : 6 000 par minute, avec des rafales de 3 000 par clé. Un site Next.js compte souvent des milliers de fichiers : envoie-les en parallèle, mais sans dépasser ce débit. Voir [Limites](/docs/reference/limites/).
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html><html lang="fr-CH" dir="ltr" data-theme="dark" data-has-toc data-has-sidebar class="astro-mxbotnn6"><head><meta charset="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><title>Introduction à l'API | Host</title><style>:root{--sl-color-accent-low:#172544;--sl-color-accent:#4b8eff;--sl-color-accent-high:#87d3ff;--hgdc-on-accent:#000000;}:root:not([data-hd-theme="dark"]){--sl-color-accent-low:#dcf1ff;--sl-color-accent:#194ff7;--sl-color-accent-high:#0400bf;--hgdc-on-accent:#ffffff;}</style><link rel="shortcut icon" href="/docs/images/logo.svg" type="image/svg+xml"/><meta name="generator" content="Astro v7.3.8"/><meta name="generator" content="Starlight v0.42.6"/><meta property="og:title" content="Introduction à l'API"/><meta property="og:type" content="article"/><meta property="og:locale" content="fr-CH"/><meta property="og:description" content="Adresse de base, authentification par clé, portée des clés, versions des chemins et limites de débit de l'API Host."/><meta property="og:site_name" content="Host"/><meta name="twitter:card" content="summary_large_image"/><meta name="description" content="Adresse de base, authentification par clé, portée des clés, versions des chemins et limites de débit de l'API Host."/><link rel="alternate" type="text/markdown" href="/docs/reference/api/introduction.md"><link rel="describedby" type="text/markdown" href="/docs/llms.txt"><script>
|
|
2
|
-
;(() => {
|
|
3
|
-
let stored = null
|
|
4
|
-
try {
|
|
5
|
-
stored = localStorage.getItem("starlight-theme")
|
|
6
|
-
} catch {}
|
|
7
|
-
const dark =
|
|
8
|
-
stored === "dark" || (stored === "auto" && matchMedia("(prefers-color-scheme: dark)").matches)
|
|
9
|
-
const theme = dark ? "dark" : "light"
|
|
10
|
-
document.documentElement.dataset.theme = theme
|
|
11
|
-
document.documentElement.dataset.hdTheme = theme
|
|
12
|
-
window.StarlightThemeProvider = { updatePickers() {} }
|
|
13
|
-
})()
|
|
14
|
-
</script><link rel="stylesheet" href="/docs/_astro/print.ehPL0gv-.css" media="print"><link rel="stylesheet" href="/docs/_astro/common.Dx3aBIS0.css"><style>@layer starlight.components{svg:where(.astro-lgqmsw3b){color:var(--sl-icon-color);font-size:var(--sl-icon-size,1em);width:1em;height:1em;overflow:visible}}
|
|
15
|
-
@layer starlight.components{starlight-tabs:where(.astro-a5blunwz){display:block}.tablist-wrapper:where(.astro-a5blunwz){overflow-x:auto}:where(.astro-a5blunwz)[role=tablist]{border-bottom:2px solid var(--sl-color-gray-5);padding:0;list-style:none;display:flex}.tab:where(.astro-a5blunwz){display:flex}.tab:where(.astro-a5blunwz)>:where(.astro-a5blunwz)[role=tab]{--sl-tab-color-border:var(--sl-color-gray-5);line-height:var(--sl-line-height-headings);box-shadow:0 2px 0 var(--sl-tab-color-border);color:var(--sl-color-gray-3);outline-offset:var(--sl-outline-offset-inside);overflow-wrap:initial;align-items:center;gap:.5rem;padding:.275rem 1.25rem;text-decoration:none;display:flex}.tab:where(.astro-a5blunwz) :where(.astro-a5blunwz)[role=tab][aria-selected=true]{--sl-tab-color-border:var(--sl-color-text-accent);color:var(--sl-color-white);font-weight:600}.tablist-wrapper:where(.astro-a5blunwz)~[role=tabpanel]{margin-top:1rem}}
|
|
16
|
-
</style><script type="module" src="/docs/_astro/page.cNngjUgL.js"></script></head><body class="astro-mxbotnn6"><a class="sl-skip-link astro-k4td3kwj" href="#_top">Aller au contenu</a><div class="hd-page"><header class="hd-topbar"><div class="hd-header"><div class="hd-header__start"><button type="button" class="hd-icon-button hd-menu-button" popovertarget="starlight__sidebar" aria-label="Menu de la documentation" aria-controls="starlight__sidebar"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M4 7h16M4 12h16M4 17h10"></path></svg></button><a class="hd-brand" href="/docs/"><span class="hd-brand__mark"><img class="hd-brand__light" src="/docs/images/logo.svg" alt="" width="24" height="24"><img class="hd-brand__dark" src="/docs/images/logo.svg" alt="" width="24" height="24"></span><span class="hd-brand__name">Host</span></a></div><div class="hd-header__end"><hd-search data-base="/docs" data-assistant><button type="button" class="hd-search-trigger" data-open aria-haspopup="dialog" aria-label="Rechercher (Ctrl K)"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M11 18a7 7 0 1 0 0-14 7 7 0 0 0 0 14Zm5-2 4 4"></path></svg><span class="hd-search-trigger__label">Rechercher</span><kbd class="hd-kbd" data-shortcut>Ctrl K</kbd></button><dialog class="hd-palette" aria-label="Rechercher dans la documentation"><div class="hd-palette__box"><div class="hd-palette__field"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M11 18a7 7 0 1 0 0-14 7 7 0 0 0 0 14Zm5-2 4 4"></path></svg><input type="search" data-input placeholder="Rechercher dans la documentation" autocomplete="off" spellcheck="false" role="combobox" aria-expanded="false" aria-controls="hd-palette-results" aria-autocomplete="list"><button type="button" class="hd-kbd hd-kbd--button" data-close>Échap</button></div><div class="hd-palette__results" id="hd-palette-results" role="listbox" aria-label="Résultats" data-results></div><p class="hd-palette__status" data-status role="status">Tape un mot pour chercher dans les pages.</p><footer class="hd-palette__hints" aria-hidden="true"><span><kbd class="hd-kbd">↑</kbd><kbd class="hd-kbd">↓</kbd> Choisir</span><span><kbd class="hd-kbd">↵</kbd> Ouvrir</span><span><kbd class="hd-kbd">Échap</kbd> Fermer</span></footer></div></dialog></hd-search><script type="module" src="/docs/_astro/Search.astro_astro_type_script_index_0_lang.D7EcezBU.js"></script><button type="button" class="hd-icon-button" data-hgdc-ask aria-label="Demander à l'assistant" title="Demander à l'assistant (Ctrl I)"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M12 3.5 13.6 8a3 3 0 0 0 1.9 1.9L20 11.5l-4.5 1.6a3 3 0 0 0-1.9 1.9L12 19.5 10.4 15a3 3 0 0 0-1.9-1.9L4 11.5 8.5 9.9A3 3 0 0 0 10.4 8ZM19 3v3M20.5 4.5h-3"></path></svg></button><button type="button" class="hd-icon-button hd-theme-button" data-hd-theme-toggle aria-label="Passer au thème sombre"><svg class="hd-icon hd-theme-button__moon" aria-hidden="true" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M20 14.5A8 8 0 1 1 9.5 4a6.5 6.5 0 0 0 10.5 10.5Z"></path></svg><svg class="hd-icon hd-theme-button__sun" aria-hidden="true" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M12 16a4 4 0 1 0 0-8 4 4 0 0 0 0 8ZM12 2.5v2M12 19.5v2M4.6 4.6 6 6M18 18l1.4 1.4M2.5 12h2M19.5 12h2M4.6 19.4 6 18M18 6l1.4-1.4"></path></svg></button><script type="module">var e=`starlight-theme`,t=()=>{try{return localStorage.getItem(e)||`light`}catch{return`light`}},n=()=>matchMedia(`(prefers-color-scheme: light)`).matches?`light`:`dark`,r=t=>{try{localStorage.setItem(e,t)}catch{}let r=t===`auto`?n():t;document.documentElement.dataset.theme=r,document.documentElement.dataset.hdTheme=r,i()},i=()=>{let e=t(),n=document.documentElement.dataset.theme===`dark`;for(let e of document.querySelectorAll(`[data-hd-theme-toggle]`))e.setAttribute(`aria-label`,n?`Passer au thème clair`:`Passer au thème sombre`);for(let t of document.querySelectorAll(`[data-hd-theme]`)){let n=t.dataset.hdTheme===e;t.setAttribute(`aria-checked`,String(n)),t.tabIndex=n?0:-1}};for(let e of document.querySelectorAll(`[data-hd-theme-toggle]`))e.addEventListener(`click`,()=>r(document.documentElement.dataset.theme===`dark`?`light`:`dark`));for(let e of document.querySelectorAll(`.hd-theme-choice`)){let t=[...e.querySelectorAll(`[data-hd-theme]`)];for(let e of t)e.addEventListener(`click`,()=>r(e.dataset.hdTheme));e.addEventListener(`keydown`,e=>{let n=e.key===`ArrowRight`||e.key===`ArrowDown`?1:e.key===`ArrowLeft`||e.key===`ArrowUp`?-1:0;if(!n)return;e.preventDefault();let i=t.findIndex(e=>e.getAttribute(`aria-checked`)===`true`),a=t[(i+n+t.length)%t.length];r(a.dataset.hdTheme),a.focus()})}matchMedia(`(prefers-color-scheme: light)`).addEventListener(`change`,()=>{t()===`auto`&&r(`auto`)}),i();</script></div></div></header><nav class="hd-sidebar" aria-label="Navigation de la documentation"><script type="module">for(let e of document.querySelectorAll(`[data-hgdc-version]`))e.addEventListener(`change`,()=>window.location.assign(e.value));var e=document.querySelector(`.sidebar-pane`);if(e){let t=`hd-sidebar-scroll`;try{let n=Number(sessionStorage.getItem(t));n&&(e.scrollTop=n)}catch{}let n=e.querySelector(`[aria-current="page"]`);if(n){let t=e.getBoundingClientRect(),r=n.getBoundingClientRect();(r.top<t.top||r.bottom>t.bottom)&&n.scrollIntoView({block:`center`})}addEventListener(`pagehide`,()=>{try{sessionStorage.setItem(t,String(e.scrollTop))}catch{}})}</script><hd-sidebar-pane popover="auto" id="starlight__sidebar" class="sidebar-pane"><div class="hd-sidebar__content"><div class="hd-mobile-only hd-sidebar-head"><a class="hd-brand" href="/docs/"><span class="hd-brand__name">Host</span></a><button type="button" class="hd-icon-button" popovertarget="starlight__sidebar" popovertargetaction="hide" aria-label="Fermer le menu"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M6 6l12 12M18 6 6 18"></path></svg></button></div><ul class="hd-nav hd-nav--depth-0"><li class="hd-nav__group"><p class="hd-nav__heading">Démarrer</p><ul class="hd-nav hd-nav--depth-1"><li><a href="/docs/" class="hd-nav__link"><span>Accueil</span></a></li><li><a href="/docs/demarrer/premier-site/" class="hd-nav__link"><span>Premier site</span></a></li><li><a href="/docs/demarrer/depuis-github/" class="hd-nav__link"><span>Depuis GitHub</span></a></li></ul></li><li class="hd-nav__group"><p class="hd-nav__heading">Guides</p><ul class="hd-nav hd-nav--depth-1"><li><a href="/docs/guides/cle-d-api/" class="hd-nav__link"><span>Clés d'API</span></a></li><li><a href="/docs/guides/deployer-depuis-github/" class="hd-nav__link"><span>Depuis GitHub</span></a></li><li><a href="/docs/guides/github-actions-sans-application/" class="hd-nav__link"><span>GitHub Actions sans l'app</span></a></li><li><a href="/docs/guides/deployer-un-framework/" class="hd-nav__link"><span>Un framework</span></a></li><li><a href="/docs/guides/site-statique/" class="hd-nav__link"><span>Site statique</span></a></li><li><a href="/docs/guides/monorepo/" class="hd-nav__link"><span>Monorepo</span></a></li><li><a href="/docs/guides/brancher-un-domaine/" class="hd-nav__link"><span>Brancher un domaine</span></a></li><li><a href="/docs/guides/variables-d-environnement/" class="hd-nav__link"><span>Variables</span></a></li><li><a href="/docs/guides/synchroniser-doppler/" class="hd-nav__link"><span>Doppler</span></a></li><li><a href="/docs/guides/revenir-en-arriere/" class="hd-nav__link"><span>Revenir en arrière</span></a></li><li><a href="/docs/guides/inviter-une-personne/" class="hd-nav__link"><span>Inviter une personne</span></a></li><li><a href="/docs/guides/lire-les-logs/" class="hd-nav__link"><span>Lire les logs</span></a></li><li><a href="/docs/guides/migrer-depuis-vercel/" class="hd-nav__link"><span>Migrer depuis Vercel</span></a></li><li><a href="/docs/guides/depannage/" class="hd-nav__link"><span>Dépannage</span></a></li></ul></li><li class="hd-nav__group"><p class="hd-nav__heading">Référence</p><ul class="hd-nav hd-nav--depth-1"><li><a href="/docs/reference/cli/" class="hd-nav__link"><span>CLI</span></a></li><li><a href="/docs/reference/variables/" class="hd-nav__link"><span>Variables</span></a></li><li><a href="/docs/reference/domaines/" class="hd-nav__link"><span>Domaines</span></a></li><li><a href="/docs/reference/vercel-json/" class="hd-nav__link"><span>vercel.json</span></a></li><li><a href="/docs/reference/compatibilite/" class="hd-nav__link"><span>Compatibilité</span></a></li><li><a href="/docs/reference/limites/" class="hd-nav__link"><span>Limites</span></a></li><li><details class="hd-nav__fold" open><summary class="hd-nav__link"><span>API</span><svg class="hd-icon hd-nav__chevron" aria-hidden="true" viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="m9 6 6 6-6 6"></path></svg></summary><ul class="hd-nav hd-nav--depth-2"><li><a href="/docs/reference/api/introduction/" class="hd-nav__link" aria-current="page"><span>Introduction</span></a></li><li><a href="/docs/reference/api/erreurs/" class="hd-nav__link"><span>Erreurs</span></a></li><li><a href="/docs/reference/api/utilisateur/" class="hd-nav__link"><span>Utilisateur et organisation</span></a></li><li><a href="/docs/reference/api/projets/" class="hd-nav__link"><span>Projets</span></a></li><li><a href="/docs/reference/api/deploiements/" class="hd-nav__link"><span>Déploiements</span></a></li><li><a href="/docs/reference/api/fichiers/" class="hd-nav__link"><span>Envoyer un fichier</span></a></li><li><a href="/docs/reference/api/variables/" class="hd-nav__link"><span>Variables</span></a></li></ul></details></li></ul></li><li class="hd-nav__group"><p class="hd-nav__heading">Concepts</p><ul class="hd-nav hd-nav--depth-1"><li><a href="/docs/concepts/deploiements/" class="hd-nav__link"><span>Déploiements</span></a></li><li><a href="/docs/concepts/organisations-et-roles/" class="hd-nav__link"><span>Organisations et rôles</span></a></li><li><a href="/docs/concepts/secrets-et-coffre/" class="hd-nav__link"><span>Secrets et coffre</span></a></li><li><a href="/docs/concepts/preversion/" class="hd-nav__link"><span>Préversion</span></a></li><li><a href="/docs/concepts/confidentialite/" class="hd-nav__link"><span>Sécurité et confidentialité</span></a></li></ul></li></ul><div class="hd-mobile-only hd-sidebar-footer"><div class="hd-theme-choice" role="radiogroup" aria-label="Thème"><button type="button" role="radio" aria-checked="false" data-hd-theme="auto" aria-label="Système" title="Système"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M4 5h16a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1Zm4 15h8m-4-3v3"></path></svg></button><button type="button" role="radio" aria-checked="false" data-hd-theme="light" aria-label="Clair" title="Clair"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M12 16a4 4 0 1 0 0-8 4 4 0 0 0 0 8ZM12 2.5v2M12 19.5v2M4.6 4.6 6 6M18 18l1.4 1.4M2.5 12h2M19.5 12h2M4.6 19.4 6 18M18 6l1.4-1.4"></path></svg></button><button type="button" role="radio" aria-checked="false" data-hd-theme="dark" aria-label="Sombre" title="Sombre"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M20 14.5A8 8 0 1 1 9.5 4a6.5 6.5 0 0 0 10.5 10.5Z"></path></svg></button></div></div></div></hd-sidebar-pane></nav><div class="hd-main-frame main-frame"><script type="module">var e=document.getElementById(`starlight__sidebar`),t=e?.querySelector(`sl-sidebar-state-persist`),n=`sl-sidebar-state`,r=()=>{let r=[],i=t?.dataset.hash||``;try{let e=sessionStorage.getItem(n),t=JSON.parse(e||`{}`);Array.isArray(t.open)&&t.hash===i&&(r=t.open)}catch{}return{hash:i,open:r,scroll:e?.scrollTop||0}},i=e=>{try{sessionStorage.setItem(n,JSON.stringify(e))}catch{}},a=()=>i(r()),o=(e,t)=>{let n=r();n.open[t]=e,i(n)};t?.addEventListener(`click`,e=>{if(!(e.target instanceof Element))return;let t=e.target.closest(`summary`)?.closest(`details`);if(!t)return;let n=t.querySelector(`sl-sidebar-restore`),r=parseInt(n?.dataset.index||``);isNaN(r)||o(!t.open,r)}),addEventListener(`visibilitychange`,()=>{document.visibilityState===`hidden`&&a()});</script><div class="hd-columns hd-columns--toc"><div class="hd-columns__main main-pane"><main data-pagefind-body class="astro-mxbotnn6" lang="fr-CH" dir="ltr"><div class="content-panel astro-64cflj2q"><div class="sl-container astro-64cflj2q"><div class="hd-title not-content"><p class="hd-eyebrow" data-pagefind-meta="section">Référence</p><div class="hd-title__row"><h1 id="_top">Introduction à l'API</h1><div class="hd-page-actions" data-hgdc-skip data-pagefind-ignore><div class="hd-split"><button type="button" class="hd-split__main" data-hgdc-copy="/docs/reference/api/introduction.md"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M9 9h10a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1V10a1 1 0 0 1 1-1Zm-4 6H4.5A1.5 1.5 0 0 1 3 13.5v-9A1.5 1.5 0 0 1 4.5 3h9A1.5 1.5 0 0 1 15 4.5V5"></path></svg><span data-label>Copier la page</span></button><details class="hd-menu"><summary class="hd-split__more" aria-label="Autres formats de la page"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="m6 9 6 6 6-6"></path></svg></summary><ul class="hd-menu__list"><li><button type="button" data-hgdc-copy-item><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M9 9h10a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1V10a1 1 0 0 1 1-1Zm-4 6H4.5A1.5 1.5 0 0 1 3 13.5v-9A1.5 1.5 0 0 1 4.5 3h9A1.5 1.5 0 0 1 15 4.5V5"></path></svg><span><strong>Copier la page</strong><small>En Markdown, pour un LLM</small></span></button></li><li><a href="/docs/reference/api/introduction.md"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M4 6h16a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1Zm3 9V9l2.5 3L12 9v6m5-6v6m-2-2 2 2 2-2"></path></svg><span><strong>Voir en Markdown</strong><small>La page en texte brut</small></span></a></li><li><a data-hgdc-open="claude" href="https://claude.ai/new" target="_blank" rel="noopener"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M7 17 17 7M8 7h9v9"></path></svg><span><strong>Ouvrir dans Claude</strong><small>Poser une question sur cette page</small></span></a></li><li><a data-hgdc-open="chatgpt" href="https://chatgpt.com/" target="_blank" rel="noopener"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M7 17 17 7M8 7h9v9"></path></svg><span><strong>Ouvrir dans ChatGPT</strong><small>Poser une question sur cette page</small></span></a></li><li><a href="/docs/llms.txt"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M14 3H7a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8Zm0 0v5h5M9 13h6m-6 4h4"></path></svg><span><strong>llms.txt</strong><small>L'index de la doc pour les agents</small></span></a></li></ul></details></div><span class="sr-only" role="status" aria-live="polite" data-hgdc-copy-status></span></div></div><p class="hd-lead">Adresse de base, authentification par clé, portée des clés, versions des chemins et limites de débit de l'API Host.</p></div><script type="module">var e=document.querySelector(`[data-hgdc-copy-status]`),t=document.querySelector(`[data-hgdc-copy]`);async function n(){if(!t)return;let n=t.querySelector(`[data-label]`),r=t=>{n.textContent=t,e&&(e.textContent=t),setTimeout(()=>n.textContent=`Copier la page`,2e3)};try{let e=await fetch(t.dataset.hgdcCopy);if(!e.ok)throw Error(String(e.status));await navigator.clipboard.writeText(await e.text()),r(`Page copiée`)}catch{r(`Copie impossible`)}}if(t?.addEventListener(`click`,()=>void n()),document.querySelector(`[data-hgdc-copy-item]`)?.addEventListener(`click`,()=>{document.querySelector(`.hd-menu`).open=!1,n()}),t){let e=`Lis ${new URL(t.dataset.hgdcCopy,location.href).href} et réponds à mes questions sur cette page.`;for(let t of document.querySelectorAll(`[data-hgdc-open]`))t.href=`${t.dataset.hgdcOpen===`claude`?`https://claude.ai/new`:`https://chatgpt.com/`}?q=${encodeURIComponent(e)}`}for(let e of document.querySelectorAll(`.hd-menu`))document.addEventListener(`click`,t=>{e.open&&!e.contains(t.target)&&(e.open=!1)}),e.addEventListener(`keydown`,t=>{t.key===`Escape`&&e.open&&(t.stopPropagation(),e.open=!1,e.querySelector(`summary`)?.focus())});</script></div></div><div class="content-panel astro-64cflj2q"><div class="sl-container astro-64cflj2q"><div class="sl-markdown-content"><p>L’API de Host reprend le sous-ensemble de l’API Vercel qu’utilise la CLI pour relier un dossier, construire et déployer. Elle accepte du JSON, renvoie du JSON, et s’authentifie par une clé d’API.</p>
|
|
17
|
-
<p>Utilise l’API si tu écris ton propre outil. Pour déployer depuis un poste ou une CI, la <a href="/docs/reference/cli/">CLI</a> suffit.</p>
|
|
18
|
-
<h2 id="adresse-de-base">Adresse de base</h2>
|
|
19
|
-
<div class="expressive-code"><link rel="stylesheet" href="/docs/_astro/ec.t9qpe.css"><script type="module" src="/docs/_astro/ec.0vx5m.js"></script><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="text"><code><div class="ec-line"><div class="code"><span style="--0:#1f2328;--1:#e6edf3">https://api.host.hgdc.ch</span></div></div></code></pre><div class="copy"><div aria-live="polite"></div><button title="Copier dans le presse-papiers" data-copied="Copié !" data-code="https://api.host.hgdc.ch"><div></div></button></div></figure></div>
|
|
20
|
-
<p>Toutes les requêtes passent en HTTPS.</p>
|
|
21
|
-
<h2 id="authentification">Authentification</h2>
|
|
22
|
-
<p>Envoie ta clé dans l’en-tête <code>Authorization</code>. Les clés commencent par <code>ah_</code> et se créent dans l’onglet <strong>Clés d’API</strong> de l’organisation. Voir <a href="/docs/guides/cle-d-api/">Créer et révoquer une clé d’API</a>.</p>
|
|
23
|
-
<div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="http"><code><div class="ec-line"><div class="code"><span style="--0:#116329;--1:#7EE787">Authorization</span><span style="--0:#CA212D;--1:#FF7B72">:</span><span style="--0:#1F2328;--1:#E6EDF3"> </span><span style="--0:#0A3069;--1:#A5D6FF">Bearer ah_…</span></div></div></code></pre><div class="copy"><div aria-live="polite"></div><button title="Copier dans le presse-papiers" data-copied="Copié !" data-code="Authorization: Bearer ah_…"><div></div></button></div></figure></div>
|
|
24
|
-
<div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="bash"><code><div class="ec-line"><div class="code"><span style="--0:#953800;--1:#FFA657">curl</span><span style="--0:#1F2328;--1:#E6EDF3"> </span><span style="--0:#0A3069;--1:#A5D6FF">https://api.host.hgdc.ch/v2/user</span><span style="--0:#1F2328;--1:#E6EDF3"> </span><span style="--0:#CA212D;--1:#FF7B72">\</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#0550AE;--1:#79C0FF">-H</span><span style="--0:#1F2328;--1:#E6EDF3"> </span><span style="--0:#0A3069;--1:#A5D6FF">"Authorization: Bearer </span><span style="--0:#1F2328;--1:#E6EDF3">$VERCEL_TOKEN</span><span style="--0:#0A3069;--1:#A5D6FF">"</span></div></div></code></pre><div class="copy"><div aria-live="polite"></div><button title="Copier dans le presse-papiers" data-copied="Copié !" data-code="curl https://api.host.hgdc.ch/v2/user \ -H "Authorization: Bearer $VERCEL_TOKEN""><div></div></button></div></figure></div>
|
|
25
|
-
<p>Il existe deux sortes de clés :</p>
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
<div class="hd-table"><table><thead><tr><th>Clé</th><th>Portée</th><th>Variables sensibles</th></tr></thead><tbody><tr><td>Clé d’organisation, créée par un admin ou un propriétaire</td><td>Tous les projets de l’organisation, création de projets comprise</td><td>Jamais renvoyées</td></tr><tr><td>Clé de projet, posée par l’app GitHub dans le dépôt</td><td>Ce seul projet. Tout autre projet répond <code>404</code></td><td>Renvoyées, pour le build</td></tr></tbody></table></div>
|
|
47
|
-
<aside class="hd-callout" data-tone="warning" aria-label="Attention"><svg class="hd-icon hd-callout__icon" aria-hidden="true" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M12 9.5v4M12 17h.01M10.3 4.2 2.6 17.5A2 2 0 0 0 4.3 20.5h15.4a2 2 0 0 0 1.7-3L13.7 4.2a2 2 0 0 0-3.4 0Z"></path></svg><div class="hd-callout__body"><p>Une clé donne accès aux variables d’environnement de tes projets. Garde-la dans un gestionnaire de secrets, jamais dans le code ni dans le navigateur.</p></div></aside>
|
|
48
|
-
<h2 id="lorganisation-vient-de-la-clé">L’organisation vient de la clé</h2>
|
|
49
|
-
<p>Chaque clé appartient à une organisation, et chaque requête s’exécute dans cette organisation. Un identifiant d’organisation dans l’URL, ou un paramètre <code>teamId</code> ou <code>slug</code>, que la CLI ajoute parfois, est ignoré.</p>
|
|
50
|
-
<h2 id="versions-dans-le-chemin">Versions dans le chemin</h2>
|
|
51
|
-
<p>Les chemins gardent les numéros de version de l’API Vercel, comme <code>/v2</code>, <code>/v9</code> ou <code>/v13</code>, pour que la CLI fonctionne sans modification. Plusieurs versions d’un même endpoint renvoient la même réponse : <code>/v9/projects</code> et <code>/v10/projects</code> par exemple.</p>
|
|
52
|
-
<h2 id="pagination">Pagination</h2>
|
|
53
|
-
<p>Les listes ne sont pas paginées. Elles renvoient un objet <code>pagination</code> pour la compatibilité, avec <code>next</code> toujours à <code>null</code>.</p>
|
|
54
|
-
<h2 id="limites-de-débit">Limites de débit</h2>
|
|
55
|
-
<p>Chaque clé dispose de 600 requêtes par minute, avec des rafales de 120. L’envoi de fichiers a son propre budget : 6 000 par minute, avec des rafales de 3 000.</p>
|
|
56
|
-
<p>Au-delà, l’API répond <code>429</code> avec le code <code>rate_limited</code> :</p>
|
|
57
|
-
<div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="json"><code><div class="ec-line"><div class="code"><span style="--0:#1F2328;--1:#E6EDF3">{</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#116329;--1:#7EE787">"error"</span><span style="--0:#1F2328;--1:#E6EDF3">: {</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#116329;--1:#7EE787">"code"</span><span style="--0:#1F2328;--1:#E6EDF3">: </span><span style="--0:#0A3069;--1:#A5D6FF">"rate_limited"</span><span style="--0:#1F2328;--1:#E6EDF3">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#116329;--1:#7EE787">"message"</span><span style="--0:#1F2328;--1:#E6EDF3">: </span><span style="--0:#0A3069;--1:#A5D6FF">"Trop de requêtes, réessaie dans un instant."</span></div></div><div class="ec-line"><div class="code"><span class="indent"><span style="--0:#1F2328;--1:#E6EDF3"> </span></span><span style="--0:#1F2328;--1:#E6EDF3">}</span></div></div><div class="ec-line"><div class="code"><span style="--0:#1F2328;--1:#E6EDF3">}</span></div></div></code></pre><div class="copy"><div aria-live="polite"></div><button title="Copier dans le presse-papiers" data-copied="Copié !" data-code="{ "error": { "code": "rate_limited", "message": "Trop de requêtes, réessaie dans un instant." }}"><div></div></button></div></figure></div>
|
|
58
|
-
<p>La réponse porte un en-tête <code>retry-after</code> quand l’attente est connue. La création de déploiements est aussi limitée par organisation : voir <a href="/docs/reference/limites/">Limites</a>.</p>
|
|
59
|
-
<h2 id="endpoints">Endpoints</h2>
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
<div class="hd-table"><table><thead><tr><th>Méthode</th><th>Chemin</th><th>Rôle</th></tr></thead><tbody><tr><td><code>GET</code></td><td><a href="/docs/reference/api/utilisateur/"><code>/v2/user</code></a></td><td>Personne qui a créé la clé</td></tr><tr><td><code>GET</code></td><td><a href="/docs/reference/api/utilisateur/"><code>/v2/teams</code></a></td><td>Organisation de la clé</td></tr><tr><td><code>GET</code></td><td><a href="/docs/reference/api/utilisateur/"><code>/v2/teams/:idOrSlug</code></a></td><td>Lire l’organisation</td></tr><tr><td><code>GET</code></td><td><a href="/docs/reference/api/projets/"><code>/v9/projects</code></a></td><td>Lister les projets</td></tr><tr><td><code>GET</code></td><td><a href="/docs/reference/api/projets/"><code>/v9/projects/:idOrName</code></a></td><td>Lire un projet</td></tr><tr><td><code>POST</code></td><td><a href="/docs/reference/api/projets/"><code>/v11/projects</code></a></td><td>Créer un projet</td></tr><tr><td><code>POST</code></td><td><a href="/docs/reference/api/fichiers/"><code>/v2/files</code></a></td><td>Envoyer un fichier</td></tr><tr><td><code>POST</code></td><td><a href="/docs/reference/api/deploiements/"><code>/v13/deployments</code></a></td><td>Créer un déploiement</td></tr><tr><td><code>GET</code></td><td><a href="/docs/reference/api/deploiements/"><code>/v13/deployments/:id</code></a></td><td>Lire un déploiement</td></tr><tr><td><code>GET</code></td><td><a href="/docs/reference/api/deploiements/"><code>/v3/deployments/:id/events</code></a></td><td>Suivre les logs</td></tr><tr><td><code>GET</code></td><td><a href="/docs/reference/api/variables/"><code>/v3/env/pull/:project/:target</code></a></td><td>Lire les variables d’un environnement</td></tr></tbody></table></div>
|
|
126
|
-
<p>Les erreurs et leurs codes sont sur <a href="/docs/reference/api/erreurs/">Erreurs</a>.</p></div><hgdc-feedback class="hgdc-feedback not-content" data-endpoint="https://docs.hgdc.ch/api/v1/feedback" data-project="js743wp3001k1jvrdad0fwcjx18gc789" data-pagefind-ignore="true"><div data-step="ask"><p class="hgdc-feedback__question">Cette page t'a aidé ?</p><div class="hgdc-feedback__choices"><button type="button" data-helpful="true"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M7 10v11M15 5.9 14 10h5.8a2 2 0 0 1 1.9 2.5l-2.3 7A2 2 0 0 1 17.5 21H4a1 1 0 0 1-1-1v-9a1 1 0 0 1 1-1h2.8a2 2 0 0 0 1.8-1.1L12 2a3.1 3.1 0 0 1 3 3.9Z"></path></svg>Oui</button><button type="button" data-helpful="false"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M17 14V3M9 18.1 10 14H4.2a2 2 0 0 1-1.9-2.5l2.3-7A2 2 0 0 1 6.5 3H20a1 1 0 0 1 1 1v9a1 1 0 0 1-1 1h-2.8a2 2 0 0 0-1.8 1.1L12 22a3.1 3.1 0 0 1-3-3.9Z"></path></svg>Non</button></div></div><form data-step="comment" hidden><label for="hgdc-feedback-comment">Qu'est-ce qui manquait ou pourrait être plus clair ? (facultatif)</label><textarea id="hgdc-feedback-comment" name="comment" rows="3" maxlength="1000"></textarea><div class="hgdc-feedback__choices"><button type="submit">Envoyer</button><button type="button" data-skip>Passer</button></div></form><p data-step="done" class="hgdc-feedback__done" role="status" hidden>Merci, c'est noté.</p></hgdc-feedback><nav class="hd-pagination not-content" aria-label="Pages voisines" data-pagefind-ignore><a class="hd-pagination__link" href="/docs/reference/limites/" rel="prev"><span class="hd-pagination__hint"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="m15 6-6 6 6 6"></path></svg>Précédent</span><span class="hd-pagination__title">Limites</span></a><a class="hd-pagination__link hd-pagination__link--next" href="/docs/reference/api/erreurs/" rel="next"><span class="hd-pagination__hint">Suivant<svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="m9 6 6 6-6 6"></path></svg></span><span class="hd-pagination__title">Erreurs</span></a></nav><script type="module" src="/docs/_astro/Footer.astro_astro_type_script_index_0_lang.DzCnn3OT.js"></script></div></div></main><form class="hd-askbar" data-askbar data-pagefind-ignore><label class="sr-only" for="hd-askbar-input">Pose une question à l'assistant</label><input id="hd-askbar-input" data-askbar-input type="text" maxlength="1000" placeholder="Pose une question…" autocomplete="off"><kbd class="hd-kbd" data-shortcut aria-hidden="true">Ctrl I</kbd><button type="submit" class="hd-send" aria-label="Envoyer la question"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M12 19V5m-6 6 6-6 6 6"></path></svg></button></form></div><aside class="hd-columns__toc" aria-label="Sur cette page"><div class="hd-toc-scroll"><starlight-toc data-min-h="2" data-max-h="3"><nav aria-labelledby="starlight__on-this-page"><h2 id="starlight__on-this-page">Sur cette page</h2><ul class="astro-jxyovztp" style="--depth: 0;"><li style="--depth: 0;" class="astro-jxyovztp"><a href="#_top" style="--depth: 0;" class="astro-jxyovztp"><span style="--depth: 0;" class="astro-jxyovztp">Vue d’ensemble</span></a></li><li style="--depth: 0;" class="astro-jxyovztp"><a href="#adresse-de-base" style="--depth: 0;" class="astro-jxyovztp"><span style="--depth: 0;" class="astro-jxyovztp">Adresse de base</span></a></li><li style="--depth: 0;" class="astro-jxyovztp"><a href="#authentification" style="--depth: 0;" class="astro-jxyovztp"><span style="--depth: 0;" class="astro-jxyovztp">Authentification</span></a></li><li style="--depth: 0;" class="astro-jxyovztp"><a href="#lorganisation-vient-de-la-clé" style="--depth: 0;" class="astro-jxyovztp"><span style="--depth: 0;" class="astro-jxyovztp">L’organisation vient de la clé</span></a></li><li style="--depth: 0;" class="astro-jxyovztp"><a href="#versions-dans-le-chemin" style="--depth: 0;" class="astro-jxyovztp"><span style="--depth: 0;" class="astro-jxyovztp">Versions dans le chemin</span></a></li><li style="--depth: 0;" class="astro-jxyovztp"><a href="#pagination" style="--depth: 0;" class="astro-jxyovztp"><span style="--depth: 0;" class="astro-jxyovztp">Pagination</span></a></li><li style="--depth: 0;" class="astro-jxyovztp"><a href="#limites-de-débit" style="--depth: 0;" class="astro-jxyovztp"><span style="--depth: 0;" class="astro-jxyovztp">Limites de débit</span></a></li><li style="--depth: 0;" class="astro-jxyovztp"><a href="#endpoints" style="--depth: 0;" class="astro-jxyovztp"><span style="--depth: 0;" class="astro-jxyovztp">Endpoints</span></a></li></ul></nav></starlight-toc><script type="module">var e=`_top`,t=class extends HTMLElement{_current=this.querySelector(`a[aria-current="true"]`);minH=parseInt(this.dataset.minH||`2`,10);maxH=parseInt(this.dataset.maxH||`3`,10);tocHeadingSelector=`h1#${e},:where(${[...Array.from({length:1+this.maxH-this.minH}).map((e,t)=>`h${this.minH+t}`)].join()})[id]`;set current(e){e!==this._current&&(this._current&&this._current.removeAttribute(`aria-current`),e.setAttribute(`aria-current`,`true`),this._current=e)}onIdle=e=>(window.requestIdleCallback||(e=>setTimeout(e,1)))(e);constructor(){super(),this.onIdle(()=>this.init())}init=()=>{let t=[...this.querySelectorAll(`a`)],n=e=>e.matches(this.tocHeadingSelector),r=t=>{for(;t;){if(t.matches(`.sl-markdown-content, main > *`))return document.getElementById(e);if(n(t))return t;let r=t.querySelector(this.tocHeadingSelector);if(r)return r;let i=t.previousElementSibling;for(;i?.lastElementChild;)i=i.lastElementChild;t=i??t.parentElement}return null},i=e=>{for(let{isIntersecting:n,target:i}of e){if(!n)continue;let e=r(i);if(!e)continue;let a=t.find(t=>t.hash===`#`+encodeURIComponent(e.id));if(a){this.current=a;break}}},a=document.querySelectorAll([`main :where(${this.tocHeadingSelector})`,`main :where(${this.tocHeadingSelector}, .sl-heading-wrapper) ~ *:not(:has(${this.tocHeadingSelector}))`,`main .sl-markdown-content > *:not(:has(${this.tocHeadingSelector}))`,`main > *:not(:has(${this.tocHeadingSelector}))`].join()),o,s=()=>{o||(o=new IntersectionObserver(i,{rootMargin:this.getRootMargin()}),a.forEach(e=>o.observe(e)))};s();let c;window.addEventListener(`resize`,()=>{o&&=(o.disconnect(),void 0),clearTimeout(c),c=setTimeout(()=>this.onIdle(s),200)})};getRootMargin(){let e=(document.querySelector(`header`)?.getBoundingClientRect().height||0)+(this.querySelector(`summary`)?.getBoundingClientRect().height||0)+32;return`-${e}px 0% ${e+53-document.documentElement.clientHeight}px`}};customElements.define(`starlight-toc`,t);</script></div></aside></div><footer class="hd-site-footer" data-pagefind-ignore><div class="hd-site-footer__row"><a class="hd-brand hd-brand--footer" href="/docs/"><span class="hd-brand__mark"><img class="hd-brand__light" src="/docs/images/logo.svg" alt="" width="20" height="20" loading="lazy"><img class="hd-brand__dark" src="/docs/images/logo.svg" alt="" width="20" height="20" loading="lazy"></span><span class="hd-brand__name">Host</span></a></div><div class="hd-site-footer__row hd-site-footer__row--meta"><p>Ton site en ligne, déployé à chaque modification.</p><div class="hd-theme-choice" role="radiogroup" aria-label="Thème"><button type="button" role="radio" aria-checked="false" data-hd-theme="auto" aria-label="Système" title="Système"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M4 5h16a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1Zm4 15h8m-4-3v3"></path></svg></button><button type="button" role="radio" aria-checked="false" data-hd-theme="light" aria-label="Clair" title="Clair"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M12 16a4 4 0 1 0 0-8 4 4 0 0 0 0 8ZM12 2.5v2M12 19.5v2M4.6 4.6 6 6M18 18l1.4 1.4M2.5 12h2M19.5 12h2M4.6 19.4 6 18M18 6l1.4-1.4"></path></svg></button><button type="button" role="radio" aria-checked="false" data-hd-theme="dark" aria-label="Sombre" title="Sombre"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M20 14.5A8 8 0 1 1 9.5 4a6.5 6.5 0 0 0 10.5 10.5Z"></path></svg></button></div></div></footer></div><hgdc-assistant data-endpoint="https://docs.hgdc.ch/api/v1/ask" data-project="js743wp3001k1jvrdad0fwcjx18gc789" data-name="Host"><section class="hgdc-panel" role="dialog" aria-modal="false" aria-labelledby="hgdc-assistant-title" data-panel inert><div class="hgdc-panel__grip" aria-hidden="true"></div><header class="hgdc-panel__header"><h2 id="hgdc-assistant-title"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M12 3.5 13.6 8a3 3 0 0 0 1.9 1.9L20 11.5l-4.5 1.6a3 3 0 0 0-1.9 1.9L12 19.5 10.4 15a3 3 0 0 0-1.9-1.9L4 11.5 8.5 9.9A3 3 0 0 0 10.4 8ZM19 3v3M20.5 4.5h-3"></path></svg>Assistant</h2><div class="hgdc-panel__tools"><button type="button" class="hd-icon-button" data-reset aria-label="Nouvelle conversation" title="Nouvelle conversation" hidden><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M4 12a8 8 0 1 0 2.3-5.7M4 4v4h4"></path></svg></button><button type="button" class="hd-icon-button" data-close aria-label="Fermer l'assistant" title="Fermer (Échap)"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M6 6l12 12M18 6 6 18"></path></svg></button></div></header><div class="hgdc-panel__body" data-log aria-live="polite"><div class="hgdc-empty" data-empty><p class="hgdc-empty__title">Pose ta question sur Host.</p><p>Je cherche dans les pages de cette documentation et je cite mes sources. Si la réponse n'y est pas, je te le dis.</p></div></div><form class="hgdc-panel__form" data-form><label class="sr-only" for="hgdc-question">Ta question</label><textarea id="hgdc-question" data-input rows="1" maxlength="1000" placeholder="Pose une question…" required></textarea><button type="submit" class="hd-send" data-send aria-label="Envoyer la question"><svg class="hd-icon" aria-hidden="true" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M12 19V5m-6 6 6-6 6 6"></path></svg></button></form><p class="hgdc-panel__note">Réponses générées par IA (Claude, d'Anthropic), à vérifier. Les questions sont conservées 90 jours pour améliorer cette documentation.</p></section></hgdc-assistant><script type="module" src="/docs/_astro/Assistant.astro_astro_type_script_index_0_lang.C1pz7yK1.js"></script></div><script type="module">var e=class extends HTMLElement{connectedCallback(){let e=matchMedia(`(min-width: 50em)`),t=()=>{e.matches&&this.matches(`:popover-open`)&&this.hidePopover(),this.popover=e.matches?null:`auto`};t(),e.addEventListener(`change`,t),this.addEventListener(`toggle`,e=>{let t=e.newState===`open`;for(let e of document.querySelectorAll(`.hd-main-frame, .hd-askbar`))e.toggleAttribute(`inert`,t);document.documentElement.toggleAttribute(`data-hd-menu`,t)}),this.addEventListener(`click`,e=>{e.target.closest(`a`)&&this.matches(`:popover-open`)&&this.hidePopover()})}};customElements.define(`hd-sidebar-pane`,e);</script></body></html>
|