# Features
- **Cross-platform**: Works on Windows, macOS, and Linux.
- **High Performance**: Optimized for speed and efficiency.
- **User-friendly Interface**: Intuitive design for easy navigation.
- **Customizable**: Flexible settings to suit your needs.
- **CLI/TUI**: Command-line and terminal-based interfaces available.
- **Advanced Imports**: Supports importing apis from straight up from your project.
## REST Features
- **Methods**
- GET
- POST
- PUT
- PATCH
- DELETE
- OPTIONS (in future)
- HEAD (in future)
- TRACE (in future)
- CONNECT (in future)
- **Params**
- **Headers**
- **Authentication**
- Basic auth
- Bearer token
- Digest
- JWT
- OAuth1-2
- API Key
- **Body**
- form-data
- x-www-form-urlencoded
- raw
- Text
- JavaScript
- JSON
- HTML
- XML
- **Note:** Support for beautifying
- GraphQL
- **Note:** Auto-Fetching of GraphQL schema in future
- **Scripts** (JavaScript)
- Pre-request scripts
- Post-request scripts
## Collections
- **Organization**
- Folders
- Subfolders
- **Import/Export**
- Postman
- Insomnia
- Swagger/OpenAPI
- **Environment Variables**
- Global
- Collection-specific
- Environment-specific
- **Authorization**
- Inherit from collection
- Override at request level
- **Runs**
- Single request
- Collection run
- Data-driven testing (in future)
- Results reporting
- Result Visualization (in future)
- Charts
- Graphs
- Custom dashboards
- Performance metrics
## Import/Export
- **Formats**
- Postman
- Insomnia
- Swagger/OpenAPI
## Account Backup and Sync
**Note:** Currently not implemented, but can think of something in future
## Advanced Imports
Toss can import APIs straight from your project controllers or routes. It should be done by running a cli command with the path to your project.
- Search for controllers/routes files throughout the project.
- Extract API endpoints and metadata from the files.
- Create a Toss Collection from the imported APIs.
- Toss Collection should have structure if the project has a defined structure.(e.g. if the project has multiple controllers/routes files, they should be grouped into folders in the Toss Collection)
- Supported Frameworks: Spring, ASP.NET, Ruby on Rails, Next.js, Express.js, Django, Flask, FastAPI, Laravel, Quarkus
- Future frameworks: React, Vue.js, Svelte, Angular
- Only REST APIs are supported for now.
- Needs to be free
- Needs to be secure
- Needs to be cross-platform
## Environment Variables
- This section will contain and store all the environment variables for the collection.
- Based on which collection is selected, or which api/folder is selected, the environment variables will be loaded into the section.
- Users should be able to add, edit, and delete environment variables from this section.
- Environment variables should be stored in a persistent manner, so they are not lost when the user closes the application.
- Environment variable values should be masked or hidden from view with a shortcut key to toggle visibility.
- If Evnvironment variable is not implemented yet, create a plan to implement it, and then implement it.
## Smart Environment Variables Creation
- Add a feature to allow users to create smart environment variables that can be used across collections and requests.
- When a collection's requests all have the similar base URL, the user should be able to create a smart environment variable as baseURL that should replace the base URL in all requests in that collection to come from this smart environment variable.
- This baseURL env creation can be done by user while on the collection section by pressing a shortcut key. (:env create)
## Snippets
- Snippets can be used to quickly insert most commonly used inputs into relevent fields
- Some of the good examples of where snippets could be useful are adding localhost url, http headers, http/https request methods, and commonly used paths from other requests in collection.