Module: Treaty::Action::Versions::DSL

Included in:
Base
Defined in:
lib/treaty/action/versions/dsl.rb

Overview

DSL module for defining API versions in treaty classes.

Purpose

Provides the version class method for defining API versions. Each version can have its own request/response schema, executor, summary, and deprecation status.

Usage

Included in:

  • Treaty::Action::Base (as core DSL functionality)

DSL Methods

When included, provides:

  • version - Define a new API version with configuration block
  • collection_of_versions - Access all defined versions

Version Definition

class Posts::CreateTreaty < ApplicationTreaty
version 1, default: true do
  summary "Initial version"

  request do
    object :post do
      string :title, :required
    end
  end

  response 201 do
    object :post do
      string :id
    end
  end

  delegate_to Posts::CreateService
end

version 2 do
  summary "Added tags"
  deprecated { ENV["V2_DEPRECATED"] == "true" }
  # ...
end
end

Validation

Validates that only one version is marked as default. Raises VersionMultipleDefaults if multiple defaults detected.

Defined Under Namespace

Modules: ClassMethods

Class Method Summary collapse

Class Method Details

.included(base) ⇒ Object

Hook called when module is included

Parameters:

  • base (Class)

    The class including this module



61
62
63
64
# File 'lib/treaty/action/versions/dsl.rb', line 61

def self.included(base)
  base.extend(ClassMethods)
  base.include(Workspace)
end