[System]
You are a helpful assistant that answers strictly in JSON. Here's the JSON schema you must adhere to:
<schema>
{"title":"Platform.sh routes configuration file","$schema":"http://json-schema.org/draft-07/schema#","type":"object","additionalProperties":{"oneOf":[{"type":"object","properties":{"primary":{"type":"boolean","title":"This route is the primary route of the environment","default":null},"id":{"type":"string","title":"Route Identifier","default":null},"attributes":{"type":"object","additionalProperties":{"type":"string"},"title":"Arbitrary attributes attached to this resource","default":{}},"type":{"type":"string","title":"Route type."},"redirects":{"type":"object","properties":{"expires":{"type":["integer","string"],"title":"The amount of time, in seconds, to cache the redirects.","default":-1},"paths":{"type":"object","additionalProperties":{"type":"object","properties":{"regexp":{"type":"boolean","title":"Whether the path is a regular expression.","default":false},"to":{"type":"string","title":"The URL to redirect to."},"prefix":{"type":"boolean","title":"Whether to redirect all the paths that start with the path.","default":null},"append_suffix":{"type":"boolean","title":"Whether to append the incoming suffix to the redirected URL.","default":null},"code":{"type":"integer","title":"The redirect code to use.","default":302},"expires":{"type":["integer","string"],"title":"The amount of time, in seconds, to cache the redirects.","default":null}},"required":["to"],"additionalProperties":false},"title":"The paths to redirect"}},"required":["paths"],"additionalProperties":false,"title":"The configuration of the redirects.","default":{}},"tls":{"type":"object","properties":{"strict_transport_security":{"type":"object","properties":{"enabled":{"type":"boolean","title":"Whether strict transport security is enabled or not.","default":null},"include_subdomains":{"type":"boolean","title":"Whether the strict transport security policy should include all subdomains.","default":null},"preload":{"type":"boolean","title":"Whether the strict transport security policy should be preloaded in browsers.","default":null}},"additionalProperties":false,"title":"Strict-Transport-Security options.","default":{"preload":null,"include_subdomains":null,"enabled":null}},"min_version":{"type":"string","enum":["TLSv1.1","TLSv1.0","TLSv1.3","TLSv1.2"],"title":"The minimum TLS version to support.","default":null},"client_authentication":{"type":"string","title":"The type of client authentication to request.","default":null},"client_certificate_authorities":{"type":"array","items":{"type":"string"},"title":"Certificate authorities to validate the client certificate against. If not specified, a default set of trusted CAs will be used.","default":[]}},"additionalProperties":false,"title":"TLS settings for the route.","default":{"client_authentication":null,"min_version":null,"client_certificate_authorities":[],"strict_transport_security":{"preload":null,"include_subdomains":null,"enabled":null}}},"to":{"type":"string","title":"Redirect destination"}},"required":["type","to"],"additionalProperties":false},{"type":"object","properties":{"primary":{"type":"boolean","title":"This route is the primary route of the environment","default":null},"id":{"type":"string","title":"Route Identifier","default":null},"attributes":{"type":"object","additionalProperties":{"type":"string"},"title":"Arbitrary attributes attached to this resource","default":{}},"type":{"type":"string","title":"Route type."},"redirects":{"type":"object","properties":{"expires":{"type":["integer","string"],"title":"The amount of time, in seconds, to cache the redirects.","default":-1},"paths":{"type":"object","additionalProperties":{"type":"object","properties":{"regexp":{"type":"boolean","title":"Whether the path is a regular expression.","default":false},"to":{"type":"string","title":"The URL to redirect to."},"prefix":{"type":"boolean","title":"Whether to redirect all the paths that start with the path.","default":null},"append_suffix":{"type":"boolean","title":"Whether to append the incoming suffix to the redirected URL.","default":null},"code":{"type":"integer","title":"The redirect code to use.","default":302},"expires":{"type":["integer","string"],"title":"The amount of time, in seconds, to cache the redirects.","default":null}},"required":["to"],"additionalProperties":false},"title":"The paths to redirect"}},"required":["paths"],"additionalProperties":false,"title":"The configuration of the redirects.","default":{}},"tls":{"type":"object","properties":{"strict_transport_security":{"type":"object","properties":{"enabled":{"type":"boolean","title":"Whether strict transport security is enabled or not.","default":null},"include_subdomains":{"type":"boolean","title":"Whether the strict transport security policy should include all subdomains.","default":null},"preload":{"type":"boolean","title":"Whether the strict transport security policy should be preloaded in browsers.","default":null}},"additionalProperties":false,"title":"Strict-Transport-Security options.","default":{"preload":null,"include_subdomains":null,"enabled":null}},"min_version":{"type":"string","enum":["TLSv1.1","TLSv1.0","TLSv1.3","TLSv1.2"],"title":"The minimum TLS version to support.","default":null},"client_authentication":{"type":"string","title":"The type of client authentication to request.","default":null},"client_certificate_authorities":{"type":"array","items":{"type":"string"},"title":"Certificate authorities to validate the client certificate against. If not specified, a default set of trusted CAs will be used.","default":[]}},"additionalProperties":false,"title":"TLS settings for the route.","default":{"client_authentication":null,"min_version":null,"client_certificate_authorities":[],"strict_transport_security":{"preload":null,"include_subdomains":null,"enabled":null}}},"cache":{"type":"object","properties":{"enabled":{"type":"boolean","title":"Whether the cache is enabled."},"default_ttl":{"type":"integer","title":"The TTL to apply when the response doesn't specify one. Only applies to static files.","default":0},"cookies":{"type":"array","items":{"type":"string"},"title":"The cookies to take into account for the cache key.","default":["*"]},"headers":{"type":"array","items":{"type":"string"},"title":"The headers to take into account for the cache key.","default":["Accept","Accept-Language"]}},"required":["enabled"],"additionalProperties":false,"title":"Cache configuration.","default":{"default_ttl":0,"cookies":["*"],"enabled":true,"headers":["Accept","Accept-Language"]}},"ssi":{"type":"object","properties":{"enabled":{"type":"boolean","title":"Whether SSI include is enabled."}},"required":["enabled"],"additionalProperties":false,"title":"Server-Side Include configuration.","default":{"enabled":false}},"upstream":{"type":"string","title":"The upstream to use for this route."}},"required":["type","upstream"],"additionalProperties":false}]}}
</schema>

[User] Provide a JSON object that satisfies the schema "Platform.sh routes configuration file". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.

Platform.sh routes configuration file

This route is the primary route of the environment

Route Identifier

Arbitrary attributes attached to this resource

Route type.

The amount of time, in seconds, to cache the redirects.

Whether the path is a regular expression.

The URL to redirect to.

Whether to redirect all the paths that start with the path.

Whether to append the incoming suffix to the redirected URL.

The redirect code to use.

The paths to redirect

The configuration of the redirects.

Whether strict transport security is enabled or not.

Whether the strict transport security policy should include all subdomains.

Whether the strict transport security policy should be preloaded in browsers.

Strict-Transport-Security options.

The minimum TLS version to support.

The type of client authentication to request.

Certificate authorities to validate the client certificate against. If not specified, a default set of trusted CAs will be used.

TLS settings for the route.

Redirect destination

Route Identifier

Route type.

The URL to redirect to.

The redirect code to use.

The paths to redirect

The configuration of the redirects.

Strict-Transport-Security options.

The minimum TLS version to support.

TLS settings for the route.

Whether the cache is enabled.

The TTL to apply when the response doesn't specify one. Only applies to static files.

The cookies to take into account for the cache key.

The headers to take into account for the cache key.

Cache configuration.

Whether SSI include is enabled.

Server-Side Include configuration.

The upstream to use for this route.

Provide a JSON object that satisfies the schema "Platform.sh routes configuration file". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.


[System]
You are a helpful assistant that answers strictly in JSON. Here's the JSON schema you must adhere to:
<schema>
{"title":"Platform.sh services configuration file","$schema":"http://json-schema.org/draft-07/schema#","type":"object","additionalProperties":{"type":"object","properties":{"type":{"type":"string","title":"The service type."},"size":{"type":"string","title":"The service size.","default":"AUTO"},"disk":{"type":"integer","title":"The size of the disk.","default":null},"access":{"type":"object","title":"The configuration of the service.","default":{}},"configuration":{"type":"object","title":"The configuration of the service.","default":{}},"relationships":{"type":"object","additionalProperties":{"type":"string"},"title":"The relationships of the service to other services.","default":{}},"firewall":{"type":"object","properties":{"outbound":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","title":"The IP protocol to apply the restriction on.","default":"tcp"},"ips":{"type":"array","items":{"type":"string"},"title":"The IP range in CIDR notation to apply the restriction on.","default":[]},"domains":{"type":"array","items":{"type":"string"},"title":"Domains of the restriction.","default":[]},"ports":{"type":"array","items":{"type":"integer"},"title":"The port to apply the restriction on.","default":[]}},"additionalProperties":false},"title":"Outbound firewall restrictions","default":[]}},"additionalProperties":false,"nullable":true,"title":"Firewall","default":null},"resources":{"type":"object","properties":{"base_memory":{"type":"integer","title":"The base memory for the container","default":64},"memory_ratio":{"type":"integer","title":"The amount of memory to allocate per units of CPU","default":128}},"additionalProperties":false,"nullable":true,"title":"Resources","default":null}},"required":["type"],"additionalProperties":false}}
</schema>

[User] Provide a JSON object that satisfies the schema "Platform.sh services configuration file". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.

Platform.sh services configuration file

The service type.

The service size.

The size of the disk.

The configuration of the service.

The configuration of the service.

The relationships of the service to other services.

The IP protocol to apply the restriction on.

The IP range in CIDR notation to apply the restriction on.

Domains of the restriction.

The port to apply the restriction on.

Outbound firewall restrictions

Firewall

The base memory for the container

The amount of memory to allocate per units of CPU

Resources

Provide a JSON object that satisfies the schema "Platform.sh services configuration file". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.


[System]
You are a helpful assistant that answers strictly in JSON. Here's the JSON schema you must adhere to:
<schema>
{"$defs":{"removed-include-module":{"markdownDescription":"See [include module](https://docs.ansible.com/ansible/latest/collections/ansible/builtin/include_module.html)","not":{},"title":"Replace 'include' with either 'ansible.builtin.include_tasks' or 'ansible.builtin.import_tasks'"},"ansible.builtin.import_playbook":{"additionalProperties":false,"oneOf":[{"not":{"required":["import_playbook"]},"required":["ansible.builtin.import_playbook"]},{"not":{"required":["ansible.builtin.import_playbook"]},"required":["import_playbook"]}],"patternProperties":{"^(ansible\\.builtin\\.)?import_playbook$":{"markdownDescription":"* Includes a file with a list of plays to be executed.\n *  Files with a list of plays can only be included at the top level.\n * You cannot use this action inside a play.\n\nSee [import_playbook](https://docs.ansible.com/ansible/latest/collections/ansible/builtin/import_playbook_module.html)","title":"Import Playbook","type":"string"},"name":{"title":"Name","type":"string"},"tags":{"$ref":"#/$defs/tags"},"vars":{"title":"Vars","type":"object"},"when":{"$ref":"#/$defs/complex_conditional","title":"When"}},"type":"object"},"become_method":{"anyOf":[{"enum":["ansible.builtin.sudo","ansible.builtin.su","community.general.pbrun","community.general.pfexec","ansible.builtin.runas","community.general.dzdo","community.general.ksu","community.general.doas","community.general.machinectl","community.general.pmrun","community.general.sesu","community.general.sudosu"],"type":"string"},{"$ref":"#/$defs/full-jinja"},{"pattern":"[A-Za-z0-9_\\.]+","type":"string"}],"markdownDescription":"See [become](https://docs.ansible.com/ansible/latest/user_guide/become.html)","title":"Become Method"},"block":{"properties":{"always":{"items":{"anyOf":[{"$ref":"#/$defs/task"},{"$ref":"#/$defs/block"}]},"title":"Always","type":"array"},"any_errors_fatal":{"$ref":"#/$defs/templated-boolean","title":"Any Errors Fatal"},"become":{"$ref":"#/$defs/templated-boolean","title":"Become"},"become_exe":{"title":"Become Exe","type":"string"},"become_flags":{"title":"Become Flags","type":"string"},"become_method":{"$ref":"#/$defs/become_method"},"become_user":{"title":"Become User","type":"string"},"block":{"items":{"anyOf":[{"$ref":"#/$defs/task"},{"$ref":"#/$defs/block"}]},"markdownDescription":"Blocks create logical groups of tasks. Blocks also offer ways to handle task errors, similar to exception handling in many programming languages. See [blocks](https://docs.ansible.com/ansible/latest/user_guide/playbooks_blocks.html)","title":"Block","type":"array"},"check_mode":{"$ref":"#/$defs/complex_conditional","title":"Check Mode"},"collections":{"items":{"type":"string"},"title":"Collections","type":"array"},"connection":{"title":"Connection","type":"string"},"debugger":{"title":"Debugger","type":"string"},"delegate_facts":{"title":"Delegate Facts","type":"boolean"},"delegate_to":{"title":"Delegate To","type":"string"},"diff":{"$ref":"#/$defs/templated-boolean","title":"Diff"},"environment":{"$ref":"#/$defs/environment"},"ignore_errors":{"$ref":"#/$defs/ignore_errors"},"ignore_unreachable":{"title":"Ignore Unreachable","$ref":"#/$defs/templated-boolean"},"module_defaults":{"title":"Module Defaults"},"name":{"title":"Name","type":"string"},"no_log":{"$ref":"#/$defs/templated-boolean"},"port":{"$ref":"#/$defs/templated-integer"},"remote_user":{"title":"Remote User","type":"string"},"rescue":{"items":{"anyOf":[{"$ref":"#/$defs/task"},{"$ref":"#/$defs/block"}]},"title":"Rescue","type":"array"},"run_once":{"$ref":"#/$defs/templated-boolean","title":"Run Once"},"tags":{"$ref":"#/$defs/tags","title":"Tags"},"throttle":{"$ref":"#/$defs/templated-integer","title":"Throttle"},"timeout":{"$ref":"#/$defs/templated-integer","title":"Timeout"},"vars":{"title":"Vars","type":"object"},"when":{"$ref":"#/$defs/complex_conditional","title":"When"}},"required":["block"],"type":"object"},"complex_conditional":{"oneOf":[{"type":"boolean"},{"type":"string"},{"items":{"anyOf":[{"type":"boolean"},{"type":"string"}]},"type":"array"}]},"environment":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"$ref":"#/$defs/full-jinja"}],"title":"Environment"},"full-jinja":{"pattern":"^\\{[\\{%](.|[\r\n])*[\\}%]\\}$","type":"string"},"ignore_errors":{"$ref":"#/$defs/templated-boolean","markdownDescription":"See [ignore_errors](https://docs.ansible.com/ansible/latest/user_guide/playbooks_error_handling.html#ignoring-failed-commands)","title":"Ignore Errors"},"no_log":{"$ref":"#/$defs/templated-boolean","markdownDescription":"Use for protecting sensitive data. See [no_log](https://docs.ansible.com/ansible/latest/reference_appendices/logging.html)","title":"no_log"},"play":{"additionalProperties":false,"allOf":[{"not":{"required":["ansible.builtin.import_playbook"]}},{"not":{"required":["import_playbook"]}}],"properties":{"any_errors_fatal":{"$ref":"#/$defs/templated-boolean","title":"Any Errors Fatal"},"become":{"$ref":"#/$defs/templated-boolean","title":"Become"},"become_exe":{"title":"Become Exe","type":"string"},"become_flags":{"title":"Become Flags","type":"string"},"become_method":{"$ref":"#/$defs/become_method"},"become_user":{"title":"Become User","type":"string"},"check_mode":{"$ref":"#/$defs/complex_conditional","title":"Check Mode"},"collections":{"items":{"type":"string"},"title":"Collections","type":"array"},"connection":{"title":"Connection","type":"string"},"debugger":{"title":"Debugger","type":"string"},"diff":{"$ref":"#/$defs/templated-boolean","title":"Diff"},"environment":{"$ref":"#/$defs/environment"},"fact_path":{"title":"Fact Path","type":"string"},"force_handlers":{"title":"Force Handlers","type":"boolean"},"gather_facts":{"$ref":"#/$defs/templated-boolean","title":"Gather Facts"},"gather_subset":{"items":{"anyOf":[{"enum":["all","min","all_ipv4_addresses","all_ipv6_addresses","apparmor","architecture","caps","chroot,cmdline","date_time","default_ipv4","default_ipv6","devices","distribution","distribution_major_version","distribution_release","distribution_version","dns","effective_group_ids","effective_user_id","env","facter","fips","hardware","interfaces","is_chroot","iscsi","kernel","local","lsb","machine","machine_id","mounts","network","ohai","os_family","pkg_mgr","platform","processor","processor_cores","processor_count","python","python_version","real_user_id","selinux","service_mgr","ssh_host_key_dsa_public","ssh_host_key_ecdsa_public","ssh_host_key_ed25519_public","ssh_host_key_rsa_public","ssh_host_pub_keys","ssh_pub_keys","system","system_capabilities","system_capabilities_enforced","systemd","user","user_dir","user_gecos","user_gid","user_id","user_shell","user_uid","virtual","virtualization_role","virtualization_type"],"type":"string"},{"enum":["!all","!min","!all_ipv4_addresses","!all_ipv6_addresses","!apparmor","!architecture","!caps","!chroot,cmdline","!date_time","!default_ipv4","!default_ipv6","!devices","!distribution","!distribution_major_version","!distribution_release","!distribution_version","!dns","!effective_group_ids","!effective_user_id","!env","!facter","!fips","!hardware","!interfaces","!is_chroot","!iscsi","!kernel","!local","!lsb","!machine","!machine_id","!mounts","!network","!ohai","!os_family","!pkg_mgr","!platform","!processor","!processor_cores","!processor_count","!python","!python_version","!real_user_id","!selinux","!service_mgr","!ssh_host_key_dsa_public","!ssh_host_key_ecdsa_public","!ssh_host_key_ed25519_public","!ssh_host_key_rsa_public","!ssh_host_pub_keys","!ssh_pub_keys","!system","!system_capabilities","!system_capabilities_enforced","!systemd","!user","!user_dir","!user_gecos","!user_gid","!user_id","!user_shell","!user_uid","!virtual","!virtualization_role","!virtualization_type"],"type":"string"}]},"title":"Gather Subset","type":"array"},"gather_timeout":{"$ref":"#/$defs/templated-integer","title":"Gather Timeout"},"handlers":{"$ref":"#/$defs/tasks"},"hosts":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"}],"title":"Hosts"},"ignore_errors":{"$ref":"#/$defs/ignore_errors"},"ignore_unreachable":{"title":"Ignore Unreachable","$ref":"#/$defs/templated-boolean"},"max_fail_percentage":{"title":"Max Fail Percentage","$ref":"#/$defs/templated-integer"},"module_defaults":{"title":"Module Defaults"},"name":{"title":"Name","type":"string"},"no_log":{"$ref":"#/$defs/templated-boolean"},"order":{"oneOf":[{"enum":["inventory","reverse_inventory","reverse_sorted","shuffle","sorted"],"type":"string"},{"$ref":"#/$defs/full-jinja"}],"title":"Order","markdownDescription":"See https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_strategies.html#ordering-execution-based-on-inventory"},"port":{"$ref":"#/$defs/templated-integer","title":"Port"},"post_tasks":{"$ref":"#/$defs/tasks"},"pre_tasks":{"$ref":"#/$defs/tasks"},"remote_user":{"title":"Remote User","type":"string"},"roles":{"items":{"anyOf":[{"$ref":"#/$defs/play-role"},{"type":"string"}]},"markdownDescription":"Roles let you automatically load related vars, files, tasks, handlers, and other Ansible artifacts based on a known file structure. After you group your content in roles, you can easily reuse them and share them with other users.\n See [roles](https://docs.ansible.com/ansible/latest/user_guide/playbooks_reuse_roles.html#roles)","title":"Roles","type":"array"},"run_once":{"$ref":"#/$defs/templated-boolean","title":"Run Once"},"serial":{"anyOf":[{"$ref":"#/$defs/templated-integer-or-percent"},{"items":{"$ref":"#/$defs/templated-integer-or-percent"},"type":"array"}],"markdownDescription":"Integer, percentage or list of those. See [Setting the batch size with serial](https://docs.ansible.com/ansible/latest/user_guide/playbooks_strategies.html#setting-the-batch-size-with-serial)","title":"Batch size"},"strategy":{"title":"Strategy","type":"string"},"tags":{"$ref":"#/$defs/tags","title":"Tags"},"tasks":{"$ref":"#/$defs/tasks"},"throttle":{"$ref":"#/$defs/templated-integer","title":"Throttle"},"timeout":{"$ref":"#/$defs/templated-integer","title":"Timeout"},"user":{"title":"Remote User","type":"string"},"vars":{"title":"Vars","type":"object"},"vars_files":{"items":{"oneOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"}]},"title":"Vars Files","type":["array","string","null"]},"vars_prompt":{"items":{"$ref":"#/$defs/vars_prompt"},"markdownDescription":"See [vars_prompt](https://docs.ansible.com/ansible/latest/user_guide/playbooks_prompts.html)","title":"vars_prompt","type":"array"},"when":{"$ref":"#/$defs/complex_conditional","title":"When"}},"required":["hosts"],"title":"play","type":"object"},"play-role":{"markdownDescription":"See [roles](https://docs.ansible.com/ansible/latest/user_guide/playbooks_reuse_roles.html#roles)","properties":{"any_errors_fatal":{"$ref":"#/$defs/templated-boolean","title":"Any Errors Fatal"},"become":{"$ref":"#/$defs/templated-boolean","title":"Become"},"become_exe":{"title":"Become Exe","type":"string"},"become_flags":{"title":"Become Flags","type":"string"},"become_method":{"$ref":"#/$defs/become_method"},"become_user":{"title":"Become User","type":"string"},"check_mode":{"$ref":"#/$defs/complex_conditional","title":"Check Mode"},"collections":{"items":{"type":"string"},"title":"Collections","type":"array"},"connection":{"title":"Connection","type":"string"},"debugger":{"title":"Debugger","type":"string"},"delegate_to":{"title":"Delegate To","type":"string"},"diff":{"$ref":"#/$defs/templated-boolean","title":"Diff"},"environment":{"$ref":"#/$defs/environment"},"ignore_errors":{"$ref":"#/$defs/ignore_errors"},"ignore_unreachable":{"title":"Ignore Unreachable","$ref":"#/$defs/templated-boolean"},"module_defaults":{"title":"Module Defaults"},"name":{"title":"Name","type":"string"},"no_log":{"$ref":"#/$defs/templated-boolean"},"port":{"$ref":"#/$defs/templated-integer","title":"Port"},"remote_user":{"title":"Remote User","type":"string"},"role":{"title":"Role","type":"string"},"run_once":{"$ref":"#/$defs/templated-boolean","title":"Run Once"},"tags":{"$ref":"#/$defs/tags","title":"Tags"},"throttle":{"$ref":"#/$defs/templated-integer","title":"Throttle"},"timeout":{"$ref":"#/$defs/templated-integer","title":"Timeout"},"vars":{"title":"Vars","type":"object"},"when":{"$ref":"#/$defs/complex_conditional","title":"When"}},"required":["role"],"title":"play-role","type":"object"},"playbook":{"examples":["playbooks/*.yml","playbooks/*.yaml"],"items":{"oneOf":[{"$ref":"#/$defs/ansible.builtin.import_playbook"},{"$ref":"#/$defs/play"}]},"title":"Ansible Playbook","type":"array"},"tags":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"}],"title":"Tags"},"task":{"additionalProperties":true,"allOf":[{"not":{"required":["hosts"]}},{"not":{"required":["tasks"]}},{"not":{"required":["import_playbook"]}},{"not":{"required":["block"]}}],"properties":{"action":{"title":"Action","type":"string"},"ansible.builtin.include":{"$ref":"#/$defs/removed-include-module"},"include":{"$ref":"#/$defs/removed-include-module"},"ansible.legacy.include":{"$ref":"#/$defs/removed-include-module"},"any_errors_fatal":{"$ref":"#/$defs/templated-boolean","title":"Any Errors Fatal"},"args":{"$ref":"#/$defs/templated-object","title":"Args"},"async":{"$ref":"#/$defs/templated-integer","title":"Async"},"become":{"$ref":"#/$defs/templated-boolean","title":"Become"},"become_exe":{"title":"Become Exe","type":"string"},"become_flags":{"title":"Become Flags","type":"string"},"become_method":{"$ref":"#/$defs/become_method"},"become_user":{"title":"Become User","type":"string"},"changed_when":{"$ref":"#/$defs/complex_conditional","markdownDescription":"See [changed_when](https://docs.ansible.com/ansible/latest/user_guide/playbooks_error_handling.html#defining-changed)","title":"Changed When"},"check_mode":{"$ref":"#/$defs/complex_conditional","title":"Check Mode"},"collections":{"items":{"type":"string"},"title":"Collections","type":"array"},"connection":{"title":"Connection","type":"string"},"debugger":{"title":"Debugger","type":"string"},"delay":{"$ref":"#/$defs/templated-integer","title":"Delay"},"delegate_facts":{"title":"Delegate Facts","type":"boolean"},"delegate_to":{"title":"Delegate To","type":"string"},"diff":{"$ref":"#/$defs/templated-boolean","title":"Diff"},"environment":{"$ref":"#/$defs/environment"},"failed_when":{"$ref":"#/$defs/complex_conditional","title":"Failed When"},"ignore_errors":{"$ref":"#/$defs/ignore_errors"},"ignore_unreachable":{"title":"Ignore Unreachable","$ref":"#/$defs/templated-boolean"},"listen":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"}],"markdownDescription":"Applies only to handlers. See [listen](https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_handlers.html)","title":"Listen"},"local_action":{"title":"Local Action","type":["string","object"]},"loop":{"title":"Loop","type":["string","array"]},"loop_control":{"title":"Loop Control"},"module_defaults":{"title":"Module Defaults"},"name":{"title":"Name","type":"string"},"no_log":{"$ref":"#/$defs/no_log"},"notify":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"}],"title":"Notify"},"poll":{"$ref":"#/$defs/templated-integer","title":"Poll"},"port":{"$ref":"#/$defs/templated-integer","title":"Port"},"register":{"title":"Register","type":"string"},"remote_user":{"title":"Remote User","type":"string"},"retries":{"$ref":"#/$defs/templated-integer","title":"Retries"},"run_once":{"$ref":"#/$defs/templated-boolean","title":"Run Once"},"tags":{"$ref":"#/$defs/tags","title":"Tags"},"throttle":{"$ref":"#/$defs/templated-integer","title":"Throttle"},"timeout":{"$ref":"#/$defs/templated-integer","title":"Timeout"},"until":{"$ref":"#/$defs/complex_conditional","title":"Until"},"vars":{"title":"Vars","type":"object"},"when":{"$ref":"#/$defs/complex_conditional","title":"When"},"with_dict":{"title":"With Dict"},"with_fileglob":{"title":"With Fileglob"},"with_filetree":{"title":"With Filetree"},"with_first_found":{"title":"With First Found"},"with_indexed_items":{"title":"With Indexed Items"},"with_ini":{"title":"With Ini"},"with_inventory_hostnames":{"title":"With Inventory Hostnames"},"with_items":{"anyOf":[{"$ref":"#/$defs/full-jinja"},{"type":"array"}],"markdownDescription":"See [loops](https://docs.ansible.com/ansible/latest/user_guide/playbooks_loops.html#loops)","title":"With Items"},"with_lines":{"title":"With Lines"},"with_random_choice":{"title":"With Random Choice"},"with_sequence":{"title":"With Sequence"},"with_subelements":{"title":"With Subelements"},"with_together":{"title":"With Together"}},"title":"task","type":"object"},"tasks":{"$schema":"http://json-schema.org/draft-07/schema","examples":["tasks/*.yml","handlers/*.yml"],"items":{"anyOf":[{"$ref":"#/$defs/block"},{"$ref":"#/$defs/task"}]},"title":"Ansible Tasks Schema","type":["array","null"]},"templated-boolean":{"oneOf":[{"type":"boolean"},{"$ref":"#/$defs/full-jinja","type":"string"}]},"templated-integer":{"oneOf":[{"type":"integer"},{"$ref":"#/$defs/full-jinja","type":"string"}]},"templated-integer-or-percent":{"oneOf":[{"type":"integer"},{"pattern":"^\\d+\\.?\\d*%?$","type":"string"},{"$ref":"#/$defs/full-jinja","type":"string"}]},"templated-object":{"oneOf":[{"type":"object"},{"$ref":"#/$defs/full-jinja","type":"string"}]},"vars_prompt":{"additionalProperties":false,"properties":{"confirm":{"title":"Confirm","type":"boolean"},"default":{"title":"Default","type":"string"},"encrypt":{"enum":["des_crypt","bsdi_crypt","bigcrypt","crypt16","md5_crypt","bcrypt","sha1_crypt","sun_md5_crypt","sha256_crypt","sha512_crypt","apr_md5_crypt","phpass","pbkdf2_digest","cta_pbkdf2_sha1","dlitz_pbkdf2_sha1","scram","bsd_nthash"],"title":"Encrypt","type":"string"},"name":{"title":"Name","type":"string"},"private":{"default":true,"title":"Private","type":"boolean"},"prompt":{"title":"Prompt","type":"string"},"salt_size":{"default":8,"title":"Salt Size","type":"integer"},"unsafe":{"default":false,"markdownDescription":"See [unsafe](https://docs.ansible.com/ansible/latest/user_guide/playbooks_prompts.html#allowing-special-characters-in-vars-prompt-values)","title":"Unsafe","type":"boolean"}},"required":["name","prompt"],"type":"object"}},"$id":"https://raw.githubusercontent.com/ansible/ansible-lint/main/src/ansiblelint/schemas/ansible.json","$schema":"http://json-schema.org/draft-07/schema","additionalProperties":false,"description":"https://docs.ansible.com/ansible/latest/reference_appendices/playbooks_keywords.html","examples":[],"title":"Ansible Schemas Bundle 22.4","type":["array","object"]}
</schema>

[User] Provide a JSON object that satisfies the schema "Ansible Schemas Bundle 22.4". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.

Replace 'include' with either 'ansible.builtin.include_tasks' or 'ansible.builtin.import_tasks'

* Includes a file with a list of plays to be executed.
 *  Files with a list of plays can only be included at the top level.
 * You cannot use this action inside a play.

See [import_playbook](https://docs.ansible.com/ansible/latest/collections/ansible/builtin/import_playbook_module.html)

Import Playbook

Name

Vars

When

Become Method

Always

Any Errors Fatal

Become

Become Exe

Become Flags

Become User

Blocks create logical groups of tasks. Blocks also offer ways to handle task errors, similar to exception handling in many programming languages. See [blocks](https://docs.ansible.com/ansible/latest/user_guide/playbooks_blocks.html)

Block

Check Mode

Collections

Connection

Debugger

Delegate Facts

Delegate To

Diff

Ignore Unreachable

Module Defaults

Name

Remote User

Rescue

Run Once

Tags

Throttle

Timeout

Vars

When

Environment

Ignore Errors

Use for protecting sensitive data. See [no_log](https://docs.ansible.com/ansible/latest/reference_appendices/logging.html)

no_log

Any Errors Fatal

Become

Become Exe

Become Flags

Become User

Check Mode

Collections

Connection

Debugger

Diff

Fact Path

Force Handlers

Gather Facts

Gather Subset

Gather Timeout

Hosts

Ignore Unreachable

Max Fail Percentage

Module Defaults

Name

Order

Port

Remote User

Roles let you automatically load related vars, files, tasks, handlers, and other Ansible artifacts based on a known file structure. After you group your content in roles, you can easily reuse them and share them with other users.
 See [roles](https://docs.ansible.com/ansible/latest/user_guide/playbooks_reuse_roles.html#roles)

Roles

Run Once

Integer, percentage or list of those. See [Setting the batch size with serial](https://docs.ansible.com/ansible/latest/user_guide/playbooks_strategies.html#setting-the-batch-size-with-serial)

Batch size

Strategy

Tags

Throttle

Timeout

Remote User

Vars

Vars Files

vars_prompt

When

play

Any Errors Fatal

Become

Become Exe

Become Flags

Become User

Check Mode

Collections

Connection

Debugger

Delegate To

Diff

Ignore Unreachable

Module Defaults

Name

Port

Remote User

Role

Run Once

Tags

Throttle

Timeout

Vars

When

play-role

Ansible Playbook

Tags

Action

Any Errors Fatal

Args

Async

Become

Become Exe

Become Flags

Become User

Changed When

Check Mode

Collections

Connection

Debugger

Delay

Delegate Facts

Delegate To

Diff

Failed When

Ignore Unreachable

Applies only to handlers. See [listen](https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_handlers.html)

Listen

Local Action

Loop

Loop Control

Module Defaults

Name

Notify

Poll

Port

Register

Remote User

Retries

Run Once

Tags

Throttle

Timeout

Until

Vars

When

With Dict

With Fileglob

With Filetree

With First Found

With Indexed Items

With Ini

With Inventory Hostnames

With Items

With Lines

With Random Choice

With Sequence

With Subelements

With Together

task

Ansible Tasks Schema

Confirm

Default

Encrypt

Name

Private

Prompt

Salt Size

Unsafe

Ansible Schemas Bundle 22.4

Provide a JSON object that satisfies the schema "Ansible Schemas Bundle 22.4". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.


[System]
You are a helpful assistant that answers strictly in JSON. Here's the JSON schema you must adhere to:
<schema>
{"$schema":"http://json-schema.org/draft-07/schema#","title":"K9s plugins schema","type":"object","additionalProperties":false,"properties":{"plugins":{"type":"object","additionalProperties":{"properties":{"shortCut":{"type":"string"},"override":{"type":"boolean"},"description":{"type":"string"},"confirm":{"type":"boolean"},"dangerous":{"type":"boolean"},"scopes":{"type":"array","items":{"type":"string"}},"command":{"type":"string"},"background":{"type":"boolean"},"overwriteOutput":{"type":"boolean"},"args":{"type":"array","items":{"type":["string","number"]}}},"required":["shortCut","description","scopes","command"]},"required":[]}},"required":["plugins"]}
</schema>

[User] Provide a JSON object that satisfies the schema "K9s plugins schema". Here are the required top‑level fields: plugins. Return only the valid JSON object.

K9s plugins schema

Provide a JSON object that satisfies the schema "K9s plugins schema". Here are the required top‑level fields: plugins. Return only the valid JSON object.


[System]
You are a helpful assistant that answers strictly in JSON. Here's the JSON schema you must adhere to:
<schema>
{"$schema":"http://json-schema.org/draft-04/schema#","definitions":{"app":{"type":"object","properties":{"script":{"type":"string","description":"Path of the script to launch"},"name":{"type":"string","description":"Process name in the process list. Defaults to script filename without the extension (app for app.js)"},"cwd":{"type":"string","description":"Current working directory to start the process with. Defaults to CWD of the current environment (from your shell)"},"args":{"description":"Arguments to pass to the script","oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"interpreter":{"type":"string","description":"Interpreter absolute path. Defaults to node"},"interpreter_args":{"description":"Options to pass to the interpreter","oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"error_file":{"type":"string","description":"File path for stderr (each line is appended to this file)","default":"~/.pm2/logs/<app_name>-error.err"},"out_file":{"type":"string","description":"File path for stdout (each line is appended to this file)","default":"~/.pm2/logs/<app_name>-out.log"},"combine_logs":{"type":"boolean","description":"If set to true, avoid to suffix logs file with the process id","default":"/dev/null"},"merge_logs":{"type":"boolean","description":"Alias to combine_logs"},"pid_file":{"type":"string","description":"File path where the pid of the started process is written by pm2. Defaults to ~/.pm2/pids/app_name-id.pid"},"disable_logs":{"type":"boolean","description":"Disable all logs storage"},"log_type":{"type":"string","description":"Define a specific log output type","enum":["json"]},"log_date_format":{"type":"string","description":"Format for log timestamps in moment.js format (eg YYYY-MM-DD HH:mm Z)"},"env":{"type":"object","description":"Specify environment variables to be injected","additionalProperties":{"type":"string"}},"env_":{"type":"object","description":"Specify environment variables to be injected (when passing --env)","additionalProperties":{"type":"string"}},"max_memory_restart":{"type":"number","description":"Restart the app if an amount of memory is exceeded (format: /0-9?/ K for KB, 'M' for MB, 'G' for GB, default to B)"},"restart_delay":{"type":"number","description":"Time in ms to wait before restarting a crashing app"},"source_map_support":{"type":"boolean","description":"Enable or disable the source map support","default":true},"disable_source_map_support":{"type":"boolean","description":"Enable or disable the source map support"},"wait_ready":{"type":"boolean","description":"Make the process wait for a process.send('ready')"},"instances":{"type":"number","description":"Number of instances to be started in cluster mode","default":1},"kill_timeout":{"type":"number","description":"Time in ms before sending the final SIGKILL signal after SIGINT","default":1600},"listen_timeout":{"type":"number","description":"Time in ms before forcing a reload if app is still not listening/has still not sent ready"},"cron_restart":{"type":"string","description":"A cron pattern to restart your app"},"vizion":{"type":"boolean","description":"Enable or disable the versioning metadatas (vizion library)","default":true},"autorestart":{"type":"boolean","description":"Enable or disable auto restart after process failure","default":true},"watch":{"type":"boolean","description":"Enable or disable the watch mode"},"ignore_watch":{"description":"List of paths to ignore (regex)","oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"watch_options":{"type":"object","description":"Object that will be used as an options with chokidar (refer to chokidar documentation)"},"min_uptime":{"type":"number","description":"Minimum uptime of the app to be considered started (format is /[0-9]+(h|m|s)?/, for hours, minutes, seconds, default to ms)","default":1000},"max_restarts":{"type":"number","description":"Number of times a script is restarted when it exits in less than min_uptime","default":16},"exec_mode":{"type":"string","description":"Set the execution mode","enum":["fork","cluster"],"default":"fork"},"force":{"type":"boolean","description":"Start a script even if it is already running (only the script path is considered)"},"append_env_to_name":{"type":"boolean","description":"Append the environment name to the app name"},"post_update":{"type":"array","description":"List of commands executed after a pull/upgrade operation performed from Keymetrics dashboard","items":{"type":"string"}},"shutdown_with_message":{"type":"boolean","description":"Shutdown an application with process.send('shutdown') instead of process.kill(pid, SIGINT)"},"trace":{"type":"boolean","description":"Enable or disable the transaction tracing"},"disable_trace":{"type":"boolean","description":"Enable or disable the transaction tracing","default":true},"increment_var":{"type":"string","description":"Specify the name of an environment variable to inject which increments for each cluster"},"instance_var":{"type":"string","description":"Rename the NODE_APP_INSTANCE environment variable. Defaults to NODE_APP_INSTANCE"},"filter_env":{"type":"array","items":{"type":"string"},"description":"Excludes global variables starting with \"REACT_\" and will not allow their penetration into the cluster"},"pmx":{"type":"boolean","description":"Enable or disable apm wrapping","default":true},"automation":{"type":"boolean","description":"Enable or disable apm wrapping","default":true},"treekill":{"type":"boolean","description":"Only kill the main process, not detached children","default":true},"port":{"type":"number","description":"Shortcut to inject a PORT environment variable"},"uid":{"type":"string","description":"Set user id. Defaults to current user uid"},"gid":{"type":"string","description":"Set group id. Defaults to current user gid"}},"patternProperties":{"^env_\\S+$":{"type":"object","description":"Specify environment variables to be injected when using --env","additionalProperties":{"type":"string"}}},"required":["script"]},"deploymentEnvironment":{"type":"object","properties":{"key":{"type":"string","description":"SSH key path. Defaults to $HOME/.ssh"},"user":{"type":"string","description":"SSH user"},"host":{"description":"SSH host","oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"ssh_options":{"description":"SSH options with no command-line flag, see 'man ssh'","oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"ref":{"type":"string","description":"GIT remote/branch"},"repo":{"type":"string","description":"GIT remote"},"path":{"type":"string","description":"path in the server"},"pre-setup":{"type":"string","description":"Pre-setup command or path to a script on your local machine"},"post-setup":{"type":"string","description":"Post-setup commands or path to a script on the host machine"},"pre-deploy-local":{"type":"string","description":"pre-deploy action"},"post-deploy":{"type":"string","description":"post-deploy action"}}}},"id":"https://json.schemastore.org/pm2-ecosystem.json","properties":{"apps":{"type":"array","description":"The apps property is an array of object where each object contains the configuration for each process.","items":{"$ref":"#/definitions/app"}},"deploy":{"type":"object","description":"The deploy property is an object where each of its properties is an object which defines a deployment environment.","properties":{"production":{"$ref":"#/definitions/deploymentEnvironment"},"staging":{"$ref":"#/definitions/deploymentEnvironment"},"development":{"$ref":"#/definitions/deploymentEnvironment"}}}},"title":"PM2 ecosystem config file","type":"object"}
</schema>

[User] Provide a JSON object that satisfies the schema "PM2 ecosystem config file". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.

Path of the script to launch

Process name in the process list. Defaults to script filename without the extension (app for app.js)

Current working directory to start the process with. Defaults to CWD of the current environment (from your shell)

Arguments to pass to the script

Interpreter absolute path. Defaults to node

Options to pass to the interpreter

File path for stderr (each line is appended to this file)

File path for stdout (each line is appended to this file)

If set to true, avoid to suffix logs file with the process id

Alias to combine_logs

File path where the pid of the started process is written by pm2. Defaults to ~/.pm2/pids/app_name-id.pid

Disable all logs storage

Define a specific log output type

Format for log timestamps in moment.js format (eg YYYY-MM-DD HH:mm Z)

Specify environment variables to be injected (when passing --env)

Restart the app if an amount of memory is exceeded (format: /0-9?/ K for KB, 'M' for MB, 'G' for GB, default to B)

Time in ms to wait before restarting a crashing app

Enable or disable the source map support

Make the process wait for a process.send('ready')

Number of instances to be started in cluster mode

Time in ms before sending the final SIGKILL signal after SIGINT

Time in ms before forcing a reload if app is still not listening/has still not sent ready

A cron pattern to restart your app

Enable or disable the versioning metadatas (vizion library)

Enable or disable auto restart after process failure

Enable or disable the watch mode

List of paths to ignore (regex)

Object that will be used as an options with chokidar (refer to chokidar documentation)

Minimum uptime of the app to be considered started (format is /[0-9]+(h|m|s)?/, for hours, minutes, seconds, default to ms)

Number of times a script is restarted when it exits in less than min_uptime

Set the execution mode

Start a script even if it is already running (only the script path is considered)

Append the environment name to the app name

List of commands executed after a pull/upgrade operation performed from Keymetrics dashboard

Shutdown an application with process.send('shutdown') instead of process.kill(pid, SIGINT)

Enable or disable the transaction tracing

Specify the name of an environment variable to inject which increments for each cluster

Rename the NODE_APP_INSTANCE environment variable. Defaults to NODE_APP_INSTANCE

Excludes global variables starting with "REACT_" and will not allow their penetration into the cluster

Enable or disable apm wrapping

Enable or disable apm wrapping

Only kill the main process, not detached children

Shortcut to inject a PORT environment variable

Set user id. Defaults to current user uid

Set group id. Defaults to current user gid

Specify environment variables to be injected when using --env

SSH key path. Defaults to $HOME/.ssh

SSH user

SSH host

SSH options with no command-line flag, see 'man ssh'

GIT remote/branch

GIT remote

path in the server

Pre-setup command or path to a script on your local machine

Post-setup commands or path to a script on the host machine

pre-deploy action

post-deploy action

The apps property is an array of object where each object contains the configuration for each process.

The deploy property is an object where each of its properties is an object which defines a deployment environment.

PM2 ecosystem config file

Provide a JSON object that satisfies the schema "PM2 ecosystem config file". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.


[System]
You are a helpful assistant that answers strictly in JSON. Here's the JSON schema you must adhere to:
<schema>
{"properties":{"version":{"enum":["1"],"type":"string"},"packageManagers":{"items":{"$ref":"#/definitions/PackageManagerUpdateConfig"},"type":"array","minItems":1,"markdownDescription":"List of updates to perform"},"actions":{"items":{"$ref":"#/definitions/ActionPluginDeclaration","oneOf":[{"type":"object","properties":{"name":{"const":"create-issue"},"config":{"$ref":"#/definitions/CreateIssueActionConfig"}}},{"type":"object","properties":{"name":{"const":"create-merge-request"},"config":{"$ref":"#/definitions/CreateMergeRequestActionConfig"}}},{"type":"object","properties":{"name":{"const":"auto-merge"},"config":{"$ref":"#/definitions/AutoMergeActionConfig"}}},{"type":"object","properties":{"name":{"const":"webhook"},"config":{"$ref":"#/definitions/WebhookActionConfig"}}},{"type":"object","properties":{"name":{"const":"slack"},"config":{"$ref":"#/definitions/SlackActionConfig"}}},{"type":"object","properties":{"name":{"const":"mattermost"},"config":{"$ref":"#/definitions/MattermostActionConfig"}}},{"type":"object","properties":{"name":{"const":"email"},"config":{"$ref":"#/definitions/EmailActionConfig"}}}]},"type":"array","default":[],"description":"Actions to execute after each package manager update","markdownDescription":"Actions to execute after each package manager update"}},"type":"object","required":["version","packageManagers"],"definitions":{"AutoMergeActionCommitMessageTemplateContext":{"properties":{"slug":{"description":"Update slug. For example, \"npm\", or, \"npm-0\" when there are multiple pmUpdates with packageManager npm.","markdownDescription":"Update slug. For example, \"npm\", or, \"npm-0\" when there are multiple pmUpdates with packageManager npm."}},"type":"object","required":["slug"]},"AutoMergeActionConfig":{"properties":{"squash":{"type":"boolean","default":true,"description":"Whether to squash commits of the update branch","markdownDescription":"Whether to squash commits of the update branch"},"commitMessage":{"type":"string","default":"chore: update {{slug}} dependencies","description":"Commit message\n\nThis [handlebars](https://handlebarsjs.com/guide/#what-is-handlebars) template is passed the following context:\n\n```\n{\n    \"slug\": \"npm-0\"\n}\n```\n","markdownDescription":"Commit message\n\nThis [handlebars](https://handlebarsjs.com/guide/#what-is-handlebars) template is passed the following context:\n\n```\n{\n    \"slug\": \"npm-0\"\n}\n```\n"},"removeUpdateBranch":{"type":"boolean","default":true,"description":"Whether to remove the update branch","markdownDescription":"Whether to remove the update branch"}},"type":"object"},"TitleTemplateContext":{"properties":{"slug":{"description":"Update slug. For example, \"npm\", or, \"npm-0\" when there are multiple pmUpdates with packageManager npm.","markdownDescription":"Update slug. For example, \"npm\", or, \"npm-0\" when there are multiple pmUpdates with packageManager npm."},"status":{"description":"Package manager update status","markdownDescription":"Package manager update status"},"statusEmoji":{"description":"A status emoji corresponding to the package manager update status","markdownDescription":"A status emoji corresponding to the package manager update status"}},"type":"object","required":["slug","status","statusEmoji"]},"CreateIssueActionConfig":{"properties":{"title":{"type":"string","default":"Automated update of {{slug}} dependencies {{statusEmoji}}","description":"Issue title\n\nThis [handlebars](https://handlebarsjs.com/guide/#what-is-handlebars) template is passed the following context:\n\n```\n{\n    \"slug\": \"myPm\",\n    \"status\": \"myStatus\",\n    \"statusEmoji\": \"\u2705\"\n}\n```\n","markdownDescription":"Issue title\n\nThis [handlebars](https://handlebarsjs.com/guide/#what-is-handlebars) template is passed the following context:\n\n```\n{\n    \"slug\": \"myPm\",\n    \"status\": \"myStatus\",\n    \"statusEmoji\": \"\u2705\"\n}\n```\n"},"additionalText":{"type":"string","description":"Additional text to embed in the issue description","markdownDescription":"Additional text to embed in the issue description"},"assignees":{"items":{"type":"string"},"type":"array","default":[],"description":"Usernames to assign to the issue created. Note that Gitlab CE only allows one assignee.","markdownDescription":"Usernames to assign to the issue created. Note that Gitlab CE only allows one assignee."},"closeOpen":{"type":"boolean","default":true,"description":"Close open issues that were created by Pmbot. This option prevents multiple issues open simultaneously when you don't have the time to look at them.","markdownDescription":"Close open issues that were created by Pmbot. This option prevents multiple issues open simultaneously when you don't have the time to look at them."},"token":{"minLength":1,"type":"string","description":"An authentication token. For Gitlab, this should be a [personal access token](https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html). For Github, it should be a [Github personal access token](https://help.github.com/en/github/authenticating-to-github/creating-a-personal-access-token-for-the-command-line).","markdownDescription":"An authentication token. For Gitlab, this should be a [personal access token](https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html). For Github, it should be a [Github personal access token](https://help.github.com/en/github/authenticating-to-github/creating-a-personal-access-token-for-the-command-line)."}},"type":"object","required":["token"]},"CreateMergeRequestActionConfig":{"properties":{"title":{"type":"string","default":"Automated update of {{slug}} dependencies {{statusEmoji}}","description":"Merge request title\n\nThis [handlebars](https://handlebarsjs.com/guide/#what-is-handlebars) template is passed the following context:\n\n```\n{\n    \"slug\": \"myPm\",\n    \"status\": \"myStatus\",\n    \"statusEmoji\": \"\u2705\"\n}\n```\n","markdownDescription":"Merge request title\n\nThis [handlebars](https://handlebarsjs.com/guide/#what-is-handlebars) template is passed the following context:\n\n```\n{\n    \"slug\": \"myPm\",\n    \"status\": \"myStatus\",\n    \"statusEmoji\": \"\u2705\"\n}\n```\n"},"additionalText":{"type":"string","description":"Additional text to embed in the merge request description","markdownDescription":"Additional text to embed in the merge request description"},"assignees":{"items":{"type":"string"},"type":"array","default":[],"description":"Usernames to assign to the issue created. Note that Gitlab CE only allows one assignee.","markdownDescription":"Usernames to assign to the issue created. Note that Gitlab CE only allows one assignee."},"closeOpen":{"type":"boolean","default":true,"description":"Close open merge requests that were created by Pmbot. This option prevents multiple merge requests open simultaneously when you don't have the time to merge them.","markdownDescription":"Close open merge requests that were created by Pmbot. This option prevents multiple merge requests open simultaneously when you don't have the time to merge them."},"squash":{"type":"boolean","default":true,"description":"[GITLAB only] Whether commits of the merge request source branch should be squashed","markdownDescription":"[GITLAB only] Whether commits of the merge request source branch should be squashed"},"deleteSourceBranch":{"type":"boolean","default":true,"description":"[GITLAB only] Whether the merge request source branch should be deleted","markdownDescription":"[GITLAB only] Whether the merge request source branch should be deleted"},"maintainerCanModify":{"type":"boolean","default":true,"description":"[GITHUB only] Whether maintainers can modify the created pull request","markdownDescription":"[GITHUB only] Whether maintainers can modify the created pull request"},"token":{"minLength":1,"type":"string","description":"An authentication token. For Gitlab, this should be a [personal access token](https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html). For Github, it should be a [Github personal access token](https://help.github.com/en/github/authenticating-to-github/creating-a-personal-access-token-for-the-command-line).","markdownDescription":"An authentication token. For Gitlab, this should be a [personal access token](https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html). For Github, it should be a [Github personal access token](https://help.github.com/en/github/authenticating-to-github/creating-a-personal-access-token-for-the-command-line)."}},"type":"object","required":["token"]},"MessageConfig":{"properties":{"from":{"minLength":1,"type":"string","description":"Sender's email. Be aware that some providers (e.g. OBVH) will silently ignore sending the email when the sender address does not match the username.","markdownDescription":"Sender's email. Be aware that some providers (e.g. OBVH) will silently ignore sending the email when the sender address does not match the username."},"to":{"type":"string","minLength":1,"description":"Recipient address(es)","markdownDescription":"Recipient address(es)"},"subject":{"type":"string","default":"Automated update of {{slug}} dependencies {{statusEmoji}}","description":"Email subject\n\nThis [handlebars](https://handlebarsjs.com/guide/#what-is-handlebars) template is passed the following context:\n\n```\n{\n    \"slug\": \"myPm\",\n    \"status\": \"myStatus\",\n    \"statusEmoji\": \"\u2705\"\n}\n```\n","markdownDescription":"Email subject\n\nThis [handlebars](https://handlebarsjs.com/guide/#what-is-handlebars) template is passed the following context:\n\n```\n{\n    \"slug\": \"myPm\",\n    \"status\": \"myStatus\",\n    \"statusEmoji\": \"\u2705\"\n}\n```\n"}},"type":"object","required":["from","to"]},"EmailActionConfig":{"properties":{"transportOptions":{"description":"Nodemailer [transport options](https://nodemailer.com/smtp/#general-options)","markdownDescription":"Nodemailer [transport options](https://nodemailer.com/smtp/#general-options)"},"messageConfig":{"$ref":"#/definitions/MessageConfig","description":"Nodemailer [message configuration](https://nodemailer.com/message/). Allows you to override message configuration properties, except `html` and `text`.","markdownDescription":"Nodemailer [message configuration](https://nodemailer.com/message/). Allows you to override message configuration properties, except `html` and `text`."},"additionalText":{"type":"string","description":"Additional text to embed in the email body","markdownDescription":"Additional text to embed in the email body"}},"type":"object","required":["transportOptions","messageConfig"]},"MattermostActionConfig":{"properties":{"url":{"minLength":1,"type":"string","description":"Mattermost [incoming webhook URL](https://docs.mattermost.com/developer/webhooks-incoming.html#simple-incoming-webhook)","markdownDescription":"Mattermost [incoming webhook URL](https://docs.mattermost.com/developer/webhooks-incoming.html#simple-incoming-webhook)"},"channels":{"items":{"type":"string"},"type":"array","description":"Channels where to send the message. Obsolete parameter when you have enabled **Lock to this channel** for the incoming webhook.","markdownDescription":"Channels where to send the message. Obsolete parameter when you have enabled **Lock to this channel** for the incoming webhook."},"title":{"type":"string","default":"Automated update of {{slug}} dependencies {{statusEmoji}}","description":"Message title\n\nThis [handlebars](https://handlebarsjs.com/guide/#what-is-handlebars) template is passed the following context:\n\n```\n{\n    \"slug\": \"myPm\",\n    \"status\": \"myStatus\",\n    \"statusEmoji\": \"\u2705\"\n}\n```\n","markdownDescription":"Message title\n\nThis [handlebars](https://handlebarsjs.com/guide/#what-is-handlebars) template is passed the following context:\n\n```\n{\n    \"slug\": \"myPm\",\n    \"status\": \"myStatus\",\n    \"statusEmoji\": \"\u2705\"\n}\n```\n"},"additionalText":{"type":"string","description":"Additional text to embed in the message body","markdownDescription":"Additional text to embed in the message body"}},"type":"object","required":["url"]},"SlackActionConfig":{"properties":{"url":{"minLength":1,"type":"string","description":"Slack webhook URL.\n\nTo get this URL:\n1. [Create](https://api.slack.com/apps?new_app=1) a custom Slack App. Fill in the form as follows:\n    - *App Name*: `Pmbot`\n    - *Development Slack Workspace*: Workspace where you want Pmbot to be integrated to\n2. Click \"Create App\". You are redirected to your app's page.\n3. Under menu section *Features*, select *Incoming Webhooks*, then toggle on *Activate Incoming Webhooks*. A new section named *Webhook URLs for Your Workspace* appears.\n4. Under section *Webhook URLs for Your Workspace*, click *Add New Webhook To Workspace*, then select the channel to which you want messages to be sent, for example `#pmbot`.\n5. Once added, copy the webhook URL and configure this action with it\n  ","markdownDescription":"Slack webhook URL.\n\nTo get this URL:\n1. [Create](https://api.slack.com/apps?new_app=1) a custom Slack App. Fill in the form as follows:\n    - *App Name*: `Pmbot`\n    - *Development Slack Workspace*: Workspace where you want Pmbot to be integrated to\n2. Click \"Create App\". You are redirected to your app's page.\n3. Under menu section *Features*, select *Incoming Webhooks*, then toggle on *Activate Incoming Webhooks*. A new section named *Webhook URLs for Your Workspace* appears.\n4. Under section *Webhook URLs for Your Workspace*, click *Add New Webhook To Workspace*, then select the channel to which you want messages to be sent, for example `#pmbot`.\n5. Once added, copy the webhook URL and configure this action with it\n  "},"title":{"type":"string","default":"Automated update of {{slug}} dependencies {{statusEmoji}}","description":"Slack message title\n\nThis [handlebars](https://handlebarsjs.com/guide/#what-is-handlebars) template is passed the following context:\n\n```\n{\n    \"slug\": \"myPm\",\n    \"status\": \"myStatus\",\n    \"statusEmoji\": \"\u2705\"\n}\n```\n","markdownDescription":"Slack message title\n\nThis [handlebars](https://handlebarsjs.com/guide/#what-is-handlebars) template is passed the following context:\n\n```\n{\n    \"slug\": \"myPm\",\n    \"status\": \"myStatus\",\n    \"statusEmoji\": \"\u2705\"\n}\n```\n"},"additionalText":{"type":"string","description":"Additional text to embed in the slack message body","markdownDescription":"Additional text to embed in the slack message body"}},"type":"object","required":["url"]},"WebhookHeader":{"properties":{"name":{"minLength":1,"type":"string","description":"Header name","markdownDescription":"Header name"},"value":{"minLength":1,"type":"string","description":"Header value","markdownDescription":"Header value"}},"type":"object","required":["name","value"]},"WebhookActionConfig":{"properties":{"url":{"minLength":1,"type":"string","description":"Url to call","markdownDescription":"Url to call"},"extraData":{"description":"Data that will be appended to the webhook payload in property \"extraData\"","markdownDescription":"Data that will be appended to the webhook payload in property \"extraData\""},"headers":{"items":{"$ref":"#/definitions/WebhookHeader"},"type":"array","description":"Additional headers to append to the HTTP request","markdownDescription":"Additional headers to append to the HTTP request"}},"type":"object","required":["url"]},"BumpRule":{"properties":{"pattern":{"type":"string","description":"A Javascript regular expression.","markdownDescription":"A Javascript regular expression."},"bump":{"enum":["major","minor","patch"],"type":"string"}},"type":"object","required":["pattern","bump"]},"GenericBumpConfig":{"properties":{"defaultBumpRule":{"enum":["major","minor","patch"],"type":"string","description":"Default rule for bumping dependencies. Used unless a specific rule is configured.","markdownDescription":"Default rule for bumping dependencies. Used unless a specific rule is configured."},"bumpRules":{"items":{"$ref":"#/definitions/BumpRule"},"type":"array","default":[],"description":"Bump rules for specific dependencies. The first rule to match is used. When no custom rule is found here, we fallback the default rule.","markdownDescription":"Bump rules for specific dependencies. The first rule to match is used. When no custom rule is found here, we fallback the default rule."}},"type":"object"},"GoPmaConfig":{"properties":{"bumpConfig":{"description":"Bump configuration. Patterns are matched against package names.","markdownDescription":"Bump configuration. Patterns are matched against package names."}},"type":"object"},"MavenPmaConfig":{"properties":{"bumpConfig":{"description":"Bump configuration. Patterns are matched against dependency names formed as \"<groupId>:<artifactId>\" (e.g. \"javax.xml.bind:jaxb-api\").","markdownDescription":"Bump configuration. Patterns are matched against dependency names formed as \"<groupId>:<artifactId>\" (e.g. \"javax.xml.bind:jaxb-api\")."},"settingsPath":{"description":"Path to a maven `settings.xml` file which contains credentials for private repositories.","markdownDescription":"Path to a maven `settings.xml` file which contains credentials for private repositories."}},"type":"object"},"PmbotPluginDeclaration":{"properties":{"name":{"type":"string","minLength":1},"config":{}},"type":"object","required":["name"]},"ActionPluginDeclaration":{"properties":{"on":{"items":{"enum":["running","pending","interrupted","success","partial","failure","unknown"],"type":"string"},"type":"array","default":[],"description":"When to trigger this action","markdownDescription":"When to trigger this action"},"name":{"type":"string","minLength":1},"config":{}},"type":"object","required":["name"]},"CiConfig":{"properties":{"enabled":{"type":"boolean","default":true,"description":"When false, all updates are made at once and we do not wait for CI feedback.","markdownDescription":"When false, all updates are made at once and we do not wait for CI feedback."}},"type":"object"},"DependencyUpdateCommitMessageTemplateContext":{"properties":{"dependency":{"type":"string","description":"Name of the dependency","markdownDescription":"Name of the dependency"},"versionBefore":{"type":"string","description":"Version of the dependency before it was updated","markdownDescription":"Version of the dependency before it was updated"},"versionAfter":{"type":"string","description":"Version of the dependency after it was updated","markdownDescription":"Version of the dependency after it was updated"}},"type":"object","required":["dependency","versionBefore","versionAfter"]},"PackageManagerUpdateConfig":{"properties":{"packageManager":{"$ref":"#/definitions/PmbotPluginDeclaration","oneOf":[{"type":"object","properties":{"name":{"const":"npm"},"config":{"type":"object"}}},{"type":"object","properties":{"name":{"const":"maven"},"config":{"$ref":"#/definitions/MavenPmaConfig"}}},{"type":"object","properties":{"name":{"const":"go"},"config":{"$ref":"#/definitions/GoPmaConfig"}}},{"type":"object","properties":{"name":{"const":"composer"},"config":"object"}},{"type":"object","properties":{"name":{"const":"ruby"},"config":"object"}}],"description":"Package manager to use for this update","markdownDescription":"Package manager to use for this update"},"ci":{"$ref":"#/definitions/CiConfig","description":"CI configuration for this update","markdownDescription":"CI configuration for this update"},"branchPrefix":{"type":"string","default":"update/","description":"Prefix of the update branch","markdownDescription":"Prefix of the update branch"},"commitMessage":{"type":"string","default":"chore: update {{dependency}} from {{versionBefore}} to {{versionAfter}}","maxLength":128,"description":"Commit message template\n\nThis [handlebars](https://handlebarsjs.com/guide/#what-is-handlebars) template is passed the following context:\n\n```\n{\n    \"dependency\": \"chalk\",\n    \"versionBefore\": \"1.0.0\",\n    \"versionAfter\": \"1.0.1\"\n}\n```\n","markdownDescription":"Commit message template\n\nThis [handlebars](https://handlebarsjs.com/guide/#what-is-handlebars) template is passed the following context:\n\n```\n{\n    \"dependency\": \"chalk\",\n    \"versionBefore\": \"1.0.0\",\n    \"versionAfter\": \"1.0.1\"\n}\n```\n"},"ignore":{"items":{"type":"string"},"type":"array","default":[],"description":"List of dependencies to ignore. Each item should be a Javascript regular expression.","markdownDescription":"List of dependencies to ignore. Each item should be a Javascript regular expression."},"actions":{"items":{"$ref":"#/definitions/ActionPluginDeclaration","oneOf":[{"type":"object","properties":{"name":{"const":"create-issue"},"config":{"$ref":"#/definitions/CreateIssueActionConfig"}}},{"type":"object","properties":{"name":{"const":"create-merge-request"},"config":{"$ref":"#/definitions/CreateMergeRequestActionConfig"}}},{"type":"object","properties":{"name":{"const":"auto-merge"},"config":{"$ref":"#/definitions/AutoMergeActionConfig"}}},{"type":"object","properties":{"name":{"const":"webhook"},"config":{"$ref":"#/definitions/WebhookActionConfig"}}},{"type":"object","properties":{"name":{"const":"slack"},"config":{"$ref":"#/definitions/SlackActionConfig"}}},{"type":"object","properties":{"name":{"const":"mattermost"},"config":{"$ref":"#/definitions/MattermostActionConfig"}}},{"type":"object","properties":{"name":{"const":"email"},"config":{"$ref":"#/definitions/EmailActionConfig"}}}]},"type":"array","default":[],"description":"Actions to execute after the update","markdownDescription":"Actions to execute after the update"},"keepUpdateBranchOnFailure":{"type":"boolean","description":"When `true`, the update branch will **not** be deleted when the package manager update status is `failure`.","markdownDescription":"When `true`, the update branch will **not** be deleted when the package manager update status is `failure`."}},"type":"object","required":["packageManager"]}}}
</schema>

[User] Provide a JSON object that satisfies the schema "pmbot.yml.schema". Here are the required top‑level fields: version, packageManagers. Return only the valid JSON object.

Actions to execute after each package manager update

Actions to execute after each package manager update

Update slug. For example, "npm", or, "npm-0" when there are multiple pmUpdates with packageManager npm.

Whether to squash commits of the update branch

Whether to squash commits of the update branch

Commit message

This [handlebars](https://handlebarsjs.com/guide/#what-is-handlebars) template is passed the following context:

```
{
    "slug": "npm-0"
}
```

Whether to remove the update branch

Package manager update status

A status emoji corresponding to the package manager update status

Automated update of {{slug}} dependencies {{statusEmoji}}

Issue title

This [handlebars](https://handlebarsjs.com/guide/#what-is-handlebars) template is passed the following context:

```
{
    "slug": "myPm",
    "status": "myStatus",
    "statusEmoji": "✅"
}
```

Additional text to embed in the issue description

Additional text to embed in the issue description

Usernames to assign to the issue created. Note that Gitlab CE only allows one assignee.

Close open issues that were created by Pmbot. This option prevents multiple issues open simultaneously when you don't have the time to look at them.

An authentication token. For Gitlab, this should be a [personal access token](https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html). For Github, it should be a [Github personal access token](https://help.github.com/en/github/authenticating-to-github/creating-a-personal-access-token-for-the-command-line).

Merge request title

This [handlebars](https://handlebarsjs.com/guide/#what-is-handlebars) template is passed the following context:

```
{
    "slug": "myPm",
    "status": "myStatus",
    "statusEmoji": "✅"
}
```

Additional text to embed in the merge request description

Additional text to embed in the merge request description

Close open merge requests that were created by Pmbot. This option prevents multiple merge requests open simultaneously when you don't have the time to merge them.

[GITLAB only] Whether commits of the merge request source branch should be squashed

[GITLAB only] Whether the merge request source branch should be deleted

[GITHUB only] Whether maintainers can modify the created pull request

Sender's email. Be aware that some providers (e.g. OBVH) will silently ignore sending the email when the sender address does not match the username.

Recipient address(es)

Email subject

This [handlebars](https://handlebarsjs.com/guide/#what-is-handlebars) template is passed the following context:

```
{
    "slug": "myPm",
    "status": "myStatus",
    "statusEmoji": "✅"
}
```

Nodemailer [transport options](https://nodemailer.com/smtp/#general-options)

Nodemailer [message configuration](https://nodemailer.com/message/). Allows you to override message configuration properties, except `html` and `text`.

Additional text to embed in the email body

Additional text to embed in the email body

Mattermost [incoming webhook URL](https://docs.mattermost.com/developer/webhooks-incoming.html#simple-incoming-webhook)

Channels where to send the message. Obsolete parameter when you have enabled **Lock to this channel** for the incoming webhook.

Message title

This [handlebars](https://handlebarsjs.com/guide/#what-is-handlebars) template is passed the following context:

```
{
    "slug": "myPm",
    "status": "myStatus",
    "statusEmoji": "✅"
}
```

Additional text to embed in the message body

Additional text to embed in the message body

Slack webhook URL.

To get this URL:
1. [Create](https://api.slack.com/apps?new_app=1) a custom Slack App. Fill in the form as follows:
    - *App Name*: `Pmbot`
    - *Development Slack Workspace*: Workspace where you want Pmbot to be integrated to
2. Click "Create App". You are redirected to your app's page.
3. Under menu section *Features*, select *Incoming Webhooks*, then toggle on *Activate Incoming Webhooks*. A new section named *Webhook URLs for Your Workspace* appears.
4. Under section *Webhook URLs for Your Workspace*, click *Add New Webhook To Workspace*, then select the channel to which you want messages to be sent, for example `#pmbot`.
5. Once added, copy the webhook URL and configure this action with it

Slack message title

This [handlebars](https://handlebarsjs.com/guide/#what-is-handlebars) template is passed the following context:

```
{
    "slug": "myPm",
    "status": "myStatus",
    "statusEmoji": "✅"
}
```

Additional text to embed in the slack message body

Additional text to embed in the slack message body

Header name

Header value

Url to call

Data that will be appended to the webhook payload in property "extraData"

Additional headers to append to the HTTP request

Additional headers to append to the HTTP request

A Javascript regular expression.

Default rule for bumping dependencies. Used unless a specific rule is configured.

Bump rules for specific dependencies. The first rule to match is used. When no custom rule is found here, we fallback the default rule.

Bump configuration. Patterns are matched against package names.

Bump configuration. Patterns are matched against dependency names formed as "<groupId>:<artifactId>" (e.g. "javax.xml.bind:jaxb-api").

Path to a maven `settings.xml` file which contains credentials for private repositories.

running pending interrupted success partial failure unknown

When to trigger this action

When false, all updates are made at once and we do not wait for CI feedback.

Name of the dependency

Version of the dependency before it was updated

Version of the dependency before it was updated

Version of the dependency after it was updated

Version of the dependency after it was updated

Package manager to use for this update

CI configuration for this update

Prefix of the update branch

chore: update {{dependency}} from {{versionBefore}} to {{versionAfter}}

Commit message template

This [handlebars](https://handlebarsjs.com/guide/#what-is-handlebars) template is passed the following context:

```
{
    "dependency": "chalk",
    "versionBefore": "1.0.0",
    "versionAfter": "1.0.1"
}
```

List of dependencies to ignore. Each item should be a Javascript regular expression.

Actions to execute after the update

When `true`, the update branch will **not** be deleted when the package manager update status is `failure`.

Provide a JSON object that satisfies the schema "pmbot.yml.schema". Here are the required top‑level fields: version, packageManagers. Return only the valid JSON object.