naftiko: 1.0.0-alpha2 info: label: Instance API — IPs description: 'Instance API — IPs. 6 operations. Lead operation: List all flexible IPs. Self-contained Naftiko capability covering one Scaleway business surface.' tags: - Scaleway - IPs created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: SCALEWAY_API_KEY: SCALEWAY_API_KEY capability: consumes: - type: http namespace: instance-ips baseUri: https://api.scaleway.com description: Instance API — IPs business capability. Self-contained, no shared references. resources: - name: instance-v1-zones-zone-ips path: /instance/v1/zones/{zone}/ips operations: - name: listips method: GET description: List all flexible IPs outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: zone in: path type: string description: The zone you want to target required: true - name: project in: query type: string description: Project ID in which the IPs are reserved. - name: organization in: query type: string description: Organization ID in which the IPs are reserved. - name: tags in: query type: string description: Filter IPs with these exact tags (to filter with several tags, use commas to separate them). - name: name in: query type: string description: Filter on the IP address (Works as a LIKE operation on the IP address). - name: per_page in: query type: integer description: A positive integer lower or equal to 100 to select the number of items to return. - name: page in: query type: integer description: A positive integer to choose the page to return. - name: type in: query type: string description: Filter on the IP Mobility IP type (whose value should be either 'routed_ipv4' or 'routed_ipv6'). - name: createip method: POST description: Reserve a flexible IP outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: zone in: path type: string description: The zone you want to target required: true - name: body in: body type: object description: Request body (JSON). required: true - name: instance-v1-zones-zone-ips-ip_id-release-to-ipam path: /instance/v1/zones/{zone}/ips/{ip_id}/release-to-ipam operations: - name: releaseiptoipam method: POST description: Releases the reserved IP without deleting the reservation. outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: zone in: path type: string description: The zone you want to target required: true - name: ip_id in: path type: string description: ID of the IP you want to release from the Instance but retain in IPAM. required: true - name: body in: body type: object description: Request body (JSON). required: true - name: instance-v1-zones-zone-ips-ip path: /instance/v1/zones/{zone}/ips/{ip} operations: - name: getip method: GET description: Get a flexible IP outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: zone in: path type: string description: The zone you want to target required: true - name: ip in: path type: string description: IP ID or address to get. required: true - name: updateip method: PATCH description: Update a flexible IP outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: zone in: path type: string description: The zone you want to target required: true - name: ip in: path type: string description: IP ID or IP address. required: true - name: body in: body type: object description: Request body (JSON). required: true - name: deleteip method: DELETE description: Delete a flexible IP outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: zone in: path type: string description: The zone you want to target required: true - name: ip in: path type: string description: ID or address of the IP to delete. required: true authentication: type: apikey key: X-Auth-Token value: '{{env.SCALEWAY_API_KEY}}' placement: header exposes: - type: rest namespace: instance-ips-rest port: 8080 description: REST adapter for Instance API — IPs. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/instance/v1/zones/{zone}/ips name: instance-v1-zones-zone-ips description: REST surface for instance-v1-zones-zone-ips. operations: - method: GET name: listips description: List all flexible IPs call: instance-ips.listips with: zone: rest.zone project: rest.project organization: rest.organization tags: rest.tags name: rest.name per_page: rest.per_page page: rest.page type: rest.type outputParameters: - type: object mapping: $. - method: POST name: createip description: Reserve a flexible IP call: instance-ips.createip with: zone: rest.zone body: rest.body outputParameters: - type: object mapping: $. - path: /v1/instance/v1/zones/{zone}/ips/{ip-id}/release-to-ipam name: instance-v1-zones-zone-ips-ip-id-release-to-ipam description: REST surface for instance-v1-zones-zone-ips-ip_id-release-to-ipam. operations: - method: POST name: releaseiptoipam description: Releases the reserved IP without deleting the reservation. call: instance-ips.releaseiptoipam with: zone: rest.zone ip_id: rest.ip_id body: rest.body outputParameters: - type: object mapping: $. - path: /v1/instance/v1/zones/{zone}/ips/{ip} name: instance-v1-zones-zone-ips-ip description: REST surface for instance-v1-zones-zone-ips-ip. operations: - method: GET name: getip description: Get a flexible IP call: instance-ips.getip with: zone: rest.zone ip: rest.ip outputParameters: - type: object mapping: $. - method: PATCH name: updateip description: Update a flexible IP call: instance-ips.updateip with: zone: rest.zone ip: rest.ip body: rest.body outputParameters: - type: object mapping: $. - method: DELETE name: deleteip description: Delete a flexible IP call: instance-ips.deleteip with: zone: rest.zone ip: rest.ip outputParameters: - type: object mapping: $. - type: mcp namespace: instance-ips-mcp port: 9090 transport: http description: MCP adapter for Instance API — IPs. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: list-all-flexible-ips description: List all flexible IPs hints: readOnly: true destructive: false idempotent: true call: instance-ips.listips with: zone: tools.zone project: tools.project organization: tools.organization tags: tools.tags name: tools.name per_page: tools.per_page page: tools.page type: tools.type outputParameters: - type: object mapping: $. - name: reserve-flexible-ip description: Reserve a flexible IP hints: readOnly: false destructive: false idempotent: false call: instance-ips.createip with: zone: tools.zone body: tools.body outputParameters: - type: object mapping: $. - name: releases-reserved-ip-without-deleting description: Releases the reserved IP without deleting the reservation. hints: readOnly: false destructive: false idempotent: false call: instance-ips.releaseiptoipam with: zone: tools.zone ip_id: tools.ip_id body: tools.body outputParameters: - type: object mapping: $. - name: get-flexible-ip description: Get a flexible IP hints: readOnly: true destructive: false idempotent: true call: instance-ips.getip with: zone: tools.zone ip: tools.ip outputParameters: - type: object mapping: $. - name: update-flexible-ip description: Update a flexible IP hints: readOnly: false destructive: false idempotent: true call: instance-ips.updateip with: zone: tools.zone ip: tools.ip body: tools.body outputParameters: - type: object mapping: $. - name: delete-flexible-ip description: Delete a flexible IP hints: readOnly: false destructive: true idempotent: true call: instance-ips.deleteip with: zone: tools.zone ip: tools.ip outputParameters: - type: object mapping: $.