{"$comment":"Generated by api/generate.mjs from api/model. Do not edit.","openapi":"3.1.0","info":{"title":"Ownsite API","version":"2026-10-17","description":"See https://api.ownsite.me/docs"},"paths":{"/v1/sites":{"get":{"operationId":"ListSites","parameters":[{"name":"maxResults","in":"query","schema":{"type":"number","maximum":100,"minimum":1}},{"name":"nextToken","in":"query","schema":{"type":"string","maxLength":2048,"minLength":1}}],"responses":{"200":{"description":"ListSites 200 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListSitesResponseContent"}}}},"400":{"description":"ValidationException 400 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationExceptionResponseContent"}}}},"401":{"description":"UnauthorizedException 401 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedExceptionResponseContent"}}}},"403":{"description":"AccessDeniedException 403 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessDeniedExceptionResponseContent"}}}},"429":{"description":"ThrottlingException 429 response","headers":{"Retry-After":{"schema":{"type":"number"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThrottlingExceptionResponseContent"}}}},"500":{"description":"InternalServerException 500 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerExceptionResponseContent"}}}}},"security":[{"ownsite":[]}]}},"/v1/sites/{siteId}":{"get":{"operationId":"GetSite","parameters":[{"name":"siteId","in":"path","description":"The site name. It is also part of its addresses (<siteId>.ownsite.me) and never changes.","schema":{"type":"string","maxLength":40,"minLength":1,"pattern":"^[a-z0-9](?:[a-z0-9-]{0,38}[a-z0-9])?$","description":"The site name. It is also part of its addresses (<siteId>.ownsite.me) and never changes."},"required":true}],"responses":{"200":{"description":"GetSite 200 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetSiteResponseContent"}}}},"400":{"description":"ValidationException 400 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationExceptionResponseContent"}}}},"401":{"description":"UnauthorizedException 401 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedExceptionResponseContent"}}}},"403":{"description":"AccessDeniedException 403 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessDeniedExceptionResponseContent"}}}},"404":{"description":"ResourceNotFoundException 404 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceNotFoundExceptionResponseContent"}}}},"429":{"description":"ThrottlingException 429 response","headers":{"Retry-After":{"schema":{"type":"number"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThrottlingExceptionResponseContent"}}}},"500":{"description":"InternalServerException 500 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerExceptionResponseContent"}}}}},"security":[{"ownsite":[]}]}},"/v1/sites/{siteId}/activity":{"get":{"operationId":"ListSiteActivity","parameters":[{"name":"siteId","in":"path","description":"The site name. It is also part of its addresses (<siteId>.ownsite.me) and never changes.","schema":{"type":"string","maxLength":40,"minLength":1,"pattern":"^[a-z0-9](?:[a-z0-9-]{0,38}[a-z0-9])?$","description":"The site name. It is also part of its addresses (<siteId>.ownsite.me) and never changes."},"required":true},{"name":"maxResults","in":"query","schema":{"type":"number","maximum":100,"minimum":1}},{"name":"nextToken","in":"query","schema":{"type":"string","maxLength":2048,"minLength":1}}],"responses":{"200":{"description":"ListSiteActivity 200 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListSiteActivityResponseContent"}}}},"400":{"description":"ValidationException 400 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationExceptionResponseContent"}}}},"401":{"description":"UnauthorizedException 401 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedExceptionResponseContent"}}}},"403":{"description":"AccessDeniedException 403 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessDeniedExceptionResponseContent"}}}},"404":{"description":"ResourceNotFoundException 404 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceNotFoundExceptionResponseContent"}}}},"429":{"description":"ThrottlingException 429 response","headers":{"Retry-After":{"schema":{"type":"number"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThrottlingExceptionResponseContent"}}}},"500":{"description":"InternalServerException 500 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerExceptionResponseContent"}}}}},"security":[{"ownsite":["home:read"]}]}},"/v1/sites/{siteId}/home":{"get":{"description":"The home page of a site: which version is live, which one is being changed.","operationId":"GetHome","parameters":[{"name":"siteId","in":"path","description":"The site name. It is also part of its addresses (<siteId>.ownsite.me) and never changes.","schema":{"type":"string","maxLength":40,"minLength":1,"pattern":"^[a-z0-9](?:[a-z0-9-]{0,38}[a-z0-9])?$","description":"The site name. It is also part of its addresses (<siteId>.ownsite.me) and never changes."},"required":true}],"responses":{"200":{"description":"GetHome 200 response","headers":{"ETag":{"description":"Changes when the live version changes. Pass it as `If-Match` to PublishHomeVersion\nto publish only if nobody published something else meanwhile.","schema":{"type":"string","description":"Changes when the live version changes. Pass it as `If-Match` to PublishHomeVersion\nto publish only if nobody published something else meanwhile."},"required":true}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetHomeResponseContent"}}}},"400":{"description":"ValidationException 400 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationExceptionResponseContent"}}}},"401":{"description":"UnauthorizedException 401 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedExceptionResponseContent"}}}},"403":{"description":"AccessDeniedException 403 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessDeniedExceptionResponseContent"}}}},"404":{"description":"ResourceNotFoundException 404 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceNotFoundExceptionResponseContent"}}}},"429":{"description":"ThrottlingException 429 response","headers":{"Retry-After":{"schema":{"type":"number"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThrottlingExceptionResponseContent"}}}},"500":{"description":"InternalServerException 500 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerExceptionResponseContent"}}}}},"security":[{"ownsite":["home:read"]}]}},"/v1/sites/{siteId}/home/edit-jobs":{"post":{"operationId":"StartHomeEditJob","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartHomeEditJobRequestContent"}}},"required":true},"parameters":[{"name":"siteId","in":"path","description":"The site name. It is also part of its addresses (<siteId>.ownsite.me) and never changes.","schema":{"type":"string","maxLength":40,"minLength":1,"pattern":"^[a-z0-9](?:[a-z0-9-]{0,38}[a-z0-9])?$","description":"The site name. It is also part of its addresses (<siteId>.ownsite.me) and never changes."},"required":true}],"responses":{"202":{"description":"StartHomeEditJob 202 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartHomeEditJobResponseContent"}}}},"400":{"description":"ValidationException 400 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationExceptionResponseContent"}}}},"401":{"description":"UnauthorizedException 401 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedExceptionResponseContent"}}}},"402":{"description":"ServiceQuotaExceededException 402 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceQuotaExceededExceptionResponseContent"}}}},"403":{"description":"AccessDeniedException 403 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessDeniedExceptionResponseContent"}}}},"404":{"description":"ResourceNotFoundException 404 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceNotFoundExceptionResponseContent"}}}},"409":{"description":"ConflictException 409 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConflictExceptionResponseContent"}}}},"429":{"description":"ThrottlingException 429 response","headers":{"Retry-After":{"schema":{"type":"number"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThrottlingExceptionResponseContent"}}}},"500":{"description":"InternalServerException 500 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerExceptionResponseContent"}}}}},"security":[{"ownsite":["home:write"]}]}},"/v1/sites/{siteId}/home/edit-jobs/{jobId}":{"get":{"operationId":"GetHomeEditJob","parameters":[{"name":"siteId","in":"path","description":"The site name. It is also part of its addresses (<siteId>.ownsite.me) and never changes.","schema":{"type":"string","maxLength":40,"minLength":1,"pattern":"^[a-z0-9](?:[a-z0-9-]{0,38}[a-z0-9])?$","description":"The site name. It is also part of its addresses (<siteId>.ownsite.me) and never changes."},"required":true},{"name":"jobId","in":"path","schema":{"type":"string","pattern":"^[a-z0-9]{12}$"},"required":true}],"responses":{"200":{"description":"GetHomeEditJob 200 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetHomeEditJobResponseContent"}}}},"400":{"description":"ValidationException 400 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationExceptionResponseContent"}}}},"401":{"description":"UnauthorizedException 401 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedExceptionResponseContent"}}}},"403":{"description":"AccessDeniedException 403 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessDeniedExceptionResponseContent"}}}},"404":{"description":"ResourceNotFoundException 404 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceNotFoundExceptionResponseContent"}}}},"429":{"description":"ThrottlingException 429 response","headers":{"Retry-After":{"schema":{"type":"number"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThrottlingExceptionResponseContent"}}}},"500":{"description":"InternalServerException 500 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerExceptionResponseContent"}}}}},"security":[{"ownsite":["home:read"]}]}},"/v1/sites/{siteId}/home/edit-jobs/{jobId}/stop":{"post":{"description":"Asks a running job to stop. It stops at its next step; nothing it had not saved is kept.","operationId":"StopHomeEditJob","parameters":[{"name":"siteId","in":"path","description":"The site name. It is also part of its addresses (<siteId>.ownsite.me) and never changes.","schema":{"type":"string","maxLength":40,"minLength":1,"pattern":"^[a-z0-9](?:[a-z0-9-]{0,38}[a-z0-9])?$","description":"The site name. It is also part of its addresses (<siteId>.ownsite.me) and never changes."},"required":true},{"name":"jobId","in":"path","schema":{"type":"string","pattern":"^[a-z0-9]{12}$"},"required":true}],"responses":{"200":{"description":"StopHomeEditJob 200 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StopHomeEditJobResponseContent"}}}},"400":{"description":"ValidationException 400 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationExceptionResponseContent"}}}},"401":{"description":"UnauthorizedException 401 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedExceptionResponseContent"}}}},"403":{"description":"AccessDeniedException 403 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessDeniedExceptionResponseContent"}}}},"404":{"description":"ResourceNotFoundException 404 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceNotFoundExceptionResponseContent"}}}},"429":{"description":"ThrottlingException 429 response","headers":{"Retry-After":{"schema":{"type":"number"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThrottlingExceptionResponseContent"}}}},"500":{"description":"InternalServerException 500 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerExceptionResponseContent"}}}}},"security":[{"ownsite":["home:write"]}]}},"/v1/sites/{siteId}/home/unpublish":{"post":{"description":"Takes the home page off its public addresses. The addresses stay the site's; every\nversion stays and can be published again.","operationId":"UnpublishHome","parameters":[{"name":"siteId","in":"path","description":"The site name. It is also part of its addresses (<siteId>.ownsite.me) and never changes.","schema":{"type":"string","maxLength":40,"minLength":1,"pattern":"^[a-z0-9](?:[a-z0-9-]{0,38}[a-z0-9])?$","description":"The site name. It is also part of its addresses (<siteId>.ownsite.me) and never changes."},"required":true}],"responses":{"200":{"description":"UnpublishHome 200 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnpublishHomeResponseContent"}}}},"400":{"description":"ValidationException 400 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationExceptionResponseContent"}}}},"401":{"description":"UnauthorizedException 401 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedExceptionResponseContent"}}}},"403":{"description":"AccessDeniedException 403 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessDeniedExceptionResponseContent"}}}},"404":{"description":"ResourceNotFoundException 404 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceNotFoundExceptionResponseContent"}}}},"429":{"description":"ThrottlingException 429 response","headers":{"Retry-After":{"schema":{"type":"number"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThrottlingExceptionResponseContent"}}}},"500":{"description":"InternalServerException 500 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerExceptionResponseContent"}}}}},"security":[{"ownsite":["home:publish"]}]}},"/v1/sites/{siteId}/home/versions":{"get":{"description":"Newest first. Versions the person set aside and versions that did not build are left\nout unless asked for.","operationId":"ListHomeVersions","parameters":[{"name":"siteId","in":"path","description":"The site name. It is also part of its addresses (<siteId>.ownsite.me) and never changes.","schema":{"type":"string","maxLength":40,"minLength":1,"pattern":"^[a-z0-9](?:[a-z0-9-]{0,38}[a-z0-9])?$","description":"The site name. It is also part of its addresses (<siteId>.ownsite.me) and never changes."},"required":true},{"name":"includeHidden","in":"query","schema":{"type":"boolean"}},{"name":"includeFailed","in":"query","schema":{"type":"boolean"}},{"name":"maxResults","in":"query","schema":{"type":"number","maximum":100,"minimum":1}},{"name":"nextToken","in":"query","schema":{"type":"string","maxLength":2048,"minLength":1}}],"responses":{"200":{"description":"ListHomeVersions 200 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListHomeVersionsResponseContent"}}}},"400":{"description":"ValidationException 400 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationExceptionResponseContent"}}}},"401":{"description":"UnauthorizedException 401 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedExceptionResponseContent"}}}},"403":{"description":"AccessDeniedException 403 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessDeniedExceptionResponseContent"}}}},"404":{"description":"ResourceNotFoundException 404 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceNotFoundExceptionResponseContent"}}}},"429":{"description":"ThrottlingException 429 response","headers":{"Retry-After":{"schema":{"type":"number"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThrottlingExceptionResponseContent"}}}},"500":{"description":"InternalServerException 500 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerExceptionResponseContent"}}}}},"security":[{"ownsite":["home:read"]}]},"post":{"description":"Makes a new version from `baseVersionId` (default: the working version) and `changes`.\n\nThe changes are checked at once: a path that is not a file of the site, a search text\nthat is not found or not unique, code loaded from another website, or a file the page\npoints to that does not exist is a `ValidationException` and nothing is made. Then the\nversion is built and photographed in the background: it is returned as BUILDING; read\nit with GetHomeVersion until READY or FAILED. Nothing is published.","operationId":"CreateHomeVersion","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateHomeVersionRequestContent"}}},"required":true},"parameters":[{"name":"siteId","in":"path","description":"The site name. It is also part of its addresses (<siteId>.ownsite.me) and never changes.","schema":{"type":"string","maxLength":40,"minLength":1,"pattern":"^[a-z0-9](?:[a-z0-9-]{0,38}[a-z0-9])?$","description":"The site name. It is also part of its addresses (<siteId>.ownsite.me) and never changes."},"required":true}],"responses":{"202":{"description":"CreateHomeVersion 202 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateHomeVersionResponseContent"}}}},"400":{"description":"ValidationException 400 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationExceptionResponseContent"}}}},"401":{"description":"UnauthorizedException 401 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedExceptionResponseContent"}}}},"403":{"description":"AccessDeniedException 403 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessDeniedExceptionResponseContent"}}}},"404":{"description":"ResourceNotFoundException 404 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceNotFoundExceptionResponseContent"}}}},"409":{"description":"ConflictException 409 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConflictExceptionResponseContent"}}}},"429":{"description":"ThrottlingException 429 response","headers":{"Retry-After":{"schema":{"type":"number"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThrottlingExceptionResponseContent"}}}},"500":{"description":"InternalServerException 500 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerExceptionResponseContent"}}}}},"security":[{"ownsite":["home:write"]}]}},"/v1/sites/{siteId}/home/versions/{versionId}":{"get":{"operationId":"GetHomeVersion","parameters":[{"name":"siteId","in":"path","description":"The site name. It is also part of its addresses (<siteId>.ownsite.me) and never changes.","schema":{"type":"string","maxLength":40,"minLength":1,"pattern":"^[a-z0-9](?:[a-z0-9-]{0,38}[a-z0-9])?$","description":"The site name. It is also part of its addresses (<siteId>.ownsite.me) and never changes."},"required":true},{"name":"versionId","in":"path","description":"Lowercase letters and digits, random, so a preview address cannot be guessed.","schema":{"type":"string","pattern":"^[a-z0-9]{8}$","description":"Lowercase letters and digits, random, so a preview address cannot be guessed."},"required":true}],"responses":{"200":{"description":"GetHomeVersion 200 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetHomeVersionResponseContent"}}}},"400":{"description":"ValidationException 400 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationExceptionResponseContent"}}}},"401":{"description":"UnauthorizedException 401 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedExceptionResponseContent"}}}},"403":{"description":"AccessDeniedException 403 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessDeniedExceptionResponseContent"}}}},"404":{"description":"ResourceNotFoundException 404 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceNotFoundExceptionResponseContent"}}}},"429":{"description":"ThrottlingException 429 response","headers":{"Retry-After":{"schema":{"type":"number"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThrottlingExceptionResponseContent"}}}},"500":{"description":"InternalServerException 500 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerExceptionResponseContent"}}}}},"security":[{"ownsite":["home:read"]}]},"patch":{"description":"Sets a version aside (不要了) or restores it, and changes its note. The live version\ncannot be set aside.","operationId":"UpdateHomeVersion","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateHomeVersionRequestContent"}}}},"parameters":[{"name":"siteId","in":"path","description":"The site name. It is also part of its addresses (<siteId>.ownsite.me) and never changes.","schema":{"type":"string","maxLength":40,"minLength":1,"pattern":"^[a-z0-9](?:[a-z0-9-]{0,38}[a-z0-9])?$","description":"The site name. It is also part of its addresses (<siteId>.ownsite.me) and never changes."},"required":true},{"name":"versionId","in":"path","description":"Lowercase letters and digits, random, so a preview address cannot be guessed.","schema":{"type":"string","pattern":"^[a-z0-9]{8}$","description":"Lowercase letters and digits, random, so a preview address cannot be guessed."},"required":true}],"responses":{"200":{"description":"UpdateHomeVersion 200 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateHomeVersionResponseContent"}}}},"400":{"description":"ValidationException 400 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationExceptionResponseContent"}}}},"401":{"description":"UnauthorizedException 401 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedExceptionResponseContent"}}}},"403":{"description":"AccessDeniedException 403 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessDeniedExceptionResponseContent"}}}},"404":{"description":"ResourceNotFoundException 404 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceNotFoundExceptionResponseContent"}}}},"409":{"description":"ConflictException 409 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConflictExceptionResponseContent"}}}},"429":{"description":"ThrottlingException 429 response","headers":{"Retry-After":{"schema":{"type":"number"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThrottlingExceptionResponseContent"}}}},"500":{"description":"InternalServerException 500 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerExceptionResponseContent"}}}}},"security":[{"ownsite":["home:write"]}]}},"/v1/sites/{siteId}/home/versions/{versionId}/files":{"get":{"description":"The files of a version's source, without their content.","operationId":"ListHomeVersionFiles","parameters":[{"name":"siteId","in":"path","description":"The site name. It is also part of its addresses (<siteId>.ownsite.me) and never changes.","schema":{"type":"string","maxLength":40,"minLength":1,"pattern":"^[a-z0-9](?:[a-z0-9-]{0,38}[a-z0-9])?$","description":"The site name. It is also part of its addresses (<siteId>.ownsite.me) and never changes."},"required":true},{"name":"versionId","in":"path","description":"Lowercase letters and digits, random, so a preview address cannot be guessed.","schema":{"type":"string","pattern":"^[a-z0-9]{8}$","description":"Lowercase letters and digits, random, so a preview address cannot be guessed."},"required":true},{"name":"maxResults","in":"query","schema":{"type":"number","maximum":100,"minimum":1}},{"name":"nextToken","in":"query","schema":{"type":"string","maxLength":2048,"minLength":1}}],"responses":{"200":{"description":"ListHomeVersionFiles 200 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListHomeVersionFilesResponseContent"}}}},"400":{"description":"ValidationException 400 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationExceptionResponseContent"}}}},"401":{"description":"UnauthorizedException 401 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedExceptionResponseContent"}}}},"403":{"description":"AccessDeniedException 403 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessDeniedExceptionResponseContent"}}}},"404":{"description":"ResourceNotFoundException 404 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceNotFoundExceptionResponseContent"}}}},"409":{"description":"ConflictException 409 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConflictExceptionResponseContent"}}}},"429":{"description":"ThrottlingException 429 response","headers":{"Retry-After":{"schema":{"type":"number"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThrottlingExceptionResponseContent"}}}},"500":{"description":"InternalServerException 500 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerExceptionResponseContent"}}}}},"security":[{"ownsite":["home:read"]}]}},"/v1/sites/{siteId}/home/versions/{versionId}/files/{path+}":{"get":{"description":"One source file's text.","operationId":"GetHomeVersionFile","parameters":[{"name":"siteId","in":"path","description":"The site name. It is also part of its addresses (<siteId>.ownsite.me) and never changes.","schema":{"type":"string","maxLength":40,"minLength":1,"pattern":"^[a-z0-9](?:[a-z0-9-]{0,38}[a-z0-9])?$","description":"The site name. It is also part of its addresses (<siteId>.ownsite.me) and never changes."},"required":true},{"name":"versionId","in":"path","description":"Lowercase letters and digits, random, so a preview address cannot be guessed.","schema":{"type":"string","pattern":"^[a-z0-9]{8}$","description":"Lowercase letters and digits, random, so a preview address cannot be guessed."},"required":true},{"name":"path+","in":"path","schema":{"type":"string","maxLength":200,"minLength":1,"pattern":"^(index\\.html|src/[A-Za-z0-9._\\-/]+)$"},"required":true}],"responses":{"200":{"description":"GetHomeVersionFile 200 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetHomeVersionFileResponseContent"}}}},"400":{"description":"ValidationException 400 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationExceptionResponseContent"}}}},"401":{"description":"UnauthorizedException 401 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedExceptionResponseContent"}}}},"403":{"description":"AccessDeniedException 403 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessDeniedExceptionResponseContent"}}}},"404":{"description":"ResourceNotFoundException 404 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceNotFoundExceptionResponseContent"}}}},"409":{"description":"ConflictException 409 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConflictExceptionResponseContent"}}}},"429":{"description":"ThrottlingException 429 response","headers":{"Retry-After":{"schema":{"type":"number"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThrottlingExceptionResponseContent"}}}},"500":{"description":"InternalServerException 500 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerExceptionResponseContent"}}}}},"security":[{"ownsite":["home:read"]}]}},"/v1/sites/{siteId}/home/versions/{versionId}/publish":{"post":{"description":"Puts a READY version on the home page's public addresses, worldwide within seconds.\nRolling back is publishing an older version.","operationId":"PublishHomeVersion","parameters":[{"name":"siteId","in":"path","description":"The site name. It is also part of its addresses (<siteId>.ownsite.me) and never changes.","schema":{"type":"string","maxLength":40,"minLength":1,"pattern":"^[a-z0-9](?:[a-z0-9-]{0,38}[a-z0-9])?$","description":"The site name. It is also part of its addresses (<siteId>.ownsite.me) and never changes."},"required":true},{"name":"versionId","in":"path","description":"Lowercase letters and digits, random, so a preview address cannot be guessed.","schema":{"type":"string","pattern":"^[a-z0-9]{8}$","description":"Lowercase letters and digits, random, so a preview address cannot be guessed."},"required":true},{"name":"If-Match","in":"header","description":"The ETag from GetHome: publish only if the live version is still that one.","schema":{"type":"string","description":"The ETag from GetHome: publish only if the live version is still that one."}}],"responses":{"200":{"description":"PublishHomeVersion 200 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishHomeVersionResponseContent"}}}},"400":{"description":"ValidationException 400 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationExceptionResponseContent"}}}},"401":{"description":"UnauthorizedException 401 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedExceptionResponseContent"}}}},"403":{"description":"AccessDeniedException 403 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessDeniedExceptionResponseContent"}}}},"404":{"description":"ResourceNotFoundException 404 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceNotFoundExceptionResponseContent"}}}},"409":{"description":"ConflictException 409 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConflictExceptionResponseContent"}}}},"412":{"description":"PreconditionFailedException 412 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreconditionFailedExceptionResponseContent"}}}},"429":{"description":"ThrottlingException 429 response","headers":{"Retry-After":{"schema":{"type":"number"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThrottlingExceptionResponseContent"}}}},"500":{"description":"InternalServerException 500 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerExceptionResponseContent"}}}}},"security":[{"ownsite":["home:publish"]}]}},"/v1/sites/{siteId}/uploads":{"post":{"description":"Returns an address to PUT the photo's bytes to (for example\n`curl -T photo.jpg -H 'Content-Type: image/jpeg' <uploadUrl>`), within 15 minutes.","operationId":"CreateUpload","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateUploadRequestContent"}}},"required":true},"parameters":[{"name":"siteId","in":"path","description":"The site name. It is also part of its addresses (<siteId>.ownsite.me) and never changes.","schema":{"type":"string","maxLength":40,"minLength":1,"pattern":"^[a-z0-9](?:[a-z0-9-]{0,38}[a-z0-9])?$","description":"The site name. It is also part of its addresses (<siteId>.ownsite.me) and never changes."},"required":true}],"responses":{"201":{"description":"CreateUpload 201 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateUploadResponseContent"}}}},"400":{"description":"ValidationException 400 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationExceptionResponseContent"}}}},"401":{"description":"UnauthorizedException 401 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedExceptionResponseContent"}}}},"403":{"description":"AccessDeniedException 403 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessDeniedExceptionResponseContent"}}}},"404":{"description":"ResourceNotFoundException 404 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceNotFoundExceptionResponseContent"}}}},"429":{"description":"ThrottlingException 429 response","headers":{"Retry-After":{"schema":{"type":"number"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThrottlingExceptionResponseContent"}}}},"500":{"description":"InternalServerException 500 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerExceptionResponseContent"}}}}},"security":[{"ownsite":["home:write"]}]}}},"components":{"schemas":{"AccessDeniedExceptionResponseContent":{"type":"object","description":"The token does not have a scope the operation needs. `WWW-Authenticate` lists them.","properties":{"message":{"type":"string"},"requiredScopes":{"type":"array","items":{"$ref":"#/components/schemas/Scope"}}},"required":["message"]},"ActivityAction":{"type":"string","enum":["VERSION_CREATED","VERSION_HIDDEN","VERSION_RESTORED","HOME_PUBLISHED","HOME_UNPUBLISHED","EDIT_JOB_STARTED","EDIT_JOB_STOPPED"]},"ActivityEvent":{"type":"object","description":"One change made to the site: who, when, what.","properties":{"at":{"type":"string","format":"date-time"},"actor":{"$ref":"#/components/schemas/Actor"},"action":{"$ref":"#/components/schemas/ActivityAction"},"versionId":{"type":"string","pattern":"^[a-z0-9]{8}$","description":"Lowercase letters and digits, random, so a preview address cannot be guessed."},"versionNumber":{"type":"number","description":"The version's number, when the action is about a version."},"requestId":{"type":"string"}},"required":["action","actor","at","requestId"]},"Actor":{"type":"object","description":"Who did something.","properties":{"type":{"$ref":"#/components/schemas/ActorType"},"name":{"type":"string","description":"The person's sign-in name, \"Ownsite AI\", or the name of the app (for example\n\"Claude Code\") as the person saw it when they connected it."}},"required":["name","type"]},"ActorType":{"type":"string","enum":["PERSON","OWNSITE_AI","APP"]},"AiUsage":{"type":"object","description":"Ownsite's AI this month. Its cost counts against a monthly budget.","properties":{"month":{"type":"string","description":"YYYY-MM"},"spentUsd":{"type":"number","format":"double"},"limitUsd":{"type":"number","format":"double"}},"required":["limitUsd","month","spentUsd"]},"BuildFailure":{"type":"object","properties":{"message":{"type":"string"},"log":{"type":"string","description":"The build output, shortened."}},"required":["message"]},"Change":{"description":"One change to the source. Paths are `index.html` or under `src/`.","oneOf":[{"type":"object","title":"edit","properties":{"edit":{"$ref":"#/components/schemas/EditChange"}},"required":["edit"]},{"type":"object","title":"write","properties":{"write":{"$ref":"#/components/schemas/WriteChange"}},"required":["write"]},{"type":"object","title":"delete","properties":{"delete":{"$ref":"#/components/schemas/DeleteChange"}},"required":["delete"]}]},"ConflictExceptionReason":{"type":"string","enum":["EDIT_IN_PROGRESS","VERSION_NOT_READY","VERSION_NOT_EDITABLE","VERSION_IS_LIVE","NO_ADDRESS","NO_VERSION","IDEMPOTENCY_MISMATCH","IDEMPOTENT_REQUEST_IN_PROGRESS"]},"ConflictExceptionResponseContent":{"type":"object","description":"The request conflicts with the current state. `reason` says how.","properties":{"message":{"type":"string"},"reason":{"$ref":"#/components/schemas/ConflictExceptionReason"}},"required":["message","reason"]},"CreateHomeVersionRequestContent":{"type":"object","properties":{"baseVersionId":{"type":"string","pattern":"^[a-z0-9]{8}$","description":"Lowercase letters and digits, random, so a preview address cannot be guessed."},"changes":{"type":"array","items":{"$ref":"#/components/schemas/Change"},"maxItems":50,"minItems":1},"uploads":{"type":"array","items":{"type":"string","pattern":"^[a-z0-9]{12}$"},"maxItems":10,"description":"Photos to add, from CreateUpload. Each is at `/images/<uploadId>.<ext>` in the\nnew version, so the changes can already point to it."},"note":{"type":"string","maxLength":300},"clientToken":{"type":"string","maxLength":64,"minLength":1,"pattern":"^[A-Za-z0-9_-]+$","description":"A unique string from the caller (a UUID works), so a retry does not do the work twice."}},"required":["changes"]},"CreateHomeVersionResponseContent":{"type":"object","properties":{"version":{"$ref":"#/components/schemas/HomeVersionDescription"}},"required":["version"]},"CreateUploadRequestContent":{"type":"object","properties":{"contentType":{"$ref":"#/components/schemas/ImageType"},"size":{"type":"number","maximum":10485760,"minimum":1,"description":"Bytes."}},"required":["contentType","size"]},"CreateUploadResponseContent":{"type":"object","properties":{"uploadId":{"type":"string","pattern":"^[a-z0-9]{12}$"},"path":{"type":"string","description":"Where the photo will be in a version: /images/<uploadId>.<ext>."},"uploadUrl":{"type":"string","description":"An https address."},"uploadHeaders":{"$ref":"#/components/schemas/HeaderMap"},"expiresAt":{"type":"string","format":"date-time"}},"required":["expiresAt","path","uploadHeaders","uploadId","uploadUrl"]},"DeleteChange":{"type":"object","properties":{"path":{"type":"string","maxLength":200,"minLength":1,"pattern":"^(index\\.html|src/[A-Za-z0-9._\\-/]+)$"}},"required":["path"]},"EditChange":{"type":"object","properties":{"path":{"type":"string","maxLength":200,"minLength":1,"pattern":"^(index\\.html|src/[A-Za-z0-9._\\-/]+)$"},"oldText":{"type":"string","maxLength":200000,"minLength":1},"newText":{"type":"string","maxLength":200000}},"required":["newText","oldText","path"]},"FileKind":{"type":"string","enum":["SOURCE","PUBLIC"]},"FileSummary":{"type":"object","properties":{"path":{"type":"string"},"kind":{"$ref":"#/components/schemas/FileKind"},"size":{"type":"number","description":"Bytes, for SOURCE files."}},"required":["kind","path"]},"GetHomeEditJobResponseContent":{"type":"object","properties":{"job":{"$ref":"#/components/schemas/HomeEditJobDescription"}},"required":["job"]},"GetHomeResponseContent":{"type":"object","properties":{"siteId":{"type":"string","maxLength":40,"minLength":1,"pattern":"^[a-z0-9](?:[a-z0-9-]{0,38}[a-z0-9])?$","description":"The site name. It is also part of its addresses (<siteId>.ownsite.me) and never changes."},"addresses":{"type":"array","items":{"type":"string","description":"An https address."},"description":"The home page's public addresses. Empty while it has none."},"isPublic":{"type":"boolean"},"liveVersionId":{"type":"string","pattern":"^[a-z0-9]{8}$","description":"The version on the public addresses."},"liveSince":{"type":"string","format":"date-time"},"workingVersionId":{"type":"string","pattern":"^[a-z0-9]{8}$","description":"The version the next change starts from by default: the newest draft the person\nis working on, else the live one."},"activeEditJobId":{"type":"string","pattern":"^[a-z0-9]{12}$","description":"The edit job of Ownsite's AI that is running now, if any. Only one runs at a time."},"aiUsage":{"$ref":"#/components/schemas/AiUsage"}},"required":["addresses","aiUsage","isPublic","siteId"]},"GetHomeVersionFileResponseContent":{"type":"object","properties":{"path":{"type":"string","maxLength":200,"minLength":1,"pattern":"^(index\\.html|src/[A-Za-z0-9._\\-/]+)$"},"content":{"type":"string"}},"required":["content","path"]},"GetHomeVersionResponseContent":{"type":"object","properties":{"version":{"$ref":"#/components/schemas/HomeVersionDescription"}},"required":["version"]},"GetSiteResponseContent":{"type":"object","properties":{"siteId":{"type":"string","maxLength":40,"minLength":1,"pattern":"^[a-z0-9](?:[a-z0-9-]{0,38}[a-z0-9])?$","description":"The site name. It is also part of its addresses (<siteId>.ownsite.me) and never changes."},"title":{"type":"string"},"scopes":{"type":"array","items":{"$ref":"#/components/schemas/Scope"},"description":"The scopes this token has on the site."},"home":{"$ref":"#/components/schemas/HomeSummary"}},"required":["home","scopes","siteId","title"]},"HeaderMap":{"type":"object","additionalProperties":{"type":"string"},"propertyNames":{"type":"string"}},"HomeEditJobDescription":{"type":"object","properties":{"jobId":{"type":"string","pattern":"^[a-z0-9]{12}$"},"status":{"$ref":"#/components/schemas/HomeEditJobStatus"},"instruction":{"type":"string"},"baseVersionId":{"type":"string","pattern":"^[a-z0-9]{8}$","description":"Lowercase letters and digits, random, so a preview address cannot be guessed."},"reply":{"type":"string","description":"The AI's answer, once it is finished."},"versionId":{"type":"string","pattern":"^[a-z0-9]{8}$","description":"The version it made, when it changed something."},"steps":{"type":"array","items":{"type":"string"},"description":"What it is doing, in order."},"costUsd":{"type":"number","format":"double"},"createdBy":{"$ref":"#/components/schemas/Actor"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["costUsd","createdAt","createdBy","instruction","jobId","status","steps","updatedAt"]},"HomeEditJobStatus":{"type":"string","enum":["QUEUED","RUNNING","STOPPING","SUCCEEDED","ANSWERED","FAILED","STOPPED","QUOTA_EXCEEDED"]},"HomeSummary":{"type":"object","properties":{"isPublic":{"type":"boolean","description":"True when the home page is on its public address."},"liveVersionId":{"type":"string","pattern":"^[a-z0-9]{8}$","description":"Lowercase letters and digits, random, so a preview address cannot be guessed."}},"required":["isPublic"]},"HomeVersionDescription":{"type":"object","properties":{"siteId":{"type":"string","maxLength":40,"minLength":1,"pattern":"^[a-z0-9](?:[a-z0-9-]{0,38}[a-z0-9])?$","description":"The site name. It is also part of its addresses (<siteId>.ownsite.me) and never changes."},"versionId":{"type":"string","pattern":"^[a-z0-9]{8}$","description":"Lowercase letters and digits, random, so a preview address cannot be guessed."},"status":{"$ref":"#/components/schemas/HomeVersionStatus"},"number":{"type":"number","description":"1, 2, 3... in the order versions became READY. Absent until then."},"baseVersionId":{"type":"string","pattern":"^[a-z0-9]{8}$","description":"The version it was made from."},"note":{"type":"string","description":"What changed, in a few words."},"createdBy":{"$ref":"#/components/schemas/Actor"},"createdAt":{"type":"string","format":"date-time"},"isLive":{"type":"boolean","description":"True when this version is on the public addresses."},"hidden":{"type":"boolean","description":"True when the person set it aside (不要了). It is kept and can be restored."},"editable":{"type":"boolean","description":"False for the first uploads, which kept only the built page: such a version can be\npreviewed and published, but not changed."},"previewUrl":{"type":"string","description":"Its own address. Unlisted (not indexed by search engines), but anyone with the link\ncan open it."},"screenshots":{"$ref":"#/components/schemas/Screenshots"},"failure":{"$ref":"#/components/schemas/BuildFailure"}},"required":["createdAt","createdBy","editable","hidden","isLive","siteId","status","versionId"]},"HomeVersionStatus":{"type":"string","enum":["BUILDING","READY","FAILED"]},"ImageType":{"type":"string","enum":["image/jpeg","image/png","image/webp","image/gif"]},"InternalServerExceptionResponseContent":{"type":"object","description":"Something failed on Ownsite's side. Safe to retry.","properties":{"message":{"type":"string"}},"required":["message"]},"ListHomeVersionFilesResponseContent":{"type":"object","properties":{"files":{"type":"array","items":{"$ref":"#/components/schemas/FileSummary"},"description":"The source files (index.html, src/...), then the files the site serves as they\nare (photos, icons): `kind` tells them apart."},"nextToken":{"type":"string","maxLength":2048,"minLength":1}},"required":["files"]},"ListHomeVersionsResponseContent":{"type":"object","properties":{"versions":{"type":"array","items":{"$ref":"#/components/schemas/HomeVersionDescription"}},"nextToken":{"type":"string","maxLength":2048,"minLength":1}},"required":["versions"]},"ListSiteActivityResponseContent":{"type":"object","properties":{"events":{"type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"},"description":"Newest first."},"nextToken":{"type":"string","maxLength":2048,"minLength":1}},"required":["events"]},"ListSitesResponseContent":{"type":"object","properties":{"sites":{"type":"array","items":{"$ref":"#/components/schemas/SiteSummary"},"description":"The sites this token may use (one for a token from auth.ownsite.me)."},"nextToken":{"type":"string","maxLength":2048,"minLength":1}},"required":["sites"]},"PreconditionFailedExceptionResponseContent":{"type":"object","description":"`If-Match` does not match: someone published another version meanwhile.","properties":{"message":{"type":"string"}},"required":["message"]},"PublishHomeVersionResponseContent":{"type":"object","properties":{"liveVersionId":{"type":"string","pattern":"^[a-z0-9]{8}$","description":"Lowercase letters and digits, random, so a preview address cannot be guessed."},"addresses":{"type":"array","items":{"type":"string","description":"An https address."}},"liveSince":{"type":"string","format":"date-time"}},"required":["addresses","liveSince","liveVersionId"]},"ResourceNotFoundExceptionResponseContent":{"type":"object","description":"It does not exist, or this token cannot see it.","properties":{"message":{"type":"string"},"resourceType":{"type":"string"},"resourceId":{"type":"string"}},"required":["message"]},"Scope":{"type":"string","enum":["home:read","home:write","home:publish"]},"Screenshots":{"type":"object","properties":{"desktop":{"type":"string","description":"1280 pixels wide, the first screen."},"mobile":{"type":"string","description":"390 pixels wide, the first screen."}},"required":["desktop","mobile"]},"ServiceQuotaExceededExceptionResponseContent":{"type":"object","description":"The month's budget for Ownsite's AI is used up.","properties":{"message":{"type":"string"}},"required":["message"]},"SiteSummary":{"type":"object","properties":{"siteId":{"type":"string","maxLength":40,"minLength":1,"pattern":"^[a-z0-9](?:[a-z0-9-]{0,38}[a-z0-9])?$","description":"The site name. It is also part of its addresses (<siteId>.ownsite.me) and never changes."},"title":{"type":"string"}},"required":["siteId","title"]},"StartHomeEditJobRequestContent":{"type":"object","properties":{"instruction":{"type":"string","maxLength":2000,"minLength":1,"description":"What to change, as the person would say it."},"uploads":{"type":"array","items":{"type":"string","pattern":"^[a-z0-9]{12}$"},"maxItems":4,"description":"Photos from CreateUpload to use."},"baseVersionId":{"type":"string","pattern":"^[a-z0-9]{8}$","description":"Default: the working version."},"clientToken":{"type":"string","maxLength":64,"minLength":1,"pattern":"^[A-Za-z0-9_-]+$","description":"A unique string from the caller (a UUID works), so a retry does not do the work twice."}},"required":["instruction"]},"StartHomeEditJobResponseContent":{"type":"object","properties":{"job":{"$ref":"#/components/schemas/HomeEditJobDescription"}},"required":["job"]},"StopHomeEditJobResponseContent":{"type":"object","properties":{"job":{"$ref":"#/components/schemas/HomeEditJobDescription"}},"required":["job"]},"ThrottlingExceptionResponseContent":{"type":"object","description":"Too many requests. Wait `Retry-After` seconds.","properties":{"message":{"type":"string"}},"required":["message"]},"UnauthorizedExceptionResponseContent":{"type":"object","description":"No token, or the token is not valid, has expired or was revoked. The response has a\n`WWW-Authenticate` header that says where to get a token.","properties":{"message":{"type":"string"}},"required":["message"]},"UnpublishHomeResponseContent":{"type":"object","properties":{"isPublic":{"type":"boolean"}},"required":["isPublic"]},"UpdateHomeVersionRequestContent":{"type":"object","properties":{"hidden":{"type":"boolean"},"note":{"type":"string","maxLength":300}}},"UpdateHomeVersionResponseContent":{"type":"object","properties":{"version":{"$ref":"#/components/schemas/HomeVersionDescription"}},"required":["version"]},"ValidationExceptionField":{"type":"object","properties":{"path":{"type":"string","description":"A JSON pointer into the input, for example `/changes/2/edit/oldText`."},"message":{"type":"string"}},"required":["message","path"]},"ValidationExceptionReason":{"type":"string","enum":["FIELD_VALIDATION_FAILED","CHANGE_NOT_APPLICABLE","MISSING_FILE","EXTERNAL_CODE","NO_CHANGE","UPLOAD_NOT_FOUND","OTHER"]},"ValidationExceptionResponseContent":{"type":"object","description":"The input is not valid. `fieldList` says which parts and why.","properties":{"message":{"type":"string"},"reason":{"$ref":"#/components/schemas/ValidationExceptionReason"},"fieldList":{"type":"array","items":{"$ref":"#/components/schemas/ValidationExceptionField"}}},"required":["message","reason"]},"WriteChange":{"type":"object","properties":{"path":{"type":"string","maxLength":200,"minLength":1,"pattern":"^(index\\.html|src/[A-Za-z0-9._\\-/]+)$"},"content":{"type":"string","maxLength":200000}},"required":["content","path"]}},"securitySchemes":{"ownsite":{"type":"oauth2","description":"OAuth 2.1 authorization code with PKCE. Discovery: https://auth.ownsite.me/.well-known/oauth-authorization-server.","flows":{"authorizationCode":{"authorizationUrl":"https://auth.ownsite.me/oauth/authorize","tokenUrl":"https://auth.ownsite.me/oauth/token","refreshUrl":"https://auth.ownsite.me/oauth/token","scopes":{"home:publish":"Publish a version or take the home page offline","home:read":"See the home page, its versions and their source","home:write":"Make new versions (drafts) and use Ownsite AI"}}}}}},"security":[{"ownsite":[]}],"servers":[{"url":"https://api.ownsite.me"}]}