{"formatVersion":"1","kind":"dock_integration","slug":"digitalocean-api","title":"DigitalOcean API","summary":"Import a Harbor-safe DigitalOcean starter set for droplet discovery, region lookup, and approval-friendly tag creation.","description":"A Dock-hosted DigitalOcean API starter integration for Harbor. Importing it creates a local http_api port shell plus a Harbor-safe DigitalOcean action set for listing droplets, inspecting individual droplets, listing regions, and creating tags with explicit approval. Tokens remain local to Harbor Node.","version":"0.1.0","publisher":{"slug":"digitalocean","name":"DigitalOcean","websiteUrl":"https://docs.digitalocean.com/reference/api/"},"category":"Infrastructure","tags":["digitalocean","cloud","droplets","tags","regions"],"compatibility":{"harborNode":">=0.1.0","notes":"Requires local operator-configured auth after import. DigitalOcean reads use typed path and query inputs while tag creation uses a bounded JSON request body."},"requiredPlan":"community","portTemplates":[{"kind":"http_api","label":"DigitalOcean API","description":"DigitalOcean API connection managed locally through Harbor.","baseUrl":"https://api.digitalocean.com","authMode":"header_token","authHeaderName":"Authorization","authTokenPrefix":"Bearer"}],"actionTemplates":[{"slug":"list-droplets","label":"List Droplets","description":"List DigitalOcean droplets with typed pagination and optional tag, name, or type filters.","method":"GET","path":"/v2/droplets","inputs":{"parameters":[{"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":200},"default":20,"description":"Number of droplets to return per page."},{"name":"tag_name","in":"query","schema":{"type":"string"},"description":"Optional tag filter for droplets."},{"name":"name","in":"query","schema":{"type":"string"},"description":"Optional exact droplet name filter."},{"name":"type","in":"query","schema":{"type":"string","enum":["droplets","gpus"]},"description":"Optional droplet type filter."}]},"approvalMode":"automatic","requestBodyMode":"none","resultMode":"json_summary"},{"slug":"get-droplet","label":"Get Droplet","description":"Retrieve a specific DigitalOcean droplet by identifier.","method":"GET","path":"/v2/droplets/{droplet_id}","inputs":{"parameters":[{"name":"droplet_id","in":"path","required":true,"schema":{"type":"integer","minimum":1},"description":"DigitalOcean droplet identifier."}]},"approvalMode":"automatic","requestBodyMode":"none","resultMode":"json_summary"},{"slug":"list-regions","label":"List Regions","description":"List DigitalOcean data center regions with typed pagination inputs.","method":"GET","path":"/v2/regions","inputs":{"parameters":[{"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":200},"default":20,"description":"Number of regions to return per page."}]},"approvalMode":"automatic","requestBodyMode":"none","resultMode":"json_summary"},{"slug":"create-tag","label":"Create Tag","description":"Create a DigitalOcean tag using a bounded JSON request body.","method":"POST","path":"/v2/tags","approvalMode":"require_approval","requestBodyMode":"json","resultMode":"json_summary"}],"helpText":"Import to Harbor, configure local auth, then use list-droplets and list-regions to inspect inventory before enabling create-tag. Keep infrastructure 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. DigitalOcean starter actions use Authorization: Bearer, typed path and query inputs, and a bounded JSON request body for tag creation."}