naftiko: 1.0.0-alpha2 info: label: Nebraska description: 'Nebraska. 40 operations. Lead operation: Nebraska. Self-contained Naftiko capability covering one Flatcar Container Linux business surface.' tags: - Flatcar Container Linux - Nebraska created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: FLATCAR_CONTAINER_LINUX_API_KEY: FLATCAR_CONTAINER_LINUX_API_KEY capability: consumes: - type: http namespace: nebraska-update baseUri: '' description: Nebraska business capability. Self-contained, no shared references. resources: - name: api-activity path: /api/activity operations: - name: paginateactivity method: GET description: paginate activity outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: appIDorProductID in: query type: string - name: groupID in: query type: string - name: channelID in: query type: string - name: instanceID in: query type: string - name: version in: query type: string - name: severity in: query type: integer - name: start in: query type: string required: true - name: end in: query type: string required: true - name: page in: query type: integer - name: perpage in: query type: integer - name: api-apps path: /api/apps operations: - name: paginateapps method: GET description: get Apps outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: page in: query type: integer - name: perpage in: query type: integer - name: createapp method: POST description: create app outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: clone_from in: query type: string - name: body in: body type: object description: Request body (JSON). required: true - name: api-apps-appIDorProductID path: /api/apps/{appIDorProductID} operations: - name: getapp method: GET description: get app outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: appIDorProductID in: path type: string required: true - name: updateapp method: PUT description: update app outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: appIDorProductID in: path type: string required: true - name: body in: body type: object description: Request body (JSON). required: true - name: deleteapp method: DELETE description: delete app outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: appIDorProductID in: path type: string required: true - name: api-apps-appIDorProductID-channels path: /api/apps/{appIDorProductID}/channels operations: - name: paginatechannels method: GET description: paginate channels of an app outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: appIDorProductID in: path type: string required: true - name: page in: query type: integer - name: perpage in: query type: integer - name: createchannel method: POST description: create channel outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: appIDorProductID in: path type: string required: true - name: body in: body type: object description: Request body (JSON). required: true - name: api-apps-appIDorProductID-channels-channelID path: /api/apps/{appIDorProductID}/channels/{channelID} operations: - name: getchannel method: GET description: get channel by id outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: appIDorProductID in: path type: string required: true - name: channelID in: path type: string required: true - name: updatechannel method: PUT description: update channel by id outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: appIDorProductID in: path type: string required: true - name: channelID in: path type: string required: true - name: body in: body type: object description: Request body (JSON). required: true - name: deletechannel method: DELETE description: delete channel by id outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: appIDorProductID in: path type: string required: true - name: channelID in: path type: string required: true - name: api-apps-appIDorProductID-groups path: /api/apps/{appIDorProductID}/groups operations: - name: paginategroups method: GET description: paginate groups of an app outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: appIDorProductID in: path type: string required: true - name: page in: query type: integer - name: perpage in: query type: integer - name: creategroup method: POST description: create group in app outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: appIDorProductID in: path type: string required: true - name: body in: body type: object description: Request body (JSON). required: true - name: api-apps-appIDorProductID-groups-groupID path: /api/apps/{appIDorProductID}/groups/{groupID} operations: - name: getgroup method: GET description: get group given its groupID and appID outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: appIDorProductID in: path type: string required: true - name: groupID in: path type: string required: true - name: updategroup method: PUT description: update group given its groupID and appID outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: appIDorProductID in: path type: string required: true - name: groupID in: path type: string required: true - name: body in: body type: object description: Request body (JSON). required: true - name: deletegroup method: DELETE description: delete group given its groupID and appID outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: appIDorProductID in: path type: string required: true - name: groupID in: path type: string required: true - name: api-apps-appIDorProductID-groups-groupID-instances path: /api/apps/{appIDorProductID}/groups/{groupID}/instances operations: - name: getgroupinstances method: GET description: get instances of a group given its groupID and appID outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: appIDorProductID in: path type: string required: true - name: groupID in: path type: string required: true - name: status in: query type: integer required: true - name: page in: query type: integer - name: perpage in: query type: integer - name: sortFilter in: query type: string - name: sortOrder in: query type: string - name: searchFilter in: query type: string - name: searchValue in: query type: string - name: duration in: query type: string required: true - name: version in: query type: string - name: api-apps-appIDorProductID-groups-groupID-instances-instanceID path: /api/apps/{appIDorProductID}/groups/{groupID}/instances/{instanceID} operations: - name: getinstance method: GET description: get instance of a group given its groupID and appID outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: appIDorProductID in: path type: string required: true - name: groupID in: path type: string required: true - name: instanceID in: path type: string required: true - name: api-apps-appIDorProductID-groups-groupID-instances-instanceID-status_history path: /api/apps/{appIDorProductID}/groups/{groupID}/instances/{instanceID}/status_history operations: - name: getinstancestatushistory method: GET description: get instance status_history. outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: appIDorProductID in: path type: string required: true - name: groupID in: path type: string required: true - name: instanceID in: path type: string required: true - name: limit in: query type: integer - name: api-apps-appIDorProductID-groups-groupID-instances_stats path: /api/apps/{appIDorProductID}/groups/{groupID}/instances_stats operations: - name: getgroupinstancestats method: GET description: get instance stats of a group given its groupID and appID outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: appIDorProductID in: path type: string required: true - name: groupID in: path type: string required: true - name: duration in: query type: string required: true - name: api-apps-appIDorProductID-groups-groupID-instancescount path: /api/apps/{appIDorProductID}/groups/{groupID}/instancescount operations: - name: getgroupinstancescount method: GET description: get instance count of a group given its groupID and appID outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: appIDorProductID in: path type: string required: true - name: groupID in: path type: string required: true - name: duration in: query type: string required: true - name: api-apps-appIDorProductID-groups-groupID-status_timeline path: /api/apps/{appIDorProductID}/groups/{groupID}/status_timeline operations: - name: getgroupstatustimeline method: GET description: get status timeline of a group given its groupID and appID outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: appIDorProductID in: path type: string required: true - name: groupID in: path type: string required: true - name: duration in: query type: string required: true - name: api-apps-appIDorProductID-groups-groupID-version_breakdown path: /api/apps/{appIDorProductID}/groups/{groupID}/version_breakdown operations: - name: getgroupversionbreakdown method: GET description: get version breakdown of a group given its groupID and appID outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: appIDorProductID in: path type: string required: true - name: groupID in: path type: string required: true - name: api-apps-appIDorProductID-groups-groupID-version_timeline path: /api/apps/{appIDorProductID}/groups/{groupID}/version_timeline operations: - name: getgroupversiontimeline method: GET description: get version timeline of a group given its groupID and appID outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: appIDorProductID in: path type: string required: true - name: groupID in: path type: string required: true - name: duration in: query type: string required: true - name: api-apps-appIDorProductID-packages path: /api/apps/{appIDorProductID}/packages operations: - name: paginatepackages method: GET description: paginate packages of an app outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: appIDorProductID in: path type: string required: true - name: page in: query type: integer - name: perpage in: query type: integer - name: searchVersion in: query type: string - name: createpackage method: POST description: create package outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: appIDorProductID in: path type: string required: true - name: body in: body type: object description: Request body (JSON). required: true - name: api-apps-appIDorProductID-packages-packageID path: /api/apps/{appIDorProductID}/packages/{packageID} operations: - name: getpackage method: GET description: get package given its packageID and appID outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: appIDorProductID in: path type: string required: true - name: packageID in: path type: string required: true - name: updatepackage method: PUT description: update package given its packageID and appID outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: appIDorProductID in: path type: string required: true - name: packageID in: path type: string required: true - name: body in: body type: object description: Request body (JSON). required: true - name: deletepackage method: DELETE description: delete package given its packageID and appID outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: appIDorProductID in: path type: string required: true - name: packageID in: path type: string required: true - name: api-apps-appIDorProductID-packages-packageID-floor-channels path: /api/apps/{appIDorProductID}/packages/{packageID}/floor-channels operations: - name: getpackagefloorchannels method: GET description: get all channels where a package is marked as a floor outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: appIDorProductID in: path type: string required: true - name: packageID in: path type: string required: true - name: api-channels-channelID-floors path: /api/channels/{channelID}/floors operations: - name: paginatechannelfloors method: GET description: paginate floor packages of a channel outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: channelID in: path type: string required: true - name: page in: query type: integer - name: perpage in: query type: integer - name: api-channels-channelID-floors-packageID path: /api/channels/{channelID}/floors/{packageID} operations: - name: setchannelfloor method: PUT description: Create or update a floor package relationship (idempotent operation) outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: channelID in: path type: string required: true - name: packageID in: path type: string required: true - name: body in: body type: object description: Request body (JSON). required: false - name: removechannelfloor method: DELETE description: remove package as floor for a channel outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: channelID in: path type: string required: true - name: packageID in: path type: string required: true - name: api-instances-instanceID path: /api/instances/{instanceID} operations: - name: updateinstance method: PUT description: update instance outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: instanceID in: path type: string required: true - name: body in: body type: object description: Request body (JSON). required: true - name: config path: /config operations: - name: getconfig method: GET description: get app config outputRawFormat: json outputParameters: - name: result type: object value: $. - name: health path: /health operations: - name: health method: GET description: health endpoint outputRawFormat: json outputParameters: - name: result type: object value: $. - name: login-cb path: /login/cb operations: - name: logincb method: GET description: GitHub OAuth callback (GitHub mode only) outputRawFormat: json outputParameters: - name: result type: object value: $. - name: login-validate_token path: /login/validate_token operations: - name: validatetoken method: GET description: validate JWT access token (OIDC mode only) outputRawFormat: json outputParameters: - name: result type: object value: $. - name: login-webhook path: /login/webhook operations: - name: loginwebhook method: POST description: GitHub webhook (GitHub mode only) outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: X-Hub-Signature in: header type: string required: true - name: X-Github-Event in: header type: string required: true - name: v1-update path: /v1/update operations: - name: omaha method: POST description: omaha endpoint outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true authentication: type: bearer token: '{{env.FLATCAR_CONTAINER_LINUX_API_KEY}}' exposes: - type: rest namespace: nebraska-update-rest port: 8080 description: REST adapter for Nebraska. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/api/activity name: api-activity description: REST surface for api-activity. operations: - method: GET name: paginateactivity description: paginate activity call: nebraska-update.paginateactivity with: appIDorProductID: rest.appIDorProductID groupID: rest.groupID channelID: rest.channelID instanceID: rest.instanceID version: rest.version severity: rest.severity start: rest.start end: rest.end page: rest.page perpage: rest.perpage outputParameters: - type: object mapping: $. - path: /v1/api/apps name: api-apps description: REST surface for api-apps. operations: - method: GET name: paginateapps description: get Apps call: nebraska-update.paginateapps with: page: rest.page perpage: rest.perpage outputParameters: - type: object mapping: $. - method: POST name: createapp description: create app call: nebraska-update.createapp with: clone_from: rest.clone_from body: rest.body outputParameters: - type: object mapping: $. - path: /v1/api/apps/{appidorproductid} name: api-apps-appidorproductid description: REST surface for api-apps-appIDorProductID. operations: - method: GET name: getapp description: get app call: nebraska-update.getapp with: appIDorProductID: rest.appIDorProductID outputParameters: - type: object mapping: $. - method: PUT name: updateapp description: update app call: nebraska-update.updateapp with: appIDorProductID: rest.appIDorProductID body: rest.body outputParameters: - type: object mapping: $. - method: DELETE name: deleteapp description: delete app call: nebraska-update.deleteapp with: appIDorProductID: rest.appIDorProductID outputParameters: - type: object mapping: $. - path: /v1/api/apps/{appidorproductid}/channels name: api-apps-appidorproductid-channels description: REST surface for api-apps-appIDorProductID-channels. operations: - method: GET name: paginatechannels description: paginate channels of an app call: nebraska-update.paginatechannels with: appIDorProductID: rest.appIDorProductID page: rest.page perpage: rest.perpage outputParameters: - type: object mapping: $. - method: POST name: createchannel description: create channel call: nebraska-update.createchannel with: appIDorProductID: rest.appIDorProductID body: rest.body outputParameters: - type: object mapping: $. - path: /v1/api/apps/{appidorproductid}/channels/{channelid} name: api-apps-appidorproductid-channels-channelid description: REST surface for api-apps-appIDorProductID-channels-channelID. operations: - method: GET name: getchannel description: get channel by id call: nebraska-update.getchannel with: appIDorProductID: rest.appIDorProductID channelID: rest.channelID outputParameters: - type: object mapping: $. - method: PUT name: updatechannel description: update channel by id call: nebraska-update.updatechannel with: appIDorProductID: rest.appIDorProductID channelID: rest.channelID body: rest.body outputParameters: - type: object mapping: $. - method: DELETE name: deletechannel description: delete channel by id call: nebraska-update.deletechannel with: appIDorProductID: rest.appIDorProductID channelID: rest.channelID outputParameters: - type: object mapping: $. - path: /v1/api/apps/{appidorproductid}/groups name: api-apps-appidorproductid-groups description: REST surface for api-apps-appIDorProductID-groups. operations: - method: GET name: paginategroups description: paginate groups of an app call: nebraska-update.paginategroups with: appIDorProductID: rest.appIDorProductID page: rest.page perpage: rest.perpage outputParameters: - type: object mapping: $. - method: POST name: creategroup description: create group in app call: nebraska-update.creategroup with: appIDorProductID: rest.appIDorProductID body: rest.body outputParameters: - type: object mapping: $. - path: /v1/api/apps/{appidorproductid}/groups/{groupid} name: api-apps-appidorproductid-groups-groupid description: REST surface for api-apps-appIDorProductID-groups-groupID. operations: - method: GET name: getgroup description: get group given its groupID and appID call: nebraska-update.getgroup with: appIDorProductID: rest.appIDorProductID groupID: rest.groupID outputParameters: - type: object mapping: $. - method: PUT name: updategroup description: update group given its groupID and appID call: nebraska-update.updategroup with: appIDorProductID: rest.appIDorProductID groupID: rest.groupID body: rest.body outputParameters: - type: object mapping: $. - method: DELETE name: deletegroup description: delete group given its groupID and appID call: nebraska-update.deletegroup with: appIDorProductID: rest.appIDorProductID groupID: rest.groupID outputParameters: - type: object mapping: $. - path: /v1/api/apps/{appidorproductid}/groups/{groupid}/instances name: api-apps-appidorproductid-groups-groupid-instances description: REST surface for api-apps-appIDorProductID-groups-groupID-instances. operations: - method: GET name: getgroupinstances description: get instances of a group given its groupID and appID call: nebraska-update.getgroupinstances with: appIDorProductID: rest.appIDorProductID groupID: rest.groupID status: rest.status page: rest.page perpage: rest.perpage sortFilter: rest.sortFilter sortOrder: rest.sortOrder searchFilter: rest.searchFilter searchValue: rest.searchValue duration: rest.duration version: rest.version outputParameters: - type: object mapping: $. - path: /v1/api/apps/{appidorproductid}/groups/{groupid}/instances/{instanceid} name: api-apps-appidorproductid-groups-groupid-instances-instanceid description: REST surface for api-apps-appIDorProductID-groups-groupID-instances-instanceID. operations: - method: GET name: getinstance description: get instance of a group given its groupID and appID call: nebraska-update.getinstance with: appIDorProductID: rest.appIDorProductID groupID: rest.groupID instanceID: rest.instanceID outputParameters: - type: object mapping: $. - path: /v1/api/apps/{appidorproductid}/groups/{groupid}/instances/{instanceid}/status-history name: api-apps-appidorproductid-groups-groupid-instances-instanceid-status-history description: REST surface for api-apps-appIDorProductID-groups-groupID-instances-instanceID-status_history. operations: - method: GET name: getinstancestatushistory description: get instance status_history. call: nebraska-update.getinstancestatushistory with: appIDorProductID: rest.appIDorProductID groupID: rest.groupID instanceID: rest.instanceID limit: rest.limit outputParameters: - type: object mapping: $. - path: /v1/api/apps/{appidorproductid}/groups/{groupid}/instances-stats name: api-apps-appidorproductid-groups-groupid-instances-stats description: REST surface for api-apps-appIDorProductID-groups-groupID-instances_stats. operations: - method: GET name: getgroupinstancestats description: get instance stats of a group given its groupID and appID call: nebraska-update.getgroupinstancestats with: appIDorProductID: rest.appIDorProductID groupID: rest.groupID duration: rest.duration outputParameters: - type: object mapping: $. - path: /v1/api/apps/{appidorproductid}/groups/{groupid}/instancescount name: api-apps-appidorproductid-groups-groupid-instancescount description: REST surface for api-apps-appIDorProductID-groups-groupID-instancescount. operations: - method: GET name: getgroupinstancescount description: get instance count of a group given its groupID and appID call: nebraska-update.getgroupinstancescount with: appIDorProductID: rest.appIDorProductID groupID: rest.groupID duration: rest.duration outputParameters: - type: object mapping: $. - path: /v1/api/apps/{appidorproductid}/groups/{groupid}/status-timeline name: api-apps-appidorproductid-groups-groupid-status-timeline description: REST surface for api-apps-appIDorProductID-groups-groupID-status_timeline. operations: - method: GET name: getgroupstatustimeline description: get status timeline of a group given its groupID and appID call: nebraska-update.getgroupstatustimeline with: appIDorProductID: rest.appIDorProductID groupID: rest.groupID duration: rest.duration outputParameters: - type: object mapping: $. - path: /v1/api/apps/{appidorproductid}/groups/{groupid}/version-breakdown name: api-apps-appidorproductid-groups-groupid-version-breakdown description: REST surface for api-apps-appIDorProductID-groups-groupID-version_breakdown. operations: - method: GET name: getgroupversionbreakdown description: get version breakdown of a group given its groupID and appID call: nebraska-update.getgroupversionbreakdown with: appIDorProductID: rest.appIDorProductID groupID: rest.groupID outputParameters: - type: object mapping: $. - path: /v1/api/apps/{appidorproductid}/groups/{groupid}/version-timeline name: api-apps-appidorproductid-groups-groupid-version-timeline description: REST surface for api-apps-appIDorProductID-groups-groupID-version_timeline. operations: - method: GET name: getgroupversiontimeline description: get version timeline of a group given its groupID and appID call: nebraska-update.getgroupversiontimeline with: appIDorProductID: rest.appIDorProductID groupID: rest.groupID duration: rest.duration outputParameters: - type: object mapping: $. - path: /v1/api/apps/{appidorproductid}/packages name: api-apps-appidorproductid-packages description: REST surface for api-apps-appIDorProductID-packages. operations: - method: GET name: paginatepackages description: paginate packages of an app call: nebraska-update.paginatepackages with: appIDorProductID: rest.appIDorProductID page: rest.page perpage: rest.perpage searchVersion: rest.searchVersion outputParameters: - type: object mapping: $. - method: POST name: createpackage description: create package call: nebraska-update.createpackage with: appIDorProductID: rest.appIDorProductID body: rest.body outputParameters: - type: object mapping: $. - path: /v1/api/apps/{appidorproductid}/packages/{packageid} name: api-apps-appidorproductid-packages-packageid description: REST surface for api-apps-appIDorProductID-packages-packageID. operations: - method: GET name: getpackage description: get package given its packageID and appID call: nebraska-update.getpackage with: appIDorProductID: rest.appIDorProductID packageID: rest.packageID outputParameters: - type: object mapping: $. - method: PUT name: updatepackage description: update package given its packageID and appID call: nebraska-update.updatepackage with: appIDorProductID: rest.appIDorProductID packageID: rest.packageID body: rest.body outputParameters: - type: object mapping: $. - method: DELETE name: deletepackage description: delete package given its packageID and appID call: nebraska-update.deletepackage with: appIDorProductID: rest.appIDorProductID packageID: rest.packageID outputParameters: - type: object mapping: $. - path: /v1/api/apps/{appidorproductid}/packages/{packageid}/floor-channels name: api-apps-appidorproductid-packages-packageid-floor-channels description: REST surface for api-apps-appIDorProductID-packages-packageID-floor-channels. operations: - method: GET name: getpackagefloorchannels description: get all channels where a package is marked as a floor call: nebraska-update.getpackagefloorchannels with: appIDorProductID: rest.appIDorProductID packageID: rest.packageID outputParameters: - type: object mapping: $. - path: /v1/api/channels/{channelid}/floors name: api-channels-channelid-floors description: REST surface for api-channels-channelID-floors. operations: - method: GET name: paginatechannelfloors description: paginate floor packages of a channel call: nebraska-update.paginatechannelfloors with: channelID: rest.channelID page: rest.page perpage: rest.perpage outputParameters: - type: object mapping: $. - path: /v1/api/channels/{channelid}/floors/{packageid} name: api-channels-channelid-floors-packageid description: REST surface for api-channels-channelID-floors-packageID. operations: - method: PUT name: setchannelfloor description: Create or update a floor package relationship (idempotent operation) call: nebraska-update.setchannelfloor with: channelID: rest.channelID packageID: rest.packageID body: rest.body outputParameters: - type: object mapping: $. - method: DELETE name: removechannelfloor description: remove package as floor for a channel call: nebraska-update.removechannelfloor with: channelID: rest.channelID packageID: rest.packageID outputParameters: - type: object mapping: $. - path: /v1/api/instances/{instanceid} name: api-instances-instanceid description: REST surface for api-instances-instanceID. operations: - method: PUT name: updateinstance description: update instance call: nebraska-update.updateinstance with: instanceID: rest.instanceID body: rest.body outputParameters: - type: object mapping: $. - path: /v1/config name: config description: REST surface for config. operations: - method: GET name: getconfig description: get app config call: nebraska-update.getconfig outputParameters: - type: object mapping: $. - path: /v1/health name: health description: REST surface for health. operations: - method: GET name: health description: health endpoint call: nebraska-update.health outputParameters: - type: object mapping: $. - path: /v1/login/cb name: login-cb description: REST surface for login-cb. operations: - method: GET name: logincb description: GitHub OAuth callback (GitHub mode only) call: nebraska-update.logincb outputParameters: - type: object mapping: $. - path: /v1/login/validate-token name: login-validate-token description: REST surface for login-validate_token. operations: - method: GET name: validatetoken description: validate JWT access token (OIDC mode only) call: nebraska-update.validatetoken outputParameters: - type: object mapping: $. - path: /v1/login/webhook name: login-webhook description: REST surface for login-webhook. operations: - method: POST name: loginwebhook description: GitHub webhook (GitHub mode only) call: nebraska-update.loginwebhook with: X-Hub-Signature: rest.X-Hub-Signature X-Github-Event: rest.X-Github-Event outputParameters: - type: object mapping: $. - path: /v1/v1/update name: v1-update description: REST surface for v1-update. operations: - method: POST name: omaha description: omaha endpoint call: nebraska-update.omaha with: body: rest.body outputParameters: - type: object mapping: $. - type: mcp namespace: nebraska-update-mcp port: 9090 transport: http description: MCP adapter for Nebraska. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: paginate-activity description: paginate activity hints: readOnly: true destructive: false idempotent: true call: nebraska-update.paginateactivity with: appIDorProductID: tools.appIDorProductID groupID: tools.groupID channelID: tools.channelID instanceID: tools.instanceID version: tools.version severity: tools.severity start: tools.start end: tools.end page: tools.page perpage: tools.perpage outputParameters: - type: object mapping: $. - name: get-apps description: get Apps hints: readOnly: true destructive: false idempotent: true call: nebraska-update.paginateapps with: page: tools.page perpage: tools.perpage outputParameters: - type: object mapping: $. - name: create-app description: create app hints: readOnly: false destructive: false idempotent: false call: nebraska-update.createapp with: clone_from: tools.clone_from body: tools.body outputParameters: - type: object mapping: $. - name: get-app description: get app hints: readOnly: true destructive: false idempotent: true call: nebraska-update.getapp with: appIDorProductID: tools.appIDorProductID outputParameters: - type: object mapping: $. - name: update-app description: update app hints: readOnly: false destructive: false idempotent: true call: nebraska-update.updateapp with: appIDorProductID: tools.appIDorProductID body: tools.body outputParameters: - type: object mapping: $. - name: delete-app description: delete app hints: readOnly: false destructive: true idempotent: true call: nebraska-update.deleteapp with: appIDorProductID: tools.appIDorProductID outputParameters: - type: object mapping: $. - name: paginate-channels-app description: paginate channels of an app hints: readOnly: true destructive: false idempotent: true call: nebraska-update.paginatechannels with: appIDorProductID: tools.appIDorProductID page: tools.page perpage: tools.perpage outputParameters: - type: object mapping: $. - name: create-channel description: create channel hints: readOnly: false destructive: false idempotent: false call: nebraska-update.createchannel with: appIDorProductID: tools.appIDorProductID body: tools.body outputParameters: - type: object mapping: $. - name: get-channel-id description: get channel by id hints: readOnly: true destructive: false idempotent: true call: nebraska-update.getchannel with: appIDorProductID: tools.appIDorProductID channelID: tools.channelID outputParameters: - type: object mapping: $. - name: update-channel-id description: update channel by id hints: readOnly: false destructive: false idempotent: true call: nebraska-update.updatechannel with: appIDorProductID: tools.appIDorProductID channelID: tools.channelID body: tools.body outputParameters: - type: object mapping: $. - name: delete-channel-id description: delete channel by id hints: readOnly: false destructive: true idempotent: true call: nebraska-update.deletechannel with: appIDorProductID: tools.appIDorProductID channelID: tools.channelID outputParameters: - type: object mapping: $. - name: paginate-groups-app description: paginate groups of an app hints: readOnly: true destructive: false idempotent: true call: nebraska-update.paginategroups with: appIDorProductID: tools.appIDorProductID page: tools.page perpage: tools.perpage outputParameters: - type: object mapping: $. - name: create-group-app description: create group in app hints: readOnly: false destructive: false idempotent: false call: nebraska-update.creategroup with: appIDorProductID: tools.appIDorProductID body: tools.body outputParameters: - type: object mapping: $. - name: get-group-given-its-groupid description: get group given its groupID and appID hints: readOnly: true destructive: false idempotent: true call: nebraska-update.getgroup with: appIDorProductID: tools.appIDorProductID groupID: tools.groupID outputParameters: - type: object mapping: $. - name: update-group-given-its-groupid description: update group given its groupID and appID hints: readOnly: false destructive: false idempotent: true call: nebraska-update.updategroup with: appIDorProductID: tools.appIDorProductID groupID: tools.groupID body: tools.body outputParameters: - type: object mapping: $. - name: delete-group-given-its-groupid description: delete group given its groupID and appID hints: readOnly: false destructive: true idempotent: true call: nebraska-update.deletegroup with: appIDorProductID: tools.appIDorProductID groupID: tools.groupID outputParameters: - type: object mapping: $. - name: get-instances-group-given-its description: get instances of a group given its groupID and appID hints: readOnly: true destructive: false idempotent: true call: nebraska-update.getgroupinstances with: appIDorProductID: tools.appIDorProductID groupID: tools.groupID status: tools.status page: tools.page perpage: tools.perpage sortFilter: tools.sortFilter sortOrder: tools.sortOrder searchFilter: tools.searchFilter searchValue: tools.searchValue duration: tools.duration version: tools.version outputParameters: - type: object mapping: $. - name: get-instance-group-given-its description: get instance of a group given its groupID and appID hints: readOnly: true destructive: false idempotent: true call: nebraska-update.getinstance with: appIDorProductID: tools.appIDorProductID groupID: tools.groupID instanceID: tools.instanceID outputParameters: - type: object mapping: $. - name: get-instance-status-history description: get instance status_history. hints: readOnly: true destructive: false idempotent: true call: nebraska-update.getinstancestatushistory with: appIDorProductID: tools.appIDorProductID groupID: tools.groupID instanceID: tools.instanceID limit: tools.limit outputParameters: - type: object mapping: $. - name: get-instance-stats-group-given description: get instance stats of a group given its groupID and appID hints: readOnly: true destructive: false idempotent: true call: nebraska-update.getgroupinstancestats with: appIDorProductID: tools.appIDorProductID groupID: tools.groupID duration: tools.duration outputParameters: - type: object mapping: $. - name: get-instance-count-group-given description: get instance count of a group given its groupID and appID hints: readOnly: true destructive: false idempotent: true call: nebraska-update.getgroupinstancescount with: appIDorProductID: tools.appIDorProductID groupID: tools.groupID duration: tools.duration outputParameters: - type: object mapping: $. - name: get-status-timeline-group-given description: get status timeline of a group given its groupID and appID hints: readOnly: true destructive: false idempotent: true call: nebraska-update.getgroupstatustimeline with: appIDorProductID: tools.appIDorProductID groupID: tools.groupID duration: tools.duration outputParameters: - type: object mapping: $. - name: get-version-breakdown-group-given description: get version breakdown of a group given its groupID and appID hints: readOnly: true destructive: false idempotent: true call: nebraska-update.getgroupversionbreakdown with: appIDorProductID: tools.appIDorProductID groupID: tools.groupID outputParameters: - type: object mapping: $. - name: get-version-timeline-group-given description: get version timeline of a group given its groupID and appID hints: readOnly: true destructive: false idempotent: true call: nebraska-update.getgroupversiontimeline with: appIDorProductID: tools.appIDorProductID groupID: tools.groupID duration: tools.duration outputParameters: - type: object mapping: $. - name: paginate-packages-app description: paginate packages of an app hints: readOnly: true destructive: false idempotent: true call: nebraska-update.paginatepackages with: appIDorProductID: tools.appIDorProductID page: tools.page perpage: tools.perpage searchVersion: tools.searchVersion outputParameters: - type: object mapping: $. - name: create-package description: create package hints: readOnly: false destructive: false idempotent: false call: nebraska-update.createpackage with: appIDorProductID: tools.appIDorProductID body: tools.body outputParameters: - type: object mapping: $. - name: get-package-given-its-packageid description: get package given its packageID and appID hints: readOnly: true destructive: false idempotent: true call: nebraska-update.getpackage with: appIDorProductID: tools.appIDorProductID packageID: tools.packageID outputParameters: - type: object mapping: $. - name: update-package-given-its-packageid description: update package given its packageID and appID hints: readOnly: false destructive: false idempotent: true call: nebraska-update.updatepackage with: appIDorProductID: tools.appIDorProductID packageID: tools.packageID body: tools.body outputParameters: - type: object mapping: $. - name: delete-package-given-its-packageid description: delete package given its packageID and appID hints: readOnly: false destructive: true idempotent: true call: nebraska-update.deletepackage with: appIDorProductID: tools.appIDorProductID packageID: tools.packageID outputParameters: - type: object mapping: $. - name: get-all-channels-where-package description: get all channels where a package is marked as a floor hints: readOnly: true destructive: false idempotent: true call: nebraska-update.getpackagefloorchannels with: appIDorProductID: tools.appIDorProductID packageID: tools.packageID outputParameters: - type: object mapping: $. - name: paginate-floor-packages-channel description: paginate floor packages of a channel hints: readOnly: true destructive: false idempotent: true call: nebraska-update.paginatechannelfloors with: channelID: tools.channelID page: tools.page perpage: tools.perpage outputParameters: - type: object mapping: $. - name: create-update-floor-package-relationship description: Create or update a floor package relationship (idempotent operation) hints: readOnly: false destructive: false idempotent: true call: nebraska-update.setchannelfloor with: channelID: tools.channelID packageID: tools.packageID body: tools.body outputParameters: - type: object mapping: $. - name: remove-package-floor-channel description: remove package as floor for a channel hints: readOnly: false destructive: true idempotent: true call: nebraska-update.removechannelfloor with: channelID: tools.channelID packageID: tools.packageID outputParameters: - type: object mapping: $. - name: update-instance description: update instance hints: readOnly: false destructive: false idempotent: true call: nebraska-update.updateinstance with: instanceID: tools.instanceID body: tools.body outputParameters: - type: object mapping: $. - name: get-app-config description: get app config hints: readOnly: true destructive: false idempotent: true call: nebraska-update.getconfig outputParameters: - type: object mapping: $. - name: health-endpoint description: health endpoint hints: readOnly: true destructive: false idempotent: true call: nebraska-update.health outputParameters: - type: object mapping: $. - name: github-oauth-callback-github-mode description: GitHub OAuth callback (GitHub mode only) hints: readOnly: true destructive: false idempotent: true call: nebraska-update.logincb outputParameters: - type: object mapping: $. - name: validate-jwt-access-token-oidc description: validate JWT access token (OIDC mode only) hints: readOnly: true destructive: false idempotent: true call: nebraska-update.validatetoken outputParameters: - type: object mapping: $. - name: github-webhook-github-mode-only description: GitHub webhook (GitHub mode only) hints: readOnly: false destructive: false idempotent: false call: nebraska-update.loginwebhook with: X-Hub-Signature: tools.X-Hub-Signature X-Github-Event: tools.X-Github-Event outputParameters: - type: object mapping: $. - name: omaha-endpoint description: omaha endpoint hints: readOnly: false destructive: false idempotent: false call: nebraska-update.omaha with: body: tools.body outputParameters: - type: object mapping: $.