{"formatVersion":"1","kind":"dock_integration","slug":"netlify-api","title":"Netlify API","summary":"Import a Harbor-safe Netlify starter set for site discovery, deploy inspection, and approval-friendly build hook creation.","description":"A Dock-hosted Netlify API starter integration for Harbor. Importing it creates a local http_api port shell plus a Harbor-safe Netlify action set for listing sites, retrieving a site, inspecting site deploys, and creating build hooks with explicit approval. Tokens remain local to Harbor Node.","version":"0.1.0","publisher":{"slug":"netlify","name":"Netlify","websiteUrl":"https://docs.netlify.com/api-and-cli-guides/api-guides/get-started-with-api/"},"category":"Infrastructure","tags":["netlify","hosting","sites","deployments","build-hooks"],"compatibility":{"harborNode":">=0.1.0","notes":"Requires local operator-configured auth after import. Netlify reads use typed path and query inputs while build hook creation uses a bounded JSON request body."},"requiredPlan":"community","portTemplates":[{"kind":"http_api","label":"Netlify API","description":"Netlify API connection managed locally through Harbor.","baseUrl":"https://api.netlify.com/api/v1/","authMode":"header_token","authHeaderName":"Authorization","authTokenPrefix":"Bearer"}],"actionTemplates":[{"slug":"list-sites","label":"List Sites","description":"List Netlify sites with typed name, filter, and pagination inputs.","method":"GET","path":"/sites","inputs":{"parameters":[{"name":"name","in":"query","schema":{"type":"string"},"description":"Optional site name filter."},{"name":"filter","in":"query","schema":{"type":"string","enum":["all","owner","guest"]},"description":"Optional access filter for returned sites."},{"name":"page","in":"query","schema":{"type":"integer","minimum":1},"description":"Page number of paginated results."},{"name":"per_page","in":"query","schema":{"type":"integer","minimum":1,"maximum":100},"default":20,"description":"Number of sites to return per page."}]},"approvalMode":"automatic","requestBodyMode":"none","resultMode":"json_summary"},{"slug":"get-site","label":"Get Site","description":"Retrieve a Netlify site by site identifier or domain.","method":"GET","path":"/sites/{site_id}","inputs":{"parameters":[{"name":"site_id","in":"path","required":true,"schema":{"type":"string","minLength":1},"description":"Netlify site identifier or site domain."}]},"approvalMode":"automatic","requestBodyMode":"none","resultMode":"json_summary"},{"slug":"list-site-deploys","label":"List Site Deploys","description":"List Netlify deploys for a site with typed state, branch, and pagination filters.","method":"GET","path":"/sites/{site_id}/deploys","inputs":{"parameters":[{"name":"site_id","in":"path","required":true,"schema":{"type":"string","minLength":1},"description":"Netlify site identifier or site domain."},{"name":"state","in":"query","schema":{"type":"string","enum":["new","pending_review","accepted","rejected","enqueued","building","uploading","uploaded","preparing","prepared","processing","processed","ready","error","retrying"]},"description":"Optional deploy state filter."},{"name":"branch","in":"query","schema":{"type":"string"},"description":"Optional Git branch filter."},{"name":"page","in":"query","schema":{"type":"integer","minimum":1},"description":"Page number of paginated results."},{"name":"per_page","in":"query","schema":{"type":"integer","minimum":1,"maximum":100},"default":20,"description":"Number of deploys to return per page."}]},"approvalMode":"automatic","requestBodyMode":"none","resultMode":"json_summary"},{"slug":"create-build-hook","label":"Create Build Hook","description":"Create a Netlify build hook for a site using a bounded JSON request body.","method":"POST","path":"/sites/{site_id}/build_hooks","inputs":{"parameters":[{"name":"site_id","in":"path","required":true,"schema":{"type":"string","minLength":1},"description":"Netlify site identifier or site domain."}]},"approvalMode":"require_approval","requestBodyMode":"json","resultMode":"json_summary"}],"helpText":"Import to Harbor, configure local auth, then use list-sites and list-site-deploys to inspect current state before enabling create-build-hook. Keep deploy-adjacent writes on approval unless your local policy explicitly allows them.","installNotes":"Dock shares only safe metadata. Hidden auth must be configured locally inside Harbor after import. Netlify starter actions use Authorization: Bearer, typed site and pagination inputs, and a bounded JSON request body for build hook creation."}