description: >
    Implement to create LDAP name service daemon configuration file.

methods:
    - name: CreateConfig
      description: >
          This method always creates a new config file as well as a D-Bus object
          to represent the config, it will destroy an existing one, if found. In
          other words, this is not an update API. Individual properties can be
          updated as per the
          xyz/openbmc_project/User/Ldap/Config.interface.yaml.
      parameters:
          - name: LDAPServerURI
            type: string
            description: >
                Specifies the LDAP URI of the server to connect to.
          - name: LDAPBindDN
            type: string
            description: >
                Specifies the distinguished name with which to bind to the
                directory server for lookups.
          - name: LDAPBaseDN
            type: string
            description: >
                Specifies the base distinguished name to use as search base.
          - name: LDAPBINDDNpassword
            type: string
            description: >
                Specifies the clear text credentials with which to bind. This
                option is only applicable when used with LDAPBindDN.
          - name: LDAPSearchScope
            type: enum[self.SearchScope]
            description: >
                Specifies the search scope:subtree, one level or base object.
          - name: LDAPType
            type: enum[self.Type]
            description: >
                Specifies the the configured server is ActiveDirectory(AD) or
                OpenLdap. It's just an indication for the LDAP stack running on
                the BMC, in case the app is implemented in such a way that it
                has to react differently for AD vs openldap.
          - name: GroupNameAttribute
            type: string
            description: >
                Specifies the attribute name that contains the name of the Group
                in the LDAP server.
          - name: UsernameAttribute
            type: string
            description: >
                Specifies the attribute name that contains the username in the
                LDAP server.
      returns:
          - name: path
            type: string
            description: >
                The object path of the D-Bus object representing the config.

      errors:
          - xyz.openbmc_project.Common.Error.InternalFailure
          - xyz.openbmc_project.Common.Error.InvalidArgument
          - xyz.openbmc_project.Common.Error.NoCACertificate

enumerations:
    - name: SearchScope
      description: >
          Possible base scopes.
      values:
          - name: sub
          - name: one
          - name: base

    - name: Type
      description: >
          Possible LDAP Types.
      values:
          - name: ActiveDirectory
          - name: OpenLdap
