Profiles¶
Profiles let you define reusable configuration presets for different environments
(such as acceptance, staging, production). A profile can define:
- Endpoint URL.
- Default request file.
- Keystore configuration (path, type, alias, passwords).
- Proxy configuration.
- Default theme.
If a profile contains a key with an empty value, it will be ignored, and considered as if it was not present.
Note
Any CLI flag that has a corresponding field in the profiles JSON can be configured per profile. CLI flags still override the profile values at runtime.
Default profiles file location¶
By default, soap-cli looks for the profiles file at:
~/.config/soap-cli-profiles.json
This is resolved using the current user’s home directory (user.home), so it works on:
- Linux/macOS – e.g.
/home/user/.config/soap-cli-profiles.json.
You can override this location with the --profile-file argument.
Profiles file structure¶
The profiles file is a JSON object with a top-level profiles object whose keys are
profile names:
{
"profiles": {
"acceptance": {
"endpoint": "https://acceptance.example.com/soap",
"requestFile": "requests/acceptance-default.xml",
"keystore": {
"path": "/home/user/certs/acceptance.jks",
"type": "JKS",
"alias": "acceptance-client",
"password": "changeit",
"aliasPkPass": "changeit"
},
"proxy": {
"type": "socks",
"host": "127.0.0.1",
"port": 1080,
"user": "proxy-user",
"password": "proxy-pass"
},
"theme": "nord"
},
"production": {
"endpoint": "https://prod.example.com/soap",
"keystore": {
"path": "/home/user/certs/prod.p12",
"type": "PKCS12",
"alias": "prod-client",
"password": "super-secret",
"aliasPkPass": "super-secret"
}
}
}
}
Complete example with all fields¶
Below is a single profile that demonstrates all available fields:
{
"profiles": {
"full-example": {
"endpoint": "https://api.example.com/soap",
"requestFile": "requests/example.xml",
"theme": "nord",
"keystore": {
"path": "/home/user/certs/client-keystore.p12",
"type": "PKCS12",
"alias": "client-cert",
"password": "changeit",
"aliasPkPass": "changeit"
},
"proxy": {
"type": "http",
"host": "proxy.example.com",
"port": 3128,
"user": "proxy-user",
"password": "proxy-pass"
}
}
}
}
Fields¶
profiles– object mapping profile name → profile config.profiles.<name>.endpoint– endpoint URL for this profile.profiles.<name>.requestFile– default request file path (optional).profiles.<name>.theme– default color theme for XML output (optional), one of the themes supported. See Themes.profiles.<name>.keystore– keystore configuration (optional):path– keystore file path.type– keystore type (e.g.JKS,PKCS12).alias– certificate alias.password– keystore password.aliasPkPass– key password if different frompassword.
profiles.<name>.proxy– proxy configuration (optional):type–httporsocks.host– proxy host.port– proxy port.user– proxy username (optional).password– proxy password (optional).
Using a profile¶
Select a profile with --profile:
You can override values from the profile using normal flags. For example, override the endpoint while keeping everything else from the profile:
java -jar SoapCLI.jar \
--profile acceptance \
--endpoint https://override.example.com/soap \
--request-file override-request.xml
Overriding the profiles file location¶
Use --profile-file to specify a different JSON file:
java -jar SoapCLI.jar \
--profile production \
--profile-file /opt/soap-cli/custom-profiles.json \
--request-file request.xml
If --profile is specified but the profiles file is missing or malformed,
the tool will fail with a descriptive error.
Listing available profiles¶
You can list the names of all profiles defined in a profiles file using --list-profiles.
Only the profile names are printed; passwords and other sensitive values are never shown.
List profiles from the default location:
List profiles from a specific profiles file:
Detailed profile view¶
For troubleshooting, you can print a more detailed view of the profiles configuration using
--list-profiles-detailed. This shows the main fields for each profile but masks password
values so they are never printed in clear text.
Show detailed profiles from the default location:
Show detailed profiles from a specific profiles file:
java -jar soap-cli.jar \
--list-profiles-detailed \
--profile-file /opt/soap-cli/custom-profiles.json
Precedence rules¶
When both profiles and CLI flags are used:
- The selected profile (from the chosen profiles file) is loaded first.
- CLI flags override the profile’s values.
You must end up with a valid configuration:
endpointmust be set (from profile or--endpoint).- If a keystore is configured (profile or CLI), the keystore type, alias, and password must all be provided (from either source).