naftiko: 1.0.0-alpha2 info: label: Cumulocity Device Bootstrap API — Credentials description: Zero-touch onboarding — devices poll for credentials with their external ID and operators accept the registration request to bind a tenant-scoped user. tags: [Cumulocity, Bootstrap, Device Onboarding] created: '2026-05-25' modified: '2026-05-25' binds: - namespace: env keys: C8Y_BASE_URL: C8Y_BASE_URL C8Y_BOOTSTRAP_USER: C8Y_BOOTSTRAP_USER C8Y_BOOTSTRAP_PASSWORD: C8Y_BOOTSTRAP_PASSWORD C8Y_USER: C8Y_USER C8Y_PASSWORD: C8Y_PASSWORD capability: consumes: - type: http namespace: device-bootstrap-credentials baseUri: '{{env.C8Y_BASE_URL}}' resources: - name: device-credentials path: /devicecontrol/deviceCredentials operations: - name: requestdevicecredentials method: POST description: Request Device Credentials (Polled By The Device) inputParameters: - {name: body, in: body, type: object, required: true} - name: new-device-requests path: /devicecontrol/newDeviceRequests operations: - name: listnewdevicerequests method: GET description: List New Device Requests - name: createnewdevicerequest method: POST description: Create A New Device Request inputParameters: - {name: body, in: body, type: object, required: true} - name: new-device-request path: /devicecontrol/newDeviceRequests/{id} operations: - name: acceptnewdevicerequest method: PUT description: Accept Or Reject A New Device Request inputParameters: - {name: id, in: path, type: string, required: true} - {name: body, in: body, type: object, required: true} authentication: type: basic username: '{{env.C8Y_USER}}' password: '{{env.C8Y_PASSWORD}}' exposes: - type: mcp namespace: device-bootstrap-credentials-mcp port: 9090 transport: http tools: - name: cumulocity-list-registration-requests description: List pending Cumulocity device registration requests. hints: {readOnly: true, destructive: false, idempotent: true} call: device-bootstrap-credentials.listnewdevicerequests with: {} - name: cumulocity-accept-registration description: Accept a pending Cumulocity device registration request, allowing the device to receive its credentials. hints: {readOnly: false, destructive: false, idempotent: true} call: device-bootstrap-credentials.acceptnewdevicerequest with: {id: tools.id, body: tools.body}