# `Lather.Server.DSL`
[🔗](https://github.com/awksedgreep/lather/blob/v1.0.49/lib/lather/server/dsl.ex#L1)

Domain Specific Language for defining SOAP operations and types.

Provides convenient macros for defining SOAP service operations,
parameter validation, and type definitions.

# `basic_auth`
*macro* 

Configures Basic Authentication.

# `custom_auth`
*macro* 

Configures custom authentication.

# `description`
*macro* 

Sets the description for the current operation or type.
Works in both soap_operation and soap_type blocks.

# `element`
*macro* 

Defines an element within a complex type.

# `input`
*macro* 

Defines input parameters for the current operation.

# `output`
*macro* 

Defines output parameters for the current operation.

# `parameter`
*macro* 

Defines a parameter within an input or output block.

# `soap_action`
*macro* 

Sets the SOAPAction for the current operation.

# `soap_auth`
*macro* 

Defines authentication requirements for operations.

## Example

    soap_auth do
      basic_auth realm: "SOAP Service"
      # or
      ws_security required: true
      # or
      custom_auth handler: MyApp.CustomAuth
    end

# `soap_operation`
*macro* 

Defines a SOAP operation with metadata for WSDL generation.

## Example

    soap_operation "GetUser" do
      description "Retrieves a user by ID"

      input do
        parameter "userId", :string, required: true, description: "User identifier"
        parameter "includeDetails", :boolean, required: false, default: false
      end

      output do
        parameter "user", "User", description: "User information"
      end

      soap_action "http://example.com/GetUser"
    end

    def get_user(params) do
      # Implementation
    end

# `soap_type`
*macro* 

Defines a complex type for use in operations.

## Example

    soap_type "User" do
      description "User information"

      element "id", :string, required: true
      element "name", :string, required: true
      element "email", :string, required: false
      element "created_at", :dateTime, required: true
    end

# `type_description`
*macro* 

Sets the description for the current type (deprecated, use description/1).

# `ws_security`
*macro* 

Configures WS-Security authentication.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
