Loading TOC...

MarkLogic 10 Product Documentation
sec:create-amp

sec:create-amp(
   $namespace as xs:string,
   $local-name as xs:string,
   $document-uri as xs:string,
   $database as xs:anyAtomicType,
   $role-names as xs:string*
) as xs:unsignedLong

Summary

Creates a new amp in the system database for the context database.

If the tuple ($namespace, $local-name, $document-uri, $database) is not unique, an error is returned.

If one of the $role-names does not identify a role, an error is returned.

If the current user is limited to granting only his/her roles, and $role-names is not a subset of the current user's roles, then an error is returned.

Returns the amp-id.

Parameters
namespace Namespace of the function to which the amp applies.
local-name Name of function to which the amp applies.
document-uri URI of the module in which the function is located.
database The Database ID or name in which the module is located. If the module is on the filesystem (in the Modules directory), specify xs:unsignedLong(0).
role-names Roles that should be temporarily assumed while the amp is in effect.

Required Privileges

http://marklogic.com/xdmp/privileges/create-amp
and for role assignment:
http://marklogic.com/xdmp/privileges/grant-all-roles or
http://marklogic.com/xdmp/privileges/grant-my-roles

Usage Notes

This function must be executed against the Security Database.

Example


(: execute this against the security database :)
xquery version "1.0-ml";
import module namespace sec="http://marklogic.com/xdmp/security" at 
    "/MarkLogic/security.xqy";
 
sec:create-amp(
    "http://marklogic.com/my_modules/myspace",
    "my-amp",
    "/MarkLogic/MyModule.xqy",
    0,
    "Developer")
    
 (: Creates an amp for the function "my-amp" in the MyModule.xqy module
    (found on the filesystem) that temporarily grants users the "Developer" role. :)

Example


(: execute this against the security database :)
xquery version "1.0-ml";
import module namespace sec="http://marklogic.com/xdmp/security" at 
    "/MarkLogic/security.xqy";
 
sec:create-amp(
    "http://marklogic.com/my_new_modules/my_new_space",
    "my-function",
    "/MarkLogic/MyNewModule.xqy",
    "Modules",
    "Developer")
    
 (: Creates an amp for the function "my-function". This function is defined in
    the module with uri="/MarkLogic/MyNewModule.xqy", and the module is in the 
    "Modules" Database. The amp will temporarily grant callers of this function 
    the "Developer" role. :)

Stack Overflow iconStack Overflow: Get the most useful answers to questions from the MarkLogic community, or ask your own question.