{"id":25019033,"url":"https://github.com/guerinoni/fiuto","last_synced_at":"2025-10-24T14:35:06.371Z","repository":{"id":275817655,"uuid":"876321138","full_name":"guerinoni/fiuto","owner":"guerinoni","description":"Driller for OpenAPI spec.","archived":false,"fork":false,"pushed_at":"2025-04-04T20:53:23.000Z","size":205,"stargazers_count":4,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-05T19:35:43.797Z","etag":null,"topics":["openapi","openapi-spec"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/guerinoni.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-10-21T19:13:42.000Z","updated_at":"2025-03-11T16:00:31.000Z","dependencies_parsed_at":"2025-02-04T19:04:34.194Z","dependency_job_id":"f07b4eef-5755-4746-8509-679eb6d17686","html_url":"https://github.com/guerinoni/fiuto","commit_stats":null,"previous_names":["guerinoni/fiuto"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guerinoni%2Ffiuto","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guerinoni%2Ffiuto/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guerinoni%2Ffiuto/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guerinoni%2Ffiuto/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/guerinoni","download_url":"https://codeload.github.com/guerinoni/fiuto/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248658433,"owners_count":21140945,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["openapi","openapi-spec"],"created_at":"2025-02-05T11:19:49.955Z","updated_at":"2025-10-24T14:35:01.342Z","avatar_url":"https://github.com/guerinoni.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Fiuto\n\n\u003e fiuto in italian means \"sense of smell\" or \"intuition\" in general. It can refer literally to the ability to smell, like an animal’s keen sense of smell, or figuratively to a person’s intuition or instinct, especially for detecting something hidden or understanding a situation quickly.\n\n## Why this project\n\nIt is a CLI based utility born because recently I've worked on many services with SDK exposure and with OpenAPI Spec.\nThis generate in me and idea for a tool capable of detech incosistency in you backend just looking at your specification.\n\nIt can be very usuful if you keep your spec.yml updated and in a good shape becuase can catch inconsistency or not tested situation. In a long term run it is easy to break compatibility or unwanted changes during input validation and responses.\n\nIt is in a early stage phase.\n\n## Usage\n\n```zsh\nfiuto ./openapi.yml\n```\n\nThis generates a result in json, maybe in future a UI can be built on top of this.\n\nIf you want override (or set server base url) you can call \n```zsh\nfiuto --base-url 'http://127.0.0.1:8001' ./openapi.yml\n```\n\nIn case something is not working with URL, the tool stops at the first request.\n\n## Features\n\n- [x] test every combination of input request\n- [x] uses examples provided in the spec\n- [x] json result easy to parse\n- [x] support for full object example\n- [x] support example for every propries\n- [x] skip deprecated endpoints with `--skip-deprecated`\n- [x] send request with a token using `--jwt \u003cstring\u003e` (this allows to test endpoints behind an auth)\n\n## Limitations\n\n- just drilling endpoint with `content: application/json`\n- the post request must have `requestBody` with `$ref`\n- spec should contains `components` section with the struct in ref above\n- in every `property` of the component's schema you need `example` to be filled (it uses that at the moment) or full example for the entire object\n- it is now using `example` fields to create payload\n\n## Idea\n\n- check responses\n- support for headers to inject\n- test combination of headers?\n- test different input other then examples provided\n- use the full example of the object instead examples for every field\n- inject token for request with auth (CLI parameter)\n- allow selection of server from `servers` property of spec with base url to use\n- test `nullable` field\n- support get with payload\n- missing PUT\n- options for waiting every x request, or between every request\n- support POST with format like \n```\nrequestBody:\n  required: true\n  description: Form containing OPML file\n  content:\n    multipart/form-data:\n      schema:\n        type: object\n        properties:\n          file:\n            type: string\n            format: binary\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fguerinoni%2Ffiuto","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fguerinoni%2Ffiuto","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fguerinoni%2Ffiuto/lists"}