{"openapi":"3.1.0","info":{"title":"Neotask Construct API","version":"construct-api/1","description":"The Construct registry API. Every non-2xx response carries the Construct error envelope; clients branch on `code` only. Routes marked x-construct-legacy-alias are also served unchanged at /api/registry/v1."},"servers":[{"url":"/api/construct/v1"}],"paths":{"/public/packages":{"get":{"operationId":"listPublicConstructPackages","summary":"List catalog packages (public)","security":[],"parameters":[{"name":"q","in":"query","schema":{"type":"string","maxLength":128}},{"name":"family","in":"query","schema":{"type":"string"}},{"name":"category","in":"query","schema":{"type":"string"}},{"name":"official","in":"query","schema":{"type":"string","enum":["true","false"]}},{"name":"sort","in":"query","schema":{"type":"string","enum":["relevance","name","updated","installs","downloads","stars"]}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"A page of packages","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicPackageListResponse"}}}},"304":{"description":"Not modified"},"400":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"429":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}}},"x-construct-auth-class":"public","x-construct-rate-class":"public_read","x-construct-rate-limit-per-window":300,"x-construct-legacy-alias":false}},"/public/packages/{ref}":{"get":{"operationId":"getPublicConstructPackage","summary":"Package detail (public)","security":[],"parameters":[{"name":"ref","in":"path","required":true,"description":"Package ref as one URI-encoded segment (`slack`, `%40acme%2Fpayroll-sync`).","schema":{"type":"string"}}],"responses":{"200":{"description":"Package detail","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PackageDetailResponse"}}}},"400":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"404":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"429":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}}},"x-construct-auth-class":"public","x-construct-rate-class":"public_read","x-construct-rate-limit-per-window":300,"x-construct-legacy-alias":false}},"/public/packages/{ref}/versions":{"get":{"operationId":"listPublicConstructPackageVersions","summary":"Releases, newest first (public)","security":[],"parameters":[{"name":"ref","in":"path","required":true,"description":"Package ref as one URI-encoded segment (`slack`, `%40acme%2Fpayroll-sync`).","schema":{"type":"string"}},{"name":"channel","in":"query","schema":{"type":"string","enum":["stable","beta"]}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"A page of releases","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReleaseListResponse"}}}},"400":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"404":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"429":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}}},"x-construct-auth-class":"public","x-construct-rate-class":"public_read","x-construct-rate-limit-per-window":300,"x-construct-legacy-alias":false}},"/public/packages/{ref}/versions/{version}":{"get":{"operationId":"getPublicConstructRelease","summary":"Release detail (public)","security":[],"parameters":[{"name":"ref","in":"path","required":true,"description":"Package ref as one URI-encoded segment (`slack`, `%40acme%2Fpayroll-sync`).","schema":{"type":"string"}},{"name":"version","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Release detail","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReleaseDetailResponse"}}}},"400":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"404":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"429":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}}},"x-construct-auth-class":"public","x-construct-rate-class":"public_read","x-construct-rate-limit-per-window":300,"x-construct-legacy-alias":false}},"/public/packages/{ref}/release-readiness":{"get":{"operationId":"getPublicConstructReleaseReadiness","summary":"Release readiness (public)","security":[],"parameters":[{"name":"ref","in":"path","required":true,"description":"Package ref as one URI-encoded segment (`slack`, `%40acme%2Fpayroll-sync`).","schema":{"type":"string"}},{"name":"version","in":"query","schema":{"type":"string"}},{"name":"channel","in":"query","schema":{"type":"string","enum":["stable","beta"]}}],"responses":{"200":{"description":"Readiness report","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReleaseReadinessReport"}}}},"400":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"404":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"429":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}}},"x-construct-auth-class":"public","x-construct-rate-class":"public_read","x-construct-rate-limit-per-window":300,"x-construct-legacy-alias":false}},"/public/categories":{"get":{"operationId":"listPublicConstructCategories","summary":"Catalog categories (public)","security":[],"responses":{"200":{"description":"Categories","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoryListResponse"}}}},"429":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}}},"x-construct-auth-class":"public","x-construct-rate-class":"public_read","x-construct-rate-limit-per-window":300,"x-construct-legacy-alias":false}},"/public/catalog-snapshot":{"get":{"operationId":"getConstructCatalogSnapshot","summary":"The signed catalog snapshot (public)","security":[],"parameters":[{"name":"family","in":"query","schema":{"type":"string","enum":["code-plugin","bundle-plugin","skill"]}}],"responses":{"200":{"description":"Signed snapshot; ETag is \"\u003csequence\u003e-\u003centriesSha256\u003e\"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignedCatalogSnapshot"}}}},"304":{"description":"Not modified"},"400":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"429":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"503":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}}},"x-construct-auth-class":"public","x-construct-rate-class":"snapshot","x-construct-rate-limit-per-window":60,"x-construct-legacy-alias":false}},"/openapi.json":{"get":{"operationId":"getConstructOpenApi","summary":"This OpenAPI document","security":[],"responses":{"200":{"description":"OpenAPI 3.1 document"},"429":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}}},"x-construct-auth-class":"public","x-construct-rate-class":"snapshot","x-construct-rate-limit-per-window":60,"x-construct-legacy-alias":false}},"/entitlements":{"get":{"operationId":"getConstructEntitlements","summary":"The effective grant set (complete replacement)","security":[{"siteAccess":[]}],"responses":{"200":{"description":"Effective grants","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntitlementsResponse"}}}},"401":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"403":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"429":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"503":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}}},"x-construct-auth-class":"tenant","x-construct-rate-class":"entitlements","x-construct-rate-limit-per-window":30,"x-construct-legacy-alias":true}},"/entitlements/manifest":{"get":{"operationId":"getConstructGrantManifest","summary":"The signed, installation-bound grant manifest","security":[{"siteAccess":[]}],"parameters":[{"name":"installationId","in":"query","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{22}$"}}],"responses":{"200":{"description":"Signed grant manifest (valid 6 hours)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignedGrantManifestEnvelope"}}}},"400":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"401":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"429":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"503":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}}},"x-construct-auth-class":"tenant","x-construct-rate-class":"entitlements","x-construct-rate-limit-per-window":30,"x-construct-legacy-alias":false}},"/packages/{ref}/content-match":{"post":{"operationId":"matchConstructContent","summary":"Match an installed content digest to a visible release","security":[{"siteAccess":[]}],"parameters":[{"name":"ref","in":"path","required":true,"description":"Package ref as one URI-encoded segment (`slack`, `%40acme%2Fpayroll-sync`).","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"contentSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"fileCount":{"type":"integer","minimum":1}},"required":["contentSha256","fileCount"],"additionalProperties":false}}}},"responses":{"200":{"description":"The matching release, or null","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentMatchResponse"}}}},"400":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"401":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"404":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"429":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}}},"x-construct-auth-class":"tenant","x-construct-rate-class":"read","x-construct-rate-limit-per-window":1200,"x-construct-legacy-alias":false}},"/packages/search":{"get":{"operationId":"searchConstructPackages","summary":"Search packages visible to the tenant","security":[{"siteAccess":[]}],"parameters":[{"name":"q","in":"query","schema":{"type":"string","maxLength":128}},{"name":"family","in":"query","schema":{"type":"string"}},{"name":"category","in":"query","schema":{"type":"string"}},{"name":"official","in":"query","schema":{"type":"string","enum":["true","false"]}},{"name":"sort","in":"query","schema":{"type":"string","enum":["relevance","name","updated","installs","downloads","stars"]}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Search results","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PackageSearchResponse"}}}},"400":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"401":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"429":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}}},"x-construct-auth-class":"tenant","x-construct-rate-class":"read","x-construct-rate-limit-per-window":1200,"x-construct-legacy-alias":true}},"/packages/{ref}":{"get":{"operationId":"getConstructPackage","summary":"Package detail with entitlement and viewer","security":[{"siteAccess":[]}],"parameters":[{"name":"ref","in":"path","required":true,"description":"Package ref as one URI-encoded segment (`slack`, `%40acme%2Fpayroll-sync`).","schema":{"type":"string"}},{"name":"channel","in":"query","schema":{"type":"string","enum":["stable","beta"]}}],"responses":{"200":{"description":"Package detail","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PackageDetailResponse"}}}},"400":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"401":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"404":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"429":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}}},"x-construct-auth-class":"tenant","x-construct-rate-class":"read","x-construct-rate-limit-per-window":1200,"x-construct-legacy-alias":true},"patch":{"operationId":"updateConstructPackage","summary":"Edit package display metadata","security":[{"siteAccess":[]}],"parameters":[{"name":"ref","in":"path","required":true,"description":"Package ref as one URI-encoded segment (`slack`, `%40acme%2Fpayroll-sync`).","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PackagePatch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PackagePatchResponse"}}}},"400":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"401":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"403":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"404":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"409":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"429":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}}},"x-construct-auth-class":"publisher","x-construct-rate-class":"write","x-construct-rate-limit-per-window":60,"x-construct-legacy-alias":false}},"/packages/{ref}/versions":{"get":{"operationId":"listConstructPackageVersions","summary":"Releases visible to the tenant","security":[{"siteAccess":[]}],"parameters":[{"name":"ref","in":"path","required":true,"description":"Package ref as one URI-encoded segment (`slack`, `%40acme%2Fpayroll-sync`).","schema":{"type":"string"}},{"name":"channel","in":"query","schema":{"type":"string","enum":["stable","beta"]}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"A page of releases","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReleaseListResponse"}}}},"400":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"401":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"404":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"429":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}}},"x-construct-auth-class":"tenant","x-construct-rate-class":"read","x-construct-rate-limit-per-window":1200,"x-construct-legacy-alias":false}},"/packages/{ref}/versions/{version}":{"get":{"operationId":"getConstructRelease","summary":"Release detail","security":[{"siteAccess":[]}],"parameters":[{"name":"ref","in":"path","required":true,"description":"Package ref as one URI-encoded segment (`slack`, `%40acme%2Fpayroll-sync`).","schema":{"type":"string"}},{"name":"version","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Release detail","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReleaseDetailResponse"}}}},"400":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"401":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"404":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"429":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}}},"x-construct-auth-class":"tenant","x-construct-rate-class":"read","x-construct-rate-limit-per-window":1200,"x-construct-legacy-alias":false}},"/packages/{ref}/versions/{version}/security":{"get":{"operationId":"getConstructReleaseSecurity","summary":"Release security summary","security":[{"siteAccess":[]}],"parameters":[{"name":"ref","in":"path","required":true,"description":"Package ref as one URI-encoded segment (`slack`, `%40acme%2Fpayroll-sync`).","schema":{"type":"string"}},{"name":"version","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Security summary","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReleaseSecuritySummary"}}}},"400":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"401":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"404":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"429":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}}},"x-construct-auth-class":"tenant","x-construct-rate-class":"read","x-construct-rate-limit-per-window":1200,"x-construct-legacy-alias":false}},"/packages/{ref}/release-readiness":{"get":{"operationId":"getConstructReleaseReadiness","summary":"Release readiness (a tenant token, or a ci publish token for its bound package)","security":[{"siteAccess":[]}],"parameters":[{"name":"ref","in":"path","required":true,"description":"Package ref as one URI-encoded segment (`slack`, `%40acme%2Fpayroll-sync`).","schema":{"type":"string"}},{"name":"version","in":"query","schema":{"type":"string"}},{"name":"channel","in":"query","schema":{"type":"string","enum":["stable","beta"]}}],"responses":{"200":{"description":"Readiness report","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReleaseReadinessReport"}}}},"400":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"401":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"404":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"429":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}}},"x-construct-auth-class":"tenant","x-construct-rate-class":"read","x-construct-rate-limit-per-window":1200,"x-construct-legacy-alias":false}},"/resolve":{"get":{"operationId":"resolveConstructArtifact","summary":"Resolve an installable release and mint a 60-second download capability","security":[{"siteAccess":[]}],"parameters":[{"name":"package","in":"query","required":true,"schema":{"type":"string"}},{"name":"version","in":"query","schema":{"type":"string"}},{"name":"installedReleaseSeq","in":"query","schema":{"type":"integer","minimum":0}},{"name":"installedVersion","in":"query","schema":{"type":"string"}},{"name":"channel","in":"query","schema":{"type":"string","enum":["stable","beta"]}},{"name":"mode","in":"query","schema":{"type":"string","enum":["install","update"]}},{"name":"gatewayVersion","in":"query","schema":{"type":"string"}},{"name":"pluginApiVersion","in":"query","schema":{"type":"string"}},{"name":"hostTarget","in":"query","schema":{"type":"string","enum":["universal","darwin-arm64","darwin-x64","linux-x64-glibc","linux-arm64-glibc","linux-x64-musl","linux-arm64-musl","windows-x64","windows-arm64"]}},{"name":"manifestVersions","in":"query","schema":{"type":"string","pattern":"^[12](,[12])?$"}}],"responses":{"200":{"description":"Resolved release or up to date","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveResponse"}}}},"400":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"401":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"403":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"404":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"409":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"429":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"503":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}}},"x-construct-auth-class":"member","x-construct-rate-class":"resolve","x-construct-rate-limit-per-window":240,"x-construct-legacy-alias":true}},"/versions/{versionId}/reject":{"post":{"operationId":"rejectConstructVersion","summary":"Reject a pending version","security":[{"siteAccess":[]}],"parameters":[{"name":"versionId","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-f0-9]{24}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string","minLength":1,"maxLength":500}},"required":["reason"],"additionalProperties":false}}}},"responses":{"200":{"description":"Rejected","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RejectResponse"}}}},"400":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"401":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"403":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"404":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"409":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"429":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}}},"x-construct-auth-class":"org_admin","x-construct-rate-class":"write","x-construct-rate-limit-per-window":60,"x-construct-legacy-alias":false}},"/public/publishers/{handle}":{"get":{"operationId":"getPublicConstructPublisher","summary":"Publisher profile (public)","security":[],"parameters":[{"name":"handle","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublisherProfileResponse"}}}},"404":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"429":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}}},"x-construct-auth-class":"public","x-construct-rate-class":"public_read","x-construct-rate-limit-per-window":300,"x-construct-legacy-alias":false}},"/public/publishers/{handle}/packages":{"get":{"operationId":"listPublicConstructPublisherPackages","summary":"Catalog packages of a publisher (public)","security":[],"parameters":[{"name":"handle","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicPackageListResponse"}}}},"400":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"404":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"429":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}}},"x-construct-auth-class":"public","x-construct-rate-class":"public_read","x-construct-rate-limit-per-window":300,"x-construct-legacy-alias":false}},"/public/featured":{"get":{"operationId":"getPublicConstructFeatured","summary":"Featured collections (public)","security":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeaturedResponse"}}}},"429":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}}},"x-construct-auth-class":"public","x-construct-rate-class":"public_read","x-construct-rate-limit-per-window":300,"x-construct-legacy-alias":false}},"/installs":{"post":{"operationId":"reportConstructInstallEvent","summary":"Report an install, update or uninstall (deduplicated per installation and day)","security":[{"siteAccess":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9._:-]{1,128}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InstallReport"}}}},"responses":{"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InstallReportResponse"}}}},"400":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"401":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"404":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"409":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"429":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}}},"x-construct-auth-class":"member","x-construct-rate-class":"write","x-construct-rate-limit-per-window":60,"x-construct-legacy-alias":false}},"/me":{"get":{"operationId":"getConstructViewer","summary":"The signed-in viewer (UI gating only, never authority)","security":[{"siteAccess":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructViewer"}}}},"401":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"429":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}}},"x-construct-auth-class":"tenant","x-construct-rate-class":"read","x-construct-rate-limit-per-window":1200,"x-construct-legacy-alias":false}},"/publishers/{handle}":{"get":{"operationId":"getConstructPublisher","summary":"Publisher profile with canManage","security":[{"siteAccess":[]}],"parameters":[{"name":"handle","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublisherProfileResponse"}}}},"401":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"404":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"429":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}}},"x-construct-auth-class":"tenant","x-construct-rate-class":"read","x-construct-rate-limit-per-window":1200,"x-construct-legacy-alias":false},"patch":{"operationId":"updateConstructPublisher","summary":"Edit publisher display fields","security":[{"siteAccess":[]}],"parameters":[{"name":"handle","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublisherProfilePatch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublisherUpdateResponse"}}}},"400":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"401":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"403":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"404":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"429":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}}},"x-construct-auth-class":"publisher","x-construct-rate-class":"write","x-construct-rate-limit-per-window":60,"x-construct-legacy-alias":false}},"/publishers/{handle}/packages":{"get":{"operationId":"listConstructPublisherPackages","summary":"Every package of the namespace, all states","security":[{"siteAccess":[]}],"parameters":[{"name":"handle","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublisherPackageListResponse"}}}},"400":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"401":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"403":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"429":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}}},"x-construct-auth-class":"publisher","x-construct-rate-class":"read","x-construct-rate-limit-per-window":1200,"x-construct-legacy-alias":false}},"/publishers/{handle}/stats":{"get":{"operationId":"getConstructPublisherStats","summary":"Daily usage aggregates for the namespace","security":[{"siteAccess":[]}],"parameters":[{"name":"handle","in":"path","required":true,"schema":{"type":"string"}},{"name":"from","in":"query","required":true,"schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":true,"description":"Inclusive; at most 400 days after `from`.","schema":{"type":"string","format":"date"}},{"name":"granularity","in":"query","schema":{"const":"day"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatsResponse"}}}},"400":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"401":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"403":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"429":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}}},"x-construct-auth-class":"publisher","x-construct-rate-class":"read","x-construct-rate-limit-per-window":1200,"x-construct-legacy-alias":false}},"/packages/{ref}/versions/{version}/withdraw":{"post":{"operationId":"withdrawConstructRelease","summary":"Withdraw a release (step-up)","security":[{"siteAccess":[]}],"parameters":[{"name":"ref","in":"path","required":true,"description":"Package ref as one URI-encoded segment (`slack`, `%40acme%2Fpayroll-sync`).","schema":{"type":"string"}},{"name":"version","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string","minLength":1,"maxLength":500}},"required":["reason"],"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReleaseMutationResponse"}}}},"400":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"401":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"403":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"404":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"409":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"429":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}}},"x-construct-auth-class":"publisher","x-construct-rate-class":"write","x-construct-rate-limit-per-window":60,"x-construct-legacy-alias":false}},"/packages/{ref}/versions/{version}/restore":{"post":{"operationId":"restoreConstructRelease","summary":"Restore a withdrawn release","security":[{"siteAccess":[]}],"parameters":[{"name":"ref","in":"path","required":true,"description":"Package ref as one URI-encoded segment (`slack`, `%40acme%2Fpayroll-sync`).","schema":{"type":"string"}},{"name":"version","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReleaseMutationResponse"}}}},"401":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"403":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"404":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"409":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"429":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}}},"x-construct-auth-class":"publisher","x-construct-rate-class":"write","x-construct-rate-limit-per-window":60,"x-construct-legacy-alias":false}},"/packages/{ref}/stats":{"get":{"operationId":"getConstructPackageStats","summary":"Daily usage aggregates for a package","security":[{"siteAccess":[]}],"parameters":[{"name":"ref","in":"path","required":true,"description":"Package ref as one URI-encoded segment (`slack`, `%40acme%2Fpayroll-sync`).","schema":{"type":"string"}},{"name":"from","in":"query","required":true,"schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":true,"description":"Inclusive; at most 400 days after `from`.","schema":{"type":"string","format":"date"}},{"name":"granularity","in":"query","schema":{"const":"day"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatsResponse"}}}},"400":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"401":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"403":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"404":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"429":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}}},"x-construct-auth-class":"publisher","x-construct-rate-class":"read","x-construct-rate-limit-per-window":1200,"x-construct-legacy-alias":false}},"/names/check":{"get":{"operationId":"checkConstructName","summary":"Check whether a package name can be claimed","security":[{"siteAccess":[]}],"parameters":[{"name":"ref","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NameCheckResponse"}}}},"401":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"403":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"429":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}}},"x-construct-auth-class":"publisher","x-construct-rate-class":"read","x-construct-rate-limit-per-window":1200,"x-construct-legacy-alias":false}},"/packages/{ref}/transfers":{"post":{"operationId":"requestConstructTransfer","summary":"Request an ownership transfer (step-up)","security":[{"siteAccess":[]}],"parameters":[{"name":"ref","in":"path","required":true,"description":"Package ref as one URI-encoded segment (`slack`, `%40acme%2Fpayroll-sync`).","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9._:-]{1,128}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"toNamespace":{"type":"string"},"message":{"type":"string","maxLength":1000}},"required":["toNamespace"],"additionalProperties":false}}}},"responses":{"201":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransferResponse"}}}},"400":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"401":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"403":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"404":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"409":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"429":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}}},"x-construct-auth-class":"publisher","x-construct-rate-class":"write","x-construct-rate-limit-per-window":60,"x-construct-legacy-alias":false}},"/transfers":{"get":{"operationId":"listConstructTransfers","summary":"Incoming or outgoing transfers","security":[{"siteAccess":[]}],"parameters":[{"name":"direction","in":"query","schema":{"type":"string","enum":["incoming","outgoing"]}},{"name":"state","in":"query","schema":{"type":"string","enum":["pending","accepted","rejected","cancelled","expired"]}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransferListResponse"}}}},"400":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"401":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"403":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"429":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}}},"x-construct-auth-class":"publisher","x-construct-rate-class":"read","x-construct-rate-limit-per-window":1200,"x-construct-legacy-alias":false}},"/transfers/{transferId}/accept":{"post":{"operationId":"acceptConstructTransfer","summary":"Accept a transfer (step-up; atomic move)","security":[{"siteAccess":[]}],"parameters":[{"name":"transferId","in":"path","required":true,"schema":{"type":"string","pattern":"^trf_[a-f0-9]{32}$"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransferAcceptResponse"}}}},"401":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"403":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"404":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"409":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"410":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"429":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}}},"x-construct-auth-class":"publisher","x-construct-rate-class":"write","x-construct-rate-limit-per-window":60,"x-construct-legacy-alias":false}},"/transfers/{transferId}/reject":{"post":{"operationId":"rejectConstructTransfer","summary":"Reject an incoming transfer","security":[{"siteAccess":[]}],"parameters":[{"name":"transferId","in":"path","required":true,"schema":{"type":"string","pattern":"^trf_[a-f0-9]{32}$"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransferResponse"}}}},"401":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"404":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"409":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"410":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"429":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}}},"x-construct-auth-class":"publisher","x-construct-rate-class":"write","x-construct-rate-limit-per-window":60,"x-construct-legacy-alias":false}},"/transfers/{transferId}/cancel":{"post":{"operationId":"cancelConstructTransfer","summary":"Cancel an outgoing transfer","security":[{"siteAccess":[]}],"parameters":[{"name":"transferId","in":"path","required":true,"schema":{"type":"string","pattern":"^trf_[a-f0-9]{32}$"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransferResponse"}}}},"401":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"404":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"409":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"410":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"429":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}}},"x-construct-auth-class":"publisher","x-construct-rate-class":"write","x-construct-rate-limit-per-window":60,"x-construct-legacy-alias":false}},"/packages/{ref}/ci-publisher":{"get":{"operationId":"getConstructCiPublisher","summary":"The package CI publisher binding (read only)","security":[{"siteAccess":[]}],"parameters":[{"name":"ref","in":"path","required":true,"description":"Package ref as one URI-encoded segment (`slack`, `%40acme%2Fpayroll-sync`).","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CiPublisherBindingResponse"}}}},"401":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"403":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"404":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"429":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}}},"x-construct-auth-class":"publisher","x-construct-rate-class":"read","x-construct-rate-limit-per-window":1200,"x-construct-legacy-alias":false}},"/packages/{ref}/star":{"put":{"operationId":"starConstructPackage","summary":"Star a package","security":[{"siteAccess":[]}],"parameters":[{"name":"ref","in":"path","required":true,"description":"Package ref as one URI-encoded segment (`slack`, `%40acme%2Fpayroll-sync`).","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StarResponse"}}}},"401":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"403":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"404":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"429":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}}},"x-construct-auth-class":"tenant","x-construct-rate-class":"write","x-construct-rate-limit-per-window":60,"x-construct-legacy-alias":false},"delete":{"operationId":"unstarConstructPackage","summary":"Remove a star","security":[{"siteAccess":[]}],"parameters":[{"name":"ref","in":"path","required":true,"description":"Package ref as one URI-encoded segment (`slack`, `%40acme%2Fpayroll-sync`).","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StarResponse"}}}},"401":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"403":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"404":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"429":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}}},"x-construct-auth-class":"tenant","x-construct-rate-class":"write","x-construct-rate-limit-per-window":60,"x-construct-legacy-alias":false}},"/me/stars":{"get":{"operationId":"listConstructStars","summary":"Packages the caller starred","security":[{"siteAccess":[]}],"parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StarListResponse"}}}},"400":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"401":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"403":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"429":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}}},"x-construct-auth-class":"tenant","x-construct-rate-class":"read","x-construct-rate-limit-per-window":1200,"x-construct-legacy-alias":false}},"/reports":{"post":{"operationId":"createConstructReport","summary":"Report a package or release","security":[{"siteAccess":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9._:-]{1,128}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"package":{"type":"string"},"version":{"type":"string"},"reason":{"type":"string","enum":["malware","security","credential_theft","impersonation","spam","license","broken","other"]},"details":{"type":"string","maxLength":4000}},"required":["package","reason","details"],"additionalProperties":false}}}},"responses":{"200":{"description":"The caller already has an open report on this target","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportResponse"}}}},"201":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportResponse"}}}},"400":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"401":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"403":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"404":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"429":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}}},"x-construct-auth-class":"tenant","x-construct-rate-class":"report","x-construct-rate-limit-per-window":10,"x-construct-legacy-alias":false}},"/me/reports":{"get":{"operationId":"listConstructReports","summary":"The caller's reports","security":[{"siteAccess":[]}],"parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportListResponse"}}}},"400":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"401":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"403":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"429":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}}},"x-construct-auth-class":"tenant","x-construct-rate-class":"read","x-construct-rate-limit-per-window":1200,"x-construct-legacy-alias":false}},"/appeals":{"post":{"operationId":"createConstructAppeal","summary":"Appeal a moderation decision","security":[{"siteAccess":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9._:-]{1,128}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"package":{"type":"string"},"version":{"type":"string"},"moderationEventId":{"type":"string"},"statement":{"type":"string","minLength":1,"maxLength":4000}},"required":["package","moderationEventId","statement"],"additionalProperties":false}}}},"responses":{"201":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppealResponse"}}}},"400":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"401":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"403":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"404":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"409":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"429":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}}},"x-construct-auth-class":"publisher","x-construct-rate-class":"report","x-construct-rate-limit-per-window":10,"x-construct-legacy-alias":false}},"/me/appeals":{"get":{"operationId":"listConstructAppeals","summary":"The caller's appeals","security":[{"siteAccess":[]}],"parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppealListResponse"}}}},"400":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"401":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"403":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"429":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}}},"x-construct-auth-class":"publisher","x-construct-rate-class":"read","x-construct-rate-limit-per-window":1200,"x-construct-legacy-alias":false}},"/ci/token":{"post":{"operationId":"exchangeConstructCiToken","summary":"Exchange a GitHub Actions OIDC token for a 15-minute binding token; purpose \"verify\" needs an existing version and only reads CI10 and T16","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"oidcToken":{"type":"string"},"request":{"type":"object","properties":{"package":{"type":"string"},"version":{"type":"string"},"family":{"type":"string","enum":["code-plugin","bundle-plugin","skill"]},"channel":{"type":"string","enum":["stable","beta"]},"inventorySha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"purpose":{"type":"string","enum":["publish","verify"]}},"required":["package","version","family","channel","inventorySha256"],"additionalProperties":false}},"required":["oidcToken","request"],"additionalProperties":false}}}},"responses":{"200":{"description":"Publish token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CiTokenResponse"}}}},"400":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"401":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"404":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"409":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"429":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"503":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}}},"x-construct-auth-class":"ci_oidc","x-construct-rate-class":"publish","x-construct-rate-limit-per-window":120,"x-construct-legacy-alias":false}},"/ci/release":{"get":{"operationId":"getConstructCiRelease","summary":"Verify token only: the token's existing release in the CI5 release shape, with 60 s downloads","security":[{"constructPublish":[]}],"parameters":[{"name":"package","in":"query","required":false,"schema":{"type":"string"}},{"name":"version","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"The release","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CiExistingReleaseResponse"}}}},"401":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"404":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"429":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}}},"x-construct-auth-class":"ci","x-construct-rate-class":"publish","x-construct-rate-limit-per-window":120,"x-construct-legacy-alias":false}},"/ci/publish-runs":{"post":{"operationId":"createConstructPublishRun","summary":"Create a publish run from the bound inventory and issue upload capabilities","security":[{"constructPublish":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9._:-]{1,128}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"inventory":{"$ref":"#/components/schemas/PublishInventory"}},"required":["inventory"],"additionalProperties":false}}}},"responses":{"201":{"description":"Run created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishRunCreateResponse"}}}},"400":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"401":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"409":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"413":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"429":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"503":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}}},"x-construct-auth-class":"ci","x-construct-rate-class":"publish","x-construct-rate-limit-per-window":120,"x-construct-legacy-alias":false}},"/ci/publish-runs/{runId}":{"get":{"operationId":"getConstructPublishRun","summary":"Read a publish run","security":[{"constructPublish":[]}],"parameters":[{"name":"runId","in":"path","required":true,"schema":{"type":"string","pattern":"^run_[a-f0-9]{32}$"}}],"responses":{"200":{"description":"The run","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishRun"}}}},"401":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"404":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"429":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}}},"x-construct-auth-class":"ci","x-construct-rate-class":"publish","x-construct-rate-limit-per-window":120,"x-construct-legacy-alias":false}},"/ci/publish-runs/{runId}/uploads/{targetKey}":{"post":{"operationId":"reissueConstructUpload","summary":"Re-issue an expired upload capability","security":[{"constructPublish":[]}],"parameters":[{"name":"runId","in":"path","required":true,"schema":{"type":"string","pattern":"^run_[a-f0-9]{32}$"}},{"name":"targetKey","in":"path","required":true,"schema":{"type":"string","enum":["universal","darwin-arm64","darwin-x64","linux-x64-glibc","linux-arm64-glibc","linux-x64-musl","linux-arm64-musl","windows-x64","windows-arm64"]}}],"responses":{"200":{"description":"A new capability","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadReissueResponse"}}}},"401":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"404":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"409":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"429":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}}},"x-construct-auth-class":"ci","x-construct-rate-class":"publish","x-construct-rate-limit-per-window":120,"x-construct-legacy-alias":false}},"/ci/publish-runs/{runId}/finalize":{"post":{"operationId":"finalizeConstructPublishRun","summary":"Verify every upload and start the checks","security":[{"constructPublish":[]}],"parameters":[{"name":"runId","in":"path","required":true,"schema":{"type":"string","pattern":"^run_[a-f0-9]{32}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"required":[],"additionalProperties":false}}}},"responses":{"202":{"description":"Checking","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishRunStateResponse"}}}},"401":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"404":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"409":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"429":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"503":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}}},"x-construct-auth-class":"ci","x-construct-rate-class":"publish","x-construct-rate-limit-per-window":120,"x-construct-legacy-alias":false}},"/ci/publish-runs/{runId}/recover":{"post":{"operationId":"recoverConstructPublishRun","summary":"Retry a failed run, or an expired run whose uploads all arrived","security":[{"constructPublish":[]}],"parameters":[{"name":"runId","in":"path","required":true,"schema":{"type":"string","pattern":"^run_[a-f0-9]{32}$"}}],"responses":{"202":{"description":"Checking","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishRunStateResponse"}}}},"401":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"404":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"409":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"410":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"429":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}}},"x-construct-auth-class":"ci","x-construct-rate-class":"publish","x-construct-rate-limit-per-window":120,"x-construct-legacy-alias":false}},"/ci/publish-runs/{runId}/cancel":{"post":{"operationId":"cancelConstructPublishRun","summary":"Cancel a run before finalization","security":[{"constructPublish":[]}],"parameters":[{"name":"runId","in":"path","required":true,"schema":{"type":"string","pattern":"^run_[a-f0-9]{32}$"}}],"responses":{"200":{"description":"Cancelled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishRunStateResponse"}}}},"401":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"404":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"409":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}},"429":{"description":"Construct error envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstructError"}}}}},"x-construct-auth-class":"ci","x-construct-rate-class":"publish","x-construct-rate-limit-per-window":120,"x-construct-legacy-alias":false}}},"components":{"schemas":{"ConstructError":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string"},"details":{"type":"object"},"retryAfterSeconds":{"type":"integer","minimum":0}},"required":["error","code","message","requestId"],"additionalProperties":true},"HeadRef":{"type":"object","properties":{"version":{"type":"string"},"releaseSeq":{"type":"integer","minimum":0},"publishedAt":{"type":"string","format":"date-time"}},"required":["version","releaseSeq","publishedAt"],"additionalProperties":true},"Compatibility":{"type":"object","properties":{"pluginApiRange":{"type":"string"},"minGatewayVersion":{"type":"string"},"builtWithVersion":{"type":"string"}},"required":["pluginApiRange","minGatewayVersion","builtWithVersion"],"additionalProperties":true},"Finding":{"type":"object","properties":{"code":{"type":"string"},"severity":{"type":"string","enum":["info","warn","high","critical"]},"target":{"type":"string","enum":["universal","darwin-arm64","darwin-x64","linux-x64-glibc","linux-arm64-glibc","linux-x64-musl","linux-arm64-musl","windows-x64","windows-arm64"]},"path":{"type":"string"},"detail":{"type":"string"}},"required":["code","severity"],"additionalProperties":true},"PublisherRef":{"type":"object","properties":{"handle":{"type":"string"},"displayName":{"type":"string"},"kind":{"type":"string","enum":["neotask","organization"]},"official":{"type":"boolean"},"verified":{"type":"boolean"}},"required":["handle","displayName","kind","official","verified"],"additionalProperties":true},"LegacyPackageCard":{"type":"object","properties":{"name":{"type":"string"},"orgSlug":{"anyOf":[{"type":"string"},{"type":"null"}]},"displayName":{"type":"string"},"summary":{"type":"string"},"family":{"type":"string","enum":["code-plugin","bundle-plugin","skill"]},"visibility":{"type":"string","enum":["workspace","org","catalog"]},"fulfillment":{"type":"string","enum":["free","self_serve","request_access","contract","managed_setup"]},"packaging":{"type":"string","enum":["bundled","native"]},"pendingApproval":{"type":"boolean"}},"required":["name","orgSlug","displayName","summary","family","visibility","fulfillment","packaging","pendingApproval"],"additionalProperties":true},"PackageSummary":{"type":"object","properties":{"name":{"type":"string"},"orgSlug":{"anyOf":[{"type":"string"},{"type":"null"}]},"displayName":{"type":"string"},"summary":{"type":"string"},"family":{"type":"string","enum":["code-plugin","bundle-plugin","skill"]},"visibility":{"type":"string","enum":["workspace","org","catalog"]},"fulfillment":{"type":"string","enum":["free","self_serve","request_access","contract","managed_setup"]},"packaging":{"type":"string","enum":["bundled","native"]},"pendingApproval":{"type":"boolean"},"ref":{"type":"string"},"official":{"type":"boolean"},"publisher":{"$ref":"#/components/schemas/PublisherRef"},"iconUrl":{"type":"string"},"categories":{"type":"array","items":{"type":"string"}},"channels":{"type":"object","properties":{"stable":{"anyOf":[{"$ref":"#/components/schemas/HeadRef"},{"type":"null"}]},"beta":{"anyOf":[{"$ref":"#/components/schemas/HeadRef"},{"type":"null"}]}},"required":["stable","beta"],"additionalProperties":true},"stats":{"type":"object","properties":{"installs30d":{"type":"integer","minimum":0},"downloads":{"type":"integer","minimum":0},"stars":{"type":"integer","minimum":0}},"required":["installs30d","downloads","stars"],"additionalProperties":true},"provenance":{"anyOf":[{"type":"string","enum":["inspected","source-linked","attested","reproduced"]},{"type":"null"}]},"updatedAt":{"type":"string","format":"date-time"},"includedWith":{"type":"array","items":{"type":"string","enum":["desktop","cli"]},"maxItems":2}},"required":["name","orgSlug","displayName","summary","family","visibility","fulfillment","packaging","pendingApproval","ref","official","publisher","iconUrl","categories","channels","stats","provenance","updatedAt"],"additionalProperties":true},"ReleaseSummary":{"type":"object","properties":{"version":{"type":"string"},"releaseSeq":{"type":"integer","minimum":0},"channel":{"type":"string","enum":["stable","beta"]},"state":{"type":"string","enum":["installable","withdrawn","quarantined","revoked","pending_approval","rejected"]},"publishedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"changelog":{"type":"string"},"compatibility":{"$ref":"#/components/schemas/Compatibility"},"targets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","enum":["universal","darwin-arm64","darwin-x64","linux-x64-glibc","linux-arm64-glibc","linux-x64-musl","linux-arm64-musl","windows-x64","windows-arm64"]},"artifactSize":{"type":"integer","minimum":0},"artifactSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["key","artifactSize","artifactSha256"],"additionalProperties":true}},"provenance":{"type":"string","enum":["inspected","source-linked","attested","reproduced"]},"scan":{"type":"object","properties":{"state":{"type":"string","enum":["pending","clean","suspicious","malicious","not-run"]}},"required":["state"],"additionalProperties":true},"manifestVersions":{"type":"array","items":{"type":"integer","enum":[1,2]}},"moderation":{"type":"object","properties":{"state":{"type":"string","enum":["none","approved","quarantined","revoked"]},"reason":{"type":"string"},"at":{"type":"string","format":"date-time"},"eventId":{"type":"string"}},"required":["state"],"additionalProperties":true}},"required":["version","releaseSeq","channel","state","publishedAt","changelog","compatibility","targets","provenance","scan","manifestVersions"],"additionalProperties":true},"ReleaseDetail":{"type":"object","properties":{"version":{"type":"string"},"releaseSeq":{"type":"integer","minimum":0},"channel":{"type":"string","enum":["stable","beta"]},"state":{"type":"string","enum":["installable","withdrawn","quarantined","revoked","pending_approval","rejected"]},"publishedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"changelog":{"type":"string"},"compatibility":{"$ref":"#/components/schemas/Compatibility"},"targets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","enum":["universal","darwin-arm64","darwin-x64","linux-x64-glibc","linux-arm64-glibc","linux-x64-musl","linux-arm64-musl","windows-x64","windows-arm64"]},"artifactSize":{"type":"integer","minimum":0},"artifactSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["key","artifactSize","artifactSha256"],"additionalProperties":true}},"provenance":{"type":"string","enum":["inspected","source-linked","attested","reproduced"]},"scan":{"type":"object","properties":{"state":{"type":"string","enum":["pending","clean","suspicious","malicious","not-run"]}},"required":["state"],"additionalProperties":true},"manifestVersions":{"type":"array","items":{"type":"integer","enum":[1,2]}},"moderation":{"type":"object","properties":{"state":{"type":"string","enum":["none","approved","quarantined","revoked"]},"reason":{"type":"string"},"at":{"type":"string","format":"date-time"},"eventId":{"type":"string"}},"required":["state"],"additionalProperties":true},"capabilities":{"type":"object","properties":{"authMode":{"type":"string","enum":["oauth","api-key","local-app","none"]},"inputs":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"label":{"type":"string"},"required":{"type":"boolean"},"sensitive":{"type":"boolean"}},"required":["key","label","required","sensitive"],"additionalProperties":true}},"requiredBins":{"type":"array","items":{"type":"string"}},"requiredAnyBins":{"type":"array","items":{"type":"string"}},"requiredMcpServers":{"type":"array","items":{"type":"string"}},"installOptions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string"},"label":{"type":"string"},"bins":{"type":"array","items":{"type":"string"}},"package":{"type":"string"},"formula":{"type":"string"}},"required":["id","kind","label","bins","package","formula"],"additionalProperties":true}},"requiresNetwork":{"type":"boolean"},"requiresFilesystem":{"type":"boolean"},"toolCount":{"type":"integer","minimum":0},"bundledSkillCount":{"type":"integer","minimum":0}},"required":["authMode","inputs","requiredBins","requiredAnyBins","requiredMcpServers","installOptions","requiresNetwork","requiresFilesystem","toolCount","bundledSkillCount"],"additionalProperties":true},"environment":{"$ref":"#/components/schemas/EnvironmentRequirements"},"dependencies":{"type":"object","properties":{"vendored":{"type":"boolean"},"packageCount":{"type":"integer","minimum":0},"licenses":{"type":"array","items":{"type":"string"}}},"required":["vendored","packageCount","licenses"],"additionalProperties":true},"docs":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string"},"title":{"type":"string"}},"required":["slug","title"],"additionalProperties":true}}},"required":["version","releaseSeq","channel","state","publishedAt","changelog","compatibility","targets","provenance","scan","manifestVersions","capabilities","environment","dependencies","docs"],"additionalProperties":true},"EnvironmentRequirements":{"type":"object","properties":{"localDesktop":{"type":"boolean"},"browser":{"type":"boolean"},"audioDevice":{"type":"boolean"},"network":{"type":"boolean"},"externalServices":{"type":"array","items":{"type":"string"}},"osPermissions":{"type":"array","items":{"type":"string"}},"remoteHostSupported":{"type":"boolean"}},"required":["localDesktop","browser","audioDevice","network","externalServices","osPermissions","remoteHostSupported"],"additionalProperties":true},"PackageDetail":{"type":"object","properties":{"name":{"type":"string"},"orgSlug":{"anyOf":[{"type":"string"},{"type":"null"}]},"displayName":{"type":"string"},"summary":{"type":"string"},"family":{"type":"string","enum":["code-plugin","bundle-plugin","skill"]},"visibility":{"type":"string","enum":["workspace","org","catalog"]},"fulfillment":{"type":"string","enum":["free","self_serve","request_access","contract","managed_setup"]},"packaging":{"type":"string","enum":["bundled","native"]},"pendingApproval":{"type":"boolean"},"ref":{"type":"string"},"official":{"type":"boolean"},"publisher":{"$ref":"#/components/schemas/PublisherRef"},"iconUrl":{"type":"string"},"categories":{"type":"array","items":{"type":"string"}},"channels":{"type":"object","properties":{"stable":{"anyOf":[{"$ref":"#/components/schemas/HeadRef"},{"type":"null"}]},"beta":{"anyOf":[{"$ref":"#/components/schemas/HeadRef"},{"type":"null"}]}},"required":["stable","beta"],"additionalProperties":true},"stats":{"type":"object","properties":{"installs30d":{"type":"integer","minimum":0},"downloads":{"type":"integer","minimum":0},"stars":{"type":"integer","minimum":0}},"required":["installs30d","downloads","stars"],"additionalProperties":true},"provenance":{"anyOf":[{"type":"string","enum":["inspected","source-linked","attested","reproduced"]},{"type":"null"}]},"updatedAt":{"type":"string","format":"date-time"},"includedWith":{"type":"array","items":{"type":"string","enum":["desktop","cli"]},"maxItems":2},"description":{"type":"string"},"links":{"type":"object","properties":{"homepage":{"type":"string"},"source":{"type":"string"},"docs":{"type":"string"},"support":{"type":"string"}},"required":[],"additionalProperties":true},"license":{"anyOf":[{"type":"string"},{"type":"null"}]},"heads":{"type":"object","properties":{"stable":{"anyOf":[{"$ref":"#/components/schemas/ReleaseSummary"},{"type":"null"}]},"beta":{"anyOf":[{"$ref":"#/components/schemas/ReleaseSummary"},{"type":"null"}]}},"required":["stable","beta"],"additionalProperties":true},"docs":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string"},"title":{"type":"string"}},"required":["slug","title"],"additionalProperties":true}},"install":{"type":"object","properties":{"cli":{"type":"string"},"cliBeta":{"anyOf":[{"type":"string"},{"type":"null"}]},"requiresSignIn":{"const":true},"desktopDeepLink":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["cli","cliBeta","requiresSignIn","desktopDeepLink"],"additionalProperties":true},"latestVersion":{"type":"string"},"movedTo":{"anyOf":[{"type":"string"},{"type":"null"}]},"showcase":{"type":"string","maxLength":20000,"description":"Formatted showcase (Markdown): the package showcase when set, else the displayed head release manifest showcase (stable, else beta), else empty."},"readme":{"type":"string","maxLength":65536,"description":"The displayed head release README.md (Markdown, rendered without raw HTML, never executed), or empty."},"entitlement":{"type":"object","properties":{"entitled":{"type":"boolean"},"source":{"type":"string","enum":["org_membership","purchase","access_request","contract","neotask_admin","free_catalog"]},"channels":{"type":"array","items":{"type":"string","enum":["stable","beta"]}},"expiresAt":{"type":"string","format":"date-time"}},"required":["entitled"],"additionalProperties":true},"viewer":{"type":"object","properties":{"starred":{"type":"boolean"},"canPublish":{"type":"boolean"},"canApprove":{"type":"boolean"}},"required":["starred","canPublish","canApprove"],"additionalProperties":true}},"required":["name","orgSlug","displayName","summary","family","visibility","fulfillment","packaging","pendingApproval","ref","official","publisher","iconUrl","categories","channels","stats","provenance","updatedAt","description","links","license","heads","docs","install","latestVersion","movedTo","showcase","readme"],"additionalProperties":true},"PackageDetailResponse":{"type":"object","properties":{"package":{"$ref":"#/components/schemas/PackageDetail"}},"required":["package"],"additionalProperties":true},"PublicPackageListResponse":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/PackageSummary"}},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"sort":{"type":"string"}},"required":["items","nextCursor","sort"],"additionalProperties":true},"PackageSearchResponse":{"type":"object","properties":{"results":{"type":"array","items":{"$ref":"#/components/schemas/PackageSummary"}},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"sort":{"type":"string"}},"required":["results","nextCursor","sort"],"additionalProperties":true},"ReleaseListResponse":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ReleaseSummary"}},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["items","nextCursor"],"additionalProperties":true},"ReleaseDetailResponse":{"type":"object","properties":{"package":{"$ref":"#/components/schemas/PackageSummary"},"release":{"$ref":"#/components/schemas/ReleaseDetail"}},"required":["package","release"],"additionalProperties":true},"ReleaseSecuritySummary":{"type":"object","properties":{"version":{"type":"string"},"scan":{"type":"object","properties":{"state":{"type":"string","enum":["pending","clean","suspicious","malicious","not-run"]},"attestationSha256":{"anyOf":[{"type":"string","pattern":"^[a-f0-9]{64}$"},{"type":"null"}]},"engines":{"type":"array","items":{"type":"object","properties":{"engine":{"type":"string"},"verdict":{"type":"string","enum":["clean","suspicious","malicious","error"]},"at":{"type":"string","format":"date-time"}},"required":["engine","verdict","at"],"additionalProperties":true}},"findings":{"type":"array","items":{"$ref":"#/components/schemas/Finding"}}},"required":["state","attestationSha256","engines","findings"],"additionalProperties":true},"moderation":{"type":"object","properties":{"state":{"type":"string","enum":["none","approved","quarantined","revoked"]},"reasonCode":{"type":"string"},"at":{"type":"string","format":"date-time"}},"required":["state"],"additionalProperties":true},"provenance":{"type":"object","properties":{"level":{"type":"string","enum":["inspected","source-linked","attested","reproduced"]},"repository":{"type":"string"},"commit":{"type":"string"},"workflowPath":{"type":"string"},"runId":{"type":"string"}},"required":["level"],"additionalProperties":true},"signatures":{"type":"object","properties":{"v1":{"type":"boolean"},"v2":{"type":"boolean"},"keyIds":{"type":"array","items":{"type":"string"}}},"required":["v1","v2","keyIds"],"additionalProperties":true}},"required":["version","scan","moderation","provenance","signatures"],"additionalProperties":true},"ReleaseReadinessReport":{"type":"object","properties":{"package":{"type":"string"},"version":{"type":"string"},"channel":{"type":"string","enum":["stable","beta"]},"ready":{"type":"boolean"},"evaluatedAt":{"type":"string","format":"date-time"},"checks":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string","enum":["pass","fail","warn","not_applicable"]},"detail":{"type":"string"},"findings":{"type":"array","items":{"$ref":"#/components/schemas/Finding"}}},"required":["id","status"],"additionalProperties":true}}},"required":["package","version","channel","ready","evaluatedAt","checks"],"additionalProperties":true},"CategoryListResponse":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"packageCount":{"type":"integer","minimum":0}},"required":["id","label","packageCount"],"additionalProperties":true}}},"required":["items"],"additionalProperties":true},"WireGrant":{"type":"object","properties":{"pluginId":{"type":"string"},"versionRange":{"type":"string"},"expiresAt":{"type":"integer","minimum":0},"notBefore":{"type":"integer","minimum":0},"artifactSha256":{"anyOf":[{"type":"string","pattern":"^[a-f0-9]{64}$"},{"type":"null"}]},"minReleaseSeq":{"type":"integer","minimum":0},"revoked":{"const":false},"source":{"type":"string","enum":["org_membership","purchase","access_request","contract","neotask_admin","free_catalog"]},"channels":{"type":"array","items":{"type":"string","enum":["stable","beta"]}},"blockedReleases":{"type":"array","items":{"type":"object","properties":{"releaseSeq":{"type":"integer","minimum":0},"artifactSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["releaseSeq","artifactSha256"],"additionalProperties":true}}},"required":["pluginId","versionRange","expiresAt","notBefore","artifactSha256","minReleaseSeq","revoked"],"additionalProperties":true},"EntitlementsResponse":{"type":"object","properties":{"tenantId":{"type":"string"},"grants":{"type":"array","items":{"$ref":"#/components/schemas/WireGrant"}},"issuedAtMs":{"type":"integer","minimum":0}},"required":["tenantId","grants","issuedAtMs"],"additionalProperties":true},"ReleaseManifestV2":{"type":"object","properties":{"domain":{"const":"NEOTASK-RELEASE-V2"},"issuer":{"type":"string"},"audience":{"const":"neotask-gateway"},"name":{"type":"string"},"orgSlug":{"type":"string"},"family":{"type":"string","enum":["code-plugin","bundle-plugin","skill"]},"version":{"type":"string"},"releaseSeq":{"type":"integer","minimum":1},"channel":{"type":"string","enum":["stable","beta"]},"targetKey":{"type":"string","enum":["universal","darwin-arm64","darwin-x64","linux-x64-glibc","linux-arm64-glibc","linux-x64-musl","linux-arm64-musl","windows-x64","windows-arm64"]},"artifactSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"artifactSize":{"type":"integer","minimum":1},"artifactFormat":{"const":"ntpkg"},"pluginApiRange":{"type":"string"},"minGatewayVersion":{"type":"string"},"builtWithVersion":{"type":"string"},"capabilityManifestSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"dependencyInventorySha256":{"type":"string","pattern":"^(?:[a-f0-9]{64})?$"},"contentSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"scanAttestationSha256":{"type":"string","pattern":"^(?:[a-f0-9]{64})?$"},"provenanceLevel":{"type":"string","enum":["inspected","source-linked","attested","reproduced"]},"sourceRepository":{"type":"string"},"sourceCommit":{"type":"string"},"publisherId":{"type":"string"},"createdAt":{"type":"string","format":"date-time"}},"required":["domain","issuer","audience","name","orgSlug","family","version","releaseSeq","channel","targetKey","artifactSha256","artifactSize","artifactFormat","pluginApiRange","minGatewayVersion","builtWithVersion","capabilityManifestSha256","dependencyInventorySha256","contentSha256","scanAttestationSha256","provenanceLevel","sourceRepository","sourceCommit","publisherId","createdAt"],"additionalProperties":false},"SignedReleaseEnvelope":{"type":"object","properties":{"format":{"const":"NEOTASK-RELEASE-V2"},"manifest":{"$ref":"#/components/schemas/ReleaseManifestV2"},"signatures":{"type":"array","items":{"type":"object","properties":{"keyId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,64}$"},"algorithm":{"const":"Ed25519"},"signature":{"type":"string"}},"required":["keyId","algorithm","signature"],"additionalProperties":false},"minItems":1,"maxItems":4}},"required":["format","manifest","signatures"],"additionalProperties":false},"Resolution":{"type":"object","properties":{"mode":{"type":"string","enum":["install","update"]},"channel":{"type":"string","enum":["stable","beta"]},"hostTarget":{"anyOf":[{"type":"string","enum":["universal","darwin-arm64","darwin-x64","linux-x64-glibc","linux-arm64-glibc","linux-x64-musl","linux-arm64-musl","windows-x64","windows-arm64"]},{"type":"null"}]},"targetKey":{"type":"string","enum":["universal","darwin-arm64","darwin-x64","linux-x64-glibc","linux-arm64-glibc","linux-x64-musl","linux-arm64-musl","windows-x64","windows-arm64"]},"manifestVersion":{"type":"integer","enum":[1,2]},"floorReleaseSeq":{"type":"integer","minimum":0},"rollbackAuthorizedBy":{"anyOf":[{"const":"revocation"},{"type":"null"}]},"grantSource":{"type":"string","enum":["org_membership","purchase","access_request","contract","neotask_admin","free_catalog","assignment"]}},"required":["mode","channel","hostTarget","targetKey","manifestVersion","floorReleaseSeq","rollbackAuthorizedBy","grantSource"],"additionalProperties":true},"InstalledReleaseState":{"type":"object","properties":{"version":{"type":"string"},"releaseSeq":{"type":"integer","minimum":0},"state":{"type":"string","enum":["installable","withdrawn","quarantined","revoked"]},"reasonCode":{"type":"string"}},"required":["version","releaseSeq","state"],"additionalProperties":true},"ResolvedVersion":{"type":"object","properties":{"publishState":{"type":"string"},"version":{"type":"string"},"releaseSeq":{"type":"integer","minimum":0},"changelog":{"type":"string"},"artifactSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"artifactSize":{"type":"integer","minimum":0},"artifactFormat":{"const":"ntpkg"},"signature":{"type":"string"},"signatureKeyId":{"type":"string"},"publisherUserId":{"type":"string"},"createdAt":{"type":"string"},"compatibility":{"type":"object"},"capabilityManifest":{"type":"object"},"scanState":{"type":"string"},"channel":{"type":"string","enum":["stable","beta"]},"target":{"type":"object","properties":{"key":{"type":"string","enum":["universal","darwin-arm64","darwin-x64","linux-x64-glibc","linux-arm64-glibc","linux-x64-musl","linux-arm64-musl","windows-x64","windows-arm64"]},"os":{"type":"string"},"arch":{"type":"string"},"libc":{"type":"string"}},"required":["key","os","arch","libc"],"additionalProperties":true},"signedRelease":{"$ref":"#/components/schemas/SignedReleaseEnvelope"}},"required":["publishState","version","releaseSeq","artifactSha256","artifactSize","signature","signatureKeyId","capabilityManifest"],"additionalProperties":true},"ResolveResponse":{"oneOf":[{"type":"object","properties":{"package":{"type":"object"},"version":{"$ref":"#/components/schemas/ResolvedVersion"},"download":{"type":"object","properties":{"url":{"type":"string"},"expiresInSeconds":{"const":60}},"required":["url","expiresInSeconds"],"additionalProperties":true},"assignment":{"type":"object"},"resolution":{"$ref":"#/components/schemas/Resolution"},"installed":{"anyOf":[{"$ref":"#/components/schemas/InstalledReleaseState"},{"type":"null"}]}},"required":["package","version","download"],"additionalProperties":true},{"type":"object","properties":{"package":{"type":"object"},"upToDate":{"const":true},"resolution":{"$ref":"#/components/schemas/Resolution"},"installed":{"$ref":"#/components/schemas/InstalledReleaseState"}},"required":["package","upToDate","resolution","installed"],"additionalProperties":true}]},"RejectResponse":{"type":"object","properties":{"ok":{"const":true},"version":{"type":"string"},"publishState":{"const":"rejected"}},"required":["ok","version","publishState"],"additionalProperties":true},"GrantManifestEntry":{"type":"object","properties":{"pluginId":{"type":"string"},"versionRange":{"type":"string"},"channels":{"type":"array","items":{"type":"string","enum":["stable","beta"]},"minItems":1,"maxItems":2},"notBefore":{"type":"integer","minimum":0},"expiresAt":{"type":"integer","minimum":0},"artifactSha256":{"type":"string","pattern":"^([a-f0-9]{64})?$"},"minReleaseSeq":{"type":"integer","minimum":0},"source":{"type":"string","enum":["org_membership","purchase","access_request","contract","neotask_admin","free_catalog"]},"blockedReleases":{"type":"array","maxItems":64,"items":{"type":"object","properties":{"releaseSeq":{"type":"integer","minimum":0},"artifactSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["releaseSeq","artifactSha256"],"additionalProperties":false}}},"required":["pluginId","versionRange","channels","notBefore","expiresAt","artifactSha256","minReleaseSeq","source","blockedReleases"],"additionalProperties":false},"GrantManifestV1":{"type":"object","properties":{"domain":{"const":"NEOTASK-CONSTRUCT-GRANTS-V1"},"issuer":{"type":"string"},"audience":{"const":"neotask-gateway"},"tenantId":{"type":"string"},"installationId":{"type":"string","pattern":"^[A-Za-z0-9_-]{22}$"},"issuedAt":{"type":"integer","minimum":0},"expiresAt":{"type":"integer","minimum":0},"grants":{"type":"array","maxItems":2000,"items":{"$ref":"#/components/schemas/GrantManifestEntry"}}},"required":["domain","issuer","audience","tenantId","installationId","issuedAt","expiresAt","grants"],"additionalProperties":false},"SignedGrantManifestEnvelope":{"type":"object","properties":{"format":{"const":"NEOTASK-CONSTRUCT-GRANTS-V1"},"manifest":{"$ref":"#/components/schemas/GrantManifestV1"},"signatures":{"type":"array","items":{"type":"object","properties":{"keyId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,64}$"},"algorithm":{"const":"Ed25519"},"signature":{"type":"string"}},"required":["keyId","algorithm","signature"],"additionalProperties":false},"minItems":1,"maxItems":4}},"required":["format","manifest","signatures"],"additionalProperties":false},"CatalogSnapshotEntry":{"type":"object","properties":{"ref":{"type":"string"},"displayName":{"type":"string"},"summary":{"type":"string"},"family":{"type":"string","enum":["code-plugin","bundle-plugin","skill"]},"official":{"type":"boolean"},"provenance":{"anyOf":[{"type":"string","enum":["inspected","source-linked","attested","reproduced"]},{"type":"null"}]},"channels":{"type":"object","properties":{"stable":{"anyOf":[{"type":"object","properties":{"version":{"type":"string"},"releaseSeq":{"type":"integer","minimum":0},"publishedAt":{"type":"string","format":"date-time"}},"required":["version","releaseSeq","publishedAt"],"additionalProperties":true},{"type":"null"}]},"beta":{"anyOf":[{"type":"object","properties":{"version":{"type":"string"},"releaseSeq":{"type":"integer","minimum":0},"publishedAt":{"type":"string","format":"date-time"}},"required":["version","releaseSeq","publishedAt"],"additionalProperties":true},{"type":"null"}]}},"required":["stable","beta"],"additionalProperties":true},"categories":{"type":"array","items":{"type":"string"}}},"required":["ref","displayName","summary","family","official","provenance","channels","categories"],"additionalProperties":false},"CatalogSnapshotV1":{"type":"object","properties":{"domain":{"const":"NEOTASK-CONSTRUCT-CATALOG-V1"},"issuer":{"type":"string"},"audience":{"const":"neotask-gateway"},"family":{"type":"string","enum":["","code-plugin","bundle-plugin","skill"]},"sequence":{"type":"integer","minimum":1},"issuedAt":{"type":"integer","minimum":0},"expiresAt":{"type":"integer","minimum":0},"entryCount":{"type":"integer","minimum":0},"entriesSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["domain","issuer","audience","family","sequence","issuedAt","expiresAt","entryCount","entriesSha256"],"additionalProperties":false},"SignedCatalogSnapshot":{"type":"object","properties":{"format":{"const":"NEOTASK-CONSTRUCT-CATALOG-V1"},"manifest":{"$ref":"#/components/schemas/CatalogSnapshotV1"},"entries":{"type":"array","items":{"$ref":"#/components/schemas/CatalogSnapshotEntry"}},"signatures":{"type":"array","items":{"type":"object","properties":{"keyId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,64}$"},"algorithm":{"const":"Ed25519"},"signature":{"type":"string"}},"required":["keyId","algorithm","signature"],"additionalProperties":false},"minItems":1,"maxItems":4}},"required":["format","manifest","entries","signatures"],"additionalProperties":false},"ContentMatchRequest":{"type":"object","properties":{"contentSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"fileCount":{"type":"integer","minimum":1}},"required":["contentSha256","fileCount"],"additionalProperties":false},"ContentMatchResponse":{"type":"object","properties":{"match":{"anyOf":[{"type":"object","properties":{"version":{"type":"string"},"releaseSeq":{"type":"integer","minimum":0},"channel":{"type":"string","enum":["stable","beta"]}},"required":["version","releaseSeq","channel"],"additionalProperties":false},{"type":"null"}]}},"required":["match"],"additionalProperties":false},"PublisherProfile":{"allOf":[{"$ref":"#/components/schemas/PublisherRef"},{"type":"object","properties":{"bio":{"type":"string"},"avatarUrl":{"type":"string"},"websiteUrl":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"canManage":{"type":"boolean"}},"required":["bio","avatarUrl","websiteUrl","createdAt"],"additionalProperties":true}]},"PublisherProfileResponse":{"type":"object","properties":{"publisher":{"$ref":"#/components/schemas/PublisherProfile"},"packageCount":{"type":"integer","minimum":0}},"required":["publisher","packageCount"],"additionalProperties":true},"PublisherUpdateResponse":{"type":"object","properties":{"publisher":{"$ref":"#/components/schemas/PublisherProfile"}},"required":["publisher"],"additionalProperties":true},"PublisherProfilePatch":{"type":"object","properties":{"displayName":{"type":"string","minLength":1,"maxLength":80},"bio":{"type":"string","maxLength":1000},"avatarUrl":{"type":"string","format":"uri"},"websiteUrl":{"type":"string","format":"uri"}},"required":[],"additionalProperties":false},"PackagePatch":{"type":"object","properties":{"displayName":{"type":"string","minLength":1,"maxLength":80},"summary":{"type":"string","maxLength":1000},"description":{"type":"string","maxLength":20000},"showcase":{"type":"string","maxLength":20000},"iconUrl":{"type":"string"},"categories":{"type":"array","items":{"type":"string"},"maxItems":5},"links":{"type":"object","properties":{"homepage":{"type":"string"},"source":{"type":"string"},"docs":{"type":"string"},"support":{"type":"string"}},"required":[],"additionalProperties":false},"license":{"type":"string"}},"required":[],"additionalProperties":false},"PublisherPackageSummary":{"allOf":[{"$ref":"#/components/schemas/PackageSummary"},{"type":"object","properties":{"approvalState":{"type":"string","enum":["draft","pending_approval","approved","rejected"]},"moderationState":{"type":"string","enum":["approved","quarantined","revoked"]},"moderationReason":{"anyOf":[{"type":"string"},{"type":"null"}]},"movedTo":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["approvalState","moderationState","moderationReason","movedTo"],"additionalProperties":true}]},"PublisherPackageListResponse":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/PublisherPackageSummary"}},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["items","nextCursor"],"additionalProperties":true},"PackagePatchResponse":{"type":"object","properties":{"package":{"anyOf":[{"$ref":"#/components/schemas/PackageDetail"},{"$ref":"#/components/schemas/PackageSummary"}]}},"required":["package"],"additionalProperties":true},"StatsResponse":{"type":"object","properties":{"series":{"type":"array","items":{"type":"object","properties":{"day":{"type":"string","format":"date"},"downloads":{"type":"integer","minimum":0},"installs":{"type":"integer","minimum":0},"updates":{"type":"integer","minimum":0},"uninstalls":{"type":"integer","minimum":0}},"required":["day","downloads","installs","updates","uninstalls"],"additionalProperties":true}},"totals":{"type":"object","properties":{"downloads":{"type":"integer","minimum":0},"installs":{"type":"integer","minimum":0},"updates":{"type":"integer","minimum":0},"uninstalls":{"type":"integer","minimum":0}},"required":["downloads","installs","updates","uninstalls"],"additionalProperties":true}},"required":["series","totals"],"additionalProperties":true},"NameCheckResponse":{"type":"object","properties":{"available":{"type":"boolean"},"reason":{"type":"string","enum":["taken","reserved","confusable","invalid","cooldown"]},"normalized":{"type":"string"}},"required":["available","normalized"],"additionalProperties":true},"OwnershipTransfer":{"type":"object","properties":{"transferId":{"type":"string","pattern":"^trf_[a-f0-9]{32}$"},"package":{"type":"string"},"fromNamespace":{"type":"string"},"toNamespace":{"type":"string"},"state":{"type":"string","enum":["pending","accepted","rejected","cancelled","expired"]},"message":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"decidedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"newRef":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["transferId","package","fromNamespace","toNamespace","state","message","createdAt","expiresAt","decidedAt","newRef"],"additionalProperties":true},"TransferResponse":{"type":"object","properties":{"transfer":{"$ref":"#/components/schemas/OwnershipTransfer"}},"required":["transfer"],"additionalProperties":true},"TransferAcceptResponse":{"type":"object","properties":{"transfer":{"$ref":"#/components/schemas/OwnershipTransfer"},"package":{"type":"object"}},"required":["transfer","package"],"additionalProperties":true},"TransferListResponse":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/OwnershipTransfer"}},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["items","nextCursor"],"additionalProperties":true},"CiPublisherBinding":{"type":"object","properties":{"bindingId":{"type":"string","pattern":"^cib_[a-f0-9]{32}$"},"package":{"type":"string"},"provider":{"const":"github-actions"},"repository":{"type":"string"},"repositoryId":{"type":"string"},"ownerId":{"type":"string"},"workflowPath":{"type":"string"},"ref":{"type":"string"},"environment":{"type":"string"},"allowedEvents":{"type":"array","items":{"type":"string","enum":["workflow_dispatch","push","release"]}},"runnerEnvironment":{"type":"string","enum":["github-hosted","self-hosted","any"]},"channels":{"type":"array","items":{"type":"string","enum":["stable","beta"]}},"families":{"type":"array","items":{"type":"string","enum":["code-plugin","bundle-plugin","skill"]}},"requiredTargets":{"type":"array","items":{"type":"string"}},"createdBy":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["bindingId","package","provider","repository","workflowPath","ref","environment","channels","families","requiredTargets"],"additionalProperties":true},"CiPublisherBindingResponse":{"type":"object","properties":{"binding":{"anyOf":[{"$ref":"#/components/schemas/CiPublisherBinding"},{"type":"null"}]}},"required":["binding"],"additionalProperties":true},"ReleaseMutationResponse":{"type":"object","properties":{"release":{"$ref":"#/components/schemas/ReleaseSummary"}},"required":["release"],"additionalProperties":true},"StarResponse":{"type":"object","properties":{"starred":{"type":"boolean"},"stars":{"type":"integer","minimum":0}},"required":["starred","stars"],"additionalProperties":true},"StarListResponse":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/PackageSummary"}},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["items","nextCursor"],"additionalProperties":true},"Report":{"type":"object","properties":{"reportId":{"type":"string","pattern":"^rpt_[a-f0-9]{32}$"},"package":{"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]},"reason":{"type":"string","enum":["malware","security","credential_theft","impersonation","spam","license","broken","other"]},"state":{"type":"string","enum":["open","triaged","confirmed","dismissed"]},"outcome":{"anyOf":[{"type":"string","enum":["none","quarantine","revoke"]},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["reportId","package","version","reason","state","outcome","createdAt","updatedAt"],"additionalProperties":true},"ReportResponse":{"type":"object","properties":{"report":{"$ref":"#/components/schemas/Report"}},"required":["report"],"additionalProperties":true},"ReportListResponse":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Report"}},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["items","nextCursor"],"additionalProperties":true},"Appeal":{"type":"object","properties":{"appealId":{"type":"string","pattern":"^apl_[a-f0-9]{32}$"},"package":{"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]},"moderationEventId":{"type":"string"},"state":{"type":"string","enum":["open","accepted","rejected"]},"createdAt":{"type":"string","format":"date-time"},"decidedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]}},"required":["appealId","package","version","moderationEventId","state","createdAt","decidedAt"],"additionalProperties":true},"AppealResponse":{"type":"object","properties":{"appeal":{"$ref":"#/components/schemas/Appeal"}},"required":["appeal"],"additionalProperties":true},"AppealListResponse":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Appeal"}},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["items","nextCursor"],"additionalProperties":true},"FeaturedCollection":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"packages":{"type":"array","items":{"type":"string"}},"order":{"type":"integer"},"startsAt":{"type":"string","format":"date-time"},"endsAt":{"type":"string","format":"date-time"}},"required":["id","title","description","packages","order"],"additionalProperties":true},"FeaturedResponse":{"type":"object","properties":{"collections":{"type":"array","items":{"$ref":"#/components/schemas/FeaturedCollection"}}},"required":["collections"],"additionalProperties":true},"InstallReport":{"type":"object","properties":{"package":{"type":"string"},"version":{"type":"string"},"releaseSeq":{"type":"integer","minimum":0},"targetKey":{"type":"string"},"channel":{"type":"string","enum":["stable","beta"]},"event":{"type":"string","enum":["install","update","uninstall"]},"installationId":{"type":"string","pattern":"^[A-Za-z0-9_-]{22}$"},"source":{"type":"string","enum":["desktop","cli","dashboard"]},"gatewayVersion":{"type":"string"}},"required":["package","version","releaseSeq","targetKey","channel","event","installationId","source","gatewayVersion"],"additionalProperties":false},"InstallReportResponse":{"type":"object","properties":{"accepted":{"const":true},"deduplicated":{"type":"boolean"}},"required":["accepted","deduplicated"],"additionalProperties":true},"ConstructViewer":{"type":"object","properties":{"principal":{"type":"object","properties":{"kind":{"type":"string","enum":["user","agent","desktop","dashboard"]},"id":{"type":"string"},"displayName":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["kind","id","displayName"],"additionalProperties":true},"tenant":{"type":"object","properties":{"id":{"type":"string"},"slug":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"role":{"anyOf":[{"type":"string","enum":["owner","admin","employee","viewer"]},{"type":"null"}]}},"required":["id","slug","name","role"],"additionalProperties":true},"isNeotaskAdmin":{"type":"boolean"},"publisherNamespaces":{"type":"array","items":{"type":"object","properties":{"handle":{"type":"string"},"role":{"type":"string","enum":["owner","admin"]}},"required":["handle","role"],"additionalProperties":true}},"capabilities":{"type":"object","properties":{"publish":{"type":"boolean"},"approve":{"type":"boolean"},"report":{"type":"boolean"},"star":{"type":"boolean"}},"required":["publish","approve","report","star"],"additionalProperties":true},"session":{"type":"object","properties":{"kind":{"type":"string","enum":["web","construct_web","license","agent","dashboard"]},"expiresAt":{"type":"string","format":"date-time"},"reauthRequiredForSensitive":{"type":"boolean"}},"required":["kind","expiresAt","reauthRequiredForSensitive"],"additionalProperties":true}},"required":["principal","tenant","isNeotaskAdmin","publisherNamespaces","capabilities","session"],"additionalProperties":true},"PublishedTargetVerification":{"type":"object","properties":{"key":{"type":"string","enum":["universal","darwin-arm64","darwin-x64","linux-x64-glibc","linux-arm64-glibc","linux-x64-musl","linux-arm64-musl","windows-x64","windows-arm64"]},"signedRelease":{"$ref":"#/components/schemas/SignedReleaseEnvelope"},"v1Signature":{"type":"object","properties":{"keyId":{"type":"string"},"signature":{"type":"string"},"publisherUserId":{"type":"string"},"createdAt":{"type":"string"}},"required":["keyId","signature","publisherUserId","createdAt"],"additionalProperties":true},"download":{"type":"object","properties":{"url":{"type":"string"},"expiresInSeconds":{"const":60}},"required":["url","expiresInSeconds"],"additionalProperties":true}},"required":["key","signedRelease","download"],"additionalProperties":true},"CiExistingReleaseResponse":{"type":"object","properties":{"release":{"type":"object","properties":{"version":{"type":"string"},"releaseSeq":{"type":"integer","minimum":0},"channel":{"type":"string","enum":["stable","beta"]},"publishedAt":{"type":"string","format":"date-time"},"targets":{"type":"array","items":{"$ref":"#/components/schemas/PublishedTargetVerification"}}},"required":["version","releaseSeq","channel","publishedAt","targets"],"additionalProperties":true}},"required":["release"],"additionalProperties":true},"CiTokenRequest":{"type":"object","properties":{"oidcToken":{"type":"string"},"request":{"type":"object","properties":{"package":{"type":"string"},"version":{"type":"string"},"family":{"type":"string","enum":["code-plugin","bundle-plugin","skill"]},"channel":{"type":"string","enum":["stable","beta"]},"inventorySha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"purpose":{"type":"string","enum":["publish","verify"]}},"required":["package","version","family","channel","inventorySha256"],"additionalProperties":false}},"required":["oidcToken","request"],"additionalProperties":false},"CiTokenResponse":{"type":"object","properties":{"token":{"type":"string"},"tokenType":{"const":"Bearer"},"expiresInSeconds":{"const":900},"binding":{"type":"object","properties":{"bindingId":{"type":"string","pattern":"^cib_[a-f0-9]{32}$"},"package":{"type":"string"}},"required":["bindingId","package"],"additionalProperties":true}},"required":["token","tokenType","expiresInSeconds","binding"],"additionalProperties":true},"PublishInventory":{"type":"object","properties":{"schema":{"const":"construct.publish-inventory/1"},"includedWith":{"type":"array","items":{"type":"string","enum":["desktop","cli"]},"maxItems":2,"uniqueItems":true},"package":{"type":"string"},"version":{"type":"string"},"family":{"type":"string","enum":["code-plugin","bundle-plugin","skill"]},"channel":{"type":"string","enum":["stable","beta"]},"displayName":{"type":"string","maxLength":120},"summary":{"type":"string","maxLength":1000},"changelog":{"type":"string","maxLength":20000},"compatibility":{"type":"object","properties":{"pluginApiRange":{"type":"string"},"minGatewayVersion":{"type":"string"},"builtWithVersion":{"type":"string"}},"required":["pluginApiRange","minGatewayVersion","builtWithVersion"],"additionalProperties":false},"targets":{"type":"array","minItems":1,"items":{"type":"object","properties":{"key":{"type":"string","enum":["universal","darwin-arm64","darwin-x64","linux-x64-glibc","linux-arm64-glibc","linux-x64-musl","linux-arm64-musl","windows-x64","windows-arm64"]},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"size":{"type":"integer","minimum":1},"dependencyInventorySha256":{"type":"string","pattern":"^(?:[a-f0-9]{64})?$"},"contentSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["key","sha256","size","dependencyInventorySha256","contentSha256"],"additionalProperties":false}},"source":{"type":"object","properties":{"repository":{"type":"string"},"repositoryId":{"type":"string"},"commit":{"type":"string"},"ref":{"type":"string"},"workflowPath":{"type":"string"},"runId":{"type":"string"},"runAttempt":{"type":"string"}},"required":["repository","repositoryId","commit","ref","workflowPath","runId","runAttempt"],"additionalProperties":false}},"required":["schema","package","version","family","channel","displayName","summary","changelog","compatibility","targets","source"],"additionalProperties":false},"UploadCapability":{"type":"object","properties":{"targetKey":{"type":"string","enum":["universal","darwin-arm64","darwin-x64","linux-x64-glibc","linux-arm64-glibc","linux-x64-musl","linux-arm64-musl","windows-x64","windows-arm64"]},"method":{"const":"PUT"},"url":{"type":"string"},"headers":{"type":"object","additionalProperties":{"type":"string"}},"expiresAt":{"type":"string","format":"date-time"}},"required":["targetKey","method","url","headers","expiresAt"],"additionalProperties":true},"PublishRunCreateResponse":{"type":"object","properties":{"runId":{"type":"string"},"state":{"const":"awaiting_uploads"},"expiresAt":{"type":"string","format":"date-time"},"uploads":{"type":"array","items":{"$ref":"#/components/schemas/UploadCapability"}}},"required":["runId","state","expiresAt","uploads"],"additionalProperties":true},"PublishRun":{"type":"object","properties":{"runId":{"type":"string"},"package":{"type":"string"},"version":{"type":"string"},"channel":{"type":"string","enum":["stable","beta"]},"state":{"type":"string","enum":["awaiting_uploads","checking","ready_to_finalize","finalizing","published","blocked","failed","expired","cancelled"]},"targets":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","enum":["universal","darwin-arm64","darwin-x64","linux-x64-glibc","linux-arm64-glibc","linux-x64-musl","linux-arm64-musl","windows-x64","windows-arm64"]},"uploaded":{"type":"boolean"},"verified":{"type":"boolean"}},"required":["key","uploaded","verified"],"additionalProperties":true}},"checks":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string","enum":["pending","pass","fail","error"]},"detail":{"type":"string"}},"required":["id","status"],"additionalProperties":true}},"findings":{"type":"array","items":{"$ref":"#/components/schemas/Finding"}},"attempts":{"type":"integer","minimum":0},"release":{"anyOf":[{"type":"object","properties":{"version":{"type":"string"},"releaseSeq":{"type":"integer","minimum":0},"channel":{"type":"string","enum":["stable","beta"]},"publishedAt":{"type":"string","format":"date-time"},"targets":{"type":"array","items":{"$ref":"#/components/schemas/PublishedTargetVerification"}}},"required":["version","releaseSeq","channel","publishedAt","targets"],"additionalProperties":true},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"}},"required":["runId","package","version","channel","state","targets","checks","findings","attempts","release","createdAt","updatedAt","expiresAt"],"additionalProperties":true},"PublishRunStateResponse":{"type":"object","properties":{"runId":{"type":"string"},"state":{"type":"string","enum":["awaiting_uploads","checking","ready_to_finalize","finalizing","published","blocked","failed","expired","cancelled"]}},"required":["state"],"additionalProperties":true},"UploadReissueResponse":{"type":"object","properties":{"upload":{"$ref":"#/components/schemas/UploadCapability"}},"required":["upload"],"additionalProperties":true}},"securitySchemes":{"siteAccess":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"A Site access token for the tenant."},"constructPublish":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"A Construct publish token (typ construct_publish) from POST /ci/token."}}}}