All rights reserved. No part of this publication may be reproduced, distributed, or transmitted in any form or by any means, including photocopying, recording, or other electronic or mechanical methods, without the prior written permission of the publisher, except in the case of brief quotations embodied in critical reviews and certain other noncommercial uses permitted by copyright law. For permission requests, write to the publisher, addressed “Attention: Permissions Coordinator,” at the address below.
This specification defines the FIWARE-Netfloc GE API. The APIs expose the network filtered per tenant. This includes retrieval of network graph, interfaces and network path - all filtered per tenant. It also includes APIs to define network flow patterns and perform CRUD operations on such flow pattenrs over the network paths.
This is a work in progress and is changing on a daily bases. This specification is licensed under the FIWARE Open Specification License.
Netfloc application API.
Headers
Content-Type: application/jsonBody
{
    "status": "Network Graphs retrieved",
    "data": [
        {
            "linkPorts": [],
            "internalPorts": [],
            "hostPorts": []
        }
    ]
}
Headers
Content-Type: application/jsonBody
{
    "status": "filtered Network Graph retrieved",
    "data": [
        {
            "externalPorts": [
                { "link": ??? }
            ],
            "internalPorts": [],
            "hostPorts": [
                { "tenant": tenant }
            ]
        }   
    ]
}
Headers
Content-Type: application/jsonBody
{
    "status": "tenant list retrieved",
    "data": [
        "tenant1", "tenant2", "tenant3"
    ]
}
Headers
Content-Type: application/jsonBody
{
    "status": "all host ports retrieved",
    "data": [
        {
            "ofPort": 1,
            "tenant": "tenant1",
            "l2Address": "ff:ff:ff:ff:ff:ff",
            "l3Addresses": [
                "192.168.0.1"
            ]
        }
    ]
}
Headers
Content-Type: application/jsonBody
{   "status": "Network path retrieved",
    "data": {
        "flowPatterns" [],
        "path" :[
            {
                "srcHostPort": {
                    "ofPort": 1,
                    "tenant": "tenant1",
                    "l2Address": "00:00:00:00:00:01",
                    "l3Addresses": [
                        "192.168.0.1"
                    ]
                },
                "nextLinkPort": {
                    "ofPort": 3
                }
            },
            {
                "previousLinkPort": {
                    "ofPort": 1
                },
                "nextLinkPort": {
                    "ofPort": 3
                }
            },
            {
                "previousLinkPort": {
                    "ofPort": 3
                },
                "dstHostPort": {
                    "ofPort": 1,
                    "tenant": "tenant1",
                    "l2Address": "00:00:00:00:00:02",
                    "l3Addresses": [
                        "192.168.0.2"
                    ]
                }
            }
        ]
    }
}
Headers
Content-Type: application/jsonBody
{
    "status": "flow pattern retrieved",
    "data": [
        {
            "srcBridge": [
                {
                    "match": {
                        "in_port": "srcHostPort",
                        "hw_src": "srcMAC",
                        "hw_dst": "dstMAC"
                    },
                    "actions": {
                        "output": "nextLinkPort"
                    }
                }
            ],
            "linkBridge": [
                {
                    "match": {
                        "hw_dst": "dstMAC"
                    },
                    "actions": {
                        "output": "nextLinkPort"
                    }
                }
            ],
            "dstBridge": [
                {
                    "match": {
                        "hw_dst": "dstMAC"
                    },
                    "actions": {
                        "output": "dstHostPort"
                    }
                }
            ]
        }
    ]
}
Headers
Content-Type: application/jsonBody
{
    "srcBridge": [
        {
            "match": {
                "in_port": "srcHostPort",
                "hw_src": "srcMAC",
                "hw_dst": "dstMAC"
            },
            "actions": {
                "output": "nextLinkPort"
            }
        }
    ],
    "linkBridge": [
        {
            "match": {
                "hw_dst": "dstMAC"
            },
            "actions": {
                "output": "nextLinkPort"
            }
        }
    ],
    "dstBridge": [
        {
            "match": {
                "hw_dst": "dstMAC"
            },
            "actions": {
                "output": "dstHostPort"
            }
        }
    ]
}
Headers
Content-Type: application/jsonBody
{
    "status": "flowPattern created",
    "id": 2
}
Headers
Content-Type: application/jsonBody
{
    "status": "request malformed"
}
Headers
Content-Type: application/jsonBody
{
    "status": "flow pattern retrieved"
    "data": {
        "srcBridge": [
            {
                "match": {
                    "in_port": "srcHostPort",
                    "hw_src": "srcMAC",
                    "hw_dst": "dstMAC"
                },
                "actions": {
                    "output": "nextLinkPort"
                }
            }
        ],
        "linkBridge": [
            {
                "match": {
                    "hw_dst": "dstMAC"
                },
                "actions": {
                    "output": "nextLinkPort"
                }
            }
        ],
        "dstBridge": [
            {
                "match": {
                    "hw_dst": "dstMAC"
                },
                "actions": {
                    "output": "dstHostPort"
                }
            }
        ]
    }
}
Headers
Content-Type: application/jsonBody
{
    "status": "flowPattern does not exist"
}
Headers
Content-Type: application/jsonBody
{
    "status": "flowPattern is deleted permanently"
}
Headers
Content-Type: application/jsonBody
{
    "srcBridge": [
        {
            "match": {
                "in_port": "srcHostPort",
                "hw_src": "srcMAC",
                "hw_dst": "dstMAC"
            },
            "actions": {
                "output": "nextLinkPort"
            }
        }
    ],
    "linkBridge": [
        {
            "match": {
                "hw_dst": "dstMAC"
            },
            "actions": {
                "output": "nextLinkPort"
            }
        }
    ],
    "dstBridge": [
        {
            "match": {
                "hw_dst": "dstMAC"
            },
            "actions": {
                "output": "dstHostPort"
            }
        }
    ]
}
Headers
Content-Type: application/jsonBody
{
    "status": "flowPattern updated"
}
Headers
Content-Type: application/jsonBody
{
    "status": "request malformed"
}
Headers
Content-Type: application/jsonBody
{
    "status": "flowPattern does not exist"
}
Headers
Content-Type: application/jsonBody
{
    "status": "flowPattern has been deleted permanently"
}
Headers
Content-Type: application/jsonBody
{
    "status": "flowPattern is deleted successfully"
}
Headers
Content-Type: application/jsonBody
{
    "status": "transaction condition not met, flowPattern is installed on networkPath(s)",
    "data": {
        "networkPaths": [
        ]
    }
}
Headers
Content-Type: application/jsonBody
{
    "status": "flowPattern does not exist"
}
Headers
Content-Type: application/jsonBody
{
    "status": "request malformed"
}
Headers
Content-Type: application/jsonBody
{
    "status": "flowPattern is posted onto networkPath"
}
Headers
Content-Type: application/jsonBody
{
    "status": "flowPattern does not exist"
}
Headers
Content-Type: application/jsonBody
{
    "status": "flowPattern has been deleted permanently"
}
Headers
Content-Type: application/jsonBody
{
    "status": "flowPattern is not allready installed"
}
Headers
Content-Type: application/jsonBody
{
    "status": "flowPattern successfully deleted from network path"
}
Headers
Content-Type: application/jsonBody
{
    "status": "flowPattern not found on network path"
}
Headers
Content-Type: application/jsonBody
{
    "status": "flowPattern does not exist"
}
Headers
Content-Type: application/jsonBody
{
    "status": "flowPattern allready deleted on network path"
}