{
    "openapi": "3.0.2",
    "info": {
        "title": "Dynamic app menu",
        "version": "0.0.2",
        "description": "A service to return hierarchical menu to an application based on \nthe digital user identity and their organisation.\n\nThis API defintion also contains data types:\n\n* application-modle\n* intent-model\n \nThese models are not published by the API but\nare used internally for processing.  The models are\nloaded from configuration file and are included\nfor completense and code generation."
    },
    "paths": {
        "/healthcheck": {
            "summary": "Health service",
            "description": "This service end point is to discover the health of the\nservice.  The information provides an overall health\nand also health individual upstream dependencies.\n\n# Security\n\nThe service is secured to stop abuse.",
            "get": {
                "tags": [
                    "ManageService",
                    "Proposed"
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/health-model"
                                },
                                "examples": {
                                    "Simple-health": {
                                        "value": {
                                            "status": "PASS",
                                            "version": "some text",
                                            "notes": [
                                                "some text",
                                                "some text"
                                            ],
                                            "output": "some text",
                                            "description": "some text",
                                            "checks": {

                                            },
                                            "release_id": "some text",
                                            "service_id": "some text",
                                            "links": [
                                                {
                                                    "href": "some text",
                                                    "rel": "some text",
                                                    "operation": "PUT",
                                                    "caption": "some text",
                                                    "media_type": "some text"
                                                },
                                                {
                                                    "href": "some text",
                                                    "rel": "some text",
                                                    "operation": "POST",
                                                    "caption": "some text",
                                                    "media_type": "some text"
                                                }
                                            ]
                                        }
                                    }
                                }
                            }
                        },
                        "description": "The service is healthy"
                    },
                    "400": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/error-model"
                                }
                            }
                        },
                        "description": "Request is not valid"
                    },
                    "401": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/error-model"
                                }
                            }
                        },
                        "description": "Unauthorised request"
                    },
                    "500": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/error-model"
                                },
                                "examples": {
                                    "health500error": {
                                        "value": {
                                            "status": "some text",
                                            "message": "some text",
                                            "resolution": "some text",
                                            "technical": "some text"
                                        }
                                    }
                                }
                            }
                        },
                        "description": "Internal error with service, with minimal\ninformation available"
                    },
                    "503": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/health-model"
                                },
                                "examples": {
                                    "ealth503error": {
                                        "value": {
                                            "status": "FAIL",
                                            "version": "some text",
                                            "notes": [
                                                "some text",
                                                "some text"
                                            ],
                                            "output": "some text",
                                            "description": "some text",
                                            "checks": {

                                            },
                                            "release_id": "some text",
                                            "service_id": "some text",
                                            "links": [
                                                {
                                                    "href": "some text",
                                                    "rel": "some text",
                                                    "operation": "GET",
                                                    "caption": "some text",
                                                    "media_type": "some text"
                                                },
                                                {
                                                    "href": "some text",
                                                    "rel": "some text",
                                                    "operation": "DELETE",
                                                    "caption": "some text",
                                                    "media_type": "some text"
                                                }
                                            ]
                                        }
                                    }
                                }
                            }
                        },
                        "description": "The service is unavailable"
                    }
                },
                "security": [
                    {
                        "OAuth": [
                        ]
                    }
                ],
                "operationId": "gethealth",
                "summary": "Retrieve the health of the  service",
                "description": "Gets the health of the service"
            }
        },
        "/menu/{application_id}/{menu_name}": {
            "summary": "Fetch a menu service",
            "get": {
                "tags": [
                    "Proposed"
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/menuResponse-model"
                                },
                                "examples": {
                                    "sampleA": {
                                        "value": "    {\n        \"id\": \"wauv\",\n        \"children\": [\n            {},\n            {}\n        ],\n        \"is_group\": true,\n        \"icon\": \"w\",\n        \"label\": \"i9fviy\",\n        \"tenant\": \"\",\n        \"tool_tip\": \"6hw3sn8\",\n        \"function_id\": \"48jl30\",\n        \"intent\": \"e4jp9vaw\",\n        \"target\": \"\",\n        \"icon_active\": \"\",\n        \"icon_hover\": \"ceugrk\",\n        \"is_empty\": true\n    }"
                                    }
                                }
                            }
                        },
                        "description": "Returns all menu items the user is entitled to access."
                    },
                    "400": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/error-model"
                                }
                            }
                        },
                        "description": "Request is not valid"
                    },
                    "401": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/error-model"
                                }
                            }
                        },
                        "description": "Unauthorised request"
                    },
                    "500": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/error-model"
                                },
                                "examples": {
                                    "health500error": {
                                        "value": {
                                            "status": "some text",
                                            "message": "some text",
                                            "resolution": "some text",
                                            "technical": "some text"
                                        }
                                    }
                                }
                            }
                        },
                        "description": "Internal error with service, with minimal\ninformation available"
                    },
                    "503": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/health-model"
                                },
                                "examples": {
                                    "ealth503error": {
                                        "value": {
                                            "status": "FAIL",
                                            "version": "some text",
                                            "notes": [
                                                "some text",
                                                "some text"
                                            ],
                                            "output": "some text",
                                            "description": "some text",
                                            "checks": {

                                            },
                                            "release_id": "some text",
                                            "service_id": "some text",
                                            "links": [
                                                {
                                                    "href": "some text",
                                                    "rel": "some text",
                                                    "operation": "GET",
                                                    "caption": "some text",
                                                    "media_type": "some text"
                                                },
                                                {
                                                    "href": "some text",
                                                    "rel": "some text",
                                                    "operation": "DELETE",
                                                    "caption": "some text",
                                                    "media_type": "some text"
                                                }
                                            ]
                                        }
                                    }
                                }
                            }
                        },
                        "description": "The service is unavailable"
                    }
                },
                "operationId": "GetMenuMenuName",
                "summary": "Fetch a menu service with header information"
            },
            "post": {
                "requestBody": {
                    "description": "Information on whose menu is required.\n\nThe caller must have authority to access the\nidentity whose menu items are requsted.",
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/menuRequest-model"
                            }
                        }
                    },
                    "required": true
                },
                "tags": [
                    "Proposed"
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/menuResponse-model"
                                },
                                "examples": {
                                    "sampleA": {
                                        "value": "    {\n        \"id\": \"wauv\",\n        \"children\": [\n            {},\n            {}\n        ],\n        \"is_group\": true,\n        \"icon\": \"w\",\n        \"label\": \"i9fviy\",\n        \"tenant\": \"\",\n        \"tool_tip\": \"6hw3sn8\",\n        \"function_id\": \"48jl30\",\n        \"intent\": \"e4jp9vaw\",\n        \"target\": \"\",\n        \"icon_active\": \"\",\n        \"icon_hover\": \"ceugrk\",\n        \"is_empty\": true\n    }"
                                    }
                                }
                            }
                        },
                        "description": "Returns all menu items the user is entitled to access."
                    },
                    "400": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/error-model"
                                }
                            }
                        },
                        "description": "Request is not valid"
                    },
                    "401": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/error-model"
                                }
                            }
                        },
                        "description": "Unauthorised request"
                    },
                    "500": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/error-model"
                                },
                                "examples": {
                                    "health500error": {
                                        "value": {
                                            "status": "some text",
                                            "message": "some text",
                                            "resolution": "some text",
                                            "technical": "some text"
                                        }
                                    }
                                }
                            }
                        },
                        "description": "Internal error with service, with minimal\ninformation available"
                    },
                    "503": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/health-model"
                                },
                                "examples": {
                                    "ealth503error": {
                                        "value": {
                                            "status": "FAIL",
                                            "version": "some text",
                                            "notes": [
                                                "some text",
                                                "some text"
                                            ],
                                            "output": "some text",
                                            "description": "some text",
                                            "checks": {

                                            },
                                            "release_id": "some text",
                                            "service_id": "some text",
                                            "links": [
                                                {
                                                    "href": "some text",
                                                    "rel": "some text",
                                                    "operation": "GET",
                                                    "caption": "some text",
                                                    "media_type": "some text"
                                                },
                                                {
                                                    "href": "some text",
                                                    "rel": "some text",
                                                    "operation": "DELETE",
                                                    "caption": "some text",
                                                    "media_type": "some text"
                                                }
                                            ]
                                        }
                                    }
                                }
                            }
                        },
                        "description": "The service is unavailable"
                    }
                },
                "operationId": "PostMenuMenuName",
                "summary": "Fetch a menu service with post information"
            },
            "parameters": [
                {
                    "name": "application_id",
                    "description": "The application for which the menu applies.",
                    "schema": {
                        "type": "string"
                    },
                    "in": "path",
                    "required": true
                },
                {
                    "name": "menu_name",
                    "description": "The menu name to fetch",
                    "schema": {
                        "type": "string"
                    },
                    "in": "path",
                    "required": true
                }
            ]
        },
        "/reference/application/": {
            "summary": "Fetch list of applications",
            "description": "This route provides information on available applications.\n\nThe applications are used intents and in menus.",
            "get": {
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/application-model"
                                    }
                                }
                            }
                        },
                        "description": "A list of applications"
                    }
                },
                "operationId": "listApplications"
            }
        },
        "/reference/application/{applicationId}/": {
            "description": "This route provides information for a single application.",
            "get": {
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/application-model"
                                }
                            }
                        },
                        "description": "Provide application details"
                    },
                    "400": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/error-model"
                                }
                            }
                        },
                        "description": "Request is not valid"
                    },
                    "401": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/error-model"
                                }
                            }
                        },
                        "description": "Unauthorised request"
                    },
                    "500": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/error-model"
                                },
                                "examples": {
                                    "health500error": {
                                        "value": {
                                            "status": "some text",
                                            "message": "some text",
                                            "resolution": "some text",
                                            "technical": "some text"
                                        }
                                    }
                                }
                            }
                        },
                        "description": "Internal error with service, with minimal\ninformation available"
                    },
                    "503": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/health-model"
                                },
                                "examples": {
                                    "ealth503error": {
                                        "value": {
                                            "status": "FAIL",
                                            "version": "some text",
                                            "notes": [
                                                "some text",
                                                "some text"
                                            ],
                                            "output": "some text",
                                            "description": "some text",
                                            "checks": {

                                            },
                                            "release_id": "some text",
                                            "service_id": "some text",
                                            "links": [
                                                {
                                                    "href": "some text",
                                                    "rel": "some text",
                                                    "operation": "GET",
                                                    "caption": "some text",
                                                    "media_type": "some text"
                                                },
                                                {
                                                    "href": "some text",
                                                    "rel": "some text",
                                                    "operation": "DELETE",
                                                    "caption": "some text",
                                                    "media_type": "some text"
                                                }
                                            ]
                                        }
                                    }
                                }
                            }
                        },
                        "description": "The service is unavailable"
                    }
                },
                "operationId": "getApplication"
            },
            "parameters": [
                {
                    "name": "applicationId",
                    "description": "Application identifier",
                    "schema": {
                        "type": "string"
                    },
                    "in": "path",
                    "required": true
                }
            ]
        },
        "/reference/application/{applicationId}/intent/": {
            "summary": "Fetch list of intents",
            "description": "This route provides information on available intents linked to the application.\n",
            "get": {
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/intent-model"
                                    }
                                }
                            }
                        },
                        "description": "A list of intents"
                    },
                    "400": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/error-model"
                                }
                            }
                        },
                        "description": "Request is not valid"
                    },
                    "401": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/error-model"
                                }
                            }
                        },
                        "description": "Unauthorised request"
                    },
                    "500": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/error-model"
                                },
                                "examples": {
                                    "health500error": {
                                        "value": {
                                            "status": "some text",
                                            "message": "some text",
                                            "resolution": "some text",
                                            "technical": "some text"
                                        }
                                    }
                                }
                            }
                        },
                        "description": "Internal error with service, with minimal\ninformation available"
                    },
                    "503": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/health-model"
                                },
                                "examples": {
                                    "ealth503error": {
                                        "value": {
                                            "status": "FAIL",
                                            "version": "some text",
                                            "notes": [
                                                "some text",
                                                "some text"
                                            ],
                                            "output": "some text",
                                            "description": "some text",
                                            "checks": {

                                            },
                                            "release_id": "some text",
                                            "service_id": "some text",
                                            "links": [
                                                {
                                                    "href": "some text",
                                                    "rel": "some text",
                                                    "operation": "GET",
                                                    "caption": "some text",
                                                    "media_type": "some text"
                                                },
                                                {
                                                    "href": "some text",
                                                    "rel": "some text",
                                                    "operation": "DELETE",
                                                    "caption": "some text",
                                                    "media_type": "some text"
                                                }
                                            ]
                                        }
                                    }
                                }
                            }
                        },
                        "description": "The service is unavailable"
                    }
                },
                "operationId": "listIntents"
            },
            "parameters": [
                {
                    "name": "applicationId",
                    "description": "The application that the intents are linked to",
                    "schema": {
                        "type": "string"
                    },
                    "in": "path",
                    "required": true
                }
            ]
        },
        "/menu/preference": {
            "summary": "Fetch a user preference for menu",
            "get": {
                "tags": [
                    "Proposed"
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/preference-model"
                                },
                                "examples": {
                                    "sampleA": {
                                        "value": "    {\n        \"id\": \"wauv\",\n        \"children\": [\n            {},\n            {}\n        ],\n        \"is_group\": true,\n        \"icon\": \"w\",\n        \"label\": \"i9fviy\",\n        \"tenant\": \"\",\n        \"tool_tip\": \"6hw3sn8\",\n        \"function_id\": \"48jl30\",\n        \"intent\": \"e4jp9vaw\",\n        \"target\": \"\",\n        \"icon_active\": \"\",\n        \"icon_hover\": \"ceugrk\",\n        \"is_empty\": true\n    }"
                                    }
                                }
                            }
                        },
                        "description": "Returns a user preference for menu."
                    },
                    "400": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/error-model"
                                }
                            }
                        },
                        "description": "Request is not valid"
                    },
                    "401": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/error-model"
                                }
                            }
                        },
                        "description": "Unauthorised request"
                    },
                    "500": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/error-model"
                                },
                                "examples": {
                                    "health500error": {
                                        "value": {
                                            "status": "some text",
                                            "message": "some text",
                                            "resolution": "some text",
                                            "technical": "some text"
                                        }
                                    }
                                }
                            }
                        },
                        "description": "Internal error with service, with minimal\ninformation available"
                    },
                    "503": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/health-model"
                                },
                                "examples": {
                                    "ealth503error": {
                                        "value": {
                                            "status": "FAIL",
                                            "version": "some text",
                                            "notes": [
                                                "some text",
                                                "some text"
                                            ],
                                            "output": "some text",
                                            "description": "some text",
                                            "checks": {

                                            },
                                            "release_id": "some text",
                                            "service_id": "some text",
                                            "links": [
                                                {
                                                    "href": "some text",
                                                    "rel": "some text",
                                                    "operation": "GET",
                                                    "caption": "some text",
                                                    "media_type": "some text"
                                                },
                                                {
                                                    "href": "some text",
                                                    "rel": "some text",
                                                    "operation": "DELETE",
                                                    "caption": "some text",
                                                    "media_type": "some text"
                                                }
                                            ]
                                        }
                                    }
                                }
                            }
                        },
                        "description": "The service is unavailable"
                    }
                },
                "operationId": "GetMenuPreference",
                "summary": "Fetch a menu preference with header information"
            },
            "post": {
                "requestBody": {
                    "description": "Information on whose preference is required.\n\nThe caller must have authority to access the\nidentity whose preference items are requested.",
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/preferenceRequest-model"
                            }
                        }
                    },
                    "required": true
                },
                "tags": [
                    "Proposed"
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/preferenceResponse-model"
                                },
                                "examples": {
                                    "sampleA": {
                                        "value": "    {\n        \"id\": \"wauv\",\n        \"children\": [\n            {},\n            {}\n        ],\n        \"is_group\": true,\n        \"icon\": \"w\",\n        \"label\": \"i9fviy\",\n        \"tenant\": \"\",\n        \"tool_tip\": \"6hw3sn8\",\n        \"function_id\": \"48jl30\",\n        \"intent\": \"e4jp9vaw\",\n        \"target\": \"\",\n        \"icon_active\": \"\",\n        \"icon_hover\": \"ceugrk\",\n        \"is_empty\": true\n    }"
                                    }
                                }
                            }
                        },
                        "description": "Returns user menu preference is entitled to access."
                    },
                    "400": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/error-model"
                                }
                            }
                        },
                        "description": "Request is not valid"
                    },
                    "401": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/error-model"
                                }
                            }
                        },
                        "description": "Unauthorised request"
                    },
                    "500": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/error-model"
                                },
                                "examples": {
                                    "health500error": {
                                        "value": {
                                            "status": "some text",
                                            "message": "some text",
                                            "resolution": "some text",
                                            "technical": "some text"
                                        }
                                    }
                                }
                            }
                        },
                        "description": "Internal error with service, with minimal\ninformation available"
                    },
                    "503": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/health-model"
                                },
                                "examples": {
                                    "ealth503error": {
                                        "value": {
                                            "status": "FAIL",
                                            "version": "some text",
                                            "notes": [
                                                "some text",
                                                "some text"
                                            ],
                                            "output": "some text",
                                            "description": "some text",
                                            "checks": {

                                            },
                                            "release_id": "some text",
                                            "service_id": "some text",
                                            "links": [
                                                {
                                                    "href": "some text",
                                                    "rel": "some text",
                                                    "operation": "GET",
                                                    "caption": "some text",
                                                    "media_type": "some text"
                                                },
                                                {
                                                    "href": "some text",
                                                    "rel": "some text",
                                                    "operation": "DELETE",
                                                    "caption": "some text",
                                                    "media_type": "some text"
                                                }
                                            ]
                                        }
                                    }
                                }
                            }
                        },
                        "description": "The service is unavailable"
                    }
                },
                "operationId": "PostMenuPreference",
                "summary": "Fetch a menu preference with post information"
            }
        }
    },
    "components": {
        "schemas": {
            "error-model": {
                "description": "",
                "type": "object"
            },
            "health-model": {
                "title": "Root Type for health-model",
                "description": "The response object from a \"health\" request.\n\nThe response may be full. partial, minimal or missing \nif the statsu is not \"200\"",
                "required": [
                    "status",
                    "checks",
                    "links"
                ],
                "type": "object",
                "properties": {
                    "status": {
                        "description": " Indicates whether the service status is acceptable\r\n or not\r\n \r\n indicates whether the service status is acceptable\r\n   or not.  API publishers SHOULD use following values for the field:\r\n\r\n* \"pass\": healthy (acceptable aliases: \"ok\" to support Node's\r\n      Terminus and \"up\" for Java's SpringBoot),\r\n\r\n* \"fail\": unhealthy (acceptable aliases: \"error\" to support Node's\r\n      Terminus and \"down\" for Java's SpringBoot), and\r\n\r\n* \"warn\": healthy, with some concerns.\r\n\r\n   The value of the status field is case-insensitive and is tightly\r\n   related with the HTTP response code returned by the health endpoint.\r\n   For \"pass\" status, HTTP response code in the 2xx-3xx range MUST be\r\n   used.  For \"fail\" status, HTTP response code in the 4xx-5xx range\r\n   MUST be used.  In case of the \"warn\" status, endpoints MUST return\r\n   HTTP status in the 2xx-3xx range, and additional information SHOULD\r\n   be provided, utilizing optional fields of the response.\r\n\r\n   A health endpoint is only meaningful in the context of the component\r\n   it indicates the health of.  It has no other meaning or purpose.  As\r\n   such, its health is a conduit to the health of the component.\r\n   Clients SHOULD assume that the HTTP response code returned by the\r\n   health endpoint is applicable to the entire component (e.g. a larger\r\n   API or a microservice).  This is compatible with the behavior that\r\n   current infrastructural tooling expects: load-balancers, service\r\n   discoveries and others, utilizing health-checks.",
                        "enum": [
                            "PASS",
                            "WARN",
                            "FAIL"
                        ],
                        "type": "string"
                    },
                    "version": {
                        "description": "Public version of the service",
                        "type": "string"
                    },
                    "notes": {
                        "description": "Array of notes relevant to current state of health",
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    },
                    "output": {
                        "description": "Raw error output, in case of \"fail\" or \"warn\"\r\nstates.  This field SHOULD be omitted for \"pass\" state.",
                        "type": "string"
                    },
                    "description": {
                        "description": "A human-friendly description of the\r\nservice.\r\n",
                        "type": "string"
                    },
                    "checks": {
                        "description": "  The \"checks\" object MAY have a number of unique keys, one for each\r\n   logical downstream dependency or sub-component.  Since each sub-\r\n   component may be backed by several nodes with varying health\r\n   statuses, these keys point to arrays of objects.  In case of a\r\n   single-node sub-component (or if presence of nodes is not relevant),\r\n   a single-element array SHOULD be used as the value, for consistency.\r\n\r\n   The key identifying an element in the object SHOULD be a unique\r\n   string within the details section.  It MAY have two parts:\r\n   \"{componentName}:{measurementName}\", in which case the meaning of the\r\n   parts SHOULD be as follows:\r\n\r\n   *  componentName: (optional) human-readable name for the component.\r\n      MUST not contain a colon, in the name, since colon is used as a\r\n      separator.\r\n\r\n   *  measurementName: (optional) name of the measurement type (a data\r\n      point type) that the status is reported for.  MUST not contain a\r\n      colon, in the name, since colon is used as a separator.  The\r\n      observation's name can be one of:\r\n\r\n      -  A pre-defined value from this spec.  Pre-defined values\r\n         include:\r\n\r\n         o  utilization\r\n\r\n         o  responseTime\r\n\r\n         o  connections\r\n\r\n         o  uptime\r\n\r\n      -  A common and standard term from a well-known source such as\r\n         schema.org, IANA or microformats.\r\n\r\n      -  A URI that indicates extra semantics and processing rules that\r\n         MAY be provided by a resource at the other end of the URI.\r\n         URIs do not have to be dereferenceable, however.  They are just\r\n         a namespace, and the meaning of a namespace CAN be provided by\r\n         any convenient means (e.g. publishing an RFC, Open API Spec\r\n         document or a nicely printed book).\r\n\r\n   On the value side of the equation, each \"component details\" object in\r\n   the array SHOULD have at least one key.",
                        "additionalProperties": {
                            "type": "array",
                            "items": {
                                "$ref": "#/components/schemas/healthCheck-model"
                            }
                        }
                    },
                    "links": {
                        "description": "Links to additional information or actions for the resource",
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/links-model"
                        }
                    },
                    "releaseId": {
                        "description": "In well-designed APIs, backwards-compatible\r\nchanges in the service should not update a version number.  APIs\r\nusually change their version number as infrequently as possible, to\r\npreserve stable interface.  However, implementation of an API may\r\nchange much more frequently, which leads to the importance of having\r\nseparate \"release number\" or \"releaseId\" that is different from the\r\npublic version of the API.",
                        "type": "string"
                    },
                    "serviceId": {
                        "description": "A unique identifier (UUID) for the service",
                        "type": "string"
                    }
                },
                "example": {
                    "status": "PASS",
                    "version": "some text",
                    "notes": [
                        "some text",
                        "some text"
                    ],
                    "output": "some text",
                    "description": "some text",
                    "checks": {

                    },
                    "release_id": "some text",
                    "service_id": "some text",
                    "links": [
                        {
                            "href": "some text",
                            "rel": "some text",
                            "operation": "HEAD",
                            "caption": "some text",
                            "media_type": "some text"
                        },
                        {
                            "href": "some text",
                            "rel": "some text",
                            "operation": "PUT",
                            "caption": "some text",
                            "media_type": "some text"
                        }
                    ]
                }
            },
            "healthCheck-model": {
                "title": "Root Type for healthcheck-model",
                "description": "",
                "type": "object",
                "properties": {
                    "status": {
                        "type": "string"
                    },
                    "output": {
                        "type": "string"
                    },
                    "affectedEndPoints": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    },
                    "componentId": {
                        "type": "string"
                    },
                    "componentType": {
                        "type": "string"
                    },
                    "observedUnit": {
                        "type": "string"
                    },
                    "observedValue": {
                        "format": "float",
                        "type": "number"
                    },
                    "asAt": {
                        "format": "date-time",
                        "description": "\nThe value is in ISO 8601 format\n\nhttps://www.iso.org/iso-8601-date-and-time-format.html",
                        "type": "string"
                    }
                },
                "example": {
                    "componentId": "dfd6cf2b-1b6e-4412-a0b8-f6f7797a60d2",
                    "componentType": "datastore",
                    "observedValue": 250,
                    "observedUnit": "ms",
                    "status": "pass",
                    "affectedEndpoints": [
                        "/users/{userId}",
                        "/customers/{customerId}/status",
                        "/shopping/{anything}"
                    ],
                    "asAt": "2018-01-17T03:36:48Z",
                    "output": ""
                }
            },
            "links-model": {
                "title": "Root Type for links-model",
                "description": "Hypermedia links see https://restfulapi.net/hateoas/ \n",
                "required": [
                    "rel",
                    "href"
                ],
                "type": "object",
                "properties": {
                    "href": {
                        "type": "string"
                    },
                    "rel": {
                        "description": "The relationships for the resource as hypermedia link.\n\nThe common values are:\n\n* self : this resource.  Normally used in lists,\n* first : the first resource in a list, \n* last : the last resource in a list, \n* next : the next resource or page in a list, \n* prev : the previous resource or page in a list\n* parent: the parent resource for the item\n* parent+collection: the list of children of the parent resource\n* collection: list of children of the resource\n* icon : URL to the icon for the resource\n* video : URL to a video\n* external : URL to external content\n* content : inline (HTML or markdonw) content related to the resource\nThe \"rel\" value is also dependent on context. ",
                        "type": "string"
                    },
                    "operation": {
                        "description": "The operation that the service resource accepts.\n\nCommonly this will be a GET or POST",
                        "enum": [
                            "GET",
                            "POST",
                            "DELETE",
                            "PUT",
                            "PATCH",
                            "HEAD"
                        ],
                        "type": "string"
                    },
                    "caption": {
                        "description": "A caption that can be displaye dfor the link",
                        "type": "string"
                    },
                    "mediaType": {
                        "description": "The type of resource media type that the link refers to.\n\nExamples are:\n\n* application/json\n* text/html",
                        "type": "string"
                    }
                },
                "example": {
                    "href": "https://server/xxx/56b3a016-213e-11ed-90db-0f0cefaf6cc5",
                    "rel": "self",
                    "operation": "GET",
                    "mediaType": "application/json"
                }
            },
            "menuResponse-model": {
                "description": "The first level of menu items.",
                "required": [
                    "menu_tree",
                    "preference",
                    "digitalId",
                    "identitySchema",
                    "organisation"
                ],
                "type": "object",
                "properties": {
                    "organisation": {
                        "description": "Oragnisation that the request is associated with",
                        "type": "string"
                    },
                    "identitySchema": {
                        "description": "Identity schema for the digitalId",
                        "type": "string"
                    },
                    "digitalId": {
                        "description": "The user name the menu request is associated with.\n\nThis is the name of the user logged into the application, \ni.e. their digital identity on the app",
                        "type": "string"
                    },
                    "applicationId": {
                        "description": "Application identifier\n\nDifferent menus can exist for different applications.",
                        "type": "string"
                    },
                    "menuTree": {
                        "$ref": "#/components/schemas/menu-model",
                        "description": "A menu tree of allowed menuf functions.\n\nThere are children (branches) to the trunk and the children \ncan have further children, where the end node (leaf) is\nthe menu function to call.\n\nThe menu tree only contains items the digital identity can \naccess."
                    },
                    "preference": {
                        "$ref": "#/components/schemas/preference-model",
                        "description": "Menu preferences"
                    }
                },
                "example": {
                    "organisation": "9tihx",
                    "identitySchema": "",
                    "digitalId": "138",
                    "applicationId": "",
                    "menuTree": {
                        "id": "l",
                        "children": [
                            {

                            },
                            {

                            }
                        ],
                        "isGroup": false,
                        "icon": "i",
                        "label": "1wj",
                        "tenant": "eaif",
                        "toolTip": "p",
                        "functionId": "",
                        "intent": "nx",
                        "target": "",
                        "iconActive": "cc",
                        "iconHover": "q6",
                        "isEmpty": true
                    },
                    "preference": {
                        "homeFunction": "b",
                        "landingFunction": "zxwayg7b",
                        "theme": "6i8z1d9o",
                        "reOpenList": [
                            {
                                "appId": "zfhfd",
                                "functionId": "04herucq"
                            },
                            {
                                "appId": "0m",
                                "functionId": "pzp5z294"
                            }
                        ]
                    }
                }
            },
            "preference-model": {
                "description": "Preference details for the menu.\n\nThe preferences can be either system defaults\nif not set by the digital identity, or the\nactual preferences for the identity that overrides\nthe system defaults.",
                "type": "object",
                "properties": {
                    "homeFunction": {
                        "$ref": "#/components/schemas/menu-model",
                        "description": "The menu item that is the home page."
                    },
                    "landingFunction": {
                        "$ref": "#/components/schemas/menu-model",
                        "description": "The menu item that is the landing page."
                    },
                    "theme": {
                        "description": "Menu theme",
                        "type": "string"
                    },
                    "reOpenList": {
                        "description": "List of menu functions to reopen\n\nThis is intended to be used as a save from the previous\nsession of the app, but could also be used in other ways.",
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/app-function-model"
                        }
                    },
                    "favourites": {
                        "description": "A list of favourite intents",
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    }
                }
            },
            "app-function-model": {
                "description": "A pair of values to allow location of the menu function\nand the app it is associated with, to be used in \nreopen a menu item.",
                "required": [
                    "functionId"
                ],
                "type": "object",
                "properties": {
                    "appId": {
                        "description": "Associated application ID",
                        "type": "string"
                    },
                    "functionId": {
                        "description": "Menu item function Id",
                        "type": "string"
                    }
                }
            },
            "intent-model": {
                "description": "Details about the intent.\n\nIntents are grouped by application.",
                "required": [
                    "id",
                    "applicationId"
                ],
                "type": "object",
                "properties": {
                    "id": {
                        "description": "A unique identifier for the intent",
                        "type": "string"
                    },
                    "applicationId": {
                        "description": "The linked application",
                        "type": "string"
                    },
                    "uri": {
                        "description": "Intent URI\n\nThe URI has a protocol identifier. Protocol identifiers include:\n\n* https:\n* http:\n* file:\n* fdc3:",
                        "type": "string"
                    },
                    "metadata": {
                        "description": "Additional JSON metadata for the intent\n\nThis is an object type and translates to\na JSON map list where each map object could be \na different interface definition, allowing for\nflexibility based on the map key.",
                        "type": "object"
                    },
                    "icon": {
                        "description": "An icon for the intent",
                        "type": "string"
                    },
                    "iconHover": {
                        "description": "An icon when hovering over intent",
                        "type": "string"
                    },
                    "iconActive": {
                        "description": "An icon when the icon is actiive (selected)",
                        "type": "string"
                    },
                    "label": {
                        "description": "A menu label that is used by default",
                        "type": "string"
                    },
                    "tenantId": {
                        "description": "The tenant identifier linked to the function\n\nThe tenant is ot mandatory but if supplied or \ninherited from the application then this can flow\nto menu items if the menu item tenant identifier is empty.",
                        "type": "string"
                    },
                    "toolTip": {
                        "description": "A menu item tooltip",
                        "type": "string"
                    },
                    "intentStatus": {
                        "description": "Intent status can be:\n\n* active\n* hidden\n* deactivated\n* conditional\n\nA hidden item is not visible in menus. \n\nA conditional status will apply addition rules before the \nmenu item is displayed, such as a feature switch\n",
                        "enum": [
                            "active",
                            "hidden",
                            "deactivated",
                            "conditional"
                        ],
                        "type": "string"
                    }
                }
            },
            "menuRequest-model": {
                "description": "The request information of a menu \nwhere the POST is used and the information\nis not derived from the header attributes\nor the JWT contents.\n",
                "required": [
                    "organisation",
                    "digital_id",
                    "identity_schema",
                    "application_id"
                ],
                "type": "object",
                "properties": {
                    "organisation": {
                        "description": "Oragnisation that the request is associated with",
                        "type": "string"
                    },
                    "identitySchema": {
                        "description": "",
                        "type": "string"
                    },
                    "digitalId": {
                        "description": "The user name the menu request is associated with.\n\nThis is the name of the user logged into the application, \ni.e. their digital identity on the app",
                        "type": "string"
                    },
                    "applicationId": {
                        "description": "Application identifier\n\nDifferent menus can exist for different applications.",
                        "type": "string"
                    }
                },
                "example": {
                    "organisation": "acme",
                    "digitalId": "my_id"
                }
            },
            "preferenceResponse-model": {
                "description": "The first level of menu items.",
                "required": [
                    "menu_tree"
                ],
                "type": "object",
                "properties": {
                    "organisation": {
                        "description": "Organisation that the request is associated with",
                        "type": "string"
                    },
                    "identitySchema": {
                        "description": "",
                        "type": "string"
                    },
                    "digitalId": {
                        "description": "The user name the menu request is associated with.\n\nThis is the name of the user logged into the application, \ni.e. their digital identity on the app",
                        "type": "string"
                    },
                    "preference": {
                        "$ref": "#/components/schemas/preference-model",
                        "description": "Menu preferences"
                    }
                },
                "example": {
                    "organisation": "9tihx",
                    "identitySchema": "",
                    "digitalId": "138",
                    "applicationId": "",
                    "menuTree": {
                        "id": "l",
                        "children": [
                            {

                            },
                            {

                            }
                        ],
                        "isGroup": false,
                        "icon": "i",
                        "label": "1wj",
                        "tenant": "eaif",
                        "toolTip": "p",
                        "functionId": "",
                        "intent": "nx",
                        "target": "",
                        "iconActive": "cc",
                        "iconHover": "q6",
                        "isEmpty": true
                    },
                    "preference": {
                        "homeFunction": "b",
                        "landingFunction": "zxwayg7b",
                        "theme": "6i8z1d9o",
                        "reOpenList": [
                            {
                                "appId": "zfhfd",
                                "functionId": "04herucq"
                            },
                            {
                                "appId": "0m",
                                "functionId": "pzp5z294"
                            }
                        ]
                    }
                }
            },
            "preferenceRequest-model": {
                "description": "The request information of a menu \nwhere the POST is used and the information\nis not derived from the header attributes\nor the JWT contents.\n",
                "required": [
                    "organisation",
                    "digital_id",
                    "identity_schema",
                    "application_id"
                ],
                "type": "object",
                "properties": {
                    "organisation": {
                        "description": "Oragnisation that the request is associated with",
                        "type": "string"
                    },
                    "identitySchema": {
                        "description": "",
                        "type": "string"
                    },
                    "digitalId": {
                        "description": "The user name the menu request is associated with.\n\nThis is the name of the user logged into the application, \ni.e. their digital identity on the app",
                        "type": "string"
                    }
                },
                "example": {
                    "organisation": "acme",
                    "digitalId": "my_id"
                }
            },
            "application-model": {
                "description": "Provides application related information.\n\nAn application provides multiple capabilitie and functions (or intents) that\ncan be acess and also linked in menus.\n",
                "required": [
                    "applicationId",
                    "name",
                    "id"
                ],
                "type": "object",
                "properties": {
                    "id": {
                        "description": "A unique identfier for the application",
                        "type": "string"
                    },
                    "name": {
                        "description": "A name for the application",
                        "type": "string"
                    },
                    "description": {
                        "description": "A description for the application",
                        "type": "string"
                    },
                    "version": {
                        "description": "Verison of the applicatio that this record refers to",
                        "type": "string"
                    },
                    "tenantId": {
                        "description": "Identifier for the tenant\n\nThe tenant is not required, but if supplied\nit will flow through to intent data items (if blank)",
                        "type": "string"
                    },
                    "publisher": {
                        "description": "Name of the publisher",
                        "type": "string"
                    },
                    "webSite": {
                        "description": "The publisher web site with more information.",
                        "type": "string"
                    },
                    "contactEmail": {
                        "description": "An email to contact the publisher.",
                        "type": "string"
                    },
                    "supportEmail": {
                        "description": "An email for support on the application.",
                        "type": "string"
                    },
                    "contactTelephone": {
                        "description": "A telephone number to contact the publisher",
                        "type": "string"
                    },
                    "applicationStatus": {
                        "description": "Application status can be:\n\n* active\n* hidden\n* deactivated\n* conditional\n\nA hidden item is not visible in application lists or menus. \n\nA conditional status will apply addition rules before the \napplication and associated menu item is displayed, \nsuch as a feature switch\n",
                        "enum": [
                            "active",
                            "hidden",
                            "deactivated",
                            "conditional"
                        ],
                        "type": "string"
                    }
                }
            },
            "menu-model": {
                "description": "",
                "required": [
                    "id",
                    "tenant"
                ],
                "type": "object",
                "properties": {
                    "id": {
                        "description": "Unique menu identifier",
                        "type": "string"
                    },
                    "children": {
                        "description": "A list of child menu items",
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/menu-model"
                        }
                    },
                    "isGroup": {
                        "description": "A flag to indicate that child menu items exist.\n\nCorroborates a zero child array.",
                        "type": "boolean"
                    },
                    "icon": {
                        "description": "A built in icon or URL to resource\n\nIf no icon then a label must be supplied",
                        "type": "string"
                    },
                    "label": {
                        "description": "Menu item text label\n\nIf no label then icon must be supplied",
                        "type": "string"
                    },
                    "applicationLabel": {
                        "description": "The label for the application.  \n\nThe application label is required for favourites, where\nthe menu item points to a unique menu location.",
                        "type": "string"
                    },
                    "application": {
                        "description": "Unique application identifer\n\nThis is a GUID and is used in the entitlement check \nto allow the functions. i.e. retain them in the list of\nreturned menu items.\n\nIf no value provided, then the parent application value is assumed\nand used in rules and display where required.  The application\nidentifier cn be used to group behaviour under an application.\n\nThe application identifier is required for favourites, where\nthe menu item points to a unique menu location.",
                        "type": "string"
                    },
                    "tenant": {
                        "description": "Unique tenant identifer\n\nThis is a GUID and is used in the entitlement check \nto allow the functions. i.e. retain them in the list of\nreturned menu items.\n\nIf no value provided, then the parent tenant value is assumed\nand used in rules and display where required.",
                        "type": "string"
                    },
                    "toolTip": {
                        "description": "Menu item tool tip",
                        "type": "string"
                    },
                    "functionId": {
                        "description": "The tenant app internal identifier for the \nmenu function.\n\nIf this value is blank / missing then the default\nvalue is the intent.",
                        "type": "string"
                    },
                    "intent": {
                        "description": "The intent of the menu item\n\nThe value can be a:\n\n* deeplink to app function\n* URL link to documentation\n* other link\n \nIf the menu item is a group then this value is not required\nother wise it is mandatory.",
                        "type": "string"
                    },
                    "target": {
                        "description": "A target for the intent.  This has the same purpose \nas a HTML A tag target attribute.\n\nThis can be used to open only instance of a\nmenu item.\n",
                        "type": "string"
                    },
                    "targetLabel": {
                        "description": "A label for the target to be used in presentation.",
                        "type": "string"
                    },
                    "iconActive": {
                        "description": "The icons or style to apply when the menu item is active.\n\nStyles also apply to text if it is not a graphic.",
                        "type": "string"
                    },
                    "iconHover": {
                        "description": "The icon or style to apply when user hovers over meny item.\n\nStyles also apply to text if it is not a graphic.",
                        "type": "string"
                    },
                    "isEmpty": {
                        "description": "This menu item is only displayed if the parent list would otherwise be empty.\n\nThis allows for the display of information menu links if the user is not\nentitled to any entries.  For example a link on how to seek access.",
                        "type": "boolean"
                    },
                    "intentMetadata": {
                        "description": "Additional JSON metadata for the intent\n\nThis is an object type and translates to\na JSON map list where each map object could be \na different interface definition, allowing for\nflexibility based on the map key.",
                        "type": "object"
                    }
                },
                "example": {
                    "id": "k4",
                    "children": [
                        {
                            "id": "",
                            "children": [
                                {

                                },
                                {

                                }
                            ],
                            "is_group": false,
                            "icon": "o87",
                            "label": "j0vrk",
                            "tenant": "6n",
                            "tool_tip": "pgv4mf6",
                            "function_id": "x1n",
                            "intent": "",
                            "target": "q"
                        },
                        {
                            "id": "lmf",
                            "children": [
                                {

                                },
                                {

                                }
                            ],
                            "is_group": true,
                            "icon": "om",
                            "label": "54",
                            "tenant": "ufgz9yi6",
                            "tool_tip": "9bbp",
                            "function_id": "18",
                            "intent": "",
                            "target": "twjond"
                        }
                    ],
                    "is_group": false,
                    "icon": "",
                    "label": "",
                    "tenant": "",
                    "tool_tip": "04ky",
                    "function_id": "",
                    "intent": "fer",
                    "target": "9"
                }
            }
        },
        "securitySchemes": {
            "OAuth": {
                "flows": {

                },
                "type": "oauth2"
            }
        }
    },
    "tags": [
        {
            "name": "Draft",
            "description": "A service definition in the early stages of design"
        },
        {
            "name": "Proposed",
            "description": "A service definition that has been drafted and\nis being discussed."
        },
        {
            "name": "Published",
            "description": "A service definition that has been accepted\nand is being used in production or ready\nfor production use."
        },
        {
            "name": "ManageService",
            "description": ""
        }
    ]
}