diff --git a/clients/java/src/test/java/com/phrase/client/api/LocalesApiTest.java b/clients/java/src/test/java/com/phrase/client/api/LocalesApiTest.java index ee5415418..29130c196 100644 --- a/clients/java/src/test/java/com/phrase/client/api/LocalesApiTest.java +++ b/clients/java/src/test/java/com/phrase/client/api/LocalesApiTest.java @@ -171,12 +171,13 @@ public void localeDownloadTest() throws ApiException, IOException, InterruptedEx Object customMetadataFilters = null; String translationKeyPrefix = null; Boolean filterByPrefix = null; + List localeIds = null; File response = api.localeDownload(projectId, id, xPhraseAppOTP, ifModifiedSince, ifNoneMatch, branch, fileFormat, tags, tag, includeEmptyTranslations, excludeEmptyZeroForms, includeTranslatedKeys, keepNotranslateTags, convertEmoji, formatOptions, encoding, skipUnverifiedTranslations, includeUnverifiedTranslations, useLastReviewedVersion, fallbackLocaleId, sourceLocaleId, translationKeyPrefix, filterByPrefix, - customMetadataFilters); + customMetadataFilters, localeIds); String fileContents = new String(java.nio.file.Files.readAllBytes(response.toPath())); Assert.assertEquals("Correct file contents", fileContents, body); diff --git a/doc/compiled.json b/doc/compiled.json index 0cb78d3e7..8ed1af5e5 100644 --- a/doc/compiled.json +++ b/doc/compiled.json @@ -8582,6 +8582,21 @@ }, "style": "deepObject", "explode": true + }, + { + "name": "locale_ids", + "description": "Locale IDs or locale names", + "in": "query", + "schema": { + "type": "array", + "items": { + "type": "string" + } + }, + "example": [ + "de", + "en" + ] } ], "responses": { diff --git a/openapi-generator/templates/cli/api.handlebars b/openapi-generator/templates/cli/api.handlebars index 49b3551d7..5d955721e 100644 --- a/openapi-generator/templates/cli/api.handlebars +++ b/openapi-generator/templates/cli/api.handlebars @@ -97,11 +97,16 @@ func init{{{nickname}}}() { {{/isModel~}} {{^isPrimitiveType}}{{^isModel}} if params.IsSet(helpers.ToSnakeCase("{{paramName}}")) { - var {{paramName}} map[string]interface{} - if err := json.Unmarshal([]byte(params.GetString(helpers.ToSnakeCase("{{{vendorExtensions.x-export-param-name}}}"))), &{{paramName}}); err != nil { + {{#if (eq dataType "[]string")}} + var {{paramName}} []string + {{else}} + var {{paramName}} map[string]interface{} + {{/if}} + + if err := json.Unmarshal([]byte(params.GetString(helpers.ToSnakeCase("{{{paramName}}}"))), &{{paramName}}); err != nil { HandleError(err) } - localVarOptionals.{{{vendorExtensions.x-export-param-name}}} = optional.NewInterface({{paramName}}) + localVarOptionals.{{{vendorExtensions.x-export-param-name}}} = {{#if (eq dataType "[]string")}}{{paramName}}{{else}}optional.NewInterface({{paramName}}){{/if}} } {{/isModel}}{{/isPrimitiveType}} {{/if}} diff --git a/openapi-generator/templates/go/api.mustache b/openapi-generator/templates/go/api.mustache index b050db124..993a31910 100644 --- a/openapi-generator/templates/go/api.mustache +++ b/openapi-generator/templates/go/api.mustache @@ -36,7 +36,12 @@ type {{#structPrefix}}{{&classname}}{{/structPrefix}}{{{nickname}}}Opts struct { {{/isBinary}} {{/isPrimitiveType}} {{^isPrimitiveType}} - {{vendorExtensions.x-export-param-name}} optional.Interface `json:"{{baseName}}{{^required}},omitempty{{/required}}"{{#withXml}} xml:"{{baseName}}{{#isXmlAttribute}},attr{{/isXmlAttribute}}"{{/withXml}}{{#vendorExtensions.x-go-custom-tag}} {{{.}}}{{/vendorExtensions.x-go-custom-tag}}` + {{#isArray}} + {{vendorExtensions.x-export-param-name}} []string `json:"{{baseName}}{{^required}},omitempty{{/required}}"{{#withXml}} xml:"{{baseName}}{{#isXmlAttribute}},attr{{/isXmlAttribute}}"{{/withXml}}{{#vendorExtensions.x-go-custom-tag}} {{{.}}}{{/vendorExtensions.x-go-custom-tag}}` + {{/isArray}} + {{^isArray}} + {{vendorExtensions.x-export-param-name}} optional.Interface `json:"{{baseName}}{{^required}},omitempty{{/required}}"{{#withXml}} xml:"{{baseName}}{{#isXmlAttribute}},attr{{/isXmlAttribute}}"{{/withXml}}{{#vendorExtensions.x-go-custom-tag}} {{{.}}}{{/vendorExtensions.x-go-custom-tag}}` + {{/isArray}} {{/isPrimitiveType}} {{/required}} {{/allParams}} @@ -154,8 +159,15 @@ func (a *{{{classname}}}Service) {{{nickname}}}(ctx _context.Context{{#hasParams {{/isCollectionFormatMulti}} {{/required}} {{^required}} - if localVarOptionals != nil && localVarOptionals.{{vendorExtensions.x-export-param-name}}.IsSet() { + if localVarOptionals != nil && localVarOptionals.{{vendorExtensions.x-export-param-name}}{{^isArray}}.IsSet(){{/isArray}}{{#isArray}} != nil{{/isArray}} { {{#isCollectionFormatMulti}} + {{#isArray}} + t := localVarOptionals.{{vendorExtensions.x-export-param-name}} + for i := range t { + localVarQueryParams.Add("{{baseName}}[]", parameterToString(t[i], "multi")) + } + {{/isArray}} + {{^isArray}} t:=localVarOptionals.{{vendorExtensions.x-export-param-name}}.Value() if reflect.TypeOf(t).Kind() == reflect.Slice { s := reflect.ValueOf(t) @@ -165,6 +177,7 @@ func (a *{{{classname}}}Service) {{{nickname}}}(ctx _context.Context{{#hasParams } else { localVarQueryParams.Add("{{baseName}}", parameterToString(t, "{{#collectionFormat}}{{collectionFormat}}{{/collectionFormat}}")) } + {{/isArray}} {{/isCollectionFormatMulti}} {{^isCollectionFormatMulti}} {{#isPrimitiveType}}localVarQueryParams.Add("{{baseName}}", parameterToString(localVarOptionals.{{vendorExtensions.x-export-param-name}}.Value(), "{{#collectionFormat}}{{collectionFormat}}{{/collectionFormat}}")){{/isPrimitiveType}}{{^isPrimitiveType}}for key, value := range localVarOptionals.{{vendorExtensions.x-export-param-name}}.Value().(map[string]interface{}) { diff --git a/paths/locales/download.yaml b/paths/locales/download.yaml index 406b55be8..884499590 100644 --- a/paths/locales/download.yaml +++ b/paths/locales/download.yaml @@ -133,6 +133,16 @@ parameters: properties: {} style: deepObject explode: true + - name: locale_ids + description: Locale IDs or locale names + in: query + schema: + type: array + items: + type: string + example: + - de + - en responses: "200": description: OK