Skip to content

Service Layer Reference

External API definitions in USL.

Service Definition

service MyService {
  action createUser(email: Email, name: String) -> User
    enforces UserPolicy.can_create
    effects { Write(User) }
    implementation {
      // action logic
    }
}

Actions

Signature

action name(param1: Type1, param2: Type2) -> ReturnType

Policy Enforcement

enforces PolicyName.rule_name(entity)

Effects

effects { Read(Entity), Write(Entity), Delete(Entity) }

Implementation

implementation {
  let entity = Entity { ... }
  store(entity)
  return entity
}

Built-in Functions

// Storage
load(Entity, id)
store(entity)
delete(entity)
loadAll(Entity)

// Utilities
generateId()
now()
emit(Event)

Error Handling

action risky() -> Result[Data, Error]
  implementation {
    match externalCall() {
      Ok(data) => Ok(data)
      Err(e) => Err(MyError.External(e))
    }
  }

Validation

implementation {
  validate {
    len(name) >= 3
    age >= 18
  }
  // ...
}

Back to Overview