Ищете универсальную утилиту синтаксического анализа Swagger для автоматизации в python

#python-3.x #swagger-ui

Вопрос:

Доступен ли в python какой-либо синтаксический анализатор для автоматизации анализа файла подписи swagger, как в редакторе swagger?

Мое досье на чванство:

 {
"swagger": "2.0",
"info": {
    "title": "Forum API",
    "version": "7.0",
    "description": "Description"
},
"schemes": [
    "http",
    "https"
],

"paths": {
    "/auth/login": {
        "post": {
            "tags": [
                "Authentication Service"
            ],
            "summary": "Authenticates the logged in user",
            "description": "",
            "operationId": "login_1",
            "consumes": [
                "application/json"
            ],
            "produces": [
                "application/json"
            ],
            "parameters": [
                {
                    "in": "body",
                    "name": "body",
                    "description": "UserLoginCredential model JSON",
                    "required": true,
                    "schema": {
                        "$ref": "#/definitions/getItemKey"
                    }
                }
            ],
            "responses": {
                "200": {
                    "description": "successful operation",
                    "schema": {
                        "$ref": "#/definitions/getItemKey"
                    }
                }
               
            }
        }
    },
    "/auth/logout": {
        "post": {
            "tags": [
                "Authentication Service"
            ],
            "summary": "Ends the logged in user session",
            "description": "",
            "operationId": "logout_1",
            "parameters": [],
            "responses": {
                "200": {
                    "description": "Logged Out"
                },
                "403": {
                    "description": "Forbidden"
                }
            }
        }
    },
    "/do/some/work": {
        "post": {
            "responses": {
                "200": {
                    "description": "OK",
                    "schema": {
                        "$ref": "#/definitions/createUpdate_dscr_ctl_ind"
                    },
                    "examples": {
                        "application/json": { "ID": "20200214182800",
                            "Date": "Fri, 14 Feb 2020 18:28:05 GMT",
                            "dscr_ctl_ind": [
                                [ "dummy1", { "POSTED": true } ],
                                [ "dummy2", { "POSTED": true } ]
                            ]
                           }
                          
                    }
                },
                    "403": {
                    "description": "Forbidden",
                    "schema": {
                      "$ref": "#/definitions/error-403-response"
                    },
                    "examples": {
                      "application/json": {
                          "errorType": "Authorization",
                          "errorMessage": "Invalid Access"
                      }
                    }
                  },
                    "400": {
                    "description": "Forbidden",
                    "schema": {
                      "$ref": "#/definitions/error-response"
                    },
                    "examples": {
                      "application/json": {
                          "error":{
                              "code": "400",
                              "reason": "Syntax Error",
                              "message": "The HTTP request is corrupted or improperly formatted."
                          }
                      }
                    }
                  }
               
            },
            "summary": "createUpdate dataScreeningControl",
            "operationId": "dataScreeningControl_1",
            "description": "createUpdate ScreeningControl",
            "tags": [
                "dataScreeningControl"
            ],
            "parameters": [
                {
                    "in": "body",
                    "name": "body",
                    "required": true,
                    "schema": {
                        "$ref": "#/definitions/getItemKey"
                    }
                }
            ]
        }
    },
    





"securityDefinitions": {
    "Bearer": {
        "type": "apiKey",
        "name": "Authorization",
        "in": "header"
    }
},
"definitions": {
    "SecurityPolicy": {
        "type": "object",
        "required": [
            "policyId"
        ],
        "properties": {
            "daysForDeleting": {
                "type": "integer",
                "format": "int64",
                "description": "Days for deleting"
            },
            "minimumPasswordLength": {
                "type": "integer",
                "format": "int64",
                "description": "Minimum password length"
            },
            "passwordRules": {
                "type": "string",
                "description": "password Rules"
            },
            "minimumUpperCaseLength": {
                "type": "integer",
                "format": "int64",
                "description": "Minimum upper case length"
            },
            "minimumLowerCaseLength": {
                "type": "integer",
                "format": "int64",
                "description": "Minimum lower case length"
            },
            "daysPasswordUsageDisallowed": {
                "type": "integer",
                "format": "int64",
                "description": "Days password usage disallowed"
            },
            "recyclingPolicy": {
                "type": "integer",
                "format": "int64",
                "description": "Recycling policy",
                "enum": [
                    1,
                    2,
                    3
                ]
            }
        }
    },
    
"userRolePolicy": {
   "type": "object",
   "required": [
     "policyId"
   ],       
    "UserObject": {
        "type": "object",
        "properties": {
            "sessionId": {
                "type": "string",
                "description": "Unique Session Identifier"
            },
            "orgAccountId": {
                "type": "integer",
                "format": "int64",
                "description": "Organization Account Identifier"
            },
            "accountId": {
                "type": "integer",
                "format": "int64",
                "description": "Account number of user"
            }
        },
        "description": "Logged in user Details"
    },
    "UserLoginCredential": {
        "type": "object",
        "required": [
            "password",
            "userName"
        ],
        "properties": {
            "userName": {
                "type": "string",
                "description": "Name of the user"
            },
            "password": {
                "type": "string",
                "description": "Password associated with the User"
            }
        },
        "description": "UserLoginCredential Details"
    },                   
                    "required": [
                        "ATTRIBUTES",
                        "npa"
                    ]
                },
                
    
    "getItemKey": {
        "type": "object",
        "title": "getItemKey config",
        "description": "getItemKey Config",
        "properties": {
            "ID": {
                "type": "string",
                "example": "20200214182800"
            },
            "Date": {
                "type": "string",
                "example": "Fri, 14 Feb 2020 18:28:05 GMT"
            }
        }
    },
    
     "getQuery_line": {
         "type": "object",
        "title": "getQuery Line Number Config",
        "description": "getQuery Number Config",
        "properties": {
            "ID": {
                "type": "string",
                "example": "20200214182800"
            },
            "Date": {
                "type": "string",
                "example": "Fri, 14 Feb 2020 18:28:05 GMT"
            },
            "line": {
                "type": "array",
                "items":
                {
                "type": "string"
                },
                example:
                 [ "7815551212", "7815551111", "7815551225" ]
                }
            }
        
    },
      "error-403-response": {
      "type": "object",
      "title": "Error Response Details",
      "description": "Error Response Details",
      "properties": {
        "errorType": {
          "type": "string",
          "description": "Text that explains the reason for error."
        },
        "errorMessage": {
          "type": "string",
          "description": "Text that provide more details and corrective actions related to the error"
        }
      },
      "required": [
        "errorType",
        "errorMessage"
      ]
    }
},
"tags": [
    {
        "name": "dataAuthentication"
    },
    {
        "name": "dataScreeningProfile"
    },
    {
        "name": "thresholdThr_Itvs"
    },
    {
        "name": "calledNumberBlock"
    }
],
"host": "www.telus.com"
 

}

Я хочу автоматизировать вышеуказанный файл swagger, чтобы проанализировать весь документ в какой-то файл и использовать его затем