openapi: 3.2.0 info: title: Apiaddicts Soap UI API version: 1.0.0 description: 'Operations tagged SoapUI across 2 of this provider''s published API definitions: openapi2soapui-api.yaml, apiaddicts-openapi2soapui-openapi.yml. Each path carries the servers of the definition it was published in.' servers: - url: /api-openapi-to-soapui/v1 tags: - name: SoapUI description: Swagger to SoapUI conversion paths: /soap-ui-projects: post: tags: - SoapUI summary: SoapUI project creation from an OpenAPI Specification description: The base-64 encoded OpenAPI Spec received as part of the request body is decoded. requestBody: description: 'Information necessary for the generation of the SoapUI Project. Properties - apiName: Name of the API - oAuth2Profiles: List with the configurations of the oAuth 2.0 authentication profiles - openApiSpec: Base-64 encoded OpenAPI Spec - testCaseNames: List of names; for each one, an extra {METHOD}_Case{name} test case identical to CaseOkAllProperties is generated - headers: List of custom headers - customAuthorizationsFile: List of custom authorization requests, prepended as a dedicated "authorizations" Test Suite before the per-endpoint Test Suites - readOnly: Boolean flag to generate only read operations (GET/OPTIONS) - minimalEndpoints: Boolean flag. When false (default), generates one CaseErrorRequired{Field} test case per required body property and required query parameter; when true, collapses this to at most one - microcksHeaders: Boolean flag; when true, adds an X-Microcks-Response-Name header to each request, in addition to any custom headers. If a custom header named X-Microcks-Response-Name is supplied, its value is preserved in every test case (both Ok* and Error*) and never overwritten - generateOneOfAnyOf: Boolean flag; when true, resolves oneOf/anyOf schemas to their first candidate when generating example bodies; when false (the default), a oneOf/anyOf property is rendered as a single empty value instead of being expanded. allOf is always merged regardless of this flag - validateSchema: Boolean flag; when true (default), adds a response-schema assertion to every test case in addition to its status-code assertion; when false, only the status-code assertion is added - schemaIsInline: Boolean flag. When false (default), the response JSON Schema is generated as a SoapUI Project Property referenced via a `context.expand(''${#Project#...}'')` call instead of a literal value; when true, the schema is embedded directly in the assertion script - schemaPrettyPrint: Boolean flag. When true (default), the response JSON Schema is pretty-printed (indented); when false, it is serialized compactly with no extra whitespace - isInline: Boolean flag; when false (default), JSON request-body example values are generated as SoapUI Project Properties referenced via `${#Project#...}` tokens instead of literal values; when true, literal values are embedded directly in the body - hasScopes: Boolean flag; when true, generates one additional test case per configured oAuth2Profiles entry beyond the first, each using that profile''s own authentication - applicationToken: Boolean flag; only relevant when hasScopes is true. When also true, generates one additional test case per configured oAuth2Profiles entry whose grantType is CLIENT_CREDENTIALS (including the first), separate from the hasScopes test cases - numberOfScopes: Integer; only relevant when hasScopes is true. Total number of test cases wired to a profile-based scope credential, counting the default request, using the first N configured oAuth2Profiles entries in configured order. Values below 1 (unset/0/negative) are treated as 1 (no extra test case) ' content: aplication/json: schema: $ref: '#/components/schemas/ProyectSoapUI' required: true responses: 201: description: Created content: application/xml: schema: type: object properties: soapui-project: type: object example: "\n\n \n \n Optional multiline or single-line description in [CommonMark](http://commonmark.org/help/) or HTML.\n \n \n \n http://api.example.com\n http://staging-api.example.com\n \n \n \n \n \n \n dev\n Ty3vo6cGkJu6DoK1GZUSNcgOj5rQ\n HEADER\n AUTOMATIC\n UNKNOWN\n ENTERED_MANUALLY\n \n \n dev\n a2354akdjfasdkfj\n a2354akdjfasdkfj\n http://api.cloudappi.net/auth\n http://api.cloudappi.net/token\n http://api.cloudappi.net/callback\n HEADER\n AUTOMATIC\n openid, secret\n \n \n \n\n" 400: description: 'Bad Request List of error codes - 1000: Malformed JSON request. - 1001: The apiName attribute is required. - 1002: The openApiSpec attribute is required. - 1100: The value of openApiSpec is not recognized. - 1101: The openApiSpec format is not valid. - 1102: The version property was not found in the OpenAPI Spec. - 1003: oAuth2Profiles field must be an array. - 1004: oAuth2Profiles field items must be objects. - 1201: For the oAuth2Profiles items, the profileName attribute is mandatory. - 1202: For the oAuth2Profiles items, the grantType attribute cannot be null. - 1203: For the oAuth2Profiles items, the grantType attribute cannot be blank. - 1204: For the oAuth2Profiles items, the grantType {valueOfGrantType} is invalid. - 1205: For the oAuth2Profiles items, the accessTokenPosition attribute cannot be null. - 1206: For the oAuth2Profiles items, the accessTokenPosition attribute cannot be blank. - 1207: For the oAuth2Profiles items, the accessTokenPosition {valueOfAccessTokenPosition} is invalid. - 1208: For the oAuth2Profiles items if {someAttribute} equal {someAttributeValue} the {mandatoryAttribute} attribute is mandatory. - 1005: headers field must be an array. - 1006: headers field items must be objects. - 1301: For the headers items, the key attribute is mandatory. - 1302: For the header items, the value attribute is mandatory. - 1007: testCaseNames field must be an array. - 1008: testCaseNames field items must be strings. - 1401: The testCaseNames items cannot be empty. - 1009: customAuthorizationsFile field must be an array. - 1010: customAuthorizationsFile field items must be objects. - 1501: For the customAuthorizationsFile items, the name attribute is mandatory. - 1502: For the customAuthorizationsFile items, the method attribute is mandatory. - 1503: For the customAuthorizationsFile items, the endpoint attribute is mandatory. - 1504: For the customAuthorizationsFile items, the method attribute is invalid. ' content: application/json: schema: required: - result type: object properties: result: required: - responseCode type: object properties: responseCode: type: integer description: If the answer is 1 it has gone well, for the rest of the values it implies an error format: int32 example: 1 errors: required: - errorCode - message type: object properties: errorCode: type: string description: Error code example: '1000' message: type: string description: Error message description example: Error message solution: type: string description: Solution error example: Solution message description: Standard error output description: Exit structure example: result: responseCode: 0 errors: errorCode: 1000 message: Error message solution: Solution message 404: description: Not Found content: application/json: schema: required: - result type: object properties: result: required: - responseCode type: object properties: responseCode: type: integer description: If the answer is 1 it has gone well, for the rest of the values it implies an error format: int32 example: 1 errores: required: - errorCode - message type: object properties: errorCode: type: string description: Error code example: E001 message: type: string description: Error message example: Error message solution: type: string description: Solution error example: Solution message description: Standard error output description: Exit structure example: result: responseCode: 0 errores: errorCode: E404 message: Not Found 406: description: Not Acceptable content: application/json: schema: required: - result type: object properties: result: required: - responseCode type: object properties: responseCode: type: integer description: If the answer is 1 it has gone well, for the rest of the values it implies an error format: int32 example: 1 errores: required: - errorCode - message type: object properties: errorCode: type: string description: Error code example: E001 message: type: string description: Error message example: Error message solution: type: string description: Solution error example: Solution message description: Standard error output description: Exit structure example: result: responseCode: 0 errores: errorCode: E406 message: Not Acceptable 415: description: Unsupported Media Type content: application/json: schema: required: - result type: object properties: result: required: - responseCode type: object properties: responseCode: type: integer description: If the answer is 1 it has gone well, for the rest of the values it implies an error format: int32 example: 1 errores: required: - errorCode - message type: object properties: errorCode: type: string description: Error code example: E001 message: type: string description: Error message example: Error message solution: type: string description: Solution error example: Solution message description: Standard error output description: Estructura de salida para la ejecución de la operación de Transferencia Inmediata. example: result: responseCode: 0 errores: errorCode: E415 message: Unsupported Media Type 500: description: Internal Server Error content: application/json: schema: required: - result type: object properties: result: required: - responseCode type: object properties: responseCode: type: integer description: If the answer is 1 it has gone well, for the rest of the values it implies an error format: int32 example: 1 errores: required: - errorCode - message type: object properties: errorCode: type: string description: Error code example: '30212' message: type: string description: Error message example: Error message solution: type: string description: Solution error example: Solution message description: Standard error output description: Exit structure example: result: responseCode: 0 errores: errorCode: E002 message: Internal server error solution: Solución default: description: Unexpected error content: application/json: schema: required: - result type: object properties: result: required: - responseCode type: object properties: responseCode: type: integer description: If the answer is 1 it has gone well, for the rest of the values it implies an error format: int32 example: 1 errores: required: - errorCode - message type: object properties: errorCode: type: string description: Error code example: E001 message: type: string description: Error message example: Error message solution: type: string description: Solution error example: Solution message description: Standard error output description: Exit structure example: result: responseCode: 0 errores: errorCode: E003 message: Unexpected error operationId: postSoapUiProjects x-operation-id-source: derived servers: - url: /api-openapi-to-soapui/v1 components: schemas: OAuth2ProfileAuthorizationCode: allOf: - $ref: '#/components/schemas/OAuth2Profile' - type: object properties: clientSecret: type: string maxLength: 100 pattern: ^[A-Za-z0-9]*$ example: a2354akdjfasdkfj accessTokenURI: type: string format: uri maxLength: 2083 pattern: ^(https?):// example: http://api.cloudappi.net/token authorizationURI: type: string format: uri maxLength: 2083 pattern: ^(https?):// example: http://api.cloudappi.net/auth redirectURI: type: string format: uri maxLength: 2083 pattern: ^(https?):// example: http://api.cloudappi.net/callback required: - clientSecret - accessTokenURI - authorizationURI - redirectURI Headers: type: array description: List of optionals headers. This apply in all resources items: type: object properties: key: type: string description: Key of header param example: trace-id value: type: string description: Value of header param example: ewogIm5hbWUiIDogIm5vbWJyZSIsCiAiZGlyIiA6ICJkaXIiCn0 CustomAuthorizationsFile: type: array description: List of custom authorization requests, prepended as a dedicated "authorizations" Test Suite before the per-endpoint Test Suites items: $ref: '#/components/schemas/CustomAuthorizationRequest' OAuth2Profile: type: object properties: profileName: type: string maxLength: 100 pattern: ^[A-Za-z0-9]*$ example: dev grantType: type: string description: Grant type example: AUTHORIZATION_CODE enum: - AUTHORIZATION_CODE - CLIENT_CREDENTIALS - IMPLICIT - RESOURCE_OWNER_PASSWORD_CREDENTIALS clientId: type: string maxLength: 100 pattern: ^[A-Za-z0-9]*$ example: a2354akdjfasdkfj scope: type: string description: It will be a comma separated text string with the different scopes example: openid, secret accessTokenPosition: type: string description: Access Token Position example: HEADER enum: - HEADER - BODY - QUERY required: - profileName - grantType - clientId discriminator: propertyName: grantType OAuth2ProfileImplicit: allOf: - $ref: '#/components/schemas/OAuth2Profile' - type: object properties: authorizationURI: type: string format: uri maxLength: 2083 pattern: ^(https?):// example: http://api.cloudappi.net/auth redirectURI: type: string format: uri maxLength: 2083 pattern: ^(https?):// example: http://api.cloudappi.net/callback required: - authorizationURI - redirectURI OAuth2ProfileResourceOwnerPasswordCredentials: allOf: - $ref: '#/components/schemas/OAuth2Profile' - type: object properties: clientSecret: type: string maxLength: 100 pattern: ^[A-Za-z0-9]*$ example: a2354akdjfasdkfj accessTokenURI: type: string format: uri maxLength: 2083 pattern: ^(https?):// example: http://api.cloudappi.net/token username: type: string example: username password: type: string example: password required: - clientSecret - accessTokenURI - username - password OAuth2Profiles: type: array description: List with the configurations of the oAuth 2.0 authentication profiles items: oneOf: - $ref: '#/components/schemas/OAuth2ProfileWithExistingToken' - $ref: '#/components/schemas/OAuth2ProfileToGetToken' CustomAuthorizationRequest: required: - name - method - endpoint type: object properties: name: type: string description: Name of the authorization request; used to build the Resource, Method and Test Case names example: Application token method: type: string description: HTTP method of the authorization request example: POST endpoint: type: string description: Full URL the authorization request is sent to example: https://api.example.com/security/token headers: $ref: '#/components/schemas/Headers' mediaType: type: string description: Content-Type of the authorization request body example: application/x-www-form-urlencoded body: type: string description: Raw body content of the authorization request example: grant_type=client_credentials&client_id={{client_id}}&client_secret={{client_secret}} ProyectSoapUI: required: - apiName - openApiSpec type: object properties: apiName: type: string description: Name of SoapUI proyect example: Users oAuth2Profiles: $ref: '#/components/schemas/OAuth2Profiles' openApiSpec: type: string format: byte description: Base-64 encoded OpenAPI Spec example: b3BlbmFwaTogMy4wLjAKaW5mbzoKICB0aXRsZTogU2FtcGxlIEFQSQogIGRlc2NyaXB0aW9uOiBPcHRpb25hbCBtdWx0aWxpbmUgb3Igc2luZ2xlLWxpbmUgZGVzY3JpcHRpb24gaW4gW0NvbW1vbk1hcmtdKGh0dHA6Ly9jb21tb25tYXJrLm9yZy9oZWxwLykgb3IgSFRNTC4KICB2ZXJzaW9uOiAwLjEuOQpzZXJ2ZXJzOgogIC0gdXJsOiBodHRwOi8vYXBpLmV4YW1wbGUuY29tL3YxCiAgICBkZXNjcmlwdGlvbjogT3B0aW9uYWwgc2VydmVyIGRlc2NyaXB0aW9uLCBlLmcuIE1haW4gKHByb2R1Y3Rpb24pIHNlcnZlcgogIC0gdXJsOiBodHRwOi8vc3RhZ2luZy1hcGkuZXhhbXBsZS5jb20KICAgIGRlc2NyaXB0aW9uOiBPcHRpb25hbCBzZXJ2ZXIgZGVzY3JpcHRpb24sIGUuZy4gSW50ZXJuYWwgc3RhZ2luZyBzZXJ2ZXIgZm9yIHRlc3Rpbmc= testCaseNames: type: array description: For each name, an extra {METHOD}_Case{name} test case identical to CaseOkAllProperties is generated. Empty/unset (default) generates none. items: type: string example: Custom headers: $ref: '#/components/schemas/Headers' customAuthorizationsFile: $ref: '#/components/schemas/CustomAuthorizationsFile' readOnly: type: boolean description: If true, only GET and OPTIONS test cases are generated. POST, PUT, PATCH and DELETE are excluded. example: false minimalEndpoints: type: boolean description: If false (default), generates one {METHOD}_CaseErrorRequired{Field} test case per required body property (recursing into nested required objects) and per required query parameter. If true, collapses this to at most one such test case (the first required body property found, or the first required query parameter if the operation has no JSON body). example: false microcksHeaders: type: boolean description: If true, adds an X-Microcks-Response-Name header to each request, in addition to any custom headers. Its value is the name of the response example defined in the OpenAPI spec (first 2xx response, falling back to the "default" response), or "default" if none is defined. For the CaseErrorStatusCode{StatusCode}/CaseErrorRequired{Field} test cases, the header is resolved against that specific status's (or "default") response. If a custom header named X-Microcks-Response-Name is supplied, its value is preserved in every test case (both Ok* and Error*). example: false generateOneOfAnyOf: type: boolean description: If true, resolves oneOf/anyOf schemas to their first candidate schema when generating the example request body. When false (the default), a oneOf/anyOf property is rendered as a single empty value instead of being expanded into subfields. allOf schemas are always merged into a single object regardless of this flag. example: false validateSchema: type: boolean description: If true (default), every generated test case's status-code assertion is joined by a response-schema assertion (when the corresponding response documents a JSON schema). If false, only the status-code assertion is added — no schema assertion is generated for any test case. example: true schemaIsInline: type: boolean description: If false (default), the response JSON Schema used by a test case's schema assertion is generated as a SoapUI Project Property and read from the script at runtime via a "context.expand('${#Project#...}')" call. If true, the schema is embedded directly as a literal in the assertion script instead. example: false schemaPrettyPrint: type: boolean description: If true (default), the response JSON Schema used by a test case's schema assertion is pretty-printed (indented). If false, it is serialized compactly with no extra whitespace. example: true isInline: type: boolean description: If false (default), JSON request body example values are generated as SoapUI Project Properties and referenced from the body via a "${#Project#...}" token. If true, literal example values are embedded directly in the body instead. Query parameter values are always embedded literally, regardless of this flag. example: false hasScopes: type: boolean description: If true, for each generated method, an extra {METHOD}_CaseOkScope{profileName} test case is generated per configured oAuth2Profiles entry beyond the first, each wired to that profile's own OAuth 2.0 authentication, independent of the default request (which always uses only the first oAuth2Profiles entry). No-op when oAuth2Profiles is empty, not provided, or has only one entry. example: false applicationToken: type: boolean description: Only relevant when hasScopes is true. If also true, for each generated method, an extra {METHOD}_CaseOkApplicationToken{profileName} test case is generated per configured oAuth2Profiles entry whose grantType is CLIENT_CREDENTIALS (an application-only token, with no user — including the first entry), wired to that profile's own OAuth 2.0 authentication — separate from the hasScopes scope variant test cases. No-op when hasScopes is false, or when no CLIENT_CREDENTIALS-grant profile is configured. example: false numberOfScopes: type: integer description: Only relevant when hasScopes is true. Total number of test cases wired to a profile-based scope credential — counting the default request and any extra scope-variant test cases — using the first numberOfScopes configured oAuth2Profiles entries in configured order. Values below 1 (unset, 0, or negative) are treated as 1 — no extra test case is generated, since the default request alone already covers the first configured profile. Values at or above the number of configured oAuth2Profiles entries use all of them. Does not affect applicationToken test cases. example: 1 serverPattern: type: string description: Pattern to select the OpenAPI server used as endpoint. Wrap the substring with % (e.g. %dev%). If no server matches, or if serverPattern is omitted entirely, the first declared server is used. example: '%dev%' examples: $ref: '#/components/schemas/Examples' OAuth2ProfileClientCredentials: allOf: - $ref: '#/components/schemas/OAuth2Profile' - type: object properties: clientSecret: type: string maxLength: 100 pattern: ^[A-Za-z0-9]*$ example: a2354akdjfasdkfj accessTokenURI: type: string format: uri maxLength: 2083 pattern: ^(https?):// example: http://api.cloudappi.net/token required: - clientSecret - accessTokenURI Examples: type: object description: 'Custom example values used when generating request body properties and query-parameter values. Any field not provided falls back to the tool''s internal default. "successful" values are used for valid request bodies and valid query-parameter values. "wrong" values are used for the negative CaseErrorRequired{Field} cases: when any "wrong" value is configured, the target required field is sent with an invalid value taken from "wrong" (e.g. wrong.dateTime) instead of being omitted (body) or left empty (query parameter); when "wrong" is not configured, those cases keep the default behavior (omit the required body field / empty the required query parameter). These values only substitute scalar leaf values (string/number/boolean/date/dateTime and array/object literals); they do not expand or otherwise affect oneOf/anyOf/allOf composition — use generateOneOfAnyOf to control oneOf/anyOf expansion. String formats without a dedicated key (email, uuid, password, byte, binary) use the "string" value in request bodies; query parameters additionally emit built-in realistic samples for common formats (e.g. user@example.com for email), which take precedence over "string".' properties: successful: $ref: '#/components/schemas/ExampleValues' wrong: $ref: '#/components/schemas/ExampleValues' OAuth2ProfileWithExistingToken: type: object properties: profileName: type: string maxLength: 100 pattern: ^[A-Za-z0-9]*$ example: dev accessToken: type: string pattern: ^[A-Za-z0-9]*$ example: Ty3vo6cGkJu6DoK1GZUSNcgOj5rQ required: - profileName OAuth2ProfileToGetToken: oneOf: - $ref: '#/components/schemas/OAuth2ProfileAuthorizationCode' - $ref: '#/components/schemas/OAuth2ProfileClientCredentials' - $ref: '#/components/schemas/OAuth2ProfileResourceOwnerPasswordCredentials' - $ref: '#/components/schemas/OAuth2ProfileImplicit' discriminator: propertyName: grantType mapping: AUTHORIZATION_CODE: '#/components/schemas/OAuth2ProfileAuthorizationCode' CLIENT_CREDENTIALS: '#/components/schemas/OAuth2ProfileClientCredentials' IMPLICIT: '#/components/schemas/OAuth2ProfileResourceOwnerPasswordCredentials' RESOURCE_OWNER_PASSWORD_CREDENTIALS: '#/components/schemas/OAuth2ProfileImplicit' ExampleValues: type: object properties: string: type: string example: goodstring number: type: number example: 6 boolean: type: boolean example: true date: type: string format: date example: '2020-01-01' dateTime: type: string format: date-time example: '2020-01-01T23:59:59' array: type: string description: Literal value used verbatim for array-typed properties/parameters (e.g. a JSON array literal such as "[1,2,3]"). example: '[1,2,3]' object: type: string description: Literal value used verbatim for object-typed properties/parameters (e.g. a JSON object literal such as {"id":1}). example: '{"id":1}' x-refined-from: - openapi2soapui-api.yaml - apiaddicts-openapi2soapui-openapi.yml