{
    "openapi": "3.0.0",
    "info": {
        "version": "1.0.0",
        "title": "JSON Placeholder API",
        "description": "See https://jsonplaceholder.typicode.com/"
    },
    "servers": [
        {
            "url": "https://jsonplaceholder.typicode.com"
        }
    ],
    "paths": {
        "/posts": {
            "get": {
                "description": "Returns all posts",
                "tags": [
                    "Posts"
                ],
                "operationId": "getPosts",
                "responses": {
                    "200": {
                        "description": "Successful response",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/PostsList"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/users": {
            "get": {
                "description": "Returns all users",
                "tags": [
                    "Users"
                ],
                "operationId": "getUsers",
                "responses": {
                    "200": {
                        "description": "Successful response",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/UserList"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/users/{id}": {
            "get": {
                "description": "Returns a user by id",
                "tags": [
                    "Users"
                ],
                "operationId": "getUser",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "description": "The user id.",
                        "schema": {
                            "type": "integer",
                            "format": "int64"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful response",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/User"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "User not found"
                    }
                }
            }
        },
        "/posts/{id}": {
            "get": {
                "description": "Returns a post by id",
                "tags": [
                    "Posts"
                ],
                "operationId": "getPost",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "description": "The user id.",
                        "schema": {
                            "type": "integer",
                            "format": "int64"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful response",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Post"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Post not found"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "PostsList": {
                "type": "array",
                "items": {
                    "$ref": "#/components/schemas/Post"
                }
            },
            "UserList": {
                "type": "array",
                "items": {
                    "$ref": "#/components/schemas/User"
                }
            },
            "Post": {
                "type": "object",
                "required": [
                    "id",
                    "userId",
                    "title"
                ],
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "userId": {
                        "type": "integer"
                    },
                    "title": {
                        "type": "string"
                    }
                }
            },
            "User": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "name": {
                        "type": "string"
                    },
                    "username": {
                        "type": "string"
                    },
                    "email": {
                        "type": "string"
                    }
                }
            }
        }
    }
}