naftiko: 1.0.0-alpha2 info: label: Metal API — Ports description: 'Metal API — Ports. 14 operations. Lead operation: Retrieve a port. Self-contained Naftiko capability covering one Equinix business surface.' tags: - Equinix - Ports created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: EQUINIX_API_KEY: EQUINIX_API_KEY capability: consumes: - type: http namespace: metal-ports baseUri: https://api.equinix.com/metal/v1 description: Metal API — Ports business capability. Self-contained, no shared references. resources: - name: ports-id path: /ports/{id} operations: - name: findportbyid method: GET description: Retrieve a port outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Port UUID required: true - name: include in: query type: array description: Nested attributes to include. Included objects will return their full - name: ports-id-assign path: /ports/{id}/assign operations: - name: assignport method: POST description: Assign a port to virtual network outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Port UUID required: true - name: include in: query type: array description: Nested attributes to include. Included objects will return their full - name: body in: body type: object description: Request body (JSON). required: false - name: ports-id-bond path: /ports/{id}/bond operations: - name: bondport method: POST description: Enabling bonding outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Port UUID required: true - name: bulk_enable in: query type: boolean description: enable both ports - name: include in: query type: array description: Nested attributes to include. Included objects will return their full - name: ports-id-convert-layer-2 path: /ports/{id}/convert/layer-2 operations: - name: convertlayer2 method: POST description: Convert to Layer 2 outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Port UUID required: true - name: include in: query type: array description: Nested attributes to include. Included objects will return their full - name: body in: body type: object description: Request body (JSON). required: false - name: ports-id-convert-layer-3 path: /ports/{id}/convert/layer-3 operations: - name: convertlayer3 method: POST description: Convert to Layer 3 outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Port UUID required: true - name: include in: query type: array description: Nested attributes to include. Included objects will return their full - name: body in: body type: object description: Request body (JSON). required: false - name: ports-id-disbond path: /ports/{id}/disbond operations: - name: disbondport method: POST description: Disabling bonding outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Port UUID required: true - name: bulk_disable in: query type: boolean description: disable both ports - name: include in: query type: array description: Nested attributes to include. Included objects will return their full - name: ports-id-native-vlan path: /ports/{id}/native-vlan operations: - name: deletenativevlan method: DELETE description: Remove native VLAN outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Port UUID required: true - name: include in: query type: array description: Nested attributes to include. Included objects will return their full - name: assignnativevlan method: POST description: Assign a native VLAN outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Port UUID required: true - name: vnid in: query type: string description: 'Virtual Network ID. May be the UUID of the Virtual Network record, or the VLAN value itself (ex: ''1001'').' required: true - name: include in: query type: array description: Nested attributes to include. Included objects will return their full - name: ports-id-unassign path: /ports/{id}/unassign operations: - name: unassignport method: POST description: Unassign a port outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Port UUID required: true - name: include in: query type: array description: Nested attributes to include. Included objects will return their full - name: body in: body type: object description: Request body (JSON). required: false - name: ports-id-vlan-assignments path: /ports/{id}/vlan-assignments operations: - name: findportvlanassignments method: GET description: List Current VLAN assignments for a port outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Port UUID required: true - name: include in: query type: array description: Nested attributes to include. Included objects will return their full attributes. Attribute names can be dotted (up to 3 levels) to included deeply nested objec - name: ports-id-vlan-assignments-batches path: /ports/{id}/vlan-assignments/batches operations: - name: findportvlanassignmentbatches method: GET description: List the VLAN Assignment Batches for a port outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Port UUID required: true - name: createportvlanassignmentbatch method: POST description: Create a new Port-VLAN Assignment management batch outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Port UUID required: true - name: include in: query type: array description: Nested attributes to include. Included objects will return their full - name: body in: body type: object description: Request body (JSON). required: true - name: ports-id-vlan-assignments-batches-batch_id path: /ports/{id}/vlan-assignments/batches/{batch_id} operations: - name: findportvlanassignmentbatchbyportidandbatchid method: GET description: Retrieve a VLAN Assignment Batch's details outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Port UUID required: true - name: batch_id in: path type: string description: Batch ID required: true - name: include in: query type: array description: Nested attributes to include. Included objects will return their full - name: ports-id-vlan-assignments-assignment_id path: /ports/{id}/vlan-assignments/{assignment_id} operations: - name: findportvlanassignmentbyportidandassignmentid method: GET description: Show a particular Port VLAN assignment's details outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Port UUID required: true - name: assignment_id in: path type: string description: Assignment ID required: true - name: include in: query type: array description: Nested attributes to include. Included objects will return their full attributes. Attribute names can be dotted (up to 3 levels) to included deeply nested objec authentication: type: apikey key: X-Auth-Token value: '{{env.EQUINIX_API_KEY}}' placement: header exposes: - type: rest namespace: metal-ports-rest port: 8080 description: REST adapter for Metal API — Ports. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/ports/{id} name: ports-id description: REST surface for ports-id. operations: - method: GET name: findportbyid description: Retrieve a port call: metal-ports.findportbyid with: id: rest.id include: rest.include outputParameters: - type: object mapping: $. - path: /v1/ports/{id}/assign name: ports-id-assign description: REST surface for ports-id-assign. operations: - method: POST name: assignport description: Assign a port to virtual network call: metal-ports.assignport with: id: rest.id include: rest.include body: rest.body outputParameters: - type: object mapping: $. - path: /v1/ports/{id}/bond name: ports-id-bond description: REST surface for ports-id-bond. operations: - method: POST name: bondport description: Enabling bonding call: metal-ports.bondport with: id: rest.id bulk_enable: rest.bulk_enable include: rest.include outputParameters: - type: object mapping: $. - path: /v1/ports/{id}/convert/layer-2 name: ports-id-convert-layer-2 description: REST surface for ports-id-convert-layer-2. operations: - method: POST name: convertlayer2 description: Convert to Layer 2 call: metal-ports.convertlayer2 with: id: rest.id include: rest.include body: rest.body outputParameters: - type: object mapping: $. - path: /v1/ports/{id}/convert/layer-3 name: ports-id-convert-layer-3 description: REST surface for ports-id-convert-layer-3. operations: - method: POST name: convertlayer3 description: Convert to Layer 3 call: metal-ports.convertlayer3 with: id: rest.id include: rest.include body: rest.body outputParameters: - type: object mapping: $. - path: /v1/ports/{id}/disbond name: ports-id-disbond description: REST surface for ports-id-disbond. operations: - method: POST name: disbondport description: Disabling bonding call: metal-ports.disbondport with: id: rest.id bulk_disable: rest.bulk_disable include: rest.include outputParameters: - type: object mapping: $. - path: /v1/ports/{id}/native-vlan name: ports-id-native-vlan description: REST surface for ports-id-native-vlan. operations: - method: DELETE name: deletenativevlan description: Remove native VLAN call: metal-ports.deletenativevlan with: id: rest.id include: rest.include outputParameters: - type: object mapping: $. - method: POST name: assignnativevlan description: Assign a native VLAN call: metal-ports.assignnativevlan with: id: rest.id vnid: rest.vnid include: rest.include outputParameters: - type: object mapping: $. - path: /v1/ports/{id}/unassign name: ports-id-unassign description: REST surface for ports-id-unassign. operations: - method: POST name: unassignport description: Unassign a port call: metal-ports.unassignport with: id: rest.id include: rest.include body: rest.body outputParameters: - type: object mapping: $. - path: /v1/ports/{id}/vlan-assignments name: ports-id-vlan-assignments description: REST surface for ports-id-vlan-assignments. operations: - method: GET name: findportvlanassignments description: List Current VLAN assignments for a port call: metal-ports.findportvlanassignments with: id: rest.id include: rest.include outputParameters: - type: object mapping: $. - path: /v1/ports/{id}/vlan-assignments/batches name: ports-id-vlan-assignments-batches description: REST surface for ports-id-vlan-assignments-batches. operations: - method: GET name: findportvlanassignmentbatches description: List the VLAN Assignment Batches for a port call: metal-ports.findportvlanassignmentbatches with: id: rest.id outputParameters: - type: object mapping: $. - method: POST name: createportvlanassignmentbatch description: Create a new Port-VLAN Assignment management batch call: metal-ports.createportvlanassignmentbatch with: id: rest.id include: rest.include body: rest.body outputParameters: - type: object mapping: $. - path: /v1/ports/{id}/vlan-assignments/batches/{batch-id} name: ports-id-vlan-assignments-batches-batch-id description: REST surface for ports-id-vlan-assignments-batches-batch_id. operations: - method: GET name: findportvlanassignmentbatchbyportidandbatchid description: Retrieve a VLAN Assignment Batch's details call: metal-ports.findportvlanassignmentbatchbyportidandbatchid with: id: rest.id batch_id: rest.batch_id include: rest.include outputParameters: - type: object mapping: $. - path: /v1/ports/{id}/vlan-assignments/{assignment-id} name: ports-id-vlan-assignments-assignment-id description: REST surface for ports-id-vlan-assignments-assignment_id. operations: - method: GET name: findportvlanassignmentbyportidandassignmentid description: Show a particular Port VLAN assignment's details call: metal-ports.findportvlanassignmentbyportidandassignmentid with: id: rest.id assignment_id: rest.assignment_id include: rest.include outputParameters: - type: object mapping: $. - type: mcp namespace: metal-ports-mcp port: 9090 transport: http description: MCP adapter for Metal API — Ports. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: retrieve-port description: Retrieve a port hints: readOnly: true destructive: false idempotent: true call: metal-ports.findportbyid with: id: tools.id include: tools.include outputParameters: - type: object mapping: $. - name: assign-port-virtual-network description: Assign a port to virtual network hints: readOnly: false destructive: false idempotent: false call: metal-ports.assignport with: id: tools.id include: tools.include body: tools.body outputParameters: - type: object mapping: $. - name: enabling-bonding description: Enabling bonding hints: readOnly: false destructive: false idempotent: false call: metal-ports.bondport with: id: tools.id bulk_enable: tools.bulk_enable include: tools.include outputParameters: - type: object mapping: $. - name: convert-layer-2 description: Convert to Layer 2 hints: readOnly: false destructive: false idempotent: false call: metal-ports.convertlayer2 with: id: tools.id include: tools.include body: tools.body outputParameters: - type: object mapping: $. - name: convert-layer-3 description: Convert to Layer 3 hints: readOnly: false destructive: false idempotent: false call: metal-ports.convertlayer3 with: id: tools.id include: tools.include body: tools.body outputParameters: - type: object mapping: $. - name: disabling-bonding description: Disabling bonding hints: readOnly: false destructive: false idempotent: false call: metal-ports.disbondport with: id: tools.id bulk_disable: tools.bulk_disable include: tools.include outputParameters: - type: object mapping: $. - name: remove-native-vlan description: Remove native VLAN hints: readOnly: false destructive: true idempotent: true call: metal-ports.deletenativevlan with: id: tools.id include: tools.include outputParameters: - type: object mapping: $. - name: assign-native-vlan description: Assign a native VLAN hints: readOnly: false destructive: false idempotent: false call: metal-ports.assignnativevlan with: id: tools.id vnid: tools.vnid include: tools.include outputParameters: - type: object mapping: $. - name: unassign-port description: Unassign a port hints: readOnly: false destructive: false idempotent: false call: metal-ports.unassignport with: id: tools.id include: tools.include body: tools.body outputParameters: - type: object mapping: $. - name: list-current-vlan-assignments-port description: List Current VLAN assignments for a port hints: readOnly: true destructive: false idempotent: true call: metal-ports.findportvlanassignments with: id: tools.id include: tools.include outputParameters: - type: object mapping: $. - name: list-vlan-assignment-batches-port description: List the VLAN Assignment Batches for a port hints: readOnly: true destructive: false idempotent: true call: metal-ports.findportvlanassignmentbatches with: id: tools.id outputParameters: - type: object mapping: $. - name: create-new-port-vlan-assignment description: Create a new Port-VLAN Assignment management batch hints: readOnly: false destructive: false idempotent: false call: metal-ports.createportvlanassignmentbatch with: id: tools.id include: tools.include body: tools.body outputParameters: - type: object mapping: $. - name: retrieve-vlan-assignment-batch-s-details description: Retrieve a VLAN Assignment Batch's details hints: readOnly: true destructive: false idempotent: true call: metal-ports.findportvlanassignmentbatchbyportidandbatchid with: id: tools.id batch_id: tools.batch_id include: tools.include outputParameters: - type: object mapping: $. - name: show-particular-port-vlan-assignment-s description: Show a particular Port VLAN assignment's details hints: readOnly: true destructive: false idempotent: true call: metal-ports.findportvlanassignmentbyportidandassignmentid with: id: tools.id assignment_id: tools.assignment_id include: tools.include outputParameters: - type: object mapping: $.