openapi: 3.0.3 info: title: Architectural Design Patterns API description: API providing access to a catalog of architectural design patterns, their descriptions, use cases, implementation examples, and relationships between patterns. version: 1.0.0 contact: name: API Evangelist url: https://apievangelist.com servers: - url: https://api.apievangelist.com/v1/architectural-design-patterns description: Production paths: /patterns: get: summary: List architectural design patterns operationId: listPatterns tags: [Patterns] parameters: - name: category in: query description: Filter by pattern category schema: type: string enum: [creational, structural, behavioral, architectural, integration, data] - name: tag in: query description: Filter by tag schema: type: string - name: limit in: query schema: type: integer default: 20 - name: offset in: query schema: type: integer default: 0 responses: '200': description: List of design patterns content: application/json: schema: $ref: '#/components/schemas/PatternList' /patterns/{patternId}: get: summary: Get design pattern details operationId: getPattern tags: [Patterns] parameters: - name: patternId in: path required: true description: The unique pattern identifier schema: type: string responses: '200': description: Design pattern details content: application/json: schema: $ref: '#/components/schemas/Pattern' '404': description: Pattern not found /patterns/{patternId}/examples: get: summary: Get implementation examples for a pattern operationId: getPatternExamples tags: [Patterns] parameters: - name: patternId in: path required: true schema: type: string - name: language in: query description: Programming language for examples schema: type: string responses: '200': description: Implementation examples content: application/json: schema: $ref: '#/components/schemas/ExampleList' /patterns/{patternId}/relationships: get: summary: Get relationships for a pattern operationId: getPatternRelationships tags: [Patterns] parameters: - name: patternId in: path required: true schema: type: string responses: '200': description: Pattern relationships content: application/json: schema: $ref: '#/components/schemas/RelationshipList' /categories: get: summary: List pattern categories operationId: listCategories tags: [Categories] responses: '200': description: List of pattern categories content: application/json: schema: $ref: '#/components/schemas/CategoryList' /anti-patterns: get: summary: List anti-patterns operationId: listAntiPatterns tags: [Anti-Patterns] parameters: - name: limit in: query schema: type: integer default: 20 - name: offset in: query schema: type: integer default: 0 responses: '200': description: List of anti-patterns content: application/json: schema: $ref: '#/components/schemas/AntiPatternList' components: schemas: Pattern: type: object properties: id: type: string name: type: string category: type: string description: type: string problem: type: string solution: type: string consequences: type: array items: type: string tags: type: array items: type: string relatedPatterns: type: array items: type: string applicability: type: string knownUses: type: array items: type: string PatternList: type: object properties: total: type: integer offset: type: integer limit: type: integer patterns: type: array items: $ref: '#/components/schemas/Pattern' Example: type: object properties: id: type: string patternId: type: string language: type: string title: type: string description: type: string code: type: string notes: type: string ExampleList: type: object properties: total: type: integer examples: type: array items: $ref: '#/components/schemas/Example' Relationship: type: object properties: sourcePatternId: type: string targetPatternId: type: string relationshipType: type: string enum: [uses, extends, alternative, related, conflicts] description: type: string RelationshipList: type: object properties: total: type: integer relationships: type: array items: $ref: '#/components/schemas/Relationship' Category: type: object properties: id: type: string name: type: string description: type: string patternCount: type: integer CategoryList: type: object properties: total: type: integer categories: type: array items: $ref: '#/components/schemas/Category' AntiPattern: type: object properties: id: type: string name: type: string description: type: string symptoms: type: array items: type: string causes: type: array items: type: string refactoredSolution: type: string relatedPatterns: type: array items: type: string AntiPatternList: type: object properties: total: type: integer offset: type: integer limit: type: integer antiPatterns: type: array items: $ref: '#/components/schemas/AntiPattern'