naftiko: 1.0.0-alpha2 info: label: Netflix Eureka REST API — Instances description: 'Netflix Eureka REST API — Instances. 8 operations. Lead operation: Register a new application instance. Self-contained Naftiko capability covering one Netflix Eureka business surface.' tags: - Netflix Eureka - Instances created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: NETFLIX_EUREKA_API_KEY: NETFLIX_EUREKA_API_KEY capability: consumes: - type: http namespace: eureka-rest-instances baseUri: http://localhost:8761/eureka description: Netflix Eureka REST API — Instances business capability. Self-contained, no shared references. resources: - name: apps-appId path: /apps/{appId} operations: - name: registerinstance method: POST description: Register a new application instance outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: appId in: path type: string description: Application name required: true - name: body in: body type: object description: Request body (JSON). required: true - name: apps-appId-instanceId path: /apps/{appId}/{instanceId} operations: - name: getinstance method: GET description: Get a specific instance outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: appId in: path type: string required: true - name: instanceId in: path type: string description: Instance ID (typically hostname) required: true - name: deregisterinstance method: DELETE description: Deregister an instance outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: appId in: path type: string required: true - name: instanceId in: path type: string required: true - name: sendheartbeat method: PUT description: Send heartbeat outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: appId in: path type: string required: true - name: instanceId in: path type: string required: true - name: status in: query type: string description: Overridden status value - name: lastDirtyTimestamp in: query type: string description: Last dirty timestamp for conflict resolution - name: overriddenstatus in: query type: string description: Overridden status - name: apps-appId-instanceId-metadata path: /apps/{appId}/{instanceId}/metadata operations: - name: updateinstancemetadata method: PUT description: Update instance metadata outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: appId in: path type: string required: true - name: instanceId in: path type: string required: true - name: body in: body type: object description: Request body (JSON). required: false - name: apps-appId-instanceId-status path: /apps/{appId}/{instanceId}/status operations: - name: updateinstancestatus method: PUT description: Update instance status override outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: appId in: path type: string required: true - name: instanceId in: path type: string required: true - name: value in: query type: string description: New status value required: true - name: lastDirtyTimestamp in: query type: string - name: removeinstancestatusoverride method: DELETE description: Remove status override outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: appId in: path type: string required: true - name: instanceId in: path type: string required: true - name: lastDirtyTimestamp in: query type: string - name: instances-instanceId path: /instances/{instanceId} operations: - name: getinstancebyid method: GET description: Get instance by ID outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: instanceId in: path type: string required: true exposes: - type: rest namespace: eureka-rest-instances-rest port: 8080 description: REST adapter for Netflix Eureka REST API — Instances. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/apps/{appid} name: apps-appid description: REST surface for apps-appId. operations: - method: POST name: registerinstance description: Register a new application instance call: eureka-rest-instances.registerinstance with: appId: rest.appId body: rest.body outputParameters: - type: object mapping: $. - path: /v1/apps/{appid}/{instanceid} name: apps-appid-instanceid description: REST surface for apps-appId-instanceId. operations: - method: GET name: getinstance description: Get a specific instance call: eureka-rest-instances.getinstance with: appId: rest.appId instanceId: rest.instanceId outputParameters: - type: object mapping: $. - method: DELETE name: deregisterinstance description: Deregister an instance call: eureka-rest-instances.deregisterinstance with: appId: rest.appId instanceId: rest.instanceId outputParameters: - type: object mapping: $. - method: PUT name: sendheartbeat description: Send heartbeat call: eureka-rest-instances.sendheartbeat with: appId: rest.appId instanceId: rest.instanceId status: rest.status lastDirtyTimestamp: rest.lastDirtyTimestamp overriddenstatus: rest.overriddenstatus outputParameters: - type: object mapping: $. - path: /v1/apps/{appid}/{instanceid}/metadata name: apps-appid-instanceid-metadata description: REST surface for apps-appId-instanceId-metadata. operations: - method: PUT name: updateinstancemetadata description: Update instance metadata call: eureka-rest-instances.updateinstancemetadata with: appId: rest.appId instanceId: rest.instanceId body: rest.body outputParameters: - type: object mapping: $. - path: /v1/apps/{appid}/{instanceid}/status name: apps-appid-instanceid-status description: REST surface for apps-appId-instanceId-status. operations: - method: PUT name: updateinstancestatus description: Update instance status override call: eureka-rest-instances.updateinstancestatus with: appId: rest.appId instanceId: rest.instanceId value: rest.value lastDirtyTimestamp: rest.lastDirtyTimestamp outputParameters: - type: object mapping: $. - method: DELETE name: removeinstancestatusoverride description: Remove status override call: eureka-rest-instances.removeinstancestatusoverride with: appId: rest.appId instanceId: rest.instanceId lastDirtyTimestamp: rest.lastDirtyTimestamp outputParameters: - type: object mapping: $. - path: /v1/instances/{instanceid} name: instances-instanceid description: REST surface for instances-instanceId. operations: - method: GET name: getinstancebyid description: Get instance by ID call: eureka-rest-instances.getinstancebyid with: instanceId: rest.instanceId outputParameters: - type: object mapping: $. - type: mcp namespace: eureka-rest-instances-mcp port: 9090 transport: http description: MCP adapter for Netflix Eureka REST API — Instances. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: register-new-application-instance description: Register a new application instance hints: readOnly: false destructive: false idempotent: false call: eureka-rest-instances.registerinstance with: appId: tools.appId body: tools.body outputParameters: - type: object mapping: $. - name: get-specific-instance description: Get a specific instance hints: readOnly: true destructive: false idempotent: true call: eureka-rest-instances.getinstance with: appId: tools.appId instanceId: tools.instanceId outputParameters: - type: object mapping: $. - name: deregister-instance description: Deregister an instance hints: readOnly: false destructive: true idempotent: true call: eureka-rest-instances.deregisterinstance with: appId: tools.appId instanceId: tools.instanceId outputParameters: - type: object mapping: $. - name: send-heartbeat description: Send heartbeat hints: readOnly: false destructive: false idempotent: true call: eureka-rest-instances.sendheartbeat with: appId: tools.appId instanceId: tools.instanceId status: tools.status lastDirtyTimestamp: tools.lastDirtyTimestamp overriddenstatus: tools.overriddenstatus outputParameters: - type: object mapping: $. - name: update-instance-metadata description: Update instance metadata hints: readOnly: false destructive: false idempotent: true call: eureka-rest-instances.updateinstancemetadata with: appId: tools.appId instanceId: tools.instanceId body: tools.body outputParameters: - type: object mapping: $. - name: update-instance-status-override description: Update instance status override hints: readOnly: false destructive: false idempotent: true call: eureka-rest-instances.updateinstancestatus with: appId: tools.appId instanceId: tools.instanceId value: tools.value lastDirtyTimestamp: tools.lastDirtyTimestamp outputParameters: - type: object mapping: $. - name: remove-status-override description: Remove status override hints: readOnly: false destructive: true idempotent: true call: eureka-rest-instances.removeinstancestatusoverride with: appId: tools.appId instanceId: tools.instanceId lastDirtyTimestamp: tools.lastDirtyTimestamp outputParameters: - type: object mapping: $. - name: get-instance-id description: Get instance by ID hints: readOnly: true destructive: false idempotent: true call: eureka-rest-instances.getinstancebyid with: instanceId: tools.instanceId outputParameters: - type: object mapping: $.