{
  "openapi": "3.0.3",
  "info": {
    "title": "Circular reference examples",
    "version": "1.0.0"
  },
  "servers": [
    {
      "url": "https://httpbin.org/"
    }
  ],
  "paths": {
    "/nestedTest": {
      "put": {
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "foo": {
                    "type": "string"
                  },
                  "arr": {
                    "type": "array",
                    "items": {
                      "type": "array",
                      "items": {
                        "type": "array",
                        "items": {
                          "type": "array",
                          "items": {
                            "type": "array",
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "array",
                                "items": {
                                  "type": "array",
                                  "items": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "obj": {
                    "type": "object",
                    "properties": {
                      "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff": {
                        "type": "object",
                        "properties": {
                          "fooa": {
                            "type": "object",
                            "properties": {
                              "foob:": {
                                "type": "object",
                                "properties": {
                                  "fooc": {
                                    "type": "string"
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/circular": {
      "put": {
        "parameters": [
          {
            "name": "Authorization",
            "in": "header",
            "description": "API key.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "$ref": "#/components/schemas/FormDataBodyPart"
                  },
                  "typename": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully processed."
          },
          "400": {
            "description": "Invalid payload. This can be due to invalid headers or form-data params."
          },
          "401": {
            "description": "Permissions error. The Authorization header may be missing, the value may be invalid or the associated organization/user does not have permission to modify the specified typename."
          },
          "500": {
            "description": "Server error. Something unexpected happened while processing the request. Try again later."
          }
        }
      }
    },
    "/not-quite-circular": {
      "post": {
        "description": "This is a schema that is technically circular, but not in a way that will cause infinite recursion when processing it.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "rules": {
                    "$ref": "#/components/schemas/ZoneRules"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "successful operation"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "BodyPart": {
        "type": "object",
        "properties": {
          "contentDisposition": {
            "$ref": "#/components/schemas/ContentDisposition"
          },
          "entity": {
            "type": "object"
          },
          "headers": {
            "type": "object",
            "properties": {
              "empty": {
                "type": "boolean"
              }
            },
            "additionalProperties": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          "mediaType": {
            "type": "object",
            "properties": {
              "type": {
                "type": "string"
              },
              "subtype": {
                "type": "string"
              },
              "parameters": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                }
              },
              "wildcardType": {
                "type": "boolean"
              },
              "wildcardSubtype": {
                "type": "boolean"
              }
            }
          },
          "messageBodyWorkers": {
            "$ref": "#/components/schemas/MessageBodyWorkers"
          },
          "parent": {
            "$ref": "#/components/schemas/MultiPart"
          },
          "providers": {
            "type": "object"
          },
          "parameterizedHeaders": {
            "type": "object",
            "properties": {
              "empty": {
                "type": "boolean"
              }
            },
            "additionalProperties": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/ParameterizedHeader"
              }
            }
          }
        }
      },
      "ContentDisposition": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string"
          },
          "parameters": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "fileName": {
            "type": "string"
          },
          "creationDate": {
            "type": "string",
            "format": "date-time"
          },
          "modificationDate": {
            "type": "string",
            "format": "date-time"
          },
          "readDate": {
            "type": "string",
            "format": "date-time"
          },
          "size": {
            "type": "integer",
            "format": "int64"
          }
        }
      },
      "FormDataBodyPart": {
        "type": "object",
        "properties": {
          "contentDisposition": {
            "$ref": "#/components/schemas/ContentDisposition"
          },
          "entity": {
            "type": "object"
          },
          "headers": {
            "type": "object",
            "properties": {
              "empty": {
                "type": "boolean"
              }
            },
            "additionalProperties": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          "mediaType": {
            "type": "object",
            "properties": {
              "type": {
                "type": "string"
              },
              "subtype": {
                "type": "string"
              },
              "parameters": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                }
              },
              "wildcardType": {
                "type": "boolean"
              },
              "wildcardSubtype": {
                "type": "boolean"
              }
            }
          },
          "messageBodyWorkers": {
            "$ref": "#/components/schemas/MessageBodyWorkers"
          },
          "parent": {
            "$ref": "#/components/schemas/MultiPart"
          },
          "providers": {
            "type": "object"
          },
          "name": {
            "type": "string"
          },
          "value": {
            "type": "string"
          },
          "formDataContentDisposition": {
            "$ref": "#/components/schemas/FormDataContentDisposition"
          },
          "simple": {
            "type": "boolean"
          },
          "parameterizedHeaders": {
            "type": "object",
            "properties": {
              "empty": {
                "type": "boolean"
              }
            },
            "additionalProperties": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/ParameterizedHeader"
              }
            }
          }
        },
        "description": "A single file which will be added/updated or a ZIP archive containing files that will be added/updated. The name of the ZIP archive does not matter but the names of the files contained within do.",
        "example": "file=@2018-report.pdf"
      },
      "FormDataContentDisposition": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string"
          },
          "parameters": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "fileName": {
            "type": "string"
          },
          "creationDate": {
            "type": "string",
            "format": "date-time"
          },
          "modificationDate": {
            "type": "string",
            "format": "date-time"
          },
          "readDate": {
            "type": "string",
            "format": "date-time"
          },
          "size": {
            "type": "integer",
            "format": "int64"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "MessageBodyWorkers": {
        "type": "object"
      },
      "MultiPart": {
        "type": "object",
        "properties": {
          "contentDisposition": {
            "$ref": "#/components/schemas/ContentDisposition"
          },
          "entity": {
            "type": "object"
          },
          "headers": {
            "type": "object",
            "properties": {
              "empty": {
                "type": "boolean"
              }
            },
            "additionalProperties": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          "mediaType": {
            "type": "object",
            "properties": {
              "type": {
                "type": "string"
              },
              "subtype": {
                "type": "string"
              },
              "parameters": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                }
              },
              "wildcardType": {
                "type": "boolean"
              },
              "wildcardSubtype": {
                "type": "boolean"
              }
            }
          },
          "messageBodyWorkers": {
            "$ref": "#/components/schemas/MessageBodyWorkers"
          },
          "parent": {
            "$ref": "#/components/schemas/MultiPart"
          },
          "providers": {
            "type": "object"
          },
          "bodyParts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BodyPart"
            }
          },
          "parameterizedHeaders": {
            "type": "object",
            "properties": {
              "empty": {
                "type": "boolean"
              }
            },
            "additionalProperties": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/ParameterizedHeader"
              }
            }
          }
        }
      },
      "ParameterizedHeader": {
        "type": "object",
        "properties": {
          "value": {
            "type": "string"
          },
          "parameters": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          }
        }
      },
      "ZoneId": {
        "type": "object",
        "properties": {
          "rules": {
            "$ref": "#/components/schemas/ZoneRules"
          }
        }
      },
      "ZoneOffset": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "rules": {
            "$ref": "#/components/schemas/ZoneRules"
          }
        }
      },
      "ZoneOffsetTransition": {
        "type": "object",
        "properties": {
          "offsetBefore": {
            "$ref": "#/components/schemas/ZoneOffset"
          },
          "offsetAfter": {
            "$ref": "#/components/schemas/ZoneOffset"
          },
          "dateTimeAfter": {
            "type": "string",
            "format": "date-time"
          },
          "dateTimeBefore": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "ZoneRules": {
        "type": "object",
        "properties": {
          "transitions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ZoneOffsetTransition"
            }
          }
        }
      }
    }
  }
}
