draft:
  /name: Awesome Project
  /description: This is an awesome project.

  account:
    ~account-roles:
      ADMIN: admin
      READ: read
      CREATE: create
      UPDATE: update

    +timestamps:
      createdAt[date]:
        - required
      updatedAt[date]:
        - required(false)

    +account(timestamps):
      /schema: accountss
      _id[string]:
        - required(false)
      name[string]:
        - required
        - notEmpty
      passwordHash[string]:
        - notEmpty
      email[string]:
        - unique
        - notEmpty
        - regex(/.+@.+\..+/)
      roles[account-roles]:
        - array

    +account-response-dto(account):
      $remove:
        - _id
        - passwordHash
      $pick(account):
        - _id > id

    /http: { url: /account }
    signup:
      /http:
        {
          method: post,
          url: "/signup/{id}",
          params: { id: email },
          noBody: true,
        }
      input:
        +create-account-dto:
          $pick(account):
            - name
            - email
            - passwordHash > password
      output:
        +create-account-response-dto:
          success[boolean]:
            - required
          account[account-response-dto]:
            - required(false)
    signout:
      /http: { method: post, url: /signout }
      output: account-response-dto

  vehicle:
    +vehicle(timestamps):
      /schema: vehicles
      owner[&account]:
        - required
      make[string]:
        - required
        - notEmpty
      model[string]:
        - required
        - notEmpty
      year[int]:
        - required
        - min(1900)
        - max(2020)
    +vehicle-response-dto(vehicle):
      ownerData[account-response-dto]:
        - array
