description: >
    An example interface originally described as part of the announcement of new
    sd-bus interfaces at:
        http://0pointer.net/blog/the-new-sd-bus-api-of-systemd.html
methods:
    - name: Multiply
      description: >
          Multiplies two integers 'x' and 'y' and returns the result.
      parameters:
          - name: x
            type: int64
            description: >
                The first integer to multiply.
          - name: y
            type: int64
            description: >
                The second integer to multiply.
            default: 1
      returns:
          - name: z
            type: int64
            description: >
                The result of (x*y).
    - name: Divide
      description: >
          Divides two integers 'x' and 'y' and returns the result.
      parameters:
          - name: x
            type: int64
            description: >
                The first integer to divide.
          - name: y
            type: int64
            description: >
                The second integer to divide.
            default: 1
      returns:
          - name: z
            type: int64
            description: >
                The result of (x/y).
      errors:
          - self.DivisionByZero
    - name: Clear
      flags:
          - unprivileged
          - no_reply
      description: >
          Reset the LastResult property to zero.
properties:
    - name: LastResult
      type: int64
      default: 0
      description: >
          The result of the most recent calculation.
    - name: Status
      type: enum[self.State]
      default: Success
      flags:
          - const
      description: >
          The current state of the Calculator.
    - name: Owner
      type: string
      description: >
          The name of the owner of the Calculator.
      errors:
          - self.PermissionDenied
signals:
    - name: Cleared
      description: >
          Signal indicating the LastReset property has been set to zero by the
          'Clear' method.
      properties:
          - type: int64
            description: >
                Value of LastReset prior to Clear.
enumerations:
    - name: State
      description: >
          Identifies if the service has encountered an error or not.
      values:
          - name: Success
            description: >
                No error has been encountered.
          - name: Error
            description: >
                The service has encountered an error.

paths:
    - instance: /net/poettering/calculator
      description: Expected path of the instance.

service_names:
    - default: net.poettering.Calculator
      description: Expected service name for the instance.
