{"_id":"@bcgov/csit-microcks-backend-backstage-plugin","_rev":"11-f566df95b4abe5b9abcbfe0fd4aa46a5","name":"@bcgov/csit-microcks-backend-backstage-plugin","dist-tags":{"dev":"0.1.0-feature.aps-4105-connect-pipelines.86dd1a72","latest":"0.1.1-main.c822a801"},"versions":{"0.0.0":{"name":"@bcgov/csit-microcks-backend-backstage-plugin","version":"0.0.0","license":"Apache-2.0","_id":"@bcgov/csit-microcks-backend-backstage-plugin@0.0.0","maintainers":[{"name":"jleach","email":"jason.leach@fullboar.ca"},{"name":"shellyxuehan","email":"shelly.han@gov.bc.ca"},{"name":"parcjason","email":"jsherman@parcsystems.ca"},{"name":"akroon3r","email":"adamkroon47@gmail.com"},{"name":"bc-gov-common-services","email":"NR.CommonServiceShowcase@gov.bc.ca"},{"name":"nicoledegreef","email":"Nicole.degreef@gov.bc.ca"},{"name":"qqnluaq","email":"benjubb+npm@gmail.com"},{"name":"jujaga","email":"jujaga@gmail.com"},{"name":"dgboss","email":"darren.boss@gov.bc.ca"},{"name":"ty2k","email":"tylerkrys@gmail.com"},{"name":"michael.nelson.gov.bc.ca","email":"michael.nelson@gov.bc.ca"},{"name":"mgranbois","email":"mgranbois@outlook.com"},{"name":"sheaphillips","email":"shea.phillips@gmail.com"},{"name":"citzcodemvp","email":"citz.codemvp@gov.bc.ca"},{"name":"sidmclaughlin","email":"sidmclaughlin@gmail.com"},{"name":"taylorfries","email":"taylor.friesen@gov.bc.ca"},{"name":"bradenmitchell","email":"braden.mitchell@gov.bc.ca"},{"name":"irfan.charania","email":"irfan.charania@gmail.com"},{"name":"stoews","email":"scott.toews@gov.bc.ca"},{"name":"mkernohanbc","email":"marcus.kernohan@gov.bc.ca"},{"name":"supriya-arora","email":"jmc.supriya@gmail.com"},{"name":"danebenal","email":"dan.ebenal@gov.bc.ca"},{"name":"omprakashmishra","email":"omprakashmishra3978@gmail.com"},{"name":"galen.gray","email":"galen.gray@gov.bc.ca"},{"name":"fbarreta","email":"fbarreta@gmail.com"},{"name":"jimmypalelil","email":"jimmypalelil@gmail.com"}],"dist":{"shasum":"a98ae52d8e1383195b5ebb68d4ae9306f4a45f65","tarball":"https://registry.npmjs.org/@bcgov/csit-microcks-backend-backstage-plugin/-/csit-microcks-backend-backstage-plugin-0.0.0.tgz","fileCount":34,"integrity":"sha512-/j3ZLaAIR+XYoGZS+V5tcjw7fRxLGdXkPYD/poBvYJhYbaKDAlw0AUOvSwsdpUgCu2fPVWVxvE0Ty2t1a/0dEA==","signatures":[{"sig":"MEUCIAb5OSrl3+7zcgsaU7x0O4Gs4qjLOX/2V17nxwXyal/iAiEA9vtk3BD4jvgh3n2LfK//LLH+B19IA4SdWvmn8ZCQ63c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":310697},"main":"src/index.ts","types":"src/index.ts","gitHead":"b885fab5ecf510af764985c6fc39e5da3addbd5b","scripts":{"lint":"backstage-cli package lint","test":"backstage-cli package test","build":"backstage-cli package build","clean":"backstage-cli package clean","start":"backstage-cli package start","prepack":"backstage-cli package prepack","postpack":"backstage-cli package postpack"},"_npmUser":{"name":"danebenal","email":"dan.ebenal@gov.bc.ca"},"backstage":{"role":"backend-plugin","pluginId":"csit-microcks","pluginPackages":["@bcgov/csit-microcks-backend-backstage-plugin"]},"_npmVersion":"10.9.2","description":"This Backstage backend plugin synchronizes API mocks defined in a repository into a **Microcks** server.","directories":{},"_nodeVersion":"22.17.1","dependencies":{"zod":"^3.25.76","express":"^4.14.0","@backstage/types":"backstage:^","@backstage/errors":"backstage:^","express-promise-router":"^4.1.0","@backstage/catalog-client":"backstage:^","@backstage/backend-defaults":"backstage:^","@backstage/backend-plugin-api":"backstage:^","@backstage/plugin-catalog-node":"backstage:^"},"publishConfig":{"main":"dist/index.cjs.js","types":"dist/index.d.ts","access":"public"},"_hasShrinkwrap":false,"devDependencies":{"supertest":"^6.2.4","@backstage/cli":"backstage:^","@types/express":"^4.17.6","@types/supertest":"^2.0.12","@backstage/backend-test-utils":"backstage:^"},"_npmOperationalInternal":{"tmp":"tmp/csit-microcks-backend-backstage-plugin_0.0.0_1776794721185_0.9893092458125292","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-feature.aps-4105-connect-pipelines.45701585":{"name":"@bcgov/csit-microcks-backend-backstage-plugin","version":"0.1.0-feature.aps-4105-connect-pipelines.45701585","license":"Apache-2.0","_id":"@bcgov/csit-microcks-backend-backstage-plugin@0.1.0-feature.aps-4105-connect-pipelines.45701585","maintainers":[{"name":"jleach","email":"jason.leach@fullboar.ca"},{"name":"shellyxuehan","email":"shelly.han@gov.bc.ca"},{"name":"parcjason","email":"jsherman@parcsystems.ca"},{"name":"akroon3r","email":"adamkroon47@gmail.com"},{"name":"bc-gov-common-services","email":"NR.CommonServiceShowcase@gov.bc.ca"},{"name":"nicoledegreef","email":"Nicole.degreef@gov.bc.ca"},{"name":"qqnluaq","email":"benjubb+npm@gmail.com"},{"name":"jujaga","email":"jujaga@gmail.com"},{"name":"dgboss","email":"darren.boss@gov.bc.ca"},{"name":"ty2k","email":"tylerkrys@gmail.com"},{"name":"michael.nelson.gov.bc.ca","email":"michael.nelson@gov.bc.ca"},{"name":"mgranbois","email":"mgranbois@outlook.com"},{"name":"sheaphillips","email":"shea.phillips@gmail.com"},{"name":"citzcodemvp","email":"citz.codemvp@gov.bc.ca"},{"name":"sidmclaughlin","email":"sidmclaughlin@gmail.com"},{"name":"taylorfries","email":"taylor.friesen@gov.bc.ca"},{"name":"bradenmitchell","email":"braden.mitchell@gov.bc.ca"},{"name":"irfan.charania","email":"irfan.charania@gmail.com"},{"name":"stoews","email":"scott.toews@gov.bc.ca"},{"name":"mkernohanbc","email":"marcus.kernohan@gov.bc.ca"},{"name":"supriya-arora","email":"jmc.supriya@gmail.com"},{"name":"danebenal","email":"dan.ebenal@gov.bc.ca"},{"name":"omprakashmishra","email":"omprakashmishra3978@gmail.com"},{"name":"galen.gray","email":"galen.gray@gov.bc.ca"},{"name":"fbarreta","email":"fbarreta@gmail.com"},{"name":"jimmypalelil","email":"jimmypalelil@gmail.com"}],"homepage":"https://github.com/bcgov/csit-backstage-microcks-plugin#readme","bugs":{"url":"https://github.com/bcgov/csit-backstage-microcks-plugin/issues"},"dist":{"shasum":"68019165eb5c054fb8d223afa055b7f09b36eaad","tarball":"https://registry.npmjs.org/@bcgov/csit-microcks-backend-backstage-plugin/-/csit-microcks-backend-backstage-plugin-0.1.0-feature.aps-4105-connect-pipelines.45701585.tgz","fileCount":34,"integrity":"sha512-HDnWTAJpIU+IqhPIeX+jmSb6+e3o0LfsTVlkAjH52sTF3V6xLsB2egenJK1ocw+Nqkq5k36BF6gj3ZdvyFEzhQ==","signatures":[{"sig":"MEUCIQDMcN2XsnCH/zrkWEZvuMGA5wQuRo34bJJgv5q4LKpE5QIgJBhqS2zLq6XBm83D8o10K2Y2VlTRbhqwiRWwqOsY19E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bcgov%2fcsit-microcks-backend-backstage-plugin@0.1.0-feature.aps-4105-connect-pipelines.45701585","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":310873},"main":"dist/index.cjs.js","_from":"file:/tmp/plugin-tarballs/@bcgov-csit-microcks-backend-backstage-plugin-0.1.0-feature.aps-4105-connect-pipelines.45701585.tgz","types":"dist/index.d.ts","scripts":{"lint":"backstage-cli package lint","test":"backstage-cli package test","build":"backstage-cli package build","clean":"backstage-cli package clean","start":"backstage-cli package start","prepack":"backstage-cli package prepack","postpack":"backstage-cli package postpack"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:24d20cba-55a2-4363-9321-dcda88a35598"}},"_resolved":"/tmp/plugin-tarballs/@bcgov-csit-microcks-backend-backstage-plugin-0.1.0-feature.aps-4105-connect-pipelines.45701585.tgz","backstage":{"role":"backend-plugin","features":{".":"@backstage/BackendFeature"},"pluginId":"csit-microcks","pluginPackages":["@bcgov/csit-microcks-backend-backstage-plugin"]},"_integrity":"sha512-HDnWTAJpIU+IqhPIeX+jmSb6+e3o0LfsTVlkAjH52sTF3V6xLsB2egenJK1ocw+Nqkq5k36BF6gj3ZdvyFEzhQ==","repository":{"url":"git+https://github.com/bcgov/csit-backstage-microcks-plugin.git","type":"git","directory":"plugins/csit-microcks-backend"},"_npmVersion":"11.13.0","description":"This Backstage backend plugin synchronizes API mocks defined in a repository into a **Microcks** server.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^3.25.76","express":"^4.14.0","@backstage/types":"^1.2.1","@backstage/errors":"^1.2.7","express-promise-router":"^4.1.0","@backstage/catalog-client":"^1.10.1","@backstage/backend-defaults":"^0.11.0","@backstage/backend-plugin-api":"^1.4.0","@backstage/plugin-catalog-node":"^1.17.1"},"publishConfig":{"main":"dist/index.cjs.js","types":"dist/index.d.ts","access":"public"},"typesVersions":{"*":{"package.json":["package.json"]}},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"supertest":"^6.2.4","@backstage/cli":"^0.33.0","@types/express":"^4.17.6","@types/supertest":"^2.0.12","@backstage/backend-test-utils":"^1.6.0"},"_npmOperationalInternal":{"tmp":"tmp/csit-microcks-backend-backstage-plugin_0.1.0-feature.aps-4105-connect-pipelines.45701585_1776970192473_0.19612403252398525","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-feature.aps-4105-connect-pipelines.fdf9b14e":{"name":"@bcgov/csit-microcks-backend-backstage-plugin","version":"0.1.0-feature.aps-4105-connect-pipelines.fdf9b14e","license":"Apache-2.0","_id":"@bcgov/csit-microcks-backend-backstage-plugin@0.1.0-feature.aps-4105-connect-pipelines.fdf9b14e","maintainers":[{"name":"jleach","email":"jason.leach@fullboar.ca"},{"name":"shellyxuehan","email":"shelly.han@gov.bc.ca"},{"name":"parcjason","email":"jsherman@parcsystems.ca"},{"name":"akroon3r","email":"adamkroon47@gmail.com"},{"name":"bc-gov-common-services","email":"NR.CommonServiceShowcase@gov.bc.ca"},{"name":"nicoledegreef","email":"Nicole.degreef@gov.bc.ca"},{"name":"qqnluaq","email":"benjubb+npm@gmail.com"},{"name":"jujaga","email":"jujaga@gmail.com"},{"name":"dgboss","email":"darren.boss@gov.bc.ca"},{"name":"ty2k","email":"tylerkrys@gmail.com"},{"name":"michael.nelson.gov.bc.ca","email":"michael.nelson@gov.bc.ca"},{"name":"mgranbois","email":"mgranbois@outlook.com"},{"name":"sheaphillips","email":"shea.phillips@gmail.com"},{"name":"citzcodemvp","email":"citz.codemvp@gov.bc.ca"},{"name":"sidmclaughlin","email":"sidmclaughlin@gmail.com"},{"name":"taylorfries","email":"taylor.friesen@gov.bc.ca"},{"name":"bradenmitchell","email":"braden.mitchell@gov.bc.ca"},{"name":"irfan.charania","email":"irfan.charania@gmail.com"},{"name":"stoews","email":"scott.toews@gov.bc.ca"},{"name":"mkernohanbc","email":"marcus.kernohan@gov.bc.ca"},{"name":"supriya-arora","email":"jmc.supriya@gmail.com"},{"name":"danebenal","email":"dan.ebenal@gov.bc.ca"},{"name":"omprakashmishra","email":"omprakashmishra3978@gmail.com"},{"name":"galen.gray","email":"galen.gray@gov.bc.ca"},{"name":"fbarreta","email":"fbarreta@gmail.com"},{"name":"jimmypalelil","email":"jimmypalelil@gmail.com"}],"homepage":"https://github.com/bcgov/csit-backstage-microcks-plugin#readme","bugs":{"url":"https://github.com/bcgov/csit-backstage-microcks-plugin/issues"},"dist":{"shasum":"50e67be705c4374afb483113e3a448c151e26b2d","tarball":"https://registry.npmjs.org/@bcgov/csit-microcks-backend-backstage-plugin/-/csit-microcks-backend-backstage-plugin-0.1.0-feature.aps-4105-connect-pipelines.fdf9b14e.tgz","fileCount":34,"integrity":"sha512-MBsDJJRl6QA4ncQ5HoUy/nntUUAklkgJk+po1alj5akO8wWBPKJxuzxk8OztD2IxfHaw6Mf8sEjRVm7sd2p96Q==","signatures":[{"sig":"MEQCIC3dD9Hkun4By4U+9J+6priKJyKb6LoOE0l3w10WF+mTAiAo0BUhRnDbzmbxLNHlMfTsvbJGXqPO0hHsr4zOPy6ykg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bcgov%2fcsit-microcks-backend-backstage-plugin@0.1.0-feature.aps-4105-connect-pipelines.fdf9b14e","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":310873},"main":"dist/index.cjs.js","_from":"file:/tmp/plugin-tarballs/@bcgov-csit-microcks-backend-backstage-plugin-0.1.0-feature.aps-4105-connect-pipelines.fdf9b14e.tgz","types":"dist/index.d.ts","scripts":{"lint":"backstage-cli package lint","test":"backstage-cli package test","build":"backstage-cli package build","clean":"backstage-cli package clean","start":"backstage-cli package start","prepack":"backstage-cli package prepack","postpack":"backstage-cli package postpack"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:24d20cba-55a2-4363-9321-dcda88a35598"}},"_resolved":"/tmp/plugin-tarballs/@bcgov-csit-microcks-backend-backstage-plugin-0.1.0-feature.aps-4105-connect-pipelines.fdf9b14e.tgz","backstage":{"role":"backend-plugin","features":{".":"@backstage/BackendFeature"},"pluginId":"csit-microcks","pluginPackages":["@bcgov/csit-microcks-backend-backstage-plugin"]},"_integrity":"sha512-MBsDJJRl6QA4ncQ5HoUy/nntUUAklkgJk+po1alj5akO8wWBPKJxuzxk8OztD2IxfHaw6Mf8sEjRVm7sd2p96Q==","repository":{"url":"git+https://github.com/bcgov/csit-backstage-microcks-plugin.git","type":"git","directory":"plugins/csit-microcks-backend"},"_npmVersion":"11.13.0","description":"This Backstage backend plugin synchronizes API mocks defined in a repository into a **Microcks** server.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^3.25.76","express":"^4.14.0","@backstage/types":"^1.2.1","@backstage/errors":"^1.2.7","express-promise-router":"^4.1.0","@backstage/catalog-client":"^1.10.1","@backstage/backend-defaults":"^0.11.0","@backstage/backend-plugin-api":"^1.4.0","@backstage/plugin-catalog-node":"^1.17.1"},"publishConfig":{"main":"dist/index.cjs.js","types":"dist/index.d.ts","access":"public"},"typesVersions":{"*":{"package.json":["package.json"]}},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"supertest":"^6.2.4","@backstage/cli":"^0.33.0","@types/express":"^4.17.6","@types/supertest":"^2.0.12","@backstage/backend-test-utils":"^1.6.0"},"_npmOperationalInternal":{"tmp":"tmp/csit-microcks-backend-backstage-plugin_0.1.0-feature.aps-4105-connect-pipelines.fdf9b14e_1776970444327_0.09485107902626821","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-feature.aps-4105-connect-pipelines.063bfdb8":{"name":"@bcgov/csit-microcks-backend-backstage-plugin","version":"0.1.0-feature.aps-4105-connect-pipelines.063bfdb8","license":"Apache-2.0","_id":"@bcgov/csit-microcks-backend-backstage-plugin@0.1.0-feature.aps-4105-connect-pipelines.063bfdb8","maintainers":[{"name":"jleach","email":"jason.leach@fullboar.ca"},{"name":"shellyxuehan","email":"shelly.han@gov.bc.ca"},{"name":"parcjason","email":"jsherman@parcsystems.ca"},{"name":"akroon3r","email":"adamkroon47@gmail.com"},{"name":"bc-gov-common-services","email":"NR.CommonServiceShowcase@gov.bc.ca"},{"name":"nicoledegreef","email":"Nicole.degreef@gov.bc.ca"},{"name":"qqnluaq","email":"benjubb+npm@gmail.com"},{"name":"jujaga","email":"jujaga@gmail.com"},{"name":"dgboss","email":"darren.boss@gov.bc.ca"},{"name":"ty2k","email":"tylerkrys@gmail.com"},{"name":"michael.nelson.gov.bc.ca","email":"michael.nelson@gov.bc.ca"},{"name":"mgranbois","email":"mgranbois@outlook.com"},{"name":"sheaphillips","email":"shea.phillips@gmail.com"},{"name":"citzcodemvp","email":"citz.codemvp@gov.bc.ca"},{"name":"sidmclaughlin","email":"sidmclaughlin@gmail.com"},{"name":"taylorfries","email":"taylor.friesen@gov.bc.ca"},{"name":"bradenmitchell","email":"braden.mitchell@gov.bc.ca"},{"name":"irfan.charania","email":"irfan.charania@gmail.com"},{"name":"stoews","email":"scott.toews@gov.bc.ca"},{"name":"mkernohanbc","email":"marcus.kernohan@gov.bc.ca"},{"name":"supriya-arora","email":"jmc.supriya@gmail.com"},{"name":"danebenal","email":"dan.ebenal@gov.bc.ca"},{"name":"omprakashmishra","email":"omprakashmishra3978@gmail.com"},{"name":"galen.gray","email":"galen.gray@gov.bc.ca"},{"name":"fbarreta","email":"fbarreta@gmail.com"},{"name":"jimmypalelil","email":"jimmypalelil@gmail.com"}],"homepage":"https://github.com/bcgov/csit-backstage-microcks-plugin#readme","bugs":{"url":"https://github.com/bcgov/csit-backstage-microcks-plugin/issues"},"dist":{"shasum":"c35d211b95a0013e9dea30a4865ff2c56d0b0d7a","tarball":"https://registry.npmjs.org/@bcgov/csit-microcks-backend-backstage-plugin/-/csit-microcks-backend-backstage-plugin-0.1.0-feature.aps-4105-connect-pipelines.063bfdb8.tgz","fileCount":34,"integrity":"sha512-8XBD7H8dA1cJPIurI/MQWZFAcFLGqk7eU8e13dp8QNYqcfBt3no7FhAUXop4/6PFnSOsPrqDnSkB/Y4qs4Hsfg==","signatures":[{"sig":"MEUCIBmCYhzQkQbUQqnLiFyOHfvVimldVLKoHU1WF4acFyuFAiEA1229V/ySw5ljiyM1uPhBUbTDVSKEUNDTV9evh7mOQuA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bcgov%2fcsit-microcks-backend-backstage-plugin@0.1.0-feature.aps-4105-connect-pipelines.063bfdb8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":310873},"main":"dist/index.cjs.js","_from":"file:/tmp/plugin-tarballs/@bcgov-csit-microcks-backend-backstage-plugin-0.1.0-feature.aps-4105-connect-pipelines.063bfdb8.tgz","types":"dist/index.d.ts","scripts":{"lint":"backstage-cli package lint","test":"backstage-cli package test","build":"backstage-cli package build","clean":"backstage-cli package clean","start":"backstage-cli package start","prepack":"backstage-cli package prepack","postpack":"backstage-cli package postpack"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:24d20cba-55a2-4363-9321-dcda88a35598"}},"_resolved":"/tmp/plugin-tarballs/@bcgov-csit-microcks-backend-backstage-plugin-0.1.0-feature.aps-4105-connect-pipelines.063bfdb8.tgz","backstage":{"role":"backend-plugin","features":{".":"@backstage/BackendFeature"},"pluginId":"csit-microcks","pluginPackages":["@bcgov/csit-microcks-backend-backstage-plugin"]},"_integrity":"sha512-8XBD7H8dA1cJPIurI/MQWZFAcFLGqk7eU8e13dp8QNYqcfBt3no7FhAUXop4/6PFnSOsPrqDnSkB/Y4qs4Hsfg==","repository":{"url":"git+https://github.com/bcgov/csit-backstage-microcks-plugin.git","type":"git","directory":"plugins/csit-microcks-backend"},"_npmVersion":"11.13.0","description":"This Backstage backend plugin synchronizes API mocks defined in a repository into a **Microcks** server.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^3.25.76","express":"^4.14.0","@backstage/types":"^1.2.1","@backstage/errors":"^1.2.7","express-promise-router":"^4.1.0","@backstage/catalog-client":"^1.10.1","@backstage/backend-defaults":"^0.11.0","@backstage/backend-plugin-api":"^1.4.0","@backstage/plugin-catalog-node":"^1.17.1"},"publishConfig":{"main":"dist/index.cjs.js","types":"dist/index.d.ts","access":"public"},"typesVersions":{"*":{"package.json":["package.json"]}},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"supertest":"^6.2.4","@backstage/cli":"^0.33.0","@types/express":"^4.17.6","@types/supertest":"^2.0.12","@backstage/backend-test-utils":"^1.6.0"},"_npmOperationalInternal":{"tmp":"tmp/csit-microcks-backend-backstage-plugin_0.1.0-feature.aps-4105-connect-pipelines.063bfdb8_1776973812430_0.2735919284561634","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-feature.aps-4105-connect-pipelines.b0745ca4":{"name":"@bcgov/csit-microcks-backend-backstage-plugin","version":"0.1.0-feature.aps-4105-connect-pipelines.b0745ca4","license":"Apache-2.0","_id":"@bcgov/csit-microcks-backend-backstage-plugin@0.1.0-feature.aps-4105-connect-pipelines.b0745ca4","maintainers":[{"name":"jleach","email":"jason.leach@fullboar.ca"},{"name":"shellyxuehan","email":"shelly.han@gov.bc.ca"},{"name":"parcjason","email":"jsherman@parcsystems.ca"},{"name":"akroon3r","email":"adamkroon47@gmail.com"},{"name":"bc-gov-common-services","email":"NR.CommonServiceShowcase@gov.bc.ca"},{"name":"nicoledegreef","email":"Nicole.degreef@gov.bc.ca"},{"name":"qqnluaq","email":"benjubb+npm@gmail.com"},{"name":"jujaga","email":"jujaga@gmail.com"},{"name":"dgboss","email":"darren.boss@gov.bc.ca"},{"name":"ty2k","email":"tylerkrys@gmail.com"},{"name":"michael.nelson.gov.bc.ca","email":"michael.nelson@gov.bc.ca"},{"name":"mgranbois","email":"mgranbois@outlook.com"},{"name":"sheaphillips","email":"shea.phillips@gmail.com"},{"name":"citzcodemvp","email":"citz.codemvp@gov.bc.ca"},{"name":"sidmclaughlin","email":"sidmclaughlin@gmail.com"},{"name":"taylorfries","email":"taylor.friesen@gov.bc.ca"},{"name":"bradenmitchell","email":"braden.mitchell@gov.bc.ca"},{"name":"irfan.charania","email":"irfan.charania@gmail.com"},{"name":"stoews","email":"scott.toews@gov.bc.ca"},{"name":"mkernohanbc","email":"marcus.kernohan@gov.bc.ca"},{"name":"supriya-arora","email":"jmc.supriya@gmail.com"},{"name":"danebenal","email":"dan.ebenal@gov.bc.ca"},{"name":"omprakashmishra","email":"omprakashmishra3978@gmail.com"},{"name":"galen.gray","email":"galen.gray@gov.bc.ca"},{"name":"fbarreta","email":"fbarreta@gmail.com"},{"name":"jimmypalelil","email":"jimmypalelil@gmail.com"}],"homepage":"https://github.com/bcgov/csit-backstage-microcks-plugin#readme","bugs":{"url":"https://github.com/bcgov/csit-backstage-microcks-plugin/issues"},"dist":{"shasum":"aeb8bbc53f8287fc2268a16dbf93d34abce732fc","tarball":"https://registry.npmjs.org/@bcgov/csit-microcks-backend-backstage-plugin/-/csit-microcks-backend-backstage-plugin-0.1.0-feature.aps-4105-connect-pipelines.b0745ca4.tgz","fileCount":34,"integrity":"sha512-/IE/8BZ8+nqpWu1s73UJtTwEnUsLYUhJuuhjDVf0iCw9OOq3H3mr82Wap1lxItnQ6JPiy5CIy/vN9yRJ2zP3gg==","signatures":[{"sig":"MEYCIQDAuuey2Mp9V105ltRCZyJe1dRjkLs+Aa+49EYwUGMqjgIhAJNVs05GtD34+6sXYJi4hbAevYCgalh6vdjbsnGy2AzT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bcgov%2fcsit-microcks-backend-backstage-plugin@0.1.0-feature.aps-4105-connect-pipelines.b0745ca4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":310873},"main":"dist/index.cjs.js","_from":"file:/tmp/plugin-tarballs/@bcgov-csit-microcks-backend-backstage-plugin-0.1.0-feature.aps-4105-connect-pipelines.b0745ca4.tgz","types":"dist/index.d.ts","scripts":{"lint":"backstage-cli package lint","test":"backstage-cli package test","build":"backstage-cli package build","clean":"backstage-cli package clean","start":"backstage-cli package start","prepack":"backstage-cli package prepack","postpack":"backstage-cli package postpack"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:24d20cba-55a2-4363-9321-dcda88a35598"}},"_resolved":"/tmp/plugin-tarballs/@bcgov-csit-microcks-backend-backstage-plugin-0.1.0-feature.aps-4105-connect-pipelines.b0745ca4.tgz","backstage":{"role":"backend-plugin","features":{".":"@backstage/BackendFeature"},"pluginId":"csit-microcks","pluginPackages":["@bcgov/csit-microcks-backend-backstage-plugin"]},"_integrity":"sha512-/IE/8BZ8+nqpWu1s73UJtTwEnUsLYUhJuuhjDVf0iCw9OOq3H3mr82Wap1lxItnQ6JPiy5CIy/vN9yRJ2zP3gg==","repository":{"url":"git+https://github.com/bcgov/csit-backstage-microcks-plugin.git","type":"git","directory":"plugins/csit-microcks-backend"},"_npmVersion":"11.13.0","description":"This Backstage backend plugin synchronizes API mocks defined in a repository into a **Microcks** server.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^3.25.76","express":"^4.14.0","@backstage/types":"^1.2.1","@backstage/errors":"^1.2.7","express-promise-router":"^4.1.0","@backstage/catalog-client":"^1.10.1","@backstage/backend-defaults":"^0.11.0","@backstage/backend-plugin-api":"^1.4.0","@backstage/plugin-catalog-node":"^1.17.1"},"publishConfig":{"main":"dist/index.cjs.js","types":"dist/index.d.ts","access":"public"},"typesVersions":{"*":{"package.json":["package.json"]}},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"supertest":"^6.2.4","@backstage/cli":"^0.33.0","@types/express":"^4.17.6","@types/supertest":"^2.0.12","@backstage/backend-test-utils":"^1.6.0"},"_npmOperationalInternal":{"tmp":"tmp/csit-microcks-backend-backstage-plugin_0.1.0-feature.aps-4105-connect-pipelines.b0745ca4_1777310205917_0.5982946038589765","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-feature.aps-4105-connect-pipelines.86dd1a72":{"name":"@bcgov/csit-microcks-backend-backstage-plugin","version":"0.1.0-feature.aps-4105-connect-pipelines.86dd1a72","license":"Apache-2.0","_id":"@bcgov/csit-microcks-backend-backstage-plugin@0.1.0-feature.aps-4105-connect-pipelines.86dd1a72","maintainers":[{"name":"jleach","email":"jason.leach@fullboar.ca"},{"name":"shellyxuehan","email":"shelly.han@gov.bc.ca"},{"name":"parcjason","email":"jsherman@parcsystems.ca"},{"name":"akroon3r","email":"adamkroon47@gmail.com"},{"name":"bc-gov-common-services","email":"NR.CommonServiceShowcase@gov.bc.ca"},{"name":"nicoledegreef","email":"Nicole.degreef@gov.bc.ca"},{"name":"qqnluaq","email":"benjubb+npm@gmail.com"},{"name":"jujaga","email":"jujaga@gmail.com"},{"name":"dgboss","email":"darren.boss@gov.bc.ca"},{"name":"ty2k","email":"tylerkrys@gmail.com"},{"name":"michael.nelson.gov.bc.ca","email":"michael.nelson@gov.bc.ca"},{"name":"mgranbois","email":"mgranbois@outlook.com"},{"name":"sheaphillips","email":"shea.phillips@gmail.com"},{"name":"citzcodemvp","email":"citz.codemvp@gov.bc.ca"},{"name":"sidmclaughlin","email":"sidmclaughlin@gmail.com"},{"name":"taylorfries","email":"taylor.friesen@gov.bc.ca"},{"name":"bradenmitchell","email":"braden.mitchell@gov.bc.ca"},{"name":"irfan.charania","email":"irfan.charania@gmail.com"},{"name":"stoews","email":"scott.toews@gov.bc.ca"},{"name":"mkernohanbc","email":"marcus.kernohan@gov.bc.ca"},{"name":"supriya-arora","email":"jmc.supriya@gmail.com"},{"name":"danebenal","email":"dan.ebenal@gov.bc.ca"},{"name":"omprakashmishra","email":"omprakashmishra3978@gmail.com"},{"name":"galen.gray","email":"galen.gray@gov.bc.ca"},{"name":"fbarreta","email":"fbarreta@gmail.com"},{"name":"jimmypalelil","email":"jimmypalelil@gmail.com"}],"homepage":"https://github.com/bcgov/csit-backstage-microcks-plugin#readme","bugs":{"url":"https://github.com/bcgov/csit-backstage-microcks-plugin/issues"},"dist":{"shasum":"8ff63a2918fb8f500768a4af306c1f965aa9b125","tarball":"https://registry.npmjs.org/@bcgov/csit-microcks-backend-backstage-plugin/-/csit-microcks-backend-backstage-plugin-0.1.0-feature.aps-4105-connect-pipelines.86dd1a72.tgz","fileCount":34,"integrity":"sha512-NGoSmbHQgB49xzOxiE9oMGQQDqGaHLHZpM16qJ2jHvI5oMPwGmKUXSmC5ySWHsuojApQM1UlwX1Ta7MesmvWQA==","signatures":[{"sig":"MEYCIQDZIRKsFzzDiAUkSzuUDKsSaytPeTXlOExH88sYNcvVZwIhAKi//gpN+MfRISmUd+tfZwTc7AyDZHBc3PoBQ2KZ9FWB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bcgov%2fcsit-microcks-backend-backstage-plugin@0.1.0-feature.aps-4105-connect-pipelines.86dd1a72","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":310873},"main":"dist/index.cjs.js","_from":"file:/tmp/plugin-tarballs/@bcgov-csit-microcks-backend-backstage-plugin-0.1.0-feature.aps-4105-connect-pipelines.86dd1a72.tgz","types":"dist/index.d.ts","scripts":{"lint":"backstage-cli package lint","test":"backstage-cli package test","build":"backstage-cli package build","clean":"backstage-cli package clean","start":"backstage-cli package start","prepack":"backstage-cli package prepack","postpack":"backstage-cli package postpack"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:24d20cba-55a2-4363-9321-dcda88a35598"}},"_resolved":"/tmp/plugin-tarballs/@bcgov-csit-microcks-backend-backstage-plugin-0.1.0-feature.aps-4105-connect-pipelines.86dd1a72.tgz","backstage":{"role":"backend-plugin","features":{".":"@backstage/BackendFeature"},"pluginId":"csit-microcks","pluginPackages":["@bcgov/csit-microcks-backend-backstage-plugin"]},"_integrity":"sha512-NGoSmbHQgB49xzOxiE9oMGQQDqGaHLHZpM16qJ2jHvI5oMPwGmKUXSmC5ySWHsuojApQM1UlwX1Ta7MesmvWQA==","repository":{"url":"git+https://github.com/bcgov/csit-backstage-microcks-plugin.git","type":"git","directory":"plugins/csit-microcks-backend"},"_npmVersion":"11.13.0","description":"This Backstage backend plugin synchronizes API mocks defined in a repository into a **Microcks** server.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^3.25.76","express":"^4.14.0","@backstage/types":"^1.2.1","@backstage/errors":"^1.2.7","express-promise-router":"^4.1.0","@backstage/catalog-client":"^1.10.1","@backstage/backend-defaults":"^0.11.0","@backstage/backend-plugin-api":"^1.4.0","@backstage/plugin-catalog-node":"^1.17.1"},"publishConfig":{"main":"dist/index.cjs.js","types":"dist/index.d.ts","access":"public"},"typesVersions":{"*":{"package.json":["package.json"]}},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"supertest":"^6.2.4","@backstage/cli":"^0.33.0","@types/express":"^4.17.6","@types/supertest":"^2.0.12","@backstage/backend-test-utils":"^1.6.0"},"_npmOperationalInternal":{"tmp":"tmp/csit-microcks-backend-backstage-plugin_0.1.0-feature.aps-4105-connect-pipelines.86dd1a72_1777314585338_0.7519576180223733","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-main.c822a801":{"name":"@bcgov/csit-microcks-backend-backstage-plugin","version":"0.1.1-main.c822a801","license":"Apache-2.0","_id":"@bcgov/csit-microcks-backend-backstage-plugin@0.1.1-main.c822a801","maintainers":[{"name":"jleach","email":"jason.leach@fullboar.ca"},{"name":"shellyxuehan","email":"shelly.han@gov.bc.ca"},{"name":"parcjason","email":"jsherman@parcsystems.ca"},{"name":"akroon3r","email":"adamkroon47@gmail.com"},{"name":"bc-gov-common-services","email":"NR.CommonServiceShowcase@gov.bc.ca"},{"name":"nicoledegreef","email":"Nicole.degreef@gov.bc.ca"},{"name":"qqnluaq","email":"benjubb+npm@gmail.com"},{"name":"jujaga","email":"jujaga@gmail.com"},{"name":"dgboss","email":"darren.boss@gov.bc.ca"},{"name":"ty2k","email":"tylerkrys@gmail.com"},{"name":"michael.nelson.gov.bc.ca","email":"michael.nelson@gov.bc.ca"},{"name":"mgranbois","email":"mgranbois@outlook.com"},{"name":"sheaphillips","email":"shea.phillips@gmail.com"},{"name":"citzcodemvp","email":"citz.codemvp@gov.bc.ca"},{"name":"sidmclaughlin","email":"sidmclaughlin@gmail.com"},{"name":"taylorfries","email":"taylor.friesen@gov.bc.ca"},{"name":"bradenmitchell","email":"braden.mitchell@gov.bc.ca"},{"name":"irfan.charania","email":"irfan.charania@gmail.com"},{"name":"stoews","email":"scott.toews@gov.bc.ca"},{"name":"mkernohanbc","email":"marcus.kernohan@gov.bc.ca"},{"name":"supriya-arora","email":"jmc.supriya@gmail.com"},{"name":"danebenal","email":"dan.ebenal@gov.bc.ca"},{"name":"omprakashmishra","email":"omprakashmishra3978@gmail.com"},{"name":"galen.gray","email":"galen.gray@gov.bc.ca"},{"name":"fbarreta","email":"fbarreta@gmail.com"},{"name":"jimmypalelil","email":"jimmypalelil@gmail.com"}],"homepage":"https://github.com/bcgov/csit-backstage-microcks-plugin#readme","bugs":{"url":"https://github.com/bcgov/csit-backstage-microcks-plugin/issues"},"dist":{"shasum":"853bbee98b5e1ddabbcbafeffba8fdbb7be25617","tarball":"https://registry.npmjs.org/@bcgov/csit-microcks-backend-backstage-plugin/-/csit-microcks-backend-backstage-plugin-0.1.1-main.c822a801.tgz","fileCount":34,"integrity":"sha512-9Vb9AnRhMiCkREh5Krqitu6MUK0G2cI974ooegDTu5C1Soc7ypNQU1hqevBvt8+bEW4PfK9bWV4MRC3HNIhuVQ==","signatures":[{"sig":"MEYCIQC6tO2sfyq77WAzfGprUWTfWpiBOrsyGV8aLrPoIcnKvQIhAO0VuFp/OdgYr+u12LEykmzy0GVEVzLTp+YHX1BuFcSA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bcgov%2fcsit-microcks-backend-backstage-plugin@0.1.1-main.c822a801","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":310843},"main":"dist/index.cjs.js","_from":"file:/tmp/plugin-tarballs/@bcgov-csit-microcks-backend-backstage-plugin-0.1.1-main.c822a801.tgz","types":"dist/index.d.ts","scripts":{"lint":"backstage-cli package lint","test":"backstage-cli package test","build":"backstage-cli package build","clean":"backstage-cli package clean","start":"backstage-cli package start","prepack":"backstage-cli package prepack","postpack":"backstage-cli package postpack"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:24d20cba-55a2-4363-9321-dcda88a35598"}},"_resolved":"/tmp/plugin-tarballs/@bcgov-csit-microcks-backend-backstage-plugin-0.1.1-main.c822a801.tgz","backstage":{"role":"backend-plugin","features":{".":"@backstage/BackendFeature"},"pluginId":"csit-microcks","pluginPackages":["@bcgov/csit-microcks-backend-backstage-plugin"]},"_integrity":"sha512-9Vb9AnRhMiCkREh5Krqitu6MUK0G2cI974ooegDTu5C1Soc7ypNQU1hqevBvt8+bEW4PfK9bWV4MRC3HNIhuVQ==","repository":{"url":"git+https://github.com/bcgov/csit-backstage-microcks-plugin.git","type":"git","directory":"plugins/csit-microcks-backend"},"_npmVersion":"11.13.0","description":"This Backstage backend plugin synchronizes API mocks defined in a repository into a **Microcks** server.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^3.25.76","express":"^4.14.0","@backstage/types":"^1.2.1","@backstage/errors":"^1.2.7","express-promise-router":"^4.1.0","@backstage/catalog-client":"^1.10.1","@backstage/backend-defaults":"^0.11.0","@backstage/backend-plugin-api":"^1.4.0","@backstage/plugin-catalog-node":"^1.17.1"},"publishConfig":{"main":"dist/index.cjs.js","types":"dist/index.d.ts","access":"public"},"typesVersions":{"*":{"package.json":["package.json"]}},"_hasShrinkwrap":false,"devDependencies":{"supertest":"^6.2.4","@backstage/cli":"^0.33.0","@types/express":"^4.17.6","@types/supertest":"^2.0.12","@backstage/backend-test-utils":"^1.6.0"},"_npmOperationalInternal":{"tmp":"tmp/csit-microcks-backend-backstage-plugin_0.1.1-main.c822a801_1777498805904_0.04921026998410305","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2026-04-21T18:05:21.086Z","modified":"2026-07-21T21:31:55.045Z","0.0.0":"2026-04-21T18:05:21.329Z","0.1.0-feature.aps-4105-connect-pipelines.45701585":"2026-04-23T18:49:52.628Z","0.1.0-feature.aps-4105-connect-pipelines.fdf9b14e":"2026-04-23T18:54:04.480Z","0.1.0-feature.aps-4105-connect-pipelines.063bfdb8":"2026-04-23T19:50:12.588Z","0.1.0-feature.aps-4105-connect-pipelines.b0745ca4":"2026-04-27T17:16:46.106Z","0.1.0-feature.aps-4105-connect-pipelines.86dd1a72":"2026-04-27T18:29:45.483Z","0.1.1-main.c822a801":"2026-04-29T21:40:06.065Z"},"bugs":{"url":"https://github.com/bcgov/csit-backstage-microcks-plugin/issues"},"license":"Apache-2.0","homepage":"https://github.com/bcgov/csit-backstage-microcks-plugin#readme","repository":{"url":"git+https://github.com/bcgov/csit-backstage-microcks-plugin.git","type":"git","directory":"plugins/csit-microcks-backend"},"description":"This Backstage backend plugin synchronizes API mocks defined in a repository into a **Microcks** server.","maintainers":[{"email":"jason.leach@fullboar.ca","name":"jleach"},{"email":"shelly.han@gov.bc.ca","name":"shellyxuehan"},{"email":"jsherman@parcsystems.ca","name":"parcjason"},{"email":"adamkroon47@gmail.com","name":"akroon3r"},{"email":"NR.CommonServiceShowcase@gov.bc.ca","name":"bc-gov-common-services"},{"email":"Nicole.degreef@gov.bc.ca","name":"nicoledegreef"},{"email":"benjubb+npm@gmail.com","name":"qqnluaq"},{"email":"jujaga@gmail.com","name":"jujaga"},{"email":"darren.boss@gov.bc.ca","name":"dgboss"},{"email":"tylerkrys@gmail.com","name":"ty2k"},{"email":"michael.nelson@gov.bc.ca","name":"michael.nelson.gov.bc.ca"},{"email":"mgranbois@outlook.com","name":"mgranbois"},{"email":"shea.phillips@gmail.com","name":"sheaphillips"},{"email":"citz.codemvp@gov.bc.ca","name":"citzcodemvp"},{"email":"sidmclaughlin@gmail.com","name":"sidmclaughlin"},{"email":"taylor.friesen@gov.bc.ca","name":"taylorfries"},{"email":"braden.mitchell@gov.bc.ca","name":"bradenmitchell"},{"email":"irfan.charania@gmail.com","name":"irfan.charania"},{"email":"scott.toews@gov.bc.ca","name":"stoews"},{"email":"marcus.kernohan@gov.bc.ca","name":"mkernohanbc"},{"email":"paul.howells@gov.bc.ca","name":"paul.howells"},{"email":"jmc.supriya@gmail.com","name":"supriya-arora"},{"email":"dan.ebenal@gov.bc.ca","name":"danebenal"},{"email":"sahej.mundi@gov.bc.ca","name":"sahejmundi"},{"email":"zhanna.kolesnyk@gov.bc.ca","name":"kolezhannochka"},{"email":"danilo.meireles@gmail.com","name":"danilomeireles"},{"email":"omprakashmishra3978@gmail.com","name":"omprakashmishra"},{"email":"galen.gray@gov.bc.ca","name":"galen.gray"},{"email":"fbarreta@gmail.com","name":"fbarreta"},{"email":"jimmypalelil@gmail.com","name":"jimmypalelil"}],"readme":"# CSIT Microcks Backend Plugin\n\nThis Backstage backend plugin synchronizes API mocks defined in a repository into a **Microcks** server.\n\nThe plugin reads configuration from catalog entities, determines the desired state of mocks, and reconciles Microcks so that the correct mock services exist.\n\nThe system is intentionally designed to be **deterministic**, **observable**, and **fail fast**.\n\n---\n\n# Installation\n\nInstall the plugin in your Backstage backend.\n\n```\nyarn add @bcgov/csit-microcks-backend-backstage-plugin\n```\n\nRegister the plugin in your backend.\n\nExample (`packages/backend/src/index.ts`):\n\n```\nbackend.add(import('@bcgov/csit-microcks-backend-backstage-plugin'));\n```\n\nRestart the backend after installing the plugin.\n\n---\n\n# Configuration\n\nBackstage `app-config.yaml` must define a Microcks server.\n\nExample:\n\n```\ncsitMicrocks:\n  server:\n    baseUrl: https://csit-microcks-apps-gov-bc-ca.dev.api.gov.bc.ca\n    auth:\n      type: keycloak\n      issuerUrl: https://authz-b8840c-dev.apps.gold.devops.gov.bc.ca/auth/realms/aps\n      clientId: devhub-microcks-sync\n      clientSecret: ${BACKSTAGE_MICROCKS_CLIENT_SECRET}\n```\n\nIf this configuration is missing:\n\n- The processor continues queuing jobs\n- The worker **will not claim jobs**\n\n---\n\n# Keycloak Service Client Configuration\n\nThe backend plugin authenticates to Microcks using the **OAuth 2.0 client credentials flow** via Keycloak.\n\nA **Keycloak confidential client with a service account** must be created so the plugin can obtain access tokens.\n\nRecommended client id:\n\n```\ndevhub-microcks-sync\n```\n\nThe client id is configurable in `app-config.yaml`.\n\nThe service client must be granted the role:\n\n```\nmicrocks-app → manager\n```\n\nThis role allows the plugin to perform Microcks operations such as importing artifacts and managing services.\n\n---\n\n## Keycloak 26 Setup\n\nCreate the client in the same Keycloak realm used by Microcks.\n\n### 1. Create the Client\n\n1. Open the **Keycloak Admin Console**\n2. Select the **Microcks realm**\n3. Navigate to **Clients**\n4. Click **Create client**\n\nConfigure:\n\nClient ID\n\n```\ndevhub-microcks-sync\n```\n\nClient Type\n\n```\nOpenID Connect\n```\n\nClick **Next**.\n\nEnable the following settings:\n\n- Client authentication\n- Service accounts roles\n\nSave the client.\n\n---\n\n### 2. Obtain the Client Secret\n\n1. Open the client you created\n2. Navigate to the **Credentials** tab\n3. Copy the **Client Secret**\n\nStore the secret securely. It should **not be committed to source control**.\n\n---\n\n### 3. Assign the Required Role\n\n1. Open the client\n2. Navigate to **Service Account Roles**\n3. Change the filter to **Filter by clients**\n4. Select:\n\n```\nmicrocks-app\n```\n\n5. Assign the role:\n\n```\nmanager\n```\n\nThe service client can now perform Microcks management operations.\n\n---\n\n# Entity Configuration\n\nCatalog entities enable Microcks synchronization using the annotation:\n\n```\nbcgov/microcks-config-ref\n```\n\nExample:\n\n```\nmetadata:\n  annotations:\n    bcgov/microcks-config-ref: ./microcks.yaml\n```\n\nThe referenced file defines one or more mocks.\n\nExample structure:\n\n```\nspec:\n  mocks:\n    - mockId: default\n      openapi:\n        path: openapi.yaml\n      artifacts:\n        - kind: examples\n          path: examples\n```\n\nArtifacts may reference:\n\n- local repository paths\n- URLs\n\nMultiple mocks per API are supported.\n\n---\n\n# Architecture\n\n```mermaid\nflowchart LR\n\nA[Backstage Catalog Entity] --> B[CsitMicrocksProcessor]\n\nB --> C[(csit_microcks_sync_status)]\n\nC --> D[MicrocksSyncWorker]\n\nD --> E[MicrocksSyncJobRunner]\n\nE --> F[MicrocksDesiredStateLoader]\nE --> G[MicrocksReconciler]\nE --> H[MicrocksClient]\n\nF --> I[Repository Artifacts]\n\nH --> J[Microcks Server]\n\nB --> K[(csit_microcks_sync_events)]\nE --> K\n```\n\n## Flow Summary\n\n1. A catalog entity references a `microcks.yaml` file.\n2. The **Catalog Processor** reads this file and records desired sync state.\n3. The **Background Worker** polls the database for pending jobs.\n4. Each job is executed by the **Job Runner**.\n5. The job runner loads artifacts, reconciles Microcks services, and records events.\n\nBoth the **processor** and **worker** emit events for observability.\n\n---\n\n# Developer Workflow\n\nThis section describes what happens when a developer updates `microcks.yaml` in a repository.\n\nUnderstanding this flow helps when debugging synchronization behavior.\n\n---\n\n## Step 1 — Developer Updates microcks.yaml\n\nA developer modifies the mock configuration referenced by a catalog entity.\n\nExample changes:\n\n- add a new mock\n- update OpenAPI\n- add example responses\n- remove a mock\n\nThe change is committed to the repository.\n\n---\n\n## Step 2 — Backstage Catalog Processing\n\nDuring the next catalog refresh:\n\n`CsitMicrocksProcessor`\n\nruns for the entity.\n\nThe processor:\n\n1. Detects the annotation\n\n```\nbcgov/microcks-config-ref\n```\n\n2. Loads the `microcks.yaml` file.\n3. Parses mock definitions.\n4. Computes a **fingerprint hash** of inputs.\n5. Upserts rows in:\n\n```\ncsit_microcks_sync_status\n```\n\n### Possible outcomes\n\n| Scenario | Result |\n|--------|--------|\n| New mock | `desired_action = reconcile` |\n| Updated configuration | `desired_action = reconcile` |\n| Removed mock | `desired_action = delete` |\n| No changes | no new job created |\n\nThe processor **does not communicate with Microcks**.\n\nIts responsibility is to determine **desired state** and record synchronization jobs.\n\nProcessor activity is also recorded in the event table for observability.\n\n---\n\n## Step 3 — Job Appears in Database\n\nExample record:\n\n| field | value |\n|-----|------|\n| entity_ref | component:default/my-api |\n| mock_id | default |\n| desired_action | reconcile |\n| microcks_version_id | bk-8ad514d6fc316e04-default |\n| status | pending |\n\nThe record waits to be claimed by the worker.\n\n---\n\n## Step 4 — Worker Claims the Job\n\n`MicrocksSyncWorker` periodically polls the database.\n\nThe worker:\n\n1. checks configuration\n2. verifies global backoff is not active\n3. claims a job using a **lease**\n\n```\nclaimNextPending()\n```\n\nThe job status transitions to **leased**.\n\n---\n\n## Step 5 — Job Runner Executes the Sync\n\nExecution is delegated to:\n\n```\nMicrocksSyncJobRunner\n```\n\nThe runner performs the following steps.\n\n### 1) Load Desired State\n\n```\nMicrocksDesiredStateLoader\n```\n\nLoads:\n\n- OpenAPI specification\n- example artifacts\n- metadata\n\nArtifacts may come from:\n\n- repository files\n- URLs\n\n### 2) Scan Existing Microcks Services\n\nOwnership is determined using:\n\n```\nbk-<entityHash>\n```\n\nExample:\n\n```\nbk-8ad514d6fc316e04-*\n```\n\n### 3) Reconcile Desired vs Existing\n\n`MicrocksReconciler` determines:\n\n- services owned by the entity\n- exact version matches\n- services to delete\n- whether action is `create` or `update`\n\n### 4) Upload Artifacts\n\nArtifacts are uploaded using:\n\n```\nMicrocksClient.uploadArtifacts()\n```\n\nBefore upload:\n\n```\nMicrocksArtifactIdentityStamper\n```\n\ninjects deterministic identity metadata.\n\n### 5) Delete Stale Services\n\nAny services owned by the entity that are not part of the desired version set are deleted.\n\nThis ensures:\n\n```\nMicrocks always reflects the desired configuration\n```\n\n---\n\n## Step 6 — Job Completion\n\nIf successful:\n\n```\nstatus = completed\n```\n\nThe worker records events in:\n\n```\ncsit_microcks_sync_events\n```\n\nExample events:\n\n- reconcile_started\n- artifact_upload_started\n- artifact_upload_finished\n- reconcile_finished\n\n---\n\n# Versioning Model\n\nMicrocks service versions are deterministic.\n\nFormat\n\n```\nbk-<entityHash>-<mockId>\n```\n\nExample\n\n```\nbk-8ad514d6fc316e04-default\nbk-8ad514d6fc316e04-swagger\nbk-8ad514d6fc316e04-sdpr\n```\n\nOwnership of services is determined by the prefix:\n\n```\nbk-<entityHash>\n```\n\n---\n\n# Reconciliation Model\n\nReconciliation is handled by:\n\n```\nMicrocksReconciler\n```\n\nThe worker ensures that **only the desired versions exist in Microcks**.\n\n---\n\n# Fail Fast Behavior\n\nIf desired state cannot be loaded:\n\n1. A failure event is recorded\n2. Microcks services owned by the failed mock are deleted\n3. The sync record is marked `error`\n\n---\n\n# Database Tables\n\n## csit_microcks_sync_status\n\nTracks synchronization jobs.\n\n| Field | Description |\n|------|-------------|\n| id | primary key |\n| entity_ref | Backstage entity reference |\n| mock_id | mock identifier |\n| desired_action | reconcile or delete |\n| microcks_version_id | deterministic Microcks version |\n| fingerprint_hash | processor fingerprint |\n| status | pending, completed, error |\n\n---\n\n## csit_microcks_sync_events\n\nStores detailed sync history.\n\n| Field | Description |\n|------|-------------|\n| entity_ref | entity reference |\n| mock_id | mock identifier |\n| sync_status_id | sync record id |\n| event_type | event category |\n| level | info or error |\n| message | event message |\n\n---\n\n# Important Classes\n\n| Class | Responsibility |\n|------|---------------|\n| `CsitMicrocksProcessor` | Reads entity configuration and queues sync jobs |\n| `MicrocksSyncWorker` | Polls database and orchestrates job execution |\n| `MicrocksSyncJobRunner` | Executes a single sync job |\n| `MicrocksDesiredStateLoader` | Loads artifacts |\n| `MicrocksClient` | Communicates with the Microcks API |\n| `MicrocksReconciler` | Determines required actions |\n| `MicrocksTokenProvider` | Handles authentication tokens |\n| `MicrocksArtifactIdentityStamper` | Injects deterministic artifact identity |\n| `MicrocksSyncStore` | Database access layer |\n\n---\n\n# Design Principles\n\n### Deterministic Versioning\n\nMicrocks service versions derive from entity identity and `mockId`.\n\n### Fail Fast Behavior\n\nInvalid configuration immediately removes owned mocks.\n\n### Explicit Ownership\n\nService ownership is determined by the entity version prefix.\n\n### Observable Operations\n\nAll actions emit events to `csit_microcks_sync_events`.\n\n### Small Focused Components\n\nWorker orchestration, job execution, reconciliation, and storage are separated into focused classes.","readmeFilename":"README.md"}