{"@attributes":{"version":"2.0"},"channel":{"title":"Milkman","link":"https:\/\/milkman.dev\/","description":"Recent content on Milkman","generator":"Hugo","language":"en","item":[{"title":"Poweruser Tips For Milkman","link":"https:\/\/milkman.dev\/blog\/2024\/06\/07\/poweruser-tips-for-milkman\/","pubDate":"Fri, 07 Jun 2024 00:00:00 +0000","guid":"https:\/\/milkman.dev\/blog\/2024\/06\/07\/poweruser-tips-for-milkman\/","description":"This post should be a compilation of more complicated use-cases that fully uses the possibilities provided by Milkman. It should be a collection of tips and tricks that are not immediately obvious, but can be very useful in certain situations.\nAWS As Milkman can interact with Sql and NoSql databases, it can also interact with AWS services. This is done by using the AWS SDK for Java. To use the SDK, you need to add the SDK to your project."},{"title":"oAuth support arrived","link":"https:\/\/milkman.dev\/blog\/2021\/04\/27\/oauth-support-arrived\/","pubDate":"Tue, 27 Apr 2021 00:00:00 +0000","guid":"https:\/\/milkman.dev\/blog\/2021\/04\/27\/oauth-support-arrived\/","description":"oAuth support shipped Milkman now supports oAuth2 keys and more general provides a (naturally extensible) way to organise secret credentials.\nKeys Putting credentials into environment variables works but had its downsides. When syncing your workspace you might not want to store secrets in e.g. github. Therefore the concept of keys for introduced.\nThose keys live next to an environment and are not synched or exported, so they won&rsquo;t leave your milkman."},{"title":"Finishing Open-Source Projects","link":"https:\/\/milkman.dev\/blog\/2019\/10\/15\/finishing-open-source-projects\/","pubDate":"Tue, 15 Oct 2019 00:00:00 +0000","guid":"https:\/\/milkman.dev\/blog\/2019\/10\/15\/finishing-open-source-projects\/","description":"Have you ever started an open-source project, dived right into the code, discovered new API features that you loved, fiddled around with the build process, and then take a little break and never come back to it?\nIf that sounds familiar, this article is for you.\nIn April, I set out to write Milkman, an extensible postman replacement that allows me to finally have the features always missing in Postman. In general, Postman and Milkman are applications that help test web APIs by sending\/organizing requests."},{"title":"Fast Startup in Milkman using AppCds","link":"https:\/\/milkman.dev\/blog\/2019\/07\/26\/fast-startup-in-milkman-using-appcds\/","pubDate":"Fri, 26 Jul 2019 00:00:00 +0000","guid":"https:\/\/milkman.dev\/blog\/2019\/07\/26\/fast-startup-in-milkman-using-appcds\/","description":"td;dr; Milkman dynamically (re-)generated AppCds cache to improve startup time of a JavaFx application.This blog post goes into how to apply AppCds on a desktop application with real-world requirements like shipping, updates and plugins.\nMilkman Currently, I am developing Milkman, an alternative to Postman that is extensible and faster (as it is not using electron, but sigh the more lightweight JavaFx stack.\nOne goal of this application is to be a &ldquo;jump-in and do something, then leave&rdquo; type of application."},{"title":"Milkman Auth Plugin","link":"https:\/\/milkman.dev\/docs\/plugins\/authentication\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/milkman.dev\/docs\/plugins\/authentication\/","description":" Contains key-types for authentication, such as oauth-authentication\nFeatures supports oauth2 password-grant, client-credential grant and authorization-code grant Screenshot Editing a secret oAuth Key (Password Grant). Remarks does not yet support specifying a redirect-url for authorization-code as there is currently no browser included. "},{"title":"Milkman Cassandra Plugin","link":"https:\/\/milkman.dev\/docs\/plugins\/cassandra\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/milkman.dev\/docs\/plugins\/cassandra\/","description":"Introduces Cql Requests to Milkman using cassandra datastax driver.\nRequirements This plugin requires milkman-jdbc plugin\nInstallation After placing the jar into \\plugin folder, you also have to place the driver-jars you want to use in that folder as well.\nUsage The used url is of following format:\ncql:\/\/host[\/keyspace]?dc=...[&amp;username=...&amp;password=...] supported parameters\nname description dc datacenter, required. for local installations, this should be &lsquo;datacenter1&rsquo; username username, optional password password, optional Screenshot Editing a secret oAuth Key (Password Grant)."},{"title":"Milkman Commandline Interface","link":"https:\/\/milkman.dev\/docs\/plugins\/cli\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/milkman.dev\/docs\/plugins\/cli\/","description":"This is an experimental interactive command line interface for plugin. After copying the content of the archive to the root directory of milkman, you can start it by mm on terminal.\nScreenshot Features Editing Request-Aspects via nano Executing requests Analyzing responses via less Interactive mode (entered by simply starting mm) or non-interactive mode (by executing commands via mm [command]) Tab-Completion on interactive mode Commands Note: all IDs are derived from the original names."},{"title":"Milkman Explore Plugin","link":"https:\/\/milkman.dev\/docs\/plugins\/explore\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/milkman.dev\/docs\/plugins\/explore\/","description":" Extends Milkman-rest with an additional response-tab that allows for application\/json responses to be explored using JMesPath.\nNote requires milkman-rest plugin Screenshot Example of the explore plugin "},{"title":"Milkman GraphQL Plugin","link":"https:\/\/milkman.dev\/docs\/plugins\/graphql\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/milkman.dev\/docs\/plugins\/graphql\/","description":" Allows to craft GraphQL requests.\nNote This plugin is rather simple and does not include advanced features such as auto-completion or schema-validation (yet). Requires milkman-rest plugin Screenshot Example of the GraphQl plugin "},{"title":"Milkman Grpc Plugin","link":"https:\/\/milkman.dev\/docs\/plugins\/grpc\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/milkman.dev\/docs\/plugins\/grpc\/","description":"Grpc Plugin for communication with Grpc Servers.\nFeatures Can work with Server Reflection to query services and retrieve *.proto files Given a *.proto file, Server Reflection is not necessary to query a service Read\/write ASCII headers Support Server\/client\/both streams Screenshot Example of the Grpc plugin Example of Server streaming Client Streaming To send multiple messages, just add multiple json objects to the payload, divided by two new lines."},{"title":"Milkman Http Plugin","link":"https:\/\/milkman.dev\/docs\/plugins\/rest\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/milkman.dev\/docs\/plugins\/rest\/","description":"Introduces Http request capabilities to milkman. Consists of serveral features that together should make milkman be usable as postman-replacement for day-to-day work.\nScreenshot Example of the Rest plugin Example of Server Sent Events Streaming Features Postman-like UI Crafting of requests by editing body, headers, parameters Highlighting\/formatting for json Proxy-Authentication support (BASIC for now) Importers for Postman exports (Collections, Environments, Data-Dump) Importers for OpenApi v3.0 (planned) Exporters Support import of APIs listed at APIs."},{"title":"Internal Model","link":"https:\/\/milkman.dev\/docs\/development\/model\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/milkman.dev\/docs\/development\/model\/","description":"Plugins in milkman can extend various functionality. For this, an explanation of how a request is structured is necessary first.\nGetting Started A sample plugin was created that shows how to add an Aspect Tab to a Request.\nif you want to setup a new project, an exemplary pom can be found here.\nData Model The core of milkman is very abstract and is only intended to organize workspaces, which contain environments and collections of requests."},{"title":"Milkman Mcp Plugin","link":"https:\/\/milkman.dev\/docs\/plugins\/mcp\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/milkman.dev\/docs\/plugins\/mcp\/","description":" Support for Model Context Protocol (MCP) transport\nFeatures support MCP over SSE, Streamable Http and StdIo can either connect to remote endpoints or start a local MCP server for interactive testing supports calling Tools, Prompts and Resources defined in the MCP server Header Support for authentication and custom headers \/ Environment variables Listening to Events returned by the MCP server Screenshot Stdio Transport Note requires milkman-rest plugin "},{"title":"Milkman Nosql Plugin","link":"https:\/\/milkman.dev\/docs\/plugins\/nosql\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/milkman.dev\/docs\/plugins\/nosql\/","description":"Introduces Nosql Requests to Milkman using JNoSql.\nInstallation After placing the jar into \\plugin folder, you also have to place the driver-jars you want to use in that folder as well.\nScreenshot TBD\nFeatures Integration of jnosql query language support for key-value databases (e.g. dynamodb, redis, memcache,&hellip;) support for document databases (e.g. couchbase, ) support for column databases (e.g. cassandra, ) (planned) support for graph databases (via Apache tinkerpop, supporting databases like neo4j) (planned) exploration of table structures \/ existing tables."},{"title":"Milkman Note Plugin","link":"https:\/\/milkman.dev\/docs\/plugins\/note\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/milkman.dev\/docs\/plugins\/note\/","description":" This is a very simple plugin that adds a tab to each request where users can enter some notes about the request.\nThis plugin serves demonstrational purposes and should show how milkman can be extended.\nScreenshot Example of the Notes plugin "},{"title":"Milkman Privatebin Plugin","link":"https:\/\/milkman.dev\/docs\/plugins\/privatebin\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/milkman.dev\/docs\/plugins\/privatebin\/","description":" Allows to share requests etc via Privatebin.\nScreenshot Example of the Privatebin plugin Features Customizable Privatebin installation Client-side AES encryption Share requests via simple URL Burn After Reading feature "},{"title":"Milkman Scripting Plugin","link":"https:\/\/milkman.dev\/docs\/plugins\/scripting\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/milkman.dev\/docs\/plugins\/scripting\/","description":"provides scripting capabilities via nashorn javascript engine (graal.js supported but disabled because it is too big in size).\nFeatures Provides possibility to pre-load scripts from web, such as chai, via settings. Pre-Request script execution before actual request is made Post-Request script execution with logging output Extensions of template parameters with js: prefix For example, you can set BASIC authorization via header: Authorization: Basic {{js:base64(&quot;username:password&quot;)}} Example for scripts var url = JSON."},{"title":"Search Results","link":"https:\/\/milkman.dev\/search\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/milkman.dev\/search\/","description":{}},{"title":"Development Setup","link":"https:\/\/milkman.dev\/docs\/development\/setup\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/milkman.dev\/docs\/development\/setup\/","description":"for creating a new plugin, you can use following pom:\n&lt;project xmlns=&#34;http:\/\/maven.apache.org\/POM\/4.0.0&#34; xmlns:xsi=&#34;http:\/\/www.w3.org\/2001\/XMLSchema-instance&#34; xsi:schemaLocation=&#34;http:\/\/maven.apache.org\/POM\/4.0.0 http:\/\/maven.apache.org\/xsd\/maven-4.0.0.xsd&#34;&gt; &lt;modelVersion&gt;4.0.0&lt;\/modelVersion&gt; &lt;groupId&gt;...&lt;\/groupId&gt; &lt;artifactId&gt;...&lt;\/artifactId&gt; &lt;version&gt;...&lt;\/version&gt; &lt;dependencies&gt; &lt;dependency&gt; &lt;groupId&gt;com.github.warmuuh.milkman&lt;\/groupId&gt; &lt;artifactId&gt;milkman&lt;\/artifactId&gt; &lt;version&gt;...&lt;\/version&gt; &lt;scope&gt;provided&lt;\/scope&gt; &lt;\/dependency&gt; &lt;!-- and for refering to plugins of milkman: --&gt; &lt;dependency&gt; &lt;groupId&gt;com.github.warmuuh.milkman&lt;\/groupId&gt; &lt;artifactId&gt;milkman-rest&lt;\/artifactId&gt; &lt;version&gt;...&lt;\/version&gt; &lt;scope&gt;provided&lt;\/scope&gt; &lt;\/dependency&gt; &lt;\/dependencies&gt; &lt;build&gt; &lt;plugins&gt; &lt;!-- for packaging all your dependencies into one jar, excluding provided ones --&gt; &lt;plugin&gt; &lt;groupId&gt;org.apache.maven.plugins&lt;\/groupId&gt; &lt;artifactId&gt;maven-assembly-plugin&lt;\/artifactId&gt; &lt;version&gt;2.6&lt;\/version&gt; &lt;configuration&gt; &lt;descriptorRefs&gt; &lt;descriptorRef&gt;jar-with-dependencies&lt;\/descriptorRef&gt; &lt;\/descriptorRefs&gt; &lt;appendAssemblyId&gt;false&lt;\/appendAssemblyId&gt; &lt;\/configuration&gt; &lt;executions&gt; &lt;execution&gt; &lt;id&gt;assemble-all&lt;\/id&gt; &lt;phase&gt;package&lt;\/phase&gt; &lt;goals&gt; &lt;goal&gt;single&lt;\/goal&gt; &lt;\/goals&gt; &lt;\/execution&gt; &lt;\/executions&gt; &lt;\/plugin&gt; &lt;\/plugins&gt; &lt;\/build&gt; &lt;repositories&gt; &lt;repository&gt; &lt;id&gt;jitpack."},{"title":"Slack Integration","link":"https:\/\/milkman.dev\/docs\/features\/slack\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/milkman.dev\/docs\/features\/slack\/","description":"Milkman supports slack-integration via a slackbot.\nYou can either host it yourself or use the heroku-hosted instance:\nUsage Once added to your workspace, you can share a private-bin export url via:\n\/milkman &lt;privatebin-url&gt; Features It will nicely render the shared request and offers several ways for viewers to use the request, such as viewing the request as curl-command or http-request.\nPreview of a request in slack and users can choose how to view the request:"},{"title":"Milkman Socket.IO Plugin","link":"https:\/\/milkman.dev\/docs\/plugins\/sio\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/milkman.dev\/docs\/plugins\/sio\/","description":" Support for Socket.IO transport\nFeatures supports Socket.IO Screenshot Example of the Socket.IO plugin Note requires milkman-rest plugin "},{"title":"Milkman Jdbc Plugin","link":"https:\/\/milkman.dev\/docs\/plugins\/jdbc\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/milkman.dev\/docs\/plugins\/jdbc\/","description":" Introduces Sql Requests to Milkman using JDBC.\nInstallation After placing the jar into \\plugin folder, you also have to place the driver-jars you want to use in that folder as well.\nScreenshot Example of the Sql plugin Features Execution of Requests against Jdbc compatible Databases. (planned) exploration of table structures \/ existing tables. "},{"title":"Milkman Git Sync Plugin","link":"https:\/\/milkman.dev\/docs\/plugins\/sync-git\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/milkman.dev\/docs\/plugins\/sync-git\/","description":" Support for Socket.IO transport\nThis plugin allows to setup a git repository to where a workspace can be synchronized. Synchronization works by computing the diffs and applying them in a fuzzy manner to the latest version (simple algorithm of Differential Synchronization).\nScreenshot Example of the Scripting plugin Features synchronizes (on-demand for now) workspaces with a remote git repository Remark This feature is experimental. "},{"title":"Milkman Test Plugin","link":"https:\/\/milkman.dev\/docs\/plugins\/test\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/milkman.dev\/docs\/plugins\/test\/","description":"a testrunner plugin that allows to execute multiple requests in a sequence and verify their results.\nUsage Just Drag-and-drop requests you want to execute into the test-tab and you are ready to go.\nDemo Environment On execution, a separate environment only for this test-run will be created, so everything written to the current environment. For differentiation in scripts, a __TEST__ = true variable is also added to the current environment."},{"title":"Milkman Websocket Plugin","link":"https:\/\/milkman.dev\/docs\/plugins\/ws\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/milkman.dev\/docs\/plugins\/ws\/","description":" Support for websocket transport\nFeatures supports ws and wss can interactively send messages Screenshot Note requires milkman-rest plugin "}]}}