[auth.ticket.create]

auth.ticket.create is a slot in the auth namespace, in Hyperlambda, the language of Magic Cloud. Issues a signed JWT carrying the supplied username, roles, and claims; typically returned after a successful login.

  • Returns: Resolves to the created JWT ticket string

Arguments

Required arguments come first, then the optional ones in the order they are declared.

Argument Type Required Description
[username] string yes Username to put in the ticket.
[roles] lambda no Roles to put in the ticket.
[roles] / any node name string no List item. Can be repeated.
[claims] lambda no Claims to put in the ticket.
[claims] / any node name string no Named map entry. Can be repeated.
[expires] DateTime no Absolute UTC expiration time.
[duration] long no Relative expiration duration in minutes.

Constraints

  • AtMostOneOf: Use either absolute [expires] or relative [duration] ([expires], [duration])

Guide: How to use [auth.ticket.create]

JSON declaration

This is the complete declaration of auth.ticket.create, as the running system describes it. It is also published as slot.json.

JSON declaration
{
  "name": "auth.ticket.create",
  "description": "Issues a signed JWT carrying the supplied username, roles, and claims; typically returned after a successful login",
  "signature": {
    "children": {
      "username": {
        "type": "string",
        "kind": "username",
        "description": "Username to put in the ticket",
        "required": true,
        "mode": "ValueOrExpression",
        "cardinality": "ExactlyOne",
        "role": "Option",
        "projection": "Value"
      },
      "roles": {
        "type": "lambda",
        "kind": "role-list",
        "description": "Roles to put in the ticket",
        "required": false,
        "mode": "StructuredArguments",
        "cardinality": "ZeroOrOne",
        "role": "StructuredObject",
        "projection": "Children",
        "children": {
          "*": {
            "type": "string",
            "kind": "role",
            "description": "List item",
            "required": false,
            "mode": "ValueOrExpression",
            "cardinality": "ZeroOrMore",
            "role": "Option",
            "projection": "Value"
          }
        }
      },
      "claims": {
        "type": "lambda",
        "description": "Claims to put in the ticket",
        "required": false,
        "mode": "StructuredArguments",
        "cardinality": "ZeroOrOne",
        "role": "DynamicMap",
        "projection": "Children",
        "children": {
          "*": {
            "type": "string",
            "kind": "jwt-claim",
            "description": "Named map entry",
            "required": false,
            "mode": "ValueOrExpression",
            "cardinality": "ZeroOrMore",
            "role": "Option",
            "projection": "Value"
          }
        }
      },
      "expires": {
        "type": "DateTime",
        "description": "Absolute UTC expiration time",
        "required": false,
        "mode": "ValueOrExpression",
        "cardinality": "ZeroOrOne",
        "role": "Option",
        "projection": "Value"
      },
      "duration": {
        "type": "long",
        "description": "Relative expiration duration in minutes",
        "required": false,
        "mode": "ValueOrExpression",
        "cardinality": "ZeroOrOne",
        "role": "Option",
        "projection": "Value"
      }
    },
    "constraints": [
      {
        "description": "Use either absolute [expires] or relative [duration]",
        "values": [
          "expires",
          "duration"
        ],
        "kind": "AtMostOneOf"
      }
    ],
    "output": {
      "mode": "Value",
      "kind": "jwt,text",
      "description": "Resolves to the created JWT ticket string"
    }
  }
}

all auth.* slots auth.ticket.get →