{
    "openapi": "3.0.2",
    "info": {
        "title": "Service for namespace ODataDemo",
        "description": "This service is located at [https://localhost/service-root/](https://localhost/service-root/)\n\n## Entity Data Model\n![ER Diagram](https://yuml.me/diagram/class/[Product{bg:lightslategray}],[Product]*-[Category{bg:lightslategray}],[Category{bg:lightslategray}],[Supplier{bg:lightslategray}],[Supplier]++-[Address],[Supplier]0..1-*[Product{bg:lightslategray}],[Country{bg:lightslategray}],[Address],[Address]-0..1>[Country{bg:lightslategray}],[ProductsByRating{bg:lawngreen}]-*>[Product],[Countries%20{bg:lawngreen}]++-*>[Country],[MainSupplier%20{bg:lawngreen}]++->[Supplier],[Suppliers%20{bg:lawngreen}]++-*>[Supplier],[Categories%20{bg:lawngreen}]++-*>[Category],[Products%20{bg:lawngreen}]++-*>[Product])\n\n### Legend\n![Legend](https://yuml.me/diagram/plain;dir:TB;scale:60/class/[External.Type{bg:whitesmoke}],[ComplexType],[EntityType{bg:lightslategray}],[EntitySet/Singleton/Operation{bg:lawngreen}])",
        "version": ""
    },
    "servers": [
        {
            "url": "https://localhost/service-root"
        }
    ],
    "tags": [
        {
            "name": "Products"
        },
        {
            "name": "Categories",
            "description": "Product Categories"
        },
        {
            "name": "Suppliers"
        },
        {
            "name": "MainSupplier",
            "description": "Primary Supplier"
        },
        {
            "name": "Countries"
        }
    ],
    "paths": {
        "/Products": {
            "get": {
                "summary": "Get entities from Products",
                "tags": [
                    "Products"
                ],
                "parameters": [
                    {
                        "$ref": "#/components/parameters/top"
                    },
                    {
                        "$ref": "#/components/parameters/skip"
                    },
                    {
                        "$ref": "#/components/parameters/search"
                    },
                    {
                        "name": "filter",
                        "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
                        "in": "query",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/count"
                    },
                    {
                        "name": "orderby",
                        "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
                        "in": "query",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "enum": [
                                    "ID",
                                    "ID desc",
                                    "Description",
                                    "Description desc",
                                    "ReleaseDate",
                                    "ReleaseDate desc",
                                    "DiscontinuedDate",
                                    "DiscontinuedDate desc",
                                    "Rating",
                                    "Rating desc",
                                    "Price",
                                    "Price desc",
                                    "Currency",
                                    "Currency desc"
                                ]
                            }
                        }
                    },
                    {
                        "name": "select",
                        "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
                        "in": "query",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "enum": [
                                    "ID",
                                    "Description",
                                    "ReleaseDate",
                                    "DiscontinuedDate",
                                    "Rating",
                                    "Price",
                                    "Currency"
                                ]
                            }
                        }
                    },
                    {
                        "name": "expand",
                        "description": "Expand related entities, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
                        "in": "query",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "enum": [
                                    "*",
                                    "Category",
                                    "Supplier"
                                ]
                            }
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Retrieved entities",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "title": "Collection of Product",
                                    "properties": {
                                        "@count": {
                                            "$ref": "#/components/schemas/count"
                                        },
                                        "value": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/ODataDemo.Product"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "4XX": {
                        "$ref": "#/components/responses/error"
                    }
                }
            },
            "post": {
                "summary": "Add new entity to Products",
                "tags": [
                    "Products"
                ],
                "requestBody": {
                    "description": "New entity",
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ODataDemo.Product-create"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Created entity",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ODataDemo.Product"
                                }
                            }
                        }
                    },
                    "4XX": {
                        "$ref": "#/components/responses/error"
                    }
                }
            }
        },
        "/Products('{ID}')": {
            "parameters": [
                {
                    "description": "key: ID",
                    "in": "path",
                    "name": "ID",
                    "required": true,
                    "schema": {
                        "type": "string"
                    }
                }
            ],
            "get": {
                "summary": "Get entity from Products by key",
                "tags": [
                    "Products"
                ],
                "parameters": [
                    {
                        "name": "select",
                        "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
                        "in": "query",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "enum": [
                                    "ID",
                                    "Description",
                                    "ReleaseDate",
                                    "DiscontinuedDate",
                                    "Rating",
                                    "Price",
                                    "Currency"
                                ]
                            }
                        }
                    },
                    {
                        "name": "expand",
                        "description": "Expand related entities, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
                        "in": "query",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "enum": [
                                    "*",
                                    "Category",
                                    "Supplier"
                                ]
                            }
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Retrieved entity",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ODataDemo.Product"
                                }
                            }
                        }
                    },
                    "4XX": {
                        "$ref": "#/components/responses/error"
                    }
                }
            },
            "patch": {
                "summary": "Update entity in Products",
                "tags": [
                    "Products"
                ],
                "requestBody": {
                    "description": "New property values",
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ODataDemo.Product-update"
                            }
                        }
                    }
                },
                "responses": {
                    "204": {
                        "description": "Success"
                    },
                    "4XX": {
                        "$ref": "#/components/responses/error"
                    }
                }
            },
            "delete": {
                "summary": "Delete entity from Products",
                "tags": [
                    "Products"
                ],
                "responses": {
                    "204": {
                        "description": "Success"
                    },
                    "4XX": {
                        "$ref": "#/components/responses/error"
                    }
                }
            }
        },
        "/Products('{ID}')/Category": {
            "parameters": [
                {
                    "description": "key: ID",
                    "in": "path",
                    "name": "ID",
                    "required": true,
                    "schema": {
                        "type": "string"
                    }
                }
            ],
            "get": {
                "summary": "Get related Category",
                "tags": [
                    "Products",
                    "Categories"
                ],
                "parameters": [
                    {
                        "name": "select",
                        "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
                        "in": "query",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "enum": [
                                    "ID",
                                    "Name"
                                ]
                            }
                        }
                    },
                    {
                        "name": "expand",
                        "description": "Expand related entities, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
                        "in": "query",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "enum": [
                                    "*",
                                    "Products"
                                ]
                            }
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Retrieved entity",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ODataDemo.Category"
                                }
                            }
                        }
                    },
                    "4XX": {
                        "$ref": "#/components/responses/error"
                    }
                }
            }
        },
        "/Products('{ID}')/Supplier": {
            "parameters": [
                {
                    "description": "key: ID",
                    "in": "path",
                    "name": "ID",
                    "required": true,
                    "schema": {
                        "type": "string"
                    }
                }
            ],
            "get": {
                "summary": "Get related Supplier",
                "tags": [
                    "Products"
                ],
                "parameters": [
                    {
                        "name": "select",
                        "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
                        "in": "query",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "enum": [
                                    "ID",
                                    "Name",
                                    "Address",
                                    "Concurrency"
                                ]
                            }
                        }
                    },
                    {
                        "name": "expand",
                        "description": "Expand related entities, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
                        "in": "query",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "enum": [
                                    "*",
                                    "Address/Country",
                                    "Products"
                                ]
                            }
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Retrieved entity",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ODataDemo.Supplier"
                                }
                            }
                        }
                    },
                    "4XX": {
                        "$ref": "#/components/responses/error"
                    }
                }
            }
        },
        "/Categories": {
            "get": {
                "summary": "Get entities from Categories",
                "tags": [
                    "Categories"
                ],
                "parameters": [
                    {
                        "$ref": "#/components/parameters/top"
                    },
                    {
                        "$ref": "#/components/parameters/skip"
                    },
                    {
                        "$ref": "#/components/parameters/search"
                    },
                    {
                        "name": "filter",
                        "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
                        "in": "query",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/count"
                    },
                    {
                        "name": "orderby",
                        "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
                        "in": "query",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "enum": [
                                    "ID",
                                    "ID desc",
                                    "Name",
                                    "Name desc"
                                ]
                            }
                        }
                    },
                    {
                        "name": "select",
                        "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
                        "in": "query",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "enum": [
                                    "ID",
                                    "Name"
                                ]
                            }
                        }
                    },
                    {
                        "name": "expand",
                        "description": "Expand related entities, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
                        "in": "query",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "enum": [
                                    "*",
                                    "Products"
                                ]
                            }
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Retrieved entities",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "title": "Collection of Category",
                                    "properties": {
                                        "@count": {
                                            "$ref": "#/components/schemas/count"
                                        },
                                        "value": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/ODataDemo.Category"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "4XX": {
                        "$ref": "#/components/responses/error"
                    }
                }
            },
            "post": {
                "summary": "Add new entity to Categories",
                "tags": [
                    "Categories"
                ],
                "requestBody": {
                    "description": "New entity",
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ODataDemo.Category-create"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Created entity",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ODataDemo.Category"
                                }
                            }
                        }
                    },
                    "4XX": {
                        "$ref": "#/components/responses/error"
                    }
                }
            }
        },
        "/Categories({ID})": {
            "parameters": [
                {
                    "description": "key: ID",
                    "in": "path",
                    "name": "ID",
                    "required": true,
                    "schema": {
                        "type": "integer",
                        "format": "int32"
                    }
                }
            ],
            "get": {
                "summary": "Get entity from Categories by key",
                "tags": [
                    "Categories"
                ],
                "parameters": [
                    {
                        "name": "select",
                        "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
                        "in": "query",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "enum": [
                                    "ID",
                                    "Name"
                                ]
                            }
                        }
                    },
                    {
                        "name": "expand",
                        "description": "Expand related entities, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
                        "in": "query",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "enum": [
                                    "*",
                                    "Products"
                                ]
                            }
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Retrieved entity",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ODataDemo.Category"
                                }
                            }
                        }
                    },
                    "4XX": {
                        "$ref": "#/components/responses/error"
                    }
                }
            },
            "patch": {
                "summary": "Update entity in Categories",
                "tags": [
                    "Categories"
                ],
                "requestBody": {
                    "description": "New property values",
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ODataDemo.Category-update"
                            }
                        }
                    }
                },
                "responses": {
                    "204": {
                        "description": "Success"
                    },
                    "4XX": {
                        "$ref": "#/components/responses/error"
                    }
                }
            },
            "delete": {
                "summary": "Delete entity from Categories",
                "tags": [
                    "Categories"
                ],
                "responses": {
                    "204": {
                        "description": "Success"
                    },
                    "4XX": {
                        "$ref": "#/components/responses/error"
                    }
                }
            }
        },
        "/Categories({ID})/Products": {
            "parameters": [
                {
                    "description": "key: ID",
                    "in": "path",
                    "name": "ID",
                    "required": true,
                    "schema": {
                        "type": "integer",
                        "format": "int32"
                    }
                }
            ],
            "get": {
                "summary": "Get entities from related Products",
                "tags": [
                    "Categories",
                    "Products"
                ],
                "parameters": [
                    {
                        "$ref": "#/components/parameters/top"
                    },
                    {
                        "$ref": "#/components/parameters/skip"
                    },
                    {
                        "$ref": "#/components/parameters/search"
                    },
                    {
                        "name": "filter",
                        "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
                        "in": "query",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/count"
                    },
                    {
                        "name": "orderby",
                        "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
                        "in": "query",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "enum": [
                                    "ID",
                                    "ID desc",
                                    "Description",
                                    "Description desc",
                                    "ReleaseDate",
                                    "ReleaseDate desc",
                                    "DiscontinuedDate",
                                    "DiscontinuedDate desc",
                                    "Rating",
                                    "Rating desc",
                                    "Price",
                                    "Price desc",
                                    "Currency",
                                    "Currency desc"
                                ]
                            }
                        }
                    },
                    {
                        "name": "select",
                        "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
                        "in": "query",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "enum": [
                                    "ID",
                                    "Description",
                                    "ReleaseDate",
                                    "DiscontinuedDate",
                                    "Rating",
                                    "Price",
                                    "Currency"
                                ]
                            }
                        }
                    },
                    {
                        "name": "expand",
                        "description": "Expand related entities, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
                        "in": "query",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "enum": [
                                    "*",
                                    "Category",
                                    "Supplier"
                                ]
                            }
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Retrieved entities",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "title": "Collection of Product",
                                    "properties": {
                                        "@count": {
                                            "$ref": "#/components/schemas/count"
                                        },
                                        "value": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/ODataDemo.Product"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "4XX": {
                        "$ref": "#/components/responses/error"
                    }
                }
            },
            "post": {
                "summary": "Add new entity to related Products",
                "tags": [
                    "Categories",
                    "Products"
                ],
                "requestBody": {
                    "description": "New entity",
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ODataDemo.Product-create"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Created entity",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ODataDemo.Product"
                                }
                            }
                        }
                    },
                    "4XX": {
                        "$ref": "#/components/responses/error"
                    }
                }
            }
        },
        "/Suppliers": {
            "get": {
                "summary": "Get entities from Suppliers",
                "tags": [
                    "Suppliers"
                ],
                "parameters": [
                    {
                        "$ref": "#/components/parameters/top"
                    },
                    {
                        "$ref": "#/components/parameters/skip"
                    },
                    {
                        "$ref": "#/components/parameters/search"
                    },
                    {
                        "name": "filter",
                        "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
                        "in": "query",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/count"
                    },
                    {
                        "name": "orderby",
                        "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
                        "in": "query",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "enum": [
                                    "ID",
                                    "ID desc",
                                    "Name",
                                    "Name desc",
                                    "Address/Street",
                                    "Address/Street desc",
                                    "Address/City",
                                    "Address/City desc",
                                    "Address/State",
                                    "Address/State desc",
                                    "Address/ZipCode",
                                    "Address/ZipCode desc",
                                    "Address/CountryName",
                                    "Address/CountryName desc",
                                    "Concurrency",
                                    "Concurrency desc"
                                ]
                            }
                        }
                    },
                    {
                        "name": "select",
                        "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
                        "in": "query",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "enum": [
                                    "ID",
                                    "Name",
                                    "Address",
                                    "Concurrency"
                                ]
                            }
                        }
                    },
                    {
                        "name": "expand",
                        "description": "Expand related entities, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
                        "in": "query",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "enum": [
                                    "*",
                                    "Address/Country",
                                    "Products"
                                ]
                            }
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Retrieved entities",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "title": "Collection of Supplier",
                                    "properties": {
                                        "@count": {
                                            "$ref": "#/components/schemas/count"
                                        },
                                        "value": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/ODataDemo.Supplier"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "4XX": {
                        "$ref": "#/components/responses/error"
                    }
                }
            },
            "post": {
                "summary": "Add new entity to Suppliers",
                "tags": [
                    "Suppliers"
                ],
                "requestBody": {
                    "description": "New entity",
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ODataDemo.Supplier-create"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Created entity",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ODataDemo.Supplier"
                                }
                            }
                        }
                    },
                    "4XX": {
                        "$ref": "#/components/responses/error"
                    }
                }
            }
        },
        "/Suppliers('{ID}')": {
            "parameters": [
                {
                    "description": "key: ID",
                    "in": "path",
                    "name": "ID",
                    "required": true,
                    "schema": {
                        "type": "string"
                    }
                }
            ],
            "get": {
                "summary": "Get entity from Suppliers by key",
                "tags": [
                    "Suppliers"
                ],
                "parameters": [
                    {
                        "name": "select",
                        "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
                        "in": "query",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "enum": [
                                    "ID",
                                    "Name",
                                    "Address",
                                    "Concurrency"
                                ]
                            }
                        }
                    },
                    {
                        "name": "expand",
                        "description": "Expand related entities, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
                        "in": "query",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "enum": [
                                    "*",
                                    "Address/Country",
                                    "Products"
                                ]
                            }
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Retrieved entity",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ODataDemo.Supplier"
                                }
                            }
                        }
                    },
                    "4XX": {
                        "$ref": "#/components/responses/error"
                    }
                }
            },
            "patch": {
                "summary": "Update entity in Suppliers",
                "tags": [
                    "Suppliers"
                ],
                "requestBody": {
                    "description": "New property values",
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ODataDemo.Supplier-update"
                            }
                        }
                    }
                },
                "responses": {
                    "204": {
                        "description": "Success"
                    },
                    "4XX": {
                        "$ref": "#/components/responses/error"
                    }
                }
            },
            "delete": {
                "summary": "Delete entity from Suppliers",
                "tags": [
                    "Suppliers"
                ],
                "responses": {
                    "204": {
                        "description": "Success"
                    },
                    "4XX": {
                        "$ref": "#/components/responses/error"
                    }
                }
            }
        },
        "/Suppliers('{ID}')/Address/Country": {
            "parameters": [
                {
                    "description": "key: ID",
                    "in": "path",
                    "name": "ID",
                    "required": true,
                    "schema": {
                        "type": "string"
                    }
                }
            ],
            "get": {
                "summary": "Get related Country",
                "tags": [
                    "Suppliers",
                    "Countries"
                ],
                "parameters": [
                    {
                        "name": "select",
                        "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
                        "in": "query",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "enum": [
                                    "Code",
                                    "Name"
                                ]
                            }
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Retrieved entity",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ODataDemo.Country"
                                }
                            }
                        }
                    },
                    "4XX": {
                        "$ref": "#/components/responses/error"
                    }
                }
            }
        },
        "/Suppliers('{ID}')/Products": {
            "parameters": [
                {
                    "description": "key: ID",
                    "in": "path",
                    "name": "ID",
                    "required": true,
                    "schema": {
                        "type": "string"
                    }
                }
            ],
            "get": {
                "summary": "Get entities from related Products",
                "tags": [
                    "Suppliers",
                    "Products"
                ],
                "parameters": [
                    {
                        "$ref": "#/components/parameters/top"
                    },
                    {
                        "$ref": "#/components/parameters/skip"
                    },
                    {
                        "$ref": "#/components/parameters/search"
                    },
                    {
                        "name": "filter",
                        "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
                        "in": "query",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/count"
                    },
                    {
                        "name": "orderby",
                        "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
                        "in": "query",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "enum": [
                                    "ID",
                                    "ID desc",
                                    "Description",
                                    "Description desc",
                                    "ReleaseDate",
                                    "ReleaseDate desc",
                                    "DiscontinuedDate",
                                    "DiscontinuedDate desc",
                                    "Rating",
                                    "Rating desc",
                                    "Price",
                                    "Price desc",
                                    "Currency",
                                    "Currency desc"
                                ]
                            }
                        }
                    },
                    {
                        "name": "select",
                        "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
                        "in": "query",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "enum": [
                                    "ID",
                                    "Description",
                                    "ReleaseDate",
                                    "DiscontinuedDate",
                                    "Rating",
                                    "Price",
                                    "Currency"
                                ]
                            }
                        }
                    },
                    {
                        "name": "expand",
                        "description": "Expand related entities, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
                        "in": "query",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "enum": [
                                    "*",
                                    "Category",
                                    "Supplier"
                                ]
                            }
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Retrieved entities",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "title": "Collection of Product",
                                    "properties": {
                                        "@count": {
                                            "$ref": "#/components/schemas/count"
                                        },
                                        "value": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/ODataDemo.Product"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "4XX": {
                        "$ref": "#/components/responses/error"
                    }
                }
            },
            "post": {
                "summary": "Add new entity to related Products",
                "tags": [
                    "Suppliers",
                    "Products"
                ],
                "requestBody": {
                    "description": "New entity",
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ODataDemo.Product-create"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Created entity",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ODataDemo.Product"
                                }
                            }
                        }
                    },
                    "4XX": {
                        "$ref": "#/components/responses/error"
                    }
                }
            }
        },
        "/MainSupplier": {
            "get": {
                "summary": "Get MainSupplier",
                "tags": [
                    "MainSupplier"
                ],
                "parameters": [
                    {
                        "name": "select",
                        "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
                        "in": "query",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "enum": [
                                    "ID",
                                    "Name",
                                    "Address",
                                    "Concurrency"
                                ]
                            }
                        }
                    },
                    {
                        "name": "expand",
                        "description": "Expand related entities, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
                        "in": "query",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "enum": [
                                    "*",
                                    "Address/Country",
                                    "Products"
                                ]
                            }
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Retrieved entity",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ODataDemo.Supplier"
                                }
                            }
                        }
                    },
                    "4XX": {
                        "$ref": "#/components/responses/error"
                    }
                }
            },
            "patch": {
                "summary": "Update MainSupplier",
                "tags": [
                    "MainSupplier"
                ],
                "requestBody": {
                    "description": "New property values",
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ODataDemo.Supplier-update"
                            }
                        }
                    }
                },
                "responses": {
                    "204": {
                        "description": "Success"
                    },
                    "4XX": {
                        "$ref": "#/components/responses/error"
                    }
                }
            }
        },
        "/MainSupplier/Address/Country": {
            "get": {
                "summary": "Get related Country",
                "tags": [
                    "MainSupplier"
                ],
                "parameters": [
                    {
                        "name": "select",
                        "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
                        "in": "query",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "enum": [
                                    "Code",
                                    "Name"
                                ]
                            }
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Retrieved entity",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ODataDemo.Country"
                                }
                            }
                        }
                    },
                    "4XX": {
                        "$ref": "#/components/responses/error"
                    }
                }
            }
        },
        "/MainSupplier/Products": {
            "get": {
                "summary": "Get entities from related Products",
                "tags": [
                    "MainSupplier",
                    "Products"
                ],
                "parameters": [
                    {
                        "$ref": "#/components/parameters/top"
                    },
                    {
                        "$ref": "#/components/parameters/skip"
                    },
                    {
                        "$ref": "#/components/parameters/search"
                    },
                    {
                        "name": "filter",
                        "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
                        "in": "query",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/count"
                    },
                    {
                        "name": "orderby",
                        "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
                        "in": "query",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "enum": [
                                    "ID",
                                    "ID desc",
                                    "Description",
                                    "Description desc",
                                    "ReleaseDate",
                                    "ReleaseDate desc",
                                    "DiscontinuedDate",
                                    "DiscontinuedDate desc",
                                    "Rating",
                                    "Rating desc",
                                    "Price",
                                    "Price desc",
                                    "Currency",
                                    "Currency desc"
                                ]
                            }
                        }
                    },
                    {
                        "name": "select",
                        "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
                        "in": "query",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "enum": [
                                    "ID",
                                    "Description",
                                    "ReleaseDate",
                                    "DiscontinuedDate",
                                    "Rating",
                                    "Price",
                                    "Currency"
                                ]
                            }
                        }
                    },
                    {
                        "name": "expand",
                        "description": "Expand related entities, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
                        "in": "query",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "enum": [
                                    "*",
                                    "Category",
                                    "Supplier"
                                ]
                            }
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Retrieved entities",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "title": "Collection of Product",
                                    "properties": {
                                        "@count": {
                                            "$ref": "#/components/schemas/count"
                                        },
                                        "value": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/ODataDemo.Product"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "4XX": {
                        "$ref": "#/components/responses/error"
                    }
                }
            },
            "post": {
                "summary": "Add new entity to related Products",
                "tags": [
                    "MainSupplier",
                    "Products"
                ],
                "requestBody": {
                    "description": "New entity",
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ODataDemo.Product-create"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Created entity",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ODataDemo.Product"
                                }
                            }
                        }
                    },
                    "4XX": {
                        "$ref": "#/components/responses/error"
                    }
                }
            }
        },
        "/Countries": {
            "get": {
                "summary": "Get entities from Countries",
                "tags": [
                    "Countries"
                ],
                "parameters": [
                    {
                        "$ref": "#/components/parameters/top"
                    },
                    {
                        "$ref": "#/components/parameters/skip"
                    },
                    {
                        "$ref": "#/components/parameters/search"
                    },
                    {
                        "name": "filter",
                        "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
                        "in": "query",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "$ref": "#/components/parameters/count"
                    },
                    {
                        "name": "orderby",
                        "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
                        "in": "query",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "enum": [
                                    "Code",
                                    "Code desc",
                                    "Name",
                                    "Name desc"
                                ]
                            }
                        }
                    },
                    {
                        "name": "select",
                        "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
                        "in": "query",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "enum": [
                                    "Code",
                                    "Name"
                                ]
                            }
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Retrieved entities",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "title": "Collection of Country",
                                    "properties": {
                                        "@count": {
                                            "$ref": "#/components/schemas/count"
                                        },
                                        "value": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/ODataDemo.Country"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "4XX": {
                        "$ref": "#/components/responses/error"
                    }
                }
            },
            "post": {
                "summary": "Add new entity to Countries",
                "tags": [
                    "Countries"
                ],
                "requestBody": {
                    "description": "New entity",
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ODataDemo.Country-create"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Created entity",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ODataDemo.Country"
                                }
                            }
                        }
                    },
                    "4XX": {
                        "$ref": "#/components/responses/error"
                    }
                }
            }
        },
        "/Countries('{Code}')": {
            "parameters": [
                {
                    "description": "key: Code",
                    "in": "path",
                    "name": "Code",
                    "required": true,
                    "schema": {
                        "type": "string",
                        "maxLength": 2
                    }
                }
            ],
            "get": {
                "summary": "Get entity from Countries by key",
                "tags": [
                    "Countries"
                ],
                "parameters": [
                    {
                        "name": "select",
                        "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
                        "in": "query",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "uniqueItems": true,
                            "items": {
                                "type": "string",
                                "enum": [
                                    "Code",
                                    "Name"
                                ]
                            }
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Retrieved entity",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ODataDemo.Country"
                                }
                            }
                        }
                    },
                    "4XX": {
                        "$ref": "#/components/responses/error"
                    }
                }
            },
            "patch": {
                "summary": "Update entity in Countries",
                "tags": [
                    "Countries"
                ],
                "requestBody": {
                    "description": "New property values",
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ODataDemo.Country-update"
                            }
                        }
                    }
                },
                "responses": {
                    "204": {
                        "description": "Success"
                    },
                    "4XX": {
                        "$ref": "#/components/responses/error"
                    }
                }
            },
            "delete": {
                "summary": "Delete entity from Countries",
                "tags": [
                    "Countries"
                ],
                "responses": {
                    "204": {
                        "description": "Success"
                    },
                    "4XX": {
                        "$ref": "#/components/responses/error"
                    }
                }
            }
        },
        "/ProductsByRating": {
            "get": {
                "summary": "Invoke function ProductsByRating",
                "tags": [
                    "Products"
                ],
                "parameters": [
                    {
                        "required": true,
                        "in": "query",
                        "name": "Rating",
                        "schema": {
                            "type": "integer",
                            "format": "int32",
                            "nullable": true,
                            "default": "null"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "title": "Collection of Product",
                                    "properties": {
                                        "@count": {
                                            "$ref": "#/components/schemas/count"
                                        },
                                        "value": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/ODataDemo.Product"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "4XX": {
                        "$ref": "#/components/responses/error"
                    }
                }
            }
        },
        "/$batch": {
            "post": {
                "summary": "Send a group of requests",
                "description": "Group multiple requests into a single request payload, see [Batch Requests](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_BatchRequests).\n\n*Please note that \"Try it out\" is not supported for this request.*",
                "tags": [
                    "Batch Requests"
                ],
                "requestBody": {
                    "required": true,
                    "description": "Batch request",
                    "content": {
                        "multipart/mixed;boundary=request-separator": {
                            "schema": {
                                "type": "string"
                            },
                            "example": "--request-separator\nContent-Type: application/http\nContent-Transfer-Encoding: binary\n\nGET Products HTTP/1.1\nAccept: application/json\n\n\n--request-separator--"
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Batch response",
                        "content": {
                            "multipart/mixed": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "--response-separator\nContent-Type: application/http\n\nHTTP/1.1 200 OK\nContent-Type: application/json\n\n{...}\n--response-separator--"
                            }
                        }
                    },
                    "4XX": {
                        "$ref": "#/components/responses/error"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "ODataDemo.Address": {
                "title": "Address",
                "type": "object",
                "properties": {
                    "Street": {
                        "type": "string",
                        "nullable": true
                    },
                    "City": {
                        "type": "string",
                        "nullable": true
                    },
                    "State": {
                        "type": "string",
                        "nullable": true
                    },
                    "ZipCode": {
                        "type": "string",
                        "nullable": true
                    },
                    "CountryName": {
                        "type": "string",
                        "nullable": true
                    },
                    "Country": {
                        "allOf": [
                            {
                                "$ref": "#/components/schemas/ODataDemo.Country"
                            }
                        ],
                        "nullable": true
                    }
                }
            },
            "ODataDemo.Address-create": {
                "title": "Address (for create)",
                "type": "object",
                "properties": {
                    "Street": {
                        "type": "string",
                        "nullable": true
                    },
                    "City": {
                        "type": "string",
                        "nullable": true
                    },
                    "State": {
                        "type": "string",
                        "nullable": true
                    },
                    "ZipCode": {
                        "type": "string",
                        "nullable": true
                    },
                    "CountryName": {
                        "type": "string",
                        "nullable": true
                    }
                }
            },
            "ODataDemo.Address-update": {
                "title": "Address (for update)",
                "type": "object",
                "properties": {
                    "Street": {
                        "type": "string",
                        "nullable": true
                    },
                    "City": {
                        "type": "string",
                        "nullable": true
                    },
                    "State": {
                        "type": "string",
                        "nullable": true
                    },
                    "ZipCode": {
                        "type": "string",
                        "nullable": true
                    },
                    "CountryName": {
                        "type": "string",
                        "nullable": true
                    }
                }
            },
            "ODataDemo.Category": {
                "title": "Category",
                "type": "object",
                "properties": {
                    "ID": {
                        "type": "integer",
                        "format": "int32"
                    },
                    "Name": {
                        "type": "string"
                    },
                    "Products": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/ODataDemo.Product"
                        }
                    },
                    "Products@count": {
                        "$ref": "#/components/schemas/count"
                    }
                }
            },
            "ODataDemo.Category-create": {
                "title": "Category (for create)",
                "type": "object",
                "properties": {
                    "ID": {
                        "type": "integer",
                        "format": "int32"
                    },
                    "Name": {
                        "type": "string"
                    }
                },
                "required": [
                    "ID"
                ]
            },
            "ODataDemo.Category-update": {
                "title": "Category (for update)",
                "type": "object",
                "properties": {
                    "Name": {
                        "type": "string"
                    }
                }
            },
            "ODataDemo.Country": {
                "title": "Country",
                "type": "object",
                "properties": {
                    "Code": {
                        "type": "string",
                        "maxLength": 2
                    },
                    "Name": {
                        "type": "string",
                        "nullable": true
                    }
                }
            },
            "ODataDemo.Country-create": {
                "title": "Country (for create)",
                "type": "object",
                "properties": {
                    "Code": {
                        "type": "string",
                        "maxLength": 2
                    },
                    "Name": {
                        "type": "string",
                        "nullable": true
                    }
                },
                "required": [
                    "Code"
                ]
            },
            "ODataDemo.Country-update": {
                "title": "Country (for update)",
                "type": "object",
                "properties": {
                    "Name": {
                        "type": "string",
                        "nullable": true
                    }
                }
            },
            "ODataDemo.Product": {
                "title": "Product",
                "type": "object",
                "properties": {
                    "ID": {
                        "type": "string"
                    },
                    "Description": {
                        "type": "string",
                        "nullable": true
                    },
                    "ReleaseDate": {
                        "type": "string",
                        "format": "date",
                        "example": "2017-04-13",
                        "nullable": true
                    },
                    "DiscontinuedDate": {
                        "type": "string",
                        "format": "date",
                        "example": "2017-04-13",
                        "nullable": true
                    },
                    "Rating": {
                        "type": "integer",
                        "format": "int32",
                        "nullable": true
                    },
                    "Price": {
                        "anyOf": [
                            {
                                "type": "number"
                            },
                            {
                                "type": "string"
                            }
                        ],
                        "format": "decimal",
                        "example": 0,
                        "multipleOf": 1,
                        "nullable": true
                    },
                    "Currency": {
                        "type": "string",
                        "maxLength": 3,
                        "nullable": true
                    },
                    "Category": {
                        "$ref": "#/components/schemas/ODataDemo.Category"
                    },
                    "Supplier": {
                        "allOf": [
                            {
                                "$ref": "#/components/schemas/ODataDemo.Supplier"
                            }
                        ],
                        "nullable": true
                    }
                }
            },
            "ODataDemo.Product-create": {
                "title": "Product (for create)",
                "type": "object",
                "properties": {
                    "ID": {
                        "type": "string"
                    },
                    "Description": {
                        "type": "string",
                        "nullable": true
                    },
                    "ReleaseDate": {
                        "type": "string",
                        "format": "date",
                        "example": "2017-04-13",
                        "nullable": true
                    },
                    "DiscontinuedDate": {
                        "type": "string",
                        "format": "date",
                        "example": "2017-04-13",
                        "nullable": true
                    },
                    "Rating": {
                        "type": "integer",
                        "format": "int32",
                        "nullable": true
                    },
                    "Price": {
                        "anyOf": [
                            {
                                "type": "number"
                            },
                            {
                                "type": "string"
                            }
                        ],
                        "format": "decimal",
                        "example": 0,
                        "multipleOf": 1,
                        "nullable": true
                    },
                    "Currency": {
                        "type": "string",
                        "maxLength": 3,
                        "nullable": true
                    },
                    "Category": {
                        "$ref": "#/components/schemas/entityReference"
                    }
                },
                "required": [
                    "ID"
                ]
            },
            "ODataDemo.Product-update": {
                "title": "Product (for update)",
                "type": "object",
                "properties": {
                    "Description": {
                        "type": "string",
                        "nullable": true
                    },
                    "ReleaseDate": {
                        "type": "string",
                        "format": "date",
                        "example": "2017-04-13",
                        "nullable": true
                    },
                    "DiscontinuedDate": {
                        "type": "string",
                        "format": "date",
                        "example": "2017-04-13",
                        "nullable": true
                    },
                    "Rating": {
                        "type": "integer",
                        "format": "int32",
                        "nullable": true
                    },
                    "Price": {
                        "anyOf": [
                            {
                                "type": "number"
                            },
                            {
                                "type": "string"
                            }
                        ],
                        "format": "decimal",
                        "example": 0,
                        "multipleOf": 1,
                        "nullable": true
                    },
                    "Currency": {
                        "type": "string",
                        "maxLength": 3,
                        "nullable": true
                    }
                }
            },
            "ODataDemo.Supplier": {
                "title": "Supplier",
                "type": "object",
                "properties": {
                    "ID": {
                        "type": "string"
                    },
                    "Name": {
                        "type": "string",
                        "nullable": true
                    },
                    "Address": {
                        "$ref": "#/components/schemas/ODataDemo.Address"
                    },
                    "Concurrency": {
                        "type": "integer",
                        "format": "int32"
                    },
                    "Products": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/ODataDemo.Product"
                        }
                    },
                    "Products@count": {
                        "$ref": "#/components/schemas/count"
                    }
                }
            },
            "ODataDemo.Supplier-create": {
                "title": "Supplier (for create)",
                "type": "object",
                "properties": {
                    "ID": {
                        "type": "string"
                    },
                    "Name": {
                        "type": "string",
                        "nullable": true
                    },
                    "Address": {
                        "$ref": "#/components/schemas/ODataDemo.Address-create"
                    },
                    "Concurrency": {
                        "type": "integer",
                        "format": "int32"
                    }
                },
                "required": [
                    "ID"
                ]
            },
            "ODataDemo.Supplier-update": {
                "title": "Supplier (for update)",
                "type": "object",
                "properties": {
                    "Name": {
                        "type": "string",
                        "nullable": true
                    },
                    "Address": {
                        "$ref": "#/components/schemas/ODataDemo.Address-update"
                    },
                    "Concurrency": {
                        "type": "integer",
                        "format": "int32"
                    }
                }
            },
            "count": {
                "anyOf": [
                    {
                        "type": "integer",
                        "minimum": 0
                    },
                    {
                        "type": "string"
                    }
                ],
                "description": "The number of entities in the collection. Available when using the [$count](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptioncount) query option."
            },
            "entityReference": {
                "type": "object",
                "properties": {
                    "@id": {
                        "type": "string",
                        "format": "uri",
                        "description": "[Link to a related entity](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_LinktoRelatedEntitiesWhenCreatinganE)"
                    }
                }
            },
            "error": {
                "type": "object",
                "required": [
                    "error"
                ],
                "properties": {
                    "error": {
                        "type": "object",
                        "required": [
                            "code",
                            "message"
                        ],
                        "properties": {
                            "code": {
                                "type": "string"
                            },
                            "message": {
                                "type": "string"
                            },
                            "target": {
                                "type": "string"
                            },
                            "details": {
                                "type": "array",
                                "items": {
                                    "type": "object",
                                    "required": [
                                        "code",
                                        "message"
                                    ],
                                    "properties": {
                                        "code": {
                                            "type": "string"
                                        },
                                        "message": {
                                            "type": "string"
                                        },
                                        "target": {
                                            "type": "string"
                                        }
                                    }
                                }
                            },
                            "innererror": {
                                "type": "object",
                                "description": "The structure of this object is service-specific"
                            }
                        }
                    }
                }
            }
        },
        "parameters": {
            "top": {
                "name": "top",
                "in": "query",
                "description": "Show only the first n items, see [Paging - Top](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptiontop)",
                "schema": {
                    "type": "integer",
                    "minimum": 0
                },
                "example": 50
            },
            "skip": {
                "name": "skip",
                "in": "query",
                "description": "Skip the first n items, see [Paging - Skip](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionskip)",
                "schema": {
                    "type": "integer",
                    "minimum": 0
                }
            },
            "count": {
                "name": "count",
                "in": "query",
                "description": "Include count of items, see [Count](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptioncount)",
                "schema": {
                    "type": "boolean"
                }
            },
            "search": {
                "name": "search",
                "in": "query",
                "description": "Search items by search phrases, see [Searching](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionsearch)",
                "schema": {
                    "type": "string"
                }
            }
        },
        "responses": {
            "error": {
                "description": "Error",
                "content": {
                    "application/json": {
                        "schema": {
                            "$ref": "#/components/schemas/error"
                        }
                    }
                }
            }
        }
    }
}