naftiko: 1.0.0-alpha2 info: label: Pulumi APIs — Registry description: 'Pulumi APIs — Registry. 15 operations. Lead operation: ListPackages. Self-contained Naftiko capability covering one Pulumi business surface.' tags: - Pulumi - Registry created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: PULUMI_API_KEY: PULUMI_API_KEY capability: consumes: - type: http namespace: pulumi-registry baseUri: '' description: Pulumi APIs — Registry business capability. Self-contained, no shared references. resources: - name: api-registry-packages path: /api/registry/packages operations: - name: listpackages method: GET description: ListPackages outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: asc in: query type: boolean description: When true, sort results in ascending order - name: continuationToken in: query type: string description: Pagination token for retrieving the next page of results - name: limit in: query type: integer description: 'Results per page (default: 100)' - name: name in: query type: string description: Filter by specific package name - name: orgLogin in: query type: string description: Filter by owning organization - name: packageType in: query type: string description: Filter by package type - name: publisher in: query type: string description: Filter by publisher organization - name: search in: query type: string description: Search query string - name: sort in: query type: string description: Sort field for results - name: usage in: query type: string description: Filter by usage type - name: visibility in: query type: string description: Filter by visibility level - name: api-registry-packages-source-publisher-name-versions path: /api/registry/packages/{source}/{publisher}/{name}/versions operations: - name: postpublishpackageversion method: POST description: PostPublishPackageVersion outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: source in: path type: string description: 'The package source: ''pulumi'', ''opentofu'', or ''private''' required: true - name: publisher in: path type: string description: Organization that owns the package required: true - name: name in: path type: string description: The package name required: true - name: body in: body type: object description: Request body (JSON). required: false - name: api-registry-packages-source-publisher-name-versions-version path: /api/registry/packages/{source}/{publisher}/{name}/versions/{version} operations: - name: deletepublishpackageversion method: DELETE description: DeletePublishPackageVersion outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: source in: path type: string description: 'The package source: ''pulumi'', ''opentofu'', or ''private''' required: true - name: publisher in: path type: string description: Organization that owns the package required: true - name: name in: path type: string description: The package name required: true - name: version in: path type: string description: Semantic version string of the package version to delete required: true - name: getpackageversion method: GET description: GetPackageVersion outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: source in: path type: string description: 'The package source: ''pulumi'', ''opentofu'', or ''private''' required: true - name: publisher in: path type: string description: Organization that owns the package required: true - name: name in: path type: string description: The package name required: true - name: version in: path type: string description: Semantic version string or 'latest' required: true - name: api-registry-packages-source-publisher-name-versions-version-complete path: /api/registry/packages/{source}/{publisher}/{name}/versions/{version}/complete operations: - name: postpublishpackageversioncomplete method: POST description: PostPublishPackageVersionComplete outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: source in: path type: string description: 'The package source: ''pulumi'', ''opentofu'', or ''private''' required: true - name: publisher in: path type: string description: Organization that owns the package required: true - name: name in: path type: string description: The package name required: true - name: version in: path type: string description: Semantic version string of the package version to complete required: true - name: body in: body type: object description: Request body (JSON). required: false - name: api-registry-packages-source-publisher-name-versions-version-docs-token path: /api/registry/packages/{source}/{publisher}/{name}/versions/{version}/docs/{token} operations: - name: getpackagedocs method: GET description: GetPackageDocs outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: source in: path type: string description: 'The package source: ''pulumi'', ''opentofu'', or ''private''' required: true - name: publisher in: path type: string description: Organization that owns the package required: true - name: name in: path type: string description: The package name required: true - name: version in: path type: string description: Semantic version string or 'latest' required: true - name: token in: path type: string description: URL-encoded Pulumi token identifying the resource or function required: true - name: lang in: query type: string description: 'Language for filtering property names, types, descriptions, and code examples. Values: typescript, python, go, csharp, java, yaml' required: true - name: os in: query type: string description: 'Filter OS choosers in descriptions to a single OS. Values: linux, macos, windows' - name: api-registry-packages-source-publisher-name-versions-version-installation path: /api/registry/packages/{source}/{publisher}/{name}/versions/{version}/installation operations: - name: getpackageinstallation method: GET description: GetPackageInstallation outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: source in: path type: string description: 'The package source: ''pulumi'', ''opentofu'', or ''private''' required: true - name: publisher in: path type: string description: Organization that owns the package required: true - name: name in: path type: string description: The package name required: true - name: version in: path type: string description: Semantic version string or 'latest' required: true - name: lang in: query type: string description: 'Filter language-specific content to a single language. Values: typescript, python, go, csharp, java, yaml' - name: os in: query type: string description: 'Filter OS-specific content to a single OS. Values: linux, macos, windows' - name: api-registry-packages-source-publisher-name-versions-version-nav path: /api/registry/packages/{source}/{publisher}/{name}/versions/{version}/nav operations: - name: getpackagenav method: GET description: GetPackageNav outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: source in: path type: string description: 'The package source: ''pulumi'', ''opentofu'', or ''private''' required: true - name: publisher in: path type: string description: Organization that owns the package required: true - name: name in: path type: string description: The package name required: true - name: version in: path type: string description: Semantic version string or 'latest' required: true - name: lang in: query type: string description: 'Language for name resolution. Names are resolved for this language with a fallback chain: requested language, then Go, then first available. Values: typescript,' - name: q in: query type: string description: Search query for filtering the navigation tree. Case-insensitive matching against resource/function names and tokens - name: api-registry-packages-source-publisher-name-versions-version-readme path: /api/registry/packages/{source}/{publisher}/{name}/versions/{version}/readme operations: - name: getpackagereadme method: GET description: GetPackageReadme outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: source in: path type: string description: 'The package source: ''pulumi'', ''opentofu'', or ''private''' required: true - name: publisher in: path type: string description: Organization that owns the package required: true - name: name in: path type: string description: The package name required: true - name: version in: path type: string description: Semantic version string or 'latest' required: true - name: lang in: query type: string description: 'Filter language-specific content to a single language. Values: typescript, python, go, csharp, java, yaml' - name: os in: query type: string description: 'Filter OS-specific content to a single OS. Values: linux, macos, windows' - name: api-registry-templates path: /api/registry/templates operations: - name: listtemplates method: GET description: ListTemplates outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: continuationToken in: query type: string description: Pagination token for retrieving the next page of results - name: limit in: query type: integer description: 'Maximum number of results to return (default: 100)' - name: name in: query type: string description: Filter by specific template name - name: orgLogin in: query type: string description: Filter by owning organization - name: search in: query type: string description: 'Search query matching template name, display name, description, metadata values, or runtime language. Multiple space-separated terms require all terms to match ' - name: api-registry-templates-source-publisher-name-versions path: /api/registry/templates/{source}/{publisher}/{name}/versions operations: - name: listtemplateversions method: GET description: ListTemplateVersions outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: source in: path type: string description: 'The template source: ''private'', ''github'', or ''gitlab''' required: true - name: publisher in: path type: string description: Organization that owns the template required: true - name: name in: path type: string description: The template name required: true - name: continuationToken in: query type: string description: Pagination token for retrieving the next page of results - name: limit in: query type: integer description: 'Maximum number of results to return (default: 100)' - name: postpublishtemplateversion method: POST description: PostPublishTemplateVersion outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: source in: path type: string description: 'The template source: ''private'', ''github'', or ''gitlab''' required: true - name: publisher in: path type: string description: Organization that owns the template required: true - name: name in: path type: string description: The template name required: true - name: body in: body type: object description: Request body (JSON). required: false - name: api-registry-templates-source-publisher-name-versions-version path: /api/registry/templates/{source}/{publisher}/{name}/versions/{version} operations: - name: deletetemplateversion method: DELETE description: DeleteTemplateVersion outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: source in: path type: string description: 'The template source: ''private'', ''github'', or ''gitlab''' required: true - name: publisher in: path type: string description: Organization that owns the template required: true - name: name in: path type: string description: The template name required: true - name: version in: path type: string description: Semantic version string of the template version to delete required: true - name: force in: query type: boolean description: When true, allows deletion of the final remaining template version - name: gettemplateversion method: GET description: GetTemplateVersion outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: source in: path type: string description: 'The template source: ''private'', ''github'', or ''gitlab''' required: true - name: publisher in: path type: string description: Organization that owns the template required: true - name: name in: path type: string description: The template name required: true - name: version in: path type: string description: Semantic version string or 'latest' required: true - name: api-registry-templates-source-publisher-name-versions-version-complete path: /api/registry/templates/{source}/{publisher}/{name}/versions/{version}/complete operations: - name: postpublishtemplateversioncomplete method: POST description: PostPublishTemplateVersionComplete outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: source in: path type: string description: 'The template source: ''private'', ''github'', or ''gitlab''' required: true - name: publisher in: path type: string description: Organization that owns the template required: true - name: name in: path type: string description: The template name required: true - name: version in: path type: string description: Semantic version string of the template version to complete required: true - name: body in: body type: object description: Request body (JSON). required: false exposes: - type: rest namespace: pulumi-registry-rest port: 8080 description: REST adapter for Pulumi APIs — Registry. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/api/registry/packages name: api-registry-packages description: REST surface for api-registry-packages. operations: - method: GET name: listpackages description: ListPackages call: pulumi-registry.listpackages with: asc: rest.asc continuationToken: rest.continuationToken limit: rest.limit name: rest.name orgLogin: rest.orgLogin packageType: rest.packageType publisher: rest.publisher search: rest.search sort: rest.sort usage: rest.usage visibility: rest.visibility outputParameters: - type: object mapping: $. - path: /v1/api/registry/packages/{source}/{publisher}/{name}/versions name: api-registry-packages-source-publisher-name-versions description: REST surface for api-registry-packages-source-publisher-name-versions. operations: - method: POST name: postpublishpackageversion description: PostPublishPackageVersion call: pulumi-registry.postpublishpackageversion with: source: rest.source publisher: rest.publisher name: rest.name body: rest.body outputParameters: - type: object mapping: $. - path: /v1/api/registry/packages/{source}/{publisher}/{name}/versions/{version} name: api-registry-packages-source-publisher-name-versions-version description: REST surface for api-registry-packages-source-publisher-name-versions-version. operations: - method: DELETE name: deletepublishpackageversion description: DeletePublishPackageVersion call: pulumi-registry.deletepublishpackageversion with: source: rest.source publisher: rest.publisher name: rest.name version: rest.version outputParameters: - type: object mapping: $. - method: GET name: getpackageversion description: GetPackageVersion call: pulumi-registry.getpackageversion with: source: rest.source publisher: rest.publisher name: rest.name version: rest.version outputParameters: - type: object mapping: $. - path: /v1/api/registry/packages/{source}/{publisher}/{name}/versions/{version}/complete name: api-registry-packages-source-publisher-name-versions-version-complete description: REST surface for api-registry-packages-source-publisher-name-versions-version-complete. operations: - method: POST name: postpublishpackageversioncomplete description: PostPublishPackageVersionComplete call: pulumi-registry.postpublishpackageversioncomplete with: source: rest.source publisher: rest.publisher name: rest.name version: rest.version body: rest.body outputParameters: - type: object mapping: $. - path: /v1/api/registry/packages/{source}/{publisher}/{name}/versions/{version}/docs/{token} name: api-registry-packages-source-publisher-name-versions-version-docs-token description: REST surface for api-registry-packages-source-publisher-name-versions-version-docs-token. operations: - method: GET name: getpackagedocs description: GetPackageDocs call: pulumi-registry.getpackagedocs with: source: rest.source publisher: rest.publisher name: rest.name version: rest.version token: rest.token lang: rest.lang os: rest.os outputParameters: - type: object mapping: $. - path: /v1/api/registry/packages/{source}/{publisher}/{name}/versions/{version}/installation name: api-registry-packages-source-publisher-name-versions-version-installation description: REST surface for api-registry-packages-source-publisher-name-versions-version-installation. operations: - method: GET name: getpackageinstallation description: GetPackageInstallation call: pulumi-registry.getpackageinstallation with: source: rest.source publisher: rest.publisher name: rest.name version: rest.version lang: rest.lang os: rest.os outputParameters: - type: object mapping: $. - path: /v1/api/registry/packages/{source}/{publisher}/{name}/versions/{version}/nav name: api-registry-packages-source-publisher-name-versions-version-nav description: REST surface for api-registry-packages-source-publisher-name-versions-version-nav. operations: - method: GET name: getpackagenav description: GetPackageNav call: pulumi-registry.getpackagenav with: source: rest.source publisher: rest.publisher name: rest.name version: rest.version lang: rest.lang q: rest.q outputParameters: - type: object mapping: $. - path: /v1/api/registry/packages/{source}/{publisher}/{name}/versions/{version}/readme name: api-registry-packages-source-publisher-name-versions-version-readme description: REST surface for api-registry-packages-source-publisher-name-versions-version-readme. operations: - method: GET name: getpackagereadme description: GetPackageReadme call: pulumi-registry.getpackagereadme with: source: rest.source publisher: rest.publisher name: rest.name version: rest.version lang: rest.lang os: rest.os outputParameters: - type: object mapping: $. - path: /v1/api/registry/templates name: api-registry-templates description: REST surface for api-registry-templates. operations: - method: GET name: listtemplates description: ListTemplates call: pulumi-registry.listtemplates with: continuationToken: rest.continuationToken limit: rest.limit name: rest.name orgLogin: rest.orgLogin search: rest.search outputParameters: - type: object mapping: $. - path: /v1/api/registry/templates/{source}/{publisher}/{name}/versions name: api-registry-templates-source-publisher-name-versions description: REST surface for api-registry-templates-source-publisher-name-versions. operations: - method: GET name: listtemplateversions description: ListTemplateVersions call: pulumi-registry.listtemplateversions with: source: rest.source publisher: rest.publisher name: rest.name continuationToken: rest.continuationToken limit: rest.limit outputParameters: - type: object mapping: $. - method: POST name: postpublishtemplateversion description: PostPublishTemplateVersion call: pulumi-registry.postpublishtemplateversion with: source: rest.source publisher: rest.publisher name: rest.name body: rest.body outputParameters: - type: object mapping: $. - path: /v1/api/registry/templates/{source}/{publisher}/{name}/versions/{version} name: api-registry-templates-source-publisher-name-versions-version description: REST surface for api-registry-templates-source-publisher-name-versions-version. operations: - method: DELETE name: deletetemplateversion description: DeleteTemplateVersion call: pulumi-registry.deletetemplateversion with: source: rest.source publisher: rest.publisher name: rest.name version: rest.version force: rest.force outputParameters: - type: object mapping: $. - method: GET name: gettemplateversion description: GetTemplateVersion call: pulumi-registry.gettemplateversion with: source: rest.source publisher: rest.publisher name: rest.name version: rest.version outputParameters: - type: object mapping: $. - path: /v1/api/registry/templates/{source}/{publisher}/{name}/versions/{version}/complete name: api-registry-templates-source-publisher-name-versions-version-complete description: REST surface for api-registry-templates-source-publisher-name-versions-version-complete. operations: - method: POST name: postpublishtemplateversioncomplete description: PostPublishTemplateVersionComplete call: pulumi-registry.postpublishtemplateversioncomplete with: source: rest.source publisher: rest.publisher name: rest.name version: rest.version body: rest.body outputParameters: - type: object mapping: $. - type: mcp namespace: pulumi-registry-mcp port: 9090 transport: http description: MCP adapter for Pulumi APIs — Registry. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: listpackages description: ListPackages hints: readOnly: true destructive: false idempotent: true call: pulumi-registry.listpackages with: asc: tools.asc continuationToken: tools.continuationToken limit: tools.limit name: tools.name orgLogin: tools.orgLogin packageType: tools.packageType publisher: tools.publisher search: tools.search sort: tools.sort usage: tools.usage visibility: tools.visibility outputParameters: - type: object mapping: $. - name: postpublishpackageversion description: PostPublishPackageVersion hints: readOnly: false destructive: false idempotent: false call: pulumi-registry.postpublishpackageversion with: source: tools.source publisher: tools.publisher name: tools.name body: tools.body outputParameters: - type: object mapping: $. - name: deletepublishpackageversion description: DeletePublishPackageVersion hints: readOnly: false destructive: true idempotent: true call: pulumi-registry.deletepublishpackageversion with: source: tools.source publisher: tools.publisher name: tools.name version: tools.version outputParameters: - type: object mapping: $. - name: getpackageversion description: GetPackageVersion hints: readOnly: true destructive: false idempotent: true call: pulumi-registry.getpackageversion with: source: tools.source publisher: tools.publisher name: tools.name version: tools.version outputParameters: - type: object mapping: $. - name: postpublishpackageversioncomplete description: PostPublishPackageVersionComplete hints: readOnly: false destructive: false idempotent: false call: pulumi-registry.postpublishpackageversioncomplete with: source: tools.source publisher: tools.publisher name: tools.name version: tools.version body: tools.body outputParameters: - type: object mapping: $. - name: getpackagedocs description: GetPackageDocs hints: readOnly: true destructive: false idempotent: true call: pulumi-registry.getpackagedocs with: source: tools.source publisher: tools.publisher name: tools.name version: tools.version token: tools.token lang: tools.lang os: tools.os outputParameters: - type: object mapping: $. - name: getpackageinstallation description: GetPackageInstallation hints: readOnly: true destructive: false idempotent: true call: pulumi-registry.getpackageinstallation with: source: tools.source publisher: tools.publisher name: tools.name version: tools.version lang: tools.lang os: tools.os outputParameters: - type: object mapping: $. - name: getpackagenav description: GetPackageNav hints: readOnly: true destructive: false idempotent: true call: pulumi-registry.getpackagenav with: source: tools.source publisher: tools.publisher name: tools.name version: tools.version lang: tools.lang q: tools.q outputParameters: - type: object mapping: $. - name: getpackagereadme description: GetPackageReadme hints: readOnly: true destructive: false idempotent: true call: pulumi-registry.getpackagereadme with: source: tools.source publisher: tools.publisher name: tools.name version: tools.version lang: tools.lang os: tools.os outputParameters: - type: object mapping: $. - name: listtemplates description: ListTemplates hints: readOnly: true destructive: false idempotent: true call: pulumi-registry.listtemplates with: continuationToken: tools.continuationToken limit: tools.limit name: tools.name orgLogin: tools.orgLogin search: tools.search outputParameters: - type: object mapping: $. - name: listtemplateversions description: ListTemplateVersions hints: readOnly: true destructive: false idempotent: true call: pulumi-registry.listtemplateversions with: source: tools.source publisher: tools.publisher name: tools.name continuationToken: tools.continuationToken limit: tools.limit outputParameters: - type: object mapping: $. - name: postpublishtemplateversion description: PostPublishTemplateVersion hints: readOnly: false destructive: false idempotent: false call: pulumi-registry.postpublishtemplateversion with: source: tools.source publisher: tools.publisher name: tools.name body: tools.body outputParameters: - type: object mapping: $. - name: deletetemplateversion description: DeleteTemplateVersion hints: readOnly: false destructive: true idempotent: true call: pulumi-registry.deletetemplateversion with: source: tools.source publisher: tools.publisher name: tools.name version: tools.version force: tools.force outputParameters: - type: object mapping: $. - name: gettemplateversion description: GetTemplateVersion hints: readOnly: true destructive: false idempotent: true call: pulumi-registry.gettemplateversion with: source: tools.source publisher: tools.publisher name: tools.name version: tools.version outputParameters: - type: object mapping: $. - name: postpublishtemplateversioncomplete description: PostPublishTemplateVersionComplete hints: readOnly: false destructive: false idempotent: false call: pulumi-registry.postpublishtemplateversioncomplete with: source: tools.source publisher: tools.publisher name: tools.name version: tools.version body: tools.body outputParameters: - type: object mapping: $.