package {{{apiParamsPackage}}};

{{>generatedAnnotation}}
{{#if @root.useLombok}}
@lombok.Getter
@lombok.Setter
{{/if}}
{{#join '_implements' ', '}}
{{>frag/customImplements class=(concat apiParamsPackage '.' (className uniqueName) 'Params')}}
{{/join}}
public class {{className uniqueName}}Params{{#if _implements}} implements {{{_implements}}}{{/if}} {

{{#each parameters}}
	{{>frag/propertyDocumentation}}
	{{>frag/pojoPropertyAnnotations}}
	private {{{nativeType}}} {{{identifier name}}};

{{/each}}
	/**
	 * Create a new params object.
	 */
	public {{{className uniqueName}}}Params() {

	}

{{#if pathParams}}
	/**
	 * Create a new params object with its path parameters.
	 */
	public {{{className uniqueName}}}Params({{#each pathParams}}{{{nativeType}}} {{{identifier name}}}{{#hasMore}}, {{/hasMore}}{{/each}}) {
{{#each pathParams}}
		this.{{{identifier name}}} = {{{identifier name}}};
{{/each}}
	}

{{/if}}
{{#set '__chainClassName'}}
{{{className uniqueName}}}Params
{{/set}}
{{#each parameters}}
	{{>frag/pojoProperty chainClassName=../__chainClassName}}
{{/each}}
}
