openapi: 3.2.0 info: title: Schwarz It Lintings API version: 1.0.0 contact: name: YOUR_CONTACT_NAME url: YOUR_CONTACT_LINK email: YOUR_CONTACT@EMAIL.COM description: 'Operations tagged lintings across 2 of this provider''s published API definitions: schwarz-it-api-linter-service-openapi.json, schwarz-it-api-linter-service-openapi.yml. Each path carries the servers of the definition it was published in.' servers: - url: http://localhost:3001 - url: YOUR_PROD_SERVER_NAME tags: - name: lintings paths: /api-linting/api/v1/lintings: post: operationId: LintingsController_createLinting summary: Lintings controller create linting description: Create a new API linting. parameters: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateLintingDto' responses: '201': description: Created new API linting. content: application/json: schema: $ref: '#/components/schemas/CreatedLintingDto' '400': description: Provided request body is missing mandatory properties. tags: - lintings x-summary-source: derived servers: - url: http://localhost:3001 - url: YOUR_PROD_SERVER_NAME components: schemas: CreateLintingDto: type: object properties: apiType: type: string description: The API type to check. example: product_api enum: - backend_for_frontend - legacy_api - product_api apiSpecAsBase64: type: string description: The base64 representation of your API spec. example: eyJvcGVuYXBpIjoiMy4wLjAiLCJwYXRocyI6eyIvZGlnaXRhbC10d2luL2FwaS92MS9wcm9kdWN0cyI6eyJwb3N0Ijp7Im9wZXJhdGlvbklkIjoiUHJvZHVjdHNDb250cm9sbGVyX2NyZWF0ZSIsInN1bW1hcnkiOiIiLCJkZXNjcmlwdGlvbiI6IkNyZWF0ZSBhIG5ldyBwcm9kdWN0LiIsInBhcmFtZXRlcnMiOltdLCJyZXF1ZXN0Qm9keSI6eyJyZXF1aXJlZCI6dHJ1ZSwiY29udGVudCI6eyJhcHBsaWNhdGlvbi9qc29uIjp7InNjaGVtYSI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvQ3JlYXRlUHJvZHVjdER0byJ9fX19LCJyZXNwb25zZXMiOnsiMjAxIjp7ImRlc2NyaXB0aW9uIjoiQ3JlYXRlZCBuZXcgcHJvZHVjdCBhbmQgcmVzcG9uZHMgdGhlIG5ld2x5IGNyZWF0ZWQgcHJvZHVjdC4iLCJjb250ZW50Ijp7ImFwcGxpY2F0aW9uL2pzb24iOnsic2NoZW1hIjp7IiRyZWYiOiIjL2NvbXBvbmVudHMvc2NoZW1hcy9DcmVhdGVkUHJvZHVjdER0byJ9fX19LCI0MDEiOnsiZGVzY3JpcHRpb24iOiJBUEkgY2FsbCB3YXMgbm90IHN1Y2Nlc3NmdWxseSB2YWxpZGF0ZWQgYWdhaW5zdCBBenVyZUFELiBHaXZlbiBBdXRob3JpemF0aW9uIFRva2VuIGlzIG5vdCB2YWxpZC4ifSwiNDA5Ijp7ImRlc2NyaXB0aW9uIjoiUHJvZHVjdCB3aXRoIGdpdmVuIGVhbiBhbHJlYWR5IGV4aXN0cyJ9fSwidGFncyI6WyJwcm9kdWN0cyJdLCJzZWN1cml0eSI6W3siYmVhcmVyIjpbXX1dfSwiZ2V0Ijp7Im9wZXJhdGlvbklkIjoiUHJvZHVjdHNDb250cm9sbGVyX2ZpbmRBbGwiLCJzdW1tYXJ5IjoiIiwiZGVzY3JpcHRpb24iOiJHZXQgYWxsIHByb2R1Y3RzLiIsInBhcmFtZXRlcnMiOltdLCJyZXNwb25zZXMiOnsiMjAwIjp7ImRlc2NyaXB0aW9uIjoiUmVzcG9uZHMgYWxsIHByb2R1Y3RzIGFzIGEgbGlzdCBvZiBwcm9kdWN0cy4iLCJjb250ZW50Ijp7ImFwcGxpY2F0aW9uL2pzb24iOnsic2NoZW1hIjp7InR5cGUiOiJhcnJheSIsIml0ZW1zIjp7IiRyZWYiOiIjL2NvbXBvbmVudHMvc2NoZW1hcy9DcmVhdGVkUHJvZHVjdER0byJ9fX19fSwiNDAxIjp7ImRlc2NyaXB0aW9uIjoiQVBJIGNhbGwgd2FzIG5vdCBzdWNjZXNzZnVsbHkgdmFsaWRhdGVkIGFnYWluc3QgQXp1cmVBRC4gR2l2ZW4gQXV0aG9yaXphdGlvbiBUb2tlbiBpcyBub3QgdmFsaWQuIn0sIjQwNCI6eyJkZXNjcmlwdGlvbiI6Ik5vIHByb2R1Y3RzIGZvdW5kLiJ9fSwidGFncyI6WyJwcm9kdWN0cyJdLCJzZWN1cml0eSI6W3siYmVhcmVyIjpbXX1dfX0sIi9kaWdpdGFsLXR3aW4vYXBpL3YxL3Byb2R1Y3RzL3tlYW59Ijp7ImdldCI6eyJvcGVyYXRpb25JZCI6IlByb2R1Y3RzQ29udHJvbGxlcl9maW5kT25lIiwic3VtbWFyeSI6IiIsImRlc2NyaXB0aW9uIjoiR2V0IHByb2R1Y3QgYnkgZWFuLiIsInBhcmFtZXRlcnMiOlt7Im5hbWUiOiJlYW4iLCJyZXF1aXJlZCI6dHJ1ZSwiaW4iOiJwYXRoIiwic2NoZW1hIjp7InR5cGUiOiJzdHJpbmcifX1dLCJyZXNwb25zZXMiOnsiMjAwIjp7ImRlc2NyaXB0aW9uIjoiUmVzcG9uZHMgb25lIHByb2R1Y3Qgd2l0aCBnaXZlbiBcImVhblwiIiwiY29udGVudCI6eyJhcHBsaWNhdGlvbi9qc29uIjp7InNjaGVtYSI6eyIkcmVmIjoiIy9jb21wb25lbnRzL3NjaGVtYXMvQ3JlYXRlZFByb2R1Y3REdG8ifX19fSwiNDAxIjp7ImRlc2NyaXB0aW9uIjoiQVBJIGNhbGwgd2FzIG5vdCBzdWNjZXNzZnVsbHkgdmFsaWRhdGVkIGFnYWluc3QgQXp1cmVBRC4gR2l2ZW4gQXV0aG9yaXphdGlvbiBUb2tlbiBpcyBub3QgdmFsaWQuIn0sIjQwNCI6eyJkZXNjcmlwdGlvbiI6IlByb2R1Y3Qgd2l0aCBnaXZlbiBlYW4gd2FzIG5vdCBmb3VuZC4ifX0sInRhZ3MiOlsicHJvZHVjdHMiXSwic2VjdXJpdHkiOlt7ImJlYXJlciI6W119XX0sInB1dCI6eyJvcGVyYXRpb25JZCI6IlByb2R1Y3RzQ29udHJvbGxlcl91cGRhdGUiLCJzdW1tYXJ5IjoiIiwiZGVzY3JpcHRpb24iOiJVcGRhdGUgYW4gZXhpc3RpbmcgcHJvZHVjdC4iLCJwYXJhbWV0ZXJzIjpbeyJuYW1lIjoiZWFuIiwicmVxdWlyZWQiOnRydWUsImluIjoicGF0aCIsInNjaGVtYSI6eyJ0eXBlIjoic3RyaW5nIn19XSwicmVxdWVzdEJvZHkiOnsicmVxdWlyZWQiOnRydWUsImNvbnRlbnQiOnsiYXBwbGljYXRpb24vanNvbiI6eyJzY2hlbWEiOnsiJHJlZiI6IiMvY29tcG9uZW50cy9zY2hlbWFzL1VwZGF0ZVByb2R1Y3REdG8ifX19fSwicmVzcG9uc2VzIjp7IjIwMCI6eyJkZXNjcmlwdGlvbiI6IlVwZGF0ZWQgZ2l2ZW4gcHJvZHVjdCBhbmQgcmVzcG9uZHMgdGhlIHVwZGF0ZWQgcHJvZHVjdC4iLCJjb250ZW50Ijp7ImFwcGxpY2F0aW9uL2pzb24iOnsic2NoZW1hIjp7IiRyZWYiOiIjL2NvbXBvbmVudHMvc2NoZW1hcy9DcmVhdGVkUHJvZHVjdER0byJ9fX19LCI0MDEiOnsiZGVzY3JpcHRpb24iOiJBUEkgY2FsbCB3YXMgbm90IHN1Y2Nlc3NmdWxseSB2YWxpZGF0ZWQgYWdhaW5zdCBBenVyZUFELiBHaXZlbiBBdXRob3JpemF0aW9uIFRva2VuIGlzIG5vdCB2YWxpZC4ifSwiNDA0Ijp7ImRlc2NyaXB0aW9uIjoiUHJvZHVjdCB3aXRoIGdpdmVuIGVhbiB3YXMgbm90IGZvdW5kIGFuZCBjb3VsZCB0aGVyZWZvcmUgbm90IGJlIHVwZGF0ZWQuIn19LCJ0YWdzIjpbInByb2R1Y3RzIl0sInNlY3VyaXR5IjpbeyJiZWFyZXIiOltdfV19LCJkZWxldGUiOnsib3BlcmF0aW9uSWQiOiJQcm9kdWN0c0NvbnRyb2xsZXJfcmVtb3ZlIiwic3VtbWFyeSI6IiIsImRlc2NyaXB0aW9uIjoiRGVsZXRlIGFuIGV4aXN0aW5nIHByb2R1Y3QuIiwicGFyYW1ldGVycyI6W3sibmFtZSI6ImVhbiIsInJlcXVpcmVkIjp0cnVlLCJpbiI6InBhdGgiLCJzY2hlbWEiOnsidHlwZSI6InN0cmluZyJ9fV0sInJlc3BvbnNlcyI6eyIyMDAiOnsiZGVzY3JpcHRpb24iOiJEZWxldGVkIGdpdmVuIHByb2R1Y3QuIn0sIjQwMSI6eyJkZXNjcmlwdGlvbiI6IkFQSSBjYWxsIHdhcyBub3Qgc3VjY2Vzc2Z1bGx5IHZhbGlkYXRlZCBhZ2FpbnN0IEF6dXJlQUQuIEdpdmVuIEF1dGhvcml6YXRpb24gVG9rZW4gaXMgbm90IHZhbGlkLiJ9LCI0MDQiOnsiZGVzY3JpcHRpb24iOiJQcm9kdWN0IHdpdGggZ2l2ZW4gZWFuIHdhcyBub3QgZm91bmQgYW5kIGNvdWxkIHRoZXJlZm9yZSBub3QgYmUgZGVsZXRlZC4ifX0sInRhZ3MiOlsicHJvZHVjdHMiXSwic2VjdXJpdHkiOlt7ImJlYXJlciI6W119XX19fSwiaW5mbyI6eyJ0aXRsZSI6IkRpZ2l0YWwgVHdpbiBBUEkiLCJkZXNjcmlwdGlvbiI6IlRoZSBEaWdpdGFsIFR3aW4gQVBJIGRlc2NyaXB0aW9uIiwidmVyc2lvbiI6IjEuMCIsImNvbnRhY3QiOnt9fSwidGFncyI6W10sInNlcnZlcnMiOlt7InVybCI6Imh0dHA6Ly9sb2NhbGhvc3QifSx7InVybCI6Imh0dHA6Ly9xcyJ9LHsidXJsIjoiaHR0cDovL3Byb2QifV0sImNvbXBvbmVudHMiOnsic2VjdXJpdHlTY2hlbWVzIjp7ImJlYXJlciI6eyJzY2hlbWUiOiJiZWFyZXIiLCJiZWFyZXJGb3JtYXQiOiJKV1QiLCJ0eXBlIjoiaHR0cCJ9fSwic2NoZW1hcyI6eyJDcmVhdGVQcm9kdWN0RHRvIjp7InR5cGUiOiJvYmplY3QiLCJwcm9wZXJ0aWVzIjp7ImVhbiI6eyJ0eXBlIjoic3RyaW5nIiwiZGVzY3JpcHRpb24iOiJUaGUgdW5pcXVlIHByb2R1Y3QgZWFuLiIsImV4YW1wbGUiOiIxMjEyMzMyNCJ9LCJkZXNjcmlwdGlvbiI6eyJ0eXBlIjoic3RyaW5nIiwiZGVzY3JpcHRpb24iOiJQcm9kdWN0IGRlc2NyaXB0aW9uLiIsImV4YW1wbGUiOiJUaGlzIGlzIGEgdmVyeSBuaWNlIHByb2R1Y3QgZGVzY3JpcHRpb24uIn0sIm1hbnVmYWN0dXJlciI6eyJ0eXBlIjoic3RyaW5nIiwiZGVzY3JpcHRpb24iOiJQcm9kdWN0IG1hbnVmYWN0dXJlci4iLCJleGFtcGxlIjoiS2luZGVyIn0sImJyYW5kIjp7InR5cGUiOiJzdHJpbmciLCJkZXNjcmlwdGlvbiI6IlByb2R1Y3QgYnJhbmQuIiwiZXhhbXBsZSI6IktpbmRlciBTY2hva29sYWRlIn19LCJyZXF1aXJlZCI6WyJlYW4iLCJkZXNjcmlwdGlvbiIsIm1hbnVmYWN0dXJlciJdfSwiQ3JlYXRlZFByb2R1Y3REdG8iOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsiZWFuIjp7InR5cGUiOiJzdHJpbmciLCJkZXNjcmlwdGlvbiI6IlRoZSB1bmlxdWUgcHJvZHVjdCBlYW4uIiwiZXhhbXBsZSI6IjEyMTIzMzI0In0sImRlc2NyaXB0aW9uIjp7InR5cGUiOiJzdHJpbmciLCJkZXNjcmlwdGlvbiI6IlByb2R1Y3QgZGVzY3JpcHRpb24uIiwiZXhhbXBsZSI6IlRoaXMgaXMgYSB2ZXJ5IG5pY2UgcHJvZHVjdCBkZXNjcmlwdGlvbi4ifSwibWFudWZhY3R1cmVyIjp7InR5cGUiOiJzdHJpbmciLCJkZXNjcmlwdGlvbiI6IlByb2R1Y3QgbWFudWZhY3R1cmVyLiIsImV4YW1wbGUiOiJLaW5kZXIifSwiYnJhbmQiOnsidHlwZSI6InN0cmluZyIsImRlc2NyaXB0aW9uIjoiUHJvZHVjdCBicmFuZC4iLCJleGFtcGxlIjoiS2luZGVyIFNjaG9rb2xhZGUifSwiaWQiOnsidHlwZSI6InN0cmluZyIsImRlc2NyaXB0aW9uIjoiUHJvZHVjdCB1dWlkLiIsImV4YW1wbGUiOiJlZmQ0MzJhYy1kNGJhLTQ5ZDMtOTI1Yy05MDI0ZTM3ZTFhZjYifX0sInJlcXVpcmVkIjpbImVhbiIsImRlc2NyaXB0aW9uIiwibWFudWZhY3R1cmVyIiwiYnJhbmQiLCJpZCJdfSwiVXBkYXRlUHJvZHVjdER0byI6eyJ0eXBlIjoib2JqZWN0IiwicHJvcGVydGllcyI6eyJlYW4iOnsidHlwZSI6InN0cmluZyIsImRlc2NyaXB0aW9uIjoiVGhlIHVuaXF1ZSBwcm9kdWN0IGVhbi4iLCJleGFtcGxlIjoiMTIxMjMzMjQifSwiZGVzY3JpcHRpb24iOnsidHlwZSI6InN0cmluZyIsImRlc2NyaXB0aW9uIjoiUHJvZHVjdCBkZXNjcmlwdGlvbi4iLCJleGFtcGxlIjoiVGhpcyBpcyBhIHZlcnkgbmljZSBwcm9kdWN0IGRlc2NyaXB0aW9uLiJ9LCJtYW51ZmFjdHVyZXIiOnsidHlwZSI6InN0cmluZyIsImRlc2NyaXB0aW9uIjoiUHJvZHVjdCBtYW51ZmFjdHVyZXIuIiwiZXhhbXBsZSI6IktpbmRlciJ9LCJicmFuZCI6eyJ0eXBlIjoic3RyaW5nIiwiZGVzY3JpcHRpb24iOiJQcm9kdWN0IGJyYW5kLiIsImV4YW1wbGUiOiJLaW5kZXIgU2Nob2tvbGFkZSJ9fX19fSwiZXh0ZXJuYWxEb2NzIjp7ImRlc2NyaXB0aW9uIjoiQ29tcGFueSBBUEkgYmVzdCBwcmFjdGljZXMiLCJ1cmwiOiJodHRwczovL3ByZXNzLXJlbGVhc2UtZGVtby5wcm9kLnNpdC5zeXMub2RqLmNsb3VkL2FyY2hpdGVjdHVyZS1iZXN0LXByYWN0aWNlcy9hcGlzLyJ9fQ== required: - apiType - apiSpecAsBase64 SpectralResultRange: type: object properties: start: description: The starting position of the issue inside the linted document allOf: - $ref: '#/components/schemas/SpectralResultPosition' end: description: The ending position of the issue inside the linted document allOf: - $ref: '#/components/schemas/SpectralResultPosition' required: - start - end SpectralResult: type: object properties: path: description: The path of the error as JsonPath example: - paths - /route - get type: array items: type: string code: description: The code of the rule, can be used to identify the rule that caused the issue example: path-description-is-mandatory oneOf: - type: string - type: number range: description: The range of the error inside the linted document example: start: line: 14 character: 21 end: line: 84 character: 52 allOf: - $ref: '#/components/schemas/SpectralResultRange' message: type: string description: The message associated with the issue example: 'Every route of an API should have a description; property: /route.description is missing' severity: type: number description: The severity of the issue. 0 = "Error", 1 = "Warning", 2 = "Information", 3 = "Hint" enum: - 0 - 1 - 2 - 3 source: type: string description: A human-readable string describing the source of this diagnostic, e.g. "typescript" or "super lint". tags: description: Additional metadata about the diagnostic. type: array items: type: string required: - path - code - range - severity CreatedLintingDto: type: object properties: description: type: string description: Information if your OpenApi Spec does comply with company rules. example: Given API Spec DOES comply with company API rules. linkApiRules: type: string description: Link to Company API Best Practices example: https://press-release-demo.prod.sit.sys.odj.cloud/architecture-best-practices/apis/ highestSeverityLevel: type: string description: Highest severity level during linting. example: Warn enum: - Error - Warn - Info - Hint isValidSpec: type: boolean description: Indicates if given OpenAPI Spec complies to company API best practices. example: true lintingResults: description: Example API linting result type: array items: $ref: '#/components/schemas/SpectralResult' required: - description - linkApiRules - isValidSpec - lintingResults SpectralResultPosition: type: object properties: line: type: number description: Line position in a document (zero-based) character: type: number description: Character offset on a line in a document (zero-based). Assuming that the line is represented as a string, the `character` value represents the gap between the `character` and `character + 1`. If the character value is greater than the line length it defaults back to the line length. required: - line - character externalDocs: description: YOUR_DOCS_NAME url: YOUR_DOCS_LINK x-refined-from: - schwarz-it-api-linter-service-openapi.json - schwarz-it-api-linter-service-openapi.yml