MCP 서버

ShipStatic

com.shipstatic/mcp
클라우드 및 인프라 개발자 도구 공개 · 연결 가능 MCP 2025-11-25

이 MCP로 할 수 있는 일

Deploys and manages static websites, custom domains, DNS configuration, and deployment metadata.

deployments_delete
Delete Deployment
Permanently deletes a deployment and its files.
파괴적 작업 외부 접근 가능 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['deployment'], 'properties': {'deployment': {'type': 'string', 'description': 'Deployment hostname to delete (e.g. "happy-cat-abc1234.shipstatic.com")'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['deployment', 'status'], 'properties': {'status': {'type': 'string', 'description': 'The state the deployment is in while background cleanup runs. One of: pending, success, failed, deleting.'}, 'deployment': {'type': 'string', 'description': 'The deployment hostname that was marked for removal.'}}, 'additionalProperties': False}
deployments_get
Get Deployment
Get deployment details including URL, status, file count, size, labels, and password protection state.
읽기 전용
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['deployment'], 'properties': {'deployment': {'type': 'string', 'description': 'Deployment hostname (e.g. "happy-cat-abc1234.shipstatic.com"). Returned by deployments_upload or deployments_list.'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['deployment', 'url', 'files', 'size', 'status', 'config', 'password', 'labels', 'via', 'created', 'expires', 'screenshot'], 'properties': {'url': {'type': 'string', 'format': 'uri', 'description': 'Full URL to the live deployment.'}, 'via': {'type': ['string', 'null'], 'description': 'How the deployment was created, as shown in deployment history (today one of: web, sdk, cli, mcp, git, n8n, gpt, vsc, cld, crs, gmn, api). Null on deployments older than the tag.'}, 'size': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Total deployment size in bytes.'}, 'files': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Number of files in the deployment.'}, 'config': {'type': 'boolean', 'description': 'True if the deployment includes a ship.json routing config.'}, 'labels': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Labels attached to the deployment; empty when none.'}, 'status': {'type': 'string', 'description': 'Deployment lifecycle state; "success" means the site is live. One of: pending, success, failed, deleting.'}, 'created': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Unix timestamp (seconds) when the deployment was created.'}, 'expires': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, {'type': 'null'}], 'description': 'Unix timestamp (seconds) when the deployment expires; null when permanent. Anonymous deployments expire 3 days after creation unless claimed; an authenticated deployment carries one only when it requested a ttl.'}, 'password': {'type': 'boolean', 'description': 'True if the deployment is password-protected.'}, 'deployment': {'type': 'string', 'description': 'Deployment hostname, e.g. "happy-cat-abc1234.shipstatic.com".'}, 'screenshot': {'type': 'string', 'format': 'uri', 'description': 'Full URL to the deployment screenshot. Rendered on the first request for it, so the URL is returned immediately and the first request takes a few seconds; every request after that is served immediately.'}}, 'additionalProperties': False}
deployments_list
List Deployments
List all deployments with their URLs, status, labels, and password protection state. The response's `cursor` is null on the last page; pass it back as `cursor` to fetch the next.
읽기 전용
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Maximum number of items to return in one page. Omit for the server default.'}, 'cursor': {'type': 'string', 'description': "Opaque position from the previous response's `cursor` field; omit for the first page."}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['cursor', 'deployments'], 'properties': {'cursor': {'type': ['string', 'null'], 'description': 'Opaque cursor for the next page; null on the last page. The whole has-more signal.'}, 'deployments': {'type': 'array', 'items': {'type': 'object', 'required': ['deployment', 'url', 'files', 'size', 'status', 'config', 'password', 'labels', 'via', 'created', 'expires', 'screenshot'], 'properties': {'url': {'type': 'string', 'format': 'uri', 'description': 'Full URL to the live deployment.'}, 'via': {'type': ['string', 'null'], 'description': 'How the deployment was created, as shown in deployment history (today one of: web, sdk, cli, mcp, git, n8n, gpt, vsc, cld, crs, gmn, api). Null on deployments older than the tag.'}, 'size': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Total deployment size in bytes.'}, 'files': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Number of files in the deployment.'}, 'config': {'type': 'boolean', 'description': 'True if the deployment includes a ship.json routing config.'}, 'labels': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Labels attached to the deployment; empty when none.'}, 'status': {'type': 'string', 'description': 'Deployment lifecycle state; "success" means the site is live. One of: pending, success, failed, deleting.'}, 'created': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Unix timestamp (seconds) when the deployment was created.'}, 'expires': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, {'type': 'null'}], 'description': 'Unix timestamp (seconds) when the deployment expires; null when permanent. Anonymous deployments expire 3 days after creation unless claimed; an authenticated deployment carries one only when it requested a ttl.'}, 'password': {'type': 'boolean', 'description': 'True if the deployment is password-protected.'}, 'deployment': {'type': 'string', 'description': 'Deployment hostname, e.g. "happy-cat-abc1234.shipstatic.com".'}, 'screenshot': {'type': 'string', 'format': 'uri', 'description': 'Full URL to the deployment screenshot. Rendered on the first request for it, so the URL is returned immediately and the first request takes a few seconds; every request after that is served immediately.'}}, 'additionalProperties': False}, 'description': 'The deployments on this page.'}}, 'additionalProperties': False}
deployments_set
Update Deployment Labels
Update deployment labels. Replaces all existing labels.
파괴적 작업
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['deployment', 'labels'], 'properties': {'labels': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Labels to set. Replaces all existing labels. Pass empty array to clear.'}, 'deployment': {'type': 'string', 'description': 'Deployment hostname (e.g. "happy-cat-abc1234.shipstatic.com"). Use deployments_list to find deployments.'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['deployment', 'url', 'files', 'size', 'status', 'config', 'password', 'labels', 'via', 'created', 'expires', 'screenshot'], 'properties': {'url': {'type': 'string', 'format': 'uri', 'description': 'Full URL to the live deployment.'}, 'via': {'type': ['string', 'null'], 'description': 'How the deployment was created, as shown in deployment history (today one of: web, sdk, cli, mcp, git, n8n, gpt, vsc, cld, crs, gmn, api). Null on deployments older than the tag.'}, 'size': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Total deployment size in bytes.'}, 'files': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Number of files in the deployment.'}, 'config': {'type': 'boolean', 'description': 'True if the deployment includes a ship.json routing config.'}, 'labels': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Labels attached to the deployment; empty when none.'}, 'status': {'type': 'string', 'description': 'Deployment lifecycle state; "success" means the site is live. One of: pending, success, failed, deleting.'}, 'created': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Unix timestamp (seconds) when the deployment was created.'}, 'expires': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, {'type': 'null'}], 'description': 'Unix timestamp (seconds) when the deployment expires; null when permanent. Anonymous deployments expire 3 days after creation unless claimed; an authenticated deployment carries one only when it requested a ttl.'}, 'password': {'type': 'boolean', 'description': 'True if the deployment is password-protected.'}, 'deployment': {'type': 'string', 'description': 'Deployment hostname, e.g. "happy-cat-abc1234.shipstatic.com".'}, 'screenshot': {'type': 'string', 'format': 'uri', 'description': 'Full URL to the deployment screenshot. Rendered on the first request for it, so the URL is returned immediately and the first request takes a few seconds; every request after that is served immediately.'}}, 'additionalProperties': False}
deployments_upload
Deploy Static Site
Deploy a static site to a live URL: free, no account or API key required. **File content is plain text by default.** Pass HTML/CSS/JS/JSON/SVG/etc. directly in each file's `content` as a regular string. Only set `encoding: "base64"` per-file for binary content (images, fonts) — do not base64-encode text. Returns the live URL. Without a connected account, the response also includes a one-time claim URL, and the site expires in 3 days unless claimed. Pass `password` to make the site private.
외부 접근 가능
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['files'], 'properties': {'ttl': {'type': 'number', 'description': "Seconds until this deployment expires and the platform reclaims it; omit for one that never does. Only for authenticated deploys — an anonymous deployment already expires on the platform's schedule, and a requested ttl on one is refused. A deployment carrying a ttl cannot be linked to a custom domain: deploy without one if the site needs a domain."}, 'files': {'type': 'array', 'items': {'type': 'object', 'required': ['path', 'content'], 'properties': {'path': {'type': 'string', 'description': 'Relative path within the site (e.g. "index.html", "assets/app.css"). No leading slash; no parent-folder wrapping.'}, 'content': {'type': 'string', 'description': 'File content as a plain text string. For HTML, CSS, JS, JSON, SVG, plain text — pass directly with no encoding step. For binary files (images, fonts) ONLY, set this entry\'s `encoding: "base64"` and pass base64-encoded bytes.'}, 'encoding': {'enum': ['utf-8', 'base64'], 'type': 'string', 'description': 'Defaults to `"utf-8"` (raw text). Set to `"base64"` ONLY for binary files. Never base64-encode text content — pass it as a plain string.'}}}, 'description': 'Files that make up the site. The site root is implied by these paths.'}, 'labels': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Labels for organizing deployments (e.g. ["production", "v1.2"]). Lowercase, 3-25 chars, allows . _ - separators. Up to 10.'}, 'password': {'type': 'string', 'description': 'Optional password to gate the deployment behind an unlock prompt (6–128 characters; whitespace significant). Visitors must enter this password before viewing the site, including on any custom domains pointing at it.'}, 'idempotencyKey': {'type': 'string', 'description': 'Makes this deploy replayable instead of repeatable. A deploy is not naturally idempotent: if a call times out you cannot tell "it never landed" from "it landed and the response was lost", and retrying creates a second deployment. Send the same key on the retry and the original deployment is replayed instead (within 24 hours). Key the ATTEMPT — a run id, a commit sha, a uuid minted before the first try — never one minted fresh on each retry, which would defeat the point. Only for a connected account: without one the key is ignored and a retry deploys again.'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['deployment', 'url', 'files', 'size', 'status', 'config', 'password', 'labels', 'via', 'created', 'expires', 'screenshot'], 'properties': {'url': {'type': 'string', 'format': 'uri', 'description': 'Full URL to the live deployment.'}, 'via': {'type': ['string', 'null'], 'description': 'How the deployment was created, as shown in deployment history (today one of: web, sdk, cli, mcp, git, n8n, gpt, vsc, cld, crs, gmn, api). Null on deployments older than the tag.'}, 'size': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Total deployment size in bytes.'}, 'claim': {'type': 'string', 'format': 'uri', 'description': 'One-time URL that claims this anonymous deployment to a free account, making it permanent. Only present on anonymous deploys; absent when the deploy was made with a connected account.'}, 'files': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Number of files in the deployment.'}, 'config': {'type': 'boolean', 'description': 'True if the deployment includes a ship.json routing config.'}, 'labels': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Labels attached to the deployment; empty when none.'}, 'status': {'type': 'string', 'description': 'Deployment lifecycle state; "success" means the site is live. One of: pending, success, failed, deleting.'}, 'created': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Unix timestamp (seconds) when the deployment was created.'}, 'expires': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, {'type': 'null'}], 'description': 'Unix timestamp (seconds) when the deployment expires; null when permanent. Anonymous deployments expire 3 days after creation unless claimed; an authenticated deployment carries one only when it requested a ttl.'}, 'password': {'type': 'boolean', 'description': 'True if the deployment is password-protected.'}, 'deployment': {'type': 'string', 'description': 'Deployment hostname, e.g. "happy-cat-abc1234.shipstatic.com".'}, 'screenshot': {'type': 'string', 'format': 'uri', 'description': 'Full URL to the deployment screenshot. Rendered on the first request for it, so the URL is returned immediately and the first request takes a few seconds; every request after that is served immediately.'}}, 'additionalProperties': False}
domains_delete
Delete Domain
Permanently deletes a domain.
파괴적 작업 외부 접근 가능 멱등성
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['domain'], 'properties': {'domain': {'type': 'string', 'description': 'Domain name to delete (e.g. "www.example.com")'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['domain'], 'properties': {'domain': {'type': 'string', 'description': 'The domain name that was removed, normalized.'}}, 'additionalProperties': False}
domains_dns
Get DNS Provider
Returns the DNS provider recorded for the domain, if known (e.g. Cloudflare, Namecheap): where its DNS records are configured. Custom domains only, and only while the domain is unverified; once its DNS is right there is nothing left to locate.
읽기 전용
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['domain'], 'properties': {'domain': {'type': 'string', 'description': 'Domain name (e.g. "www.example.com"). Must be a domain previously created with domains_set.'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['domain', 'dns'], 'properties': {'dns': {'anyOf': [{'type': 'object', 'properties': {'provider': {'type': 'object', 'required': ['name'], 'properties': {'url': {'anyOf': [{'type': 'string', 'format': 'uri'}, {'type': 'null'}], 'description': "The provider's DNS dashboard, where the records get added; null or absent when unknown."}, 'name': {'type': ['string', 'null'], 'description': 'Provider name, e.g. "Cloudflare"; null if unknown.'}}, 'description': "The provider serving this domain's DNS; absent when unidentified.", 'additionalProperties': False}}, 'additionalProperties': False}, {'type': 'null'}], 'description': "What the platform recorded about the domain's DNS provider when the domain was created; null if nothing was recorded."}, 'domain': {'type': 'string', 'description': 'The domain name.'}}, 'additionalProperties': False}
domains_get
Get Domain
Get domain details including URL, linked deployment, labels, and `status`: the one word saying what the domain needs from its owner (`unverified`, `unlinked`, `live`, `paused`).
읽기 전용
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['domain'], 'properties': {'domain': {'type': 'string', 'description': 'Domain name (e.g. "www.example.com"). Use domains_list to find names.'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['domain', 'url', 'status', 'deployment', 'linked', 'links', 'verification', 'verified', 'verifications', 'paused', 'labels', 'created'], 'properties': {'url': {'type': 'string', 'format': 'uri', 'description': 'Full URL to the domain.'}, 'links': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'How many times a deployment has been linked to this domain.'}, 'domain': {'type': 'string', 'description': 'The domain name, e.g. "www.example.com".'}, 'labels': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Labels attached to the domain; empty when none.'}, 'linked': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, {'type': 'null'}], 'description': 'Unix timestamp (seconds) when a deployment was last linked; null if never linked.'}, 'paused': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, {'type': 'null'}], 'description': 'Unix timestamp (seconds) when plan enforcement paused serving; null while the plan has room for it.'}, 'status': {'type': 'string', 'description': 'What this domain needs from its owner, derived: "live" serves the linked deployment and needs nothing; "unlinked" is verified with nothing published there, so link a deployment; "unverified" needs its DNS records configured; "paused" means the plan no longer has room for it. Read this word rather than recomputing it. One of: live, unlinked, unverified, paused.'}, 'created': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Unix timestamp (seconds) when the domain was created.'}, 'verified': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, {'type': 'null'}], 'description': 'When DNS last became verified; null if it never has, and never cleared, so a domain whose records moved away keeps it. Read `verification` for whether DNS is right now.'}, 'deployment': {'type': ['string', 'null'], 'description': 'The deployment hostname this domain points to; null when reserved but not yet linked.'}, 'verification': {'type': 'string', 'description': 'How far DNS verification has got: "pending" is the site\'s CNAME not pointing here, "partial" is a www domain\'s CNAME pointing here without its apex A record (the redirect), "verified" is every required record. The diagnostic under "unverified"; platform domains are born verified. One of: pending, partial, verified.'}, 'verifications': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'How many DNS verification attempts this domain has had.'}}, 'additionalProperties': False}
domains_list
List Domains
List all domains with their URLs, linked deployment, and `status`. The response's `cursor` is null on the last page; pass it back as `cursor` to fetch the next.
읽기 전용
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Maximum number of items to return in one page. Omit for the server default.'}, 'cursor': {'type': 'string', 'description': "Opaque position from the previous response's `cursor` field; omit for the first page."}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['cursor', 'domains'], 'properties': {'cursor': {'type': ['string', 'null'], 'description': 'Opaque cursor for the next page; null on the last page. The whole has-more signal.'}, 'domains': {'type': 'array', 'items': {'type': 'object', 'required': ['domain', 'url', 'status', 'deployment', 'linked', 'links', 'verification', 'verified', 'verifications', 'paused', 'labels', 'created'], 'properties': {'url': {'type': 'string', 'format': 'uri', 'description': 'Full URL to the domain.'}, 'links': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'How many times a deployment has been linked to this domain.'}, 'domain': {'type': 'string', 'description': 'The domain name, e.g. "www.example.com".'}, 'labels': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Labels attached to the domain; empty when none.'}, 'linked': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, {'type': 'null'}], 'description': 'Unix timestamp (seconds) when a deployment was last linked; null if never linked.'}, 'paused': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, {'type': 'null'}], 'description': 'Unix timestamp (seconds) when plan enforcement paused serving; null while the plan has room for it.'}, 'status': {'type': 'string', 'description': 'What this domain needs from its owner, derived: "live" serves the linked deployment and needs nothing; "unlinked" is verified with nothing published there, so link a deployment; "unverified" needs its DNS records configured; "paused" means the plan no longer has room for it. Read this word rather than recomputing it. One of: live, unlinked, unverified, paused.'}, 'created': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Unix timestamp (seconds) when the domain was created.'}, 'verified': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, {'type': 'null'}], 'description': 'When DNS last became verified; null if it never has, and never cleared, so a domain whose records moved away keeps it. Read `verification` for whether DNS is right now.'}, 'deployment': {'type': ['string', 'null'], 'description': 'The deployment hostname this domain points to; null when reserved but not yet linked.'}, 'verification': {'type': 'string', 'description': 'How far DNS verification has got: "pending" is the site\'s CNAME not pointing here, "partial" is a www domain\'s CNAME pointing here without its apex A record (the redirect), "verified" is every required record. The diagnostic under "unverified"; platform domains are born verified. One of: pending, partial, verified.'}, 'verifications': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'How many DNS verification attempts this domain has had.'}}, 'additionalProperties': False}, 'description': 'The domains on this page.'}}, 'additionalProperties': False}
domains_records
Get DNS Records
Returns the DNS records to configure at the domain's DNS provider. Call after domains_set. Custom domains only: a platform subdomain has no records to configure.
읽기 전용
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['domain'], 'properties': {'domain': {'type': 'string', 'description': 'Domain name. Must be a domain previously created with domains_set.'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['domain', 'apex', 'records'], 'properties': {'apex': {'type': 'string', 'description': 'The apex (registered) domain where DNS records are managed.'}, 'domain': {'type': 'string', 'description': 'The domain the records are for.'}, 'records': {'type': 'array', 'items': {'type': 'object', 'required': ['type', 'name', 'value'], 'properties': {'name': {'type': 'string', 'description': 'The DNS name to configure.'}, 'type': {'enum': ['A', 'CNAME'], 'type': 'string', 'description': 'Record type: A for the apex redirect, CNAME for the hosted subdomain.'}, 'value': {'type': 'string', 'description': 'The value to set: an IP for A, a hostname for CNAME.'}}, 'additionalProperties': False}, 'description': 'The records to configure at the DNS provider, in the order to add them.'}}, 'additionalProperties': False}
domains_set
Connect Custom Domain
Create or update a custom domain. Can reserve a name (omit deployment), link it to a deployment, switch deployments, or update labels. domains_records then returns the DNS records to configure.
파괴적 작업 외부 접근 가능
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['domain'], 'properties': {'domain': {'type': 'string', 'description': 'Domain name (e.g. "www.example.com" or "blog.example.com")'}, 'labels': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Labels for organizing domains (e.g. ["production"]).'}, 'deployment': {'type': 'string', 'description': 'Deployment to serve on this domain (e.g. "happy-cat-abc1234.shipstatic.com"). Omit to reserve the domain without linking.'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['domain', 'url', 'status', 'deployment', 'linked', 'links', 'verification', 'verified', 'verifications', 'paused', 'labels', 'created', 'isCreate'], 'properties': {'url': {'type': 'string', 'format': 'uri', 'description': 'Full URL to the domain.'}, 'links': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'How many times a deployment has been linked to this domain.'}, 'domain': {'type': 'string', 'description': 'The domain name, e.g. "www.example.com".'}, 'labels': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Labels attached to the domain; empty when none.'}, 'linked': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, {'type': 'null'}], 'description': 'Unix timestamp (seconds) when a deployment was last linked; null if never linked.'}, 'paused': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, {'type': 'null'}], 'description': 'Unix timestamp (seconds) when plan enforcement paused serving; null while the plan has room for it.'}, 'status': {'type': 'string', 'description': 'What this domain needs from its owner, derived: "live" serves the linked deployment and needs nothing; "unlinked" is verified with nothing published there, so link a deployment; "unverified" needs its DNS records configured; "paused" means the plan no longer has room for it. Read this word rather than recomputing it. One of: live, unlinked, unverified, paused.'}, 'created': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Unix timestamp (seconds) when the domain was created.'}, 'isCreate': {'type': 'boolean', 'description': 'True when this call created the domain; false when it updated an existing one.'}, 'verified': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, {'type': 'null'}], 'description': 'When DNS last became verified; null if it never has, and never cleared, so a domain whose records moved away keeps it. Read `verification` for whether DNS is right now.'}, 'deployment': {'type': ['string', 'null'], 'description': 'The deployment hostname this domain points to; null when reserved but not yet linked.'}, 'verification': {'type': 'string', 'description': 'How far DNS verification has got: "pending" is the site\'s CNAME not pointing here, "partial" is a www domain\'s CNAME pointing here without its apex A record (the redirect), "verified" is every required record. The diagnostic under "unverified"; platform domains are born verified. One of: pending, partial, verified.'}, 'verifications': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'How many DNS verification attempts this domain has had.'}}, 'additionalProperties': False}
domains_share
Share DNS Setup
Returns a shareable DNS setup URL that needs no API key, for whoever manages the domain's DNS. Custom domains only, and only while the domain is unverified; a verified domain has no setup left to share.
읽기 전용
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['domain'], 'properties': {'domain': {'type': 'string', 'description': 'Domain name to generate a share link for. Must be a domain previously created with domains_set.'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['domain', 'url'], 'properties': {'url': {'type': 'string', 'format': 'uri', 'description': 'The shareable DNS setup URL; whoever opens it sees the records to configure, with no API key.'}, 'domain': {'type': 'string', 'description': 'The domain the setup link is for.'}}, 'additionalProperties': False}
domains_validate
Check Domain Availability
Check if a domain name is valid and available before creating it. Returns the normalized form and availability.
읽기 전용
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['domain'], 'properties': {'domain': {'type': 'string', 'description': 'Domain name to check (e.g. "www.example.com"). Call before domains_set to check availability.'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['valid', 'normalized', 'available', 'reason'], 'properties': {'valid': {'type': 'boolean', 'description': "Whether the domain's shape is usable."}, 'reason': {'type': ['string', 'null'], 'description': 'Why the name is unusable, for display; null when it is usable.'}, 'available': {'type': ['boolean', 'null'], 'description': 'Whether nobody has registered the name yet; null when invalid. Creating it would be new; re-pointing your own domain is a write, not a create.'}, 'normalized': {'type': ['string', 'null'], 'description': 'The normalized domain name; null when invalid.'}}, 'additionalProperties': False}
domains_verify
Verify Domain DNS
Trigger DNS verification for a custom domain. Call after the user has configured DNS records from domains_records. Custom domains only, and refused once the domain is verified: read domains_get instead. Verification is asynchronous: read the domain again with domains_get to learn the verdict, since its `status` has not moved yet when this returns. A verified domain serves nothing until a deployment is linked with domains_set.
외부 접근 가능
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['domain'], 'properties': {'domain': {'type': 'string', 'description': 'Domain name to verify DNS for. Must be a domain previously created with domains_set.'}}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['domain'], 'properties': {'domain': {'type': 'string', 'description': "The domain whose DNS verification was queued, normalized. The check runs asynchronously; the domain's `verification` and `status` update once DNS propagates, so read the domain again rather than trusting this acknowledgement for a verdict."}}, 'additionalProperties': False}
whoami
Show Account
Returns your email and name, and the account's plan, usage and caps.
읽기 전용
입력 스키마
{'type': 'object', 'properties': {}}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['email', 'name', 'plan', 'usage', 'caps'], 'properties': {'caps': {'type': 'object', 'required': ['deployments', 'platformDomains', 'customDomains', 'members'], 'properties': {'members': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Members of the account, the owner included; a pending invitation is not one.'}, 'deployments': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Deployments, every row whatever its status.'}, 'customDomains': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Hostnames the customer owns, paused ones included.'}, 'platformDomains': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Names chosen under the platform\'s own suffix, e.g. "my-app.shipstatic.com".'}}, 'description': 'What the account is allowed to hold: the same keys as usage, so the pair divides.', 'additionalProperties': False}, 'name': {'type': ['string', 'null'], 'description': 'Display name; null if not set.'}, 'plan': {'type': 'string', 'description': 'The plan the account is on. One of: free, pro, team, scale, sponsored.'}, 'email': {'type': 'string', 'description': 'The account email address.'}, 'usage': {'type': 'object', 'required': ['deployments', 'platformDomains', 'customDomains', 'members'], 'properties': {'members': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Members of the account, the owner included; a pending invitation is not one.'}, 'deployments': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Deployments, every row whatever its status.'}, 'customDomains': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Hostnames the customer owns, paused ones included.'}, 'platformDomains': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Names chosen under the platform\'s own suffix, e.g. "my-app.shipstatic.com".'}}, 'description': 'What the account currently holds.', 'additionalProperties': False}}, 'additionalProperties': False}
변경됨
whoami
2026년 10월 1일 2:54 AM
변경됨
domains_verify
2026년 10월 1일 2:54 AM
변경됨
domains_share
2026년 10월 1일 2:54 AM
변경됨
domains_dns
2026년 10월 1일 2:54 AM
변경됨
domains_records
2026년 10월 1일 2:54 AM
변경됨
deployments_upload
2026년 10월 1일 2:54 AM
변경됨
whoami
2026년 9월 29일 3:03 AM
변경됨
domains_get
2026년 9월 27일 2:53 AM
변경됨
domains_list
2026년 9월 27일 2:53 AM
변경됨
domains_set
2026년 9월 27일 2:53 AM
변경됨
whoami
2026년 9월 25일 3:03 AM
변경됨
domains_validate
2026년 9월 25일 3:03 AM
변경됨
domains_dns
2026년 9월 25일 3:03 AM
변경됨
domains_get
2026년 9월 25일 3:03 AM
변경됨
domains_list
2026년 9월 25일 3:03 AM
변경됨
domains_set
2026년 9월 25일 3:03 AM
변경됨
deployments_set
2026년 9월 25일 3:03 AM
변경됨
deployments_get
2026년 9월 25일 3:03 AM
변경됨
deployments_list
2026년 9월 25일 3:03 AM
변경됨
deployments_upload
2026년 9월 25일 3:03 AM
변경됨
domains_verify
2026년 9월 23일 2:54 AM
변경됨
domains_get
2026년 9월 23일 2:54 AM
변경됨
domains_list
2026년 9월 23일 2:54 AM
변경됨
domains_set
2026년 9월 23일 2:54 AM
변경됨
domains_verify
2026년 9월 21일 3:01 AM
변경됨
domains_validate
2026년 9월 19일 2:52 AM
변경됨
deployments_set
2026년 9월 19일 2:52 AM
변경됨
deployments_get
2026년 9월 19일 2:52 AM
변경됨
deployments_list
2026년 9월 19일 2:52 AM
변경됨
deployments_upload
2026년 9월 19일 2:52 AM