Codegen and inheritance
I will start by saying I'm not sure how to even search for this, I tried but couldn't find a post like my problem. Currently I'm having some troubles with how to hanlde inheritance in swagger 3.0 and codegen on that swagger. The api this swagger is for uses alot of the same fields accross its different endpoints. To reduce the workload around updates to these fields I pulled all of the fields out into their own section in the schema. This has been fine for the documentation side but codegen is now generating models for each seperate field and getting really confused because of it. I have a couple of questions I'm wanting to ask here.
Is this the correct way to handle repeating fields? is there a better way while not requring updated to each location the field is used?
Assuming the answer to my first question isn't I'm doing everything wrong how can I reformat my swagger file to codegen only the actual models
openapi: 3.0.0 info: title: Test Service version: 0.4.0 paths: /example: parameters: - $ref: '#/components/parameters/X-Request-ID' - $ref: '#/components/parameters/X-Correlation-ID' put: tags: - example summary: Update | /example PUT description: needed to hide these requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/update' responses: '200': $ref: '#/components/responses/PutResponse' components: schemas: update: type: object properties: clientId: $ref: '#/components/schemas/clientId' userId: $ref: '#/components/schemas/userId' deviceId: $ref: '#/components/schemas/deviceId' state: $ref: '#/components/schemas/state' name: $ref: '#/components/schemas/name' required: - clientId - userId - deviceId putResponse: type: object properties: clientId: $ref: '#/components/schemas/clientId' userId: $ref: '#/components/schemas/userId' deviceId: $ref: '#/components/schemas/deviceId' state: $ref: '#/components/schemas/state' name: $ref: '#/components/schemas/name' lastUpdated: $ref: '#/components/schemas/lastUpdated' X-Correlation-ID: description: needed to hide these example: 2438ac3c-37eb-4902-adef-ed16b4431030 pattern: ^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$ type: string format: uuid clientId: description: needed to hide these example: 900900 pattern: ^[a-zA-Z0-9]{1,64}$ type: string deviceId: description: needed to hide these example: 7363b8ae6b2247b99f5d56fc81102254 pattern: ^[a-zA-Z0-9]{1, 32}$ type: string userId: description: needed to hide these example: meoyyd8za8jdmwfm pattern: ^[a-zA-Z0-9]{1,64}$ type: string state: type: string description: needed to hide these TRUSTED - Used to minimize friction for a user who has passed step-up authentication BANNED - Used to block access to an account for a specified device enum: - TRUSTED - BANNED name: type: string description: needed to hide these example: iPhone6sNina pattern: ^\w{1,255}$ lastUpdated: type: string format: date-time description: needed to hide these example: 2018-02-22T01:02:03.123Z pattern: "yyyy-MM-dd'T'HH:mm:ss'Z'" parameters: X-Request-ID: description: needed to hide these name: X-Request-ID schema: $ref: '#/components/schemas/X-Correlation-ID' deprecated: true in: header X-Correlation-ID: description: needed to hide these name: X-Correlation-ID schema: $ref: '#/components/schemas/X-Correlation-ID' required: true in: header clientId: name: clientId description: needed to hide these schema: $ref: '#/components/schemas/clientId' required: true in: path deviceId: name: deviceId description: needed to hide these schema: $ref: '#/components/schemas/deviceId' required: true in: path userId: name: userId description: needed to hide these schema: $ref: '#/components/schemas/userId' required: true in: path responses: PutResponse: description: needed to hide these headers: X-Correlation-ID: schema: $ref: '#/components/schemas/X-Correlation-ID' content: application/json: schema: $ref: '#/components/schemas/putResponse'
This ends up generating swagger filed with models for each field like userId, deviceId, and so on. What I really want is the update and postRepsonse models.