Life ConnectLife Connect
Wiki index
Architecture
Services
Concepts
Runbooks
Infra
Swagger Docs
GitHub
Wiki index
Architecture
Services
Concepts
Runbooks
Infra
Swagger Docs
GitHub
  • Archive
  • Data Dictionary
  • Functional Epics

    • DICTIONARY OF ATTRIBUTES
    • Search Condos
    • Display

      • DisplayAll

        • Display all - Contracts
        • Display all - invoices
        • Display all - parts
        • Display all - Persons Relationships
        • Display all - Persons
        • Display tickets
      • DisplayContract

        • Display bank account Contract
        • Display Condo Member Contract
        • Display contact contract
        • Display Employee Contract
        • Display Generic Contract
        • Display Insurance Contract
        • Display Legal Represent Contract
        • Display Oral Contract
        • Display Owner Contract
        • Display Condo Regulation Contract
        • Display rental Contract
        • Display Supplier Contract
        • Display Trustee Contract
      • DisplayDelegate

        • Display Delegate
      • DisplayHistory

        • Display history
      • DisplayPerson

        • Display Company Person
        • Display Condo Person
        • Display Division Person
        • Display Group Person
        • Display Indivision Person
        • Display Natural Person
        • Display Union Person
        • Display Unknown Person
      • DisplayPersonsContracts

        • Display all Interventions
      • DisplayProperty

        • Display part
        • Display part
      • UiPerson

        • Display "mini" Persons
    • Process

      • Create

        • Create property & condo
      • Delete

        • Delete objects according to state machine
      • RC Renewal

        • RC RESIDENTIAL - automatic renewal
      • Review

        • rent amount review - RC residential - creation
        • rent amount review - RC residential - take-over
      • Sell

        • Sell a unit
    • Reporting

      • GRR

        • GLOBAL RENT REPORT
    • Search

      • Search
    • StateMachine

      • CreatingContract

        • State machine - creating a rental contract
        • State machine - creating a rental delegate contract
        • State machine - Referencing a abstract part contract
        • State machine - Referencing a bank contract
        • State machine - Referencing a condo regulation contract
        • State machine - Referencing a contact contract
        • State machine - Referencing an employee contract
        • State machine - Referencing a generic contract
        • State machine - Referencing a legal represent contract
        • State machine - Referencing a owner contract
        • State machine - Referencing a rental contract
        • State machine - Referencing a supplier contract
        • State machine - Referencing a trustee contract
      • CreatingIntervention

        • State machine - creating a ticket
        • State machine - Referencing a message
      • CreatingInvoice

        • State machine - creating a incoming (supplier) invoice
      • CreatingPayments

        • State machine - creating an incoming payment
      • EncodingPart

        • CreatingPart

          • State machine - Referencing part relationships
          • State machine - Referencing a part
      • EncodingPerson

        • CreatingAddresses

          • State machine - Creating email address
          • State machine - Creating phone address
          • State machine - Creating postal address
          • State machine - Creating web address
        • CreatingPerson

          • State machine - Referencing a company person
          • State machine - Referencing a condo person
          • State machine - Referencing a division person
          • State machine - Referencing an group person
          • State machine - Referencing an indivision person
          • State machine - Referencing a natural person
          • State machine - Referencing a union person
        • CreatingShareHolders

          • State machine - valuing a shareholder
      • Scanning

        • State machine scanning - analyze a document
        • State machine scanning - matching a document
        • State machine scanning - encoding a document : related information
    • Utility

      • Allocation keys
      • Company settings
      • Document data & file
      • Revision Index
    • Validations

      • Shareholders validation
  • Implicit

    • Callback

      • Logging In
  • ProductBoard

    • Rental Process

      • Rental delegate process
    • Ticketing

      • Create a ticket - link a ticket in Outlook add-in - add a call - display a ticket
      • Display Person Info in Outlook add-in
  • Technical Epics

    • Indexation Feature Documentation
    • Rent Amount Management Feature Documentation
    • I have an API
    • I can store the balance of an account
    • I Have Person Notifications
    • 🧩 System Process Diagrams
    • The Team has a DEV environment
    • The Team is organized
    • Accounting

      • Re-generation of Invoices
      • I can call the rent for my Rental Contract
      • Payment Creation Strategy Feature Documentation
      • I Can Revese

        • Payment Reversal
      • I Have Invoices

        • I have direction on invoice's item level
      • I Have Subsidies

        • I Can Receive Family Allowance Payments - Technical Documentation
        • Subsidies + Direct Debit Documentation
    • Communication Module

      • Communication module
    • Contracts

      • I can have contract guarantors
      • API Models
      • I Have Call For Rent Process

        • Call For Rent (CFR) Process Documentation
      • Occupancy Compensation

        • **OCCUPANCY COMPENSATION Documentation**
      • State Machine

        • I can have the Rental Contract state machine
    • Database

      • Database Indexes
    • E2e Testing

      • I can create an E2E dataset
    • Env Setup

      • Adapt env to stateless UI build
      • Blockhound
      • Table of Environments and Their Specifications
      • Environment How-To
      • Java Flight Recorder Management Documentation
      • Local Environment Setup
      • Kubernetes Logs Retrieval Documentation
      • Monitoring
      • I can create a new organisation
      • Production Environment Configuration
      • Remote Environment Setup
      • Set up of separate DB for env
      • Terraform Aws S3 Buckets
      • adb-ui Service Version Update
    • Files

      • I can have tags for files
    • Globals

      • boundaries
      • boundaries
      • boundaries
      • boundaries
    • Messaging

      • MongoDB Trigger Model Documentation
    • Open Api

      • Swagger Documentation Guide
      • Swagger
    • Parts

      • I Have A Forecast And Actuals Module
      • I can have part equipments
    • Process

      • Pre-Meeting Questionnaire
      • I Can Release My Feature
    • Security

      • I can create and provision an organisation
      • a user is granted access to the application
    • Stress Test

      • Introduction
      • Reports

        • Introduction
        • Introduction
        • Introduction
        • Introduction
        • Introduction
        • Table of contents
    • Tickets

      • Ticket Details Functionality
    • Troubleshooting

      • Prometheus Memory Issue Handling
Last updated 2024-11-05⚠️ 1 year 7 months old — verify against current code before relying on details.

Swagger Documentation Guide

This guide outlines the standards for configuring and maintaining Swagger API documentation within our codebase. Following these guidelines ensures consistent, clear, and well-organized documentation across all services.


General Rules for Swagger Configuration

  1. Using Swagger Annotations:

    • Annotation Priority: Where possible, use Swagger annotations (such as @ApiOperation, @ApiResponses, and @ApiParam) directly in the code to define API metadata, parameter details, and response examples.
    • When to Use: Use annotations for descriptions and examples that are concise, particularly for parameterized details or small response examples.
  2. Swagger Customizer:

    • Purpose: Use the customizer to manage complex configurations or examples that would clutter the code if embedded directly.
    • When to Use: If response examples, parameter values, or configurations are extensive or involve nested structures, use a customizer. This keeps annotations manageable and improves code readability.

Documentation Conventions

Metadata Documentation

  • Endpoint Descriptions:

    • Use @ApiOperation to describe the functionality of each endpoint clearly. Keep descriptions concise and action-oriented (e.g., "Creates a new contract," "Retrieves a list of contracts").
  • Response and Parameter Documentation:

    • Specify all possible responses with @ApiResponses, noting the status code and brief description of each. For example, describe a 201 status as "Successful creation" or a 400 error as "Invalid input."
    • Define parameters with @ApiParam, detailing attributes like required status and brief examples if they enhance clarity.

Examples and Complex Responses

  • Using the AbstractSampleObjectFactory:
    • Complex examples and sample responses should be created using factory methods. Developers can find AbstractSampleObjectFactory in the adb-common module. This approach keeps the main code cleaner and makes reusable examples accessible across services.
    • When adding new examples, ensure each factory method provides a clear description of the sample data’s context and a representative value.

Organizing Code with Factory Classes

  • Purpose of Factory Classes:
    • Factory classes manage examples for specific response types or request structures, especially when data structures are extensive or nested. This approach enables code reuse and consistency.
  • Naming and Documentation:
    • Name each factory class according to the type of object it creates examples for (e.g., TicketSampleObjectFactory for Ticket-related examples).
    • Document each example with a descriptive method name and comments explaining its use (e.g., a creation request example vs. a response example). This gives developers clarity on when and how to use each method.

Summary of Rules

  1. Annotations for Simplicity:

    • Use Swagger annotations for direct metadata, parameters, and simple examples.
  2. Factory Methods for Complexity:

    • For complex or reusable examples, create and reference factory methods within a dedicated factory class, ensuring code clarity and ease of maintenance.
  3. Customizer for Special Configurations:

    • If additional customization or configuration is needed beyond the capabilities of annotations (such as global settings or additional response handling), apply a Swagger customizer to handle these requirements centrally.
Edit this page
Last Updated:
Contributors: Yevhenii Khudolii
Next
Swagger