{
  "metadata": {
    "toolPackage": "@microsoft/api-extractor",
    "toolVersion": "7.3.8",
    "schemaVersion": 1003,
    "oldestForwardsCompatibleVersion": 1001
  },
  "kind": "Package",
  "canonicalReference": "@loopback/authorization!",
  "docComment": "",
  "name": "@loopback/authorization",
  "members": [
    {
      "kind": "EntryPoint",
      "canonicalReference": "@loopback/authorization!",
      "name": "",
      "members": [
        {
          "kind": "Variable",
          "canonicalReference": "@loopback/authorization!ANONYMOUS:var",
          "docComment": "",
          "excerptTokens": [
            {
              "kind": "Reference",
              "text": "ANONYMOUS"
            },
            {
              "kind": "Content",
              "text": " = \"$anonymous\""
            }
          ],
          "releaseTag": "Public",
          "name": "ANONYMOUS",
          "variableTypeTokenRange": {
            "startIndex": 0,
            "endIndex": 0
          }
        },
        {
          "kind": "Variable",
          "canonicalReference": "@loopback/authorization!AUTHENTICATED:var",
          "docComment": "",
          "excerptTokens": [
            {
              "kind": "Reference",
              "text": "AUTHENTICATED"
            },
            {
              "kind": "Content",
              "text": " = \"$authenticated\""
            }
          ],
          "releaseTag": "Public",
          "name": "AUTHENTICATED",
          "variableTypeTokenRange": {
            "startIndex": 0,
            "endIndex": 0
          }
        },
        {
          "kind": "Variable",
          "canonicalReference": "@loopback/authorization!AUTHORIZATION_CLASS_KEY:var",
          "docComment": "",
          "excerptTokens": [
            {
              "kind": "Reference",
              "text": "AUTHORIZATION_CLASS_KEY"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "MetadataAccessor"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "AuthorizationMetadata"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "ClassDecorator"
            },
            {
              "kind": "Content",
              "text": ">"
            }
          ],
          "releaseTag": "Public",
          "name": "AUTHORIZATION_CLASS_KEY",
          "variableTypeTokenRange": {
            "startIndex": 2,
            "endIndex": 8
          }
        },
        {
          "kind": "Variable",
          "canonicalReference": "@loopback/authorization!AUTHORIZATION_METHOD_KEY:var",
          "docComment": "",
          "excerptTokens": [
            {
              "kind": "Reference",
              "text": "AUTHORIZATION_METHOD_KEY"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "MetadataAccessor"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "AuthorizationMetadata"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "MethodDecorator"
            },
            {
              "kind": "Content",
              "text": ">"
            }
          ],
          "releaseTag": "Public",
          "name": "AUTHORIZATION_METHOD_KEY",
          "variableTypeTokenRange": {
            "startIndex": 2,
            "endIndex": 8
          }
        },
        {
          "kind": "Namespace",
          "canonicalReference": "@loopback/authorization!AuthorizationBindings:namespace",
          "docComment": "/**\n * Binding keys used by authorization component.\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare namespace "
            },
            {
              "kind": "Reference",
              "text": "AuthorizationBindings"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "releaseTag": "Public",
          "name": "AuthorizationBindings",
          "members": [
            {
              "kind": "Variable",
              "canonicalReference": "@loopback/authorization!AuthorizationBindings.COMPONENT:var",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "COMPONENT"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "BindingKey"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "AuthorizationComponent"
                },
                {
                  "kind": "Content",
                  "text": ">"
                }
              ],
              "releaseTag": "Public",
              "name": "COMPONENT",
              "variableTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 6
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "@loopback/authorization!AuthorizationBindings.METADATA:var",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "METADATA"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "BindingKey"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "AuthorizationMetadata"
                },
                {
                  "kind": "Content",
                  "text": ">"
                }
              ],
              "releaseTag": "Public",
              "name": "METADATA",
              "variableTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 6
              }
            }
          ]
        },
        {
          "kind": "Class",
          "canonicalReference": "@loopback/authorization!AuthorizationComponent:class",
          "docComment": "",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare class "
            },
            {
              "kind": "Reference",
              "text": "AuthorizationComponent"
            },
            {
              "kind": "Content",
              "text": " implements "
            },
            {
              "kind": "Reference",
              "text": "Component"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "releaseTag": "Public",
          "name": "AuthorizationComponent",
          "members": [
            {
              "kind": "Property",
              "canonicalReference": "@loopback/authorization!AuthorizationComponent#bindings:member",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "bindings"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Content",
                  "text": "import(\"@loopback/core\")."
                },
                {
                  "kind": "Reference",
                  "text": "Binding"
                },
                {
                  "kind": "Content",
                  "text": "<import(\"@loopback/core\")."
                },
                {
                  "kind": "Reference",
                  "text": "Interceptor"
                },
                {
                  "kind": "Content",
                  "text": ">[]"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "bindings",
              "propertyTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 7
              },
              "isStatic": false
            }
          ],
          "implementsTokenRanges": [
            {
              "startIndex": 3,
              "endIndex": 5
            }
          ]
        },
        {
          "kind": "Interface",
          "canonicalReference": "@loopback/authorization!AuthorizationContext:interface",
          "docComment": "/**\n * Request context for authorization\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export interface "
            },
            {
              "kind": "Reference",
              "text": "AuthorizationContext"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "releaseTag": "Public",
          "name": "AuthorizationContext",
          "members": [
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/authorization!AuthorizationContext#invocationContext:member",
              "docComment": "/**\n * Context for the invocation\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "invocationContext"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "InvocationContext"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "invocationContext",
              "propertyTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              }
            },
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/authorization!AuthorizationContext#principals:member",
              "docComment": "/**\n * An array of principals identified for the request - it should come from authentication\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "principals"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "Principal"
                },
                {
                  "kind": "Content",
                  "text": "[]"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "principals",
              "propertyTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 4
              }
            },
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/authorization!AuthorizationContext#resource:member",
              "docComment": "/**\n * An name for the target resource to be accessed, such as `OrderController.prototype.cancelOrder`\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "resource"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "resource",
              "propertyTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              }
            },
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/authorization!AuthorizationContext#roles:member",
              "docComment": "/**\n * An array of roles for principals\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "roles"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "Role"
                },
                {
                  "kind": "Content",
                  "text": "[]"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "roles",
              "propertyTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 4
              }
            },
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/authorization!AuthorizationContext#scopes:member",
              "docComment": "/**\n * An array of scopes representing granted permissions - usually come from access tokens\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "scopes"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Content",
                  "text": "string[]"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "scopes",
              "propertyTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              }
            }
          ],
          "extendsTokenRanges": []
        },
        {
          "kind": "Enum",
          "canonicalReference": "@loopback/authorization!AuthorizationDecision:enum",
          "docComment": "/**\n * Decisions for authorization\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare enum "
            },
            {
              "kind": "Reference",
              "text": "AuthorizationDecision"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "releaseTag": "Public",
          "name": "AuthorizationDecision",
          "members": [
            {
              "kind": "EnumMember",
              "canonicalReference": "@loopback/authorization!AuthorizationDecision.ABSTAIN:member",
              "docComment": "/**\n * No decision\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "ABSTAIN"
                },
                {
                  "kind": "Content",
                  "text": " = "
                },
                {
                  "kind": "Content",
                  "text": "\"Abstain\""
                }
              ],
              "releaseTag": "Public",
              "name": "ABSTAIN",
              "initializerTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              }
            },
            {
              "kind": "EnumMember",
              "canonicalReference": "@loopback/authorization!AuthorizationDecision.ALLOW:member",
              "docComment": "/**\n * Access allowed\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "ALLOW"
                },
                {
                  "kind": "Content",
                  "text": " = "
                },
                {
                  "kind": "Content",
                  "text": "\"Allow\""
                }
              ],
              "releaseTag": "Public",
              "name": "ALLOW",
              "initializerTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              }
            },
            {
              "kind": "EnumMember",
              "canonicalReference": "@loopback/authorization!AuthorizationDecision.DENY:member",
              "docComment": "/**\n * Access denied\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "DENY"
                },
                {
                  "kind": "Content",
                  "text": " = "
                },
                {
                  "kind": "Content",
                  "text": "\"Deny\""
                }
              ],
              "releaseTag": "Public",
              "name": "DENY",
              "initializerTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              }
            }
          ]
        },
        {
          "kind": "Class",
          "canonicalReference": "@loopback/authorization!AuthorizationError:class",
          "docComment": "/**\n * The custom error class that describes the error thrown by the authorization module. Should be extracted to the common layer shared by authentication and authorization.\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare class "
            },
            {
              "kind": "Reference",
              "text": "AuthorizationError"
            },
            {
              "kind": "Content",
              "text": " extends "
            },
            {
              "kind": "Reference",
              "text": "Error"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "releaseTag": "Public",
          "name": "AuthorizationError",
          "members": [
            {
              "kind": "Property",
              "canonicalReference": "@loopback/authorization!AuthorizationError#code:member",
              "docComment": "/**\n * Machine readable code, can be understood by any clients\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "code"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "code",
              "propertyTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              },
              "isStatic": false
            },
            {
              "kind": "Property",
              "canonicalReference": "@loopback/authorization!AuthorizationError#statusCode:member",
              "docComment": "/**\n * The status code for HTTP requests\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "statusCode"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Content",
                  "text": "number"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "statusCode",
              "propertyTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              },
              "isStatic": false
            }
          ],
          "extendsTokenRange": {
            "startIndex": 3,
            "endIndex": 5
          },
          "implementsTokenRanges": []
        },
        {
          "kind": "Class",
          "canonicalReference": "@loopback/authorization!AuthorizationInterceptor:class",
          "docComment": "",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare class "
            },
            {
              "kind": "Reference",
              "text": "AuthorizationInterceptor"
            },
            {
              "kind": "Content",
              "text": " implements "
            },
            {
              "kind": "Reference",
              "text": "Provider"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "Interceptor"
            },
            {
              "kind": "Content",
              "text": "> "
            }
          ],
          "releaseTag": "Public",
          "name": "AuthorizationInterceptor",
          "members": [
            {
              "kind": "Constructor",
              "canonicalReference": "@loopback/authorization!AuthorizationInterceptor:constructor(1)",
              "docComment": "/**\n * Constructs a new instance of the `AuthorizationInterceptor` class\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "constructor("
                },
                {
                  "kind": "Reference",
                  "text": "authorizers"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "Authorizer"
                },
                {
                  "kind": "Content",
                  "text": "[]"
                },
                {
                  "kind": "Content",
                  "text": ", "
                },
                {
                  "kind": "Reference",
                  "text": "options"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Reference",
                  "text": "AuthorizationOptions"
                },
                {
                  "kind": "Content",
                  "text": ");"
                }
              ],
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "authorizers",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 5
                  }
                },
                {
                  "parameterName": "options",
                  "parameterTypeTokenRange": {
                    "startIndex": 8,
                    "endIndex": 9
                  }
                }
              ]
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/authorization!AuthorizationInterceptor#intercept:member(1)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "intercept"
                },
                {
                  "kind": "Content",
                  "text": "("
                },
                {
                  "kind": "Reference",
                  "text": "invocationCtx"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "InvocationContext"
                },
                {
                  "kind": "Content",
                  "text": ", "
                },
                {
                  "kind": "Reference",
                  "text": "next"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "Next"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Promise"
                },
                {
                  "kind": "Content",
                  "text": "<any>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 10,
                "endIndex": 12
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "invocationCtx",
                  "parameterTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 5
                  }
                },
                {
                  "parameterName": "next",
                  "parameterTypeTokenRange": {
                    "startIndex": 8,
                    "endIndex": 9
                  }
                }
              ],
              "name": "intercept"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/authorization!AuthorizationInterceptor#value:member(1)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "value"
                },
                {
                  "kind": "Content",
                  "text": "(): "
                },
                {
                  "kind": "Reference",
                  "text": "Interceptor"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [],
              "name": "value"
            }
          ],
          "implementsTokenRanges": [
            {
              "startIndex": 3,
              "endIndex": 7
            }
          ]
        },
        {
          "kind": "Interface",
          "canonicalReference": "@loopback/authorization!AuthorizationMetadata:interface",
          "docComment": "/**\n * Authorization metadata supplied via `@authorize` decorator\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export interface "
            },
            {
              "kind": "Reference",
              "text": "AuthorizationMetadata"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "releaseTag": "Public",
          "name": "AuthorizationMetadata",
          "members": [
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/authorization!AuthorizationMetadata#allowedRoles:member",
              "docComment": "/**\n * Roles that are allowed access\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "allowedRoles"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Content",
                  "text": "string[]"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "allowedRoles",
              "propertyTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              }
            },
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/authorization!AuthorizationMetadata#deniedRoles:member",
              "docComment": "/**\n * Roles that are denied access\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "deniedRoles"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Content",
                  "text": "string[]"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "deniedRoles",
              "propertyTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              }
            },
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/authorization!AuthorizationMetadata#resource:member",
              "docComment": "/**\n * Name of the resource, default to the method name\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "resource"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "resource",
              "propertyTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              }
            },
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/authorization!AuthorizationMetadata#scopes:member",
              "docComment": "/**\n * Define the access scopes\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "scopes"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Content",
                  "text": "string[]"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "scopes",
              "propertyTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              }
            },
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/authorization!AuthorizationMetadata#voters:member",
              "docComment": "/**\n * Voters that help make the authorization decision\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "voters"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Content",
                  "text": "("
                },
                {
                  "kind": "Reference",
                  "text": "Authorizer"
                },
                {
                  "kind": "Content",
                  "text": " | "
                },
                {
                  "kind": "Reference",
                  "text": "BindingAddress"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Authorizer"
                },
                {
                  "kind": "Content",
                  "text": ">)[]"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "voters",
              "propertyTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 9
              }
            }
          ],
          "extendsTokenRanges": []
        },
        {
          "kind": "Interface",
          "canonicalReference": "@loopback/authorization!AuthorizationOptions:interface",
          "docComment": "",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export interface "
            },
            {
              "kind": "Reference",
              "text": "AuthorizationOptions"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "releaseTag": "Public",
          "name": "AuthorizationOptions",
          "members": [
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/authorization!AuthorizationOptions#defaultDecision:member",
              "docComment": "/**\n * Default decision if all authorizers vote for ABSTAIN If not set, default to `AuthorizationDecision.DENY`\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "defaultDecision"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Reference",
                  "text": "AuthorizationDecision"
                },
                {
                  "kind": "Content",
                  "text": "."
                },
                {
                  "kind": "Reference",
                  "text": "DENY"
                },
                {
                  "kind": "Content",
                  "text": " | "
                },
                {
                  "kind": "Reference",
                  "text": "AuthorizationDecision"
                },
                {
                  "kind": "Content",
                  "text": "."
                },
                {
                  "kind": "Reference",
                  "text": "ALLOW"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "defaultDecision",
              "propertyTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 9
              }
            },
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/authorization!AuthorizationOptions#precedence:member",
              "docComment": "/**\n * Controls if Allow/Deny vote takes precedence and override other votes. If not set, default to `AuthorizationDecision.DENY`.\n *\n * Once a vote matches the `precedence`, it becomes the final decision. The rest of votes will be skipped.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "precedence"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Reference",
                  "text": "AuthorizationDecision"
                },
                {
                  "kind": "Content",
                  "text": "."
                },
                {
                  "kind": "Reference",
                  "text": "DENY"
                },
                {
                  "kind": "Content",
                  "text": " | "
                },
                {
                  "kind": "Reference",
                  "text": "AuthorizationDecision"
                },
                {
                  "kind": "Content",
                  "text": "."
                },
                {
                  "kind": "Reference",
                  "text": "ALLOW"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "precedence",
              "propertyTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 9
              }
            }
          ],
          "extendsTokenRanges": []
        },
        {
          "kind": "Interface",
          "canonicalReference": "@loopback/authorization!AuthorizationRequest:interface",
          "docComment": "/**\n * Inspired by https://github.com/casbin/node-casbin\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export interface "
            },
            {
              "kind": "Reference",
              "text": "AuthorizationRequest"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "releaseTag": "Public",
          "name": "AuthorizationRequest",
          "members": [
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/authorization!AuthorizationRequest#action:member",
              "docComment": "/**\n * The operation that the requestor performs on the resource.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "action"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "action",
              "propertyTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              }
            },
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/authorization!AuthorizationRequest#domain:member",
              "docComment": "/**\n * The domain (realm/tenant)\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "domain"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "domain",
              "propertyTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              }
            },
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/authorization!AuthorizationRequest#object:member",
              "docComment": "/**\n * The resource that is going to be accessed.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "object"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "object",
              "propertyTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              }
            },
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/authorization!AuthorizationRequest#subject:member",
              "docComment": "/**\n * The requestor that wants to access a resource.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "subject"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "subject",
              "propertyTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              }
            }
          ],
          "extendsTokenRanges": []
        },
        {
          "kind": "Namespace",
          "canonicalReference": "@loopback/authorization!AuthorizationTags:namespace",
          "docComment": "/**\n * Binding tags used by authorization component\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare namespace "
            },
            {
              "kind": "Reference",
              "text": "AuthorizationTags"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "releaseTag": "Public",
          "name": "AuthorizationTags",
          "members": [
            {
              "kind": "Variable",
              "canonicalReference": "@loopback/authorization!AuthorizationTags.AUTHORIZER:var",
              "docComment": "/**\n * A tag for authorizers\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "AUTHORIZER"
                },
                {
                  "kind": "Content",
                  "text": " = \"authorizer\""
                }
              ],
              "releaseTag": "Public",
              "name": "AUTHORIZER",
              "variableTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            }
          ]
        },
        {
          "kind": "Function",
          "canonicalReference": "@loopback/authorization!authorize:function(1)",
          "docComment": "/**\n * Decorator `@authorize` to mark methods that require authorization\n *\n * @param  - spec Authorization metadata\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function "
            },
            {
              "kind": "Reference",
              "text": "authorize"
            },
            {
              "kind": "Content",
              "text": "("
            },
            {
              "kind": "Reference",
              "text": "spec"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "AuthorizationMetadata"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Content",
              "text": "("
            },
            {
              "kind": "Reference",
              "text": "target"
            },
            {
              "kind": "Content",
              "text": ": any, "
            },
            {
              "kind": "Reference",
              "text": "method"
            },
            {
              "kind": "Content",
              "text": "?: string | undefined, "
            },
            {
              "kind": "Reference",
              "text": "methodDescriptor"
            },
            {
              "kind": "Content",
              "text": "?: "
            },
            {
              "kind": "Reference",
              "text": "TypedPropertyDescriptor"
            },
            {
              "kind": "Content",
              "text": "<any> | undefined) => any"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 7,
            "endIndex": 16
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "spec",
              "parameterTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 6
              }
            }
          ],
          "name": "authorize"
        },
        {
          "kind": "Namespace",
          "canonicalReference": "@loopback/authorization!authorize:namespace",
          "docComment": "",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare namespace "
            },
            {
              "kind": "Reference",
              "text": "authorize"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "releaseTag": "Public",
          "name": "authorize",
          "members": [
            {
              "kind": "Variable",
              "canonicalReference": "@loopback/authorization!authorize.allow:var",
              "docComment": "/**\n * Shortcut to configure allowed roles\n *\n * @param  - roles\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "allow"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Content",
                  "text": "(..."
                },
                {
                  "kind": "Reference",
                  "text": "roles"
                },
                {
                  "kind": "Content",
                  "text": ": string[]) => ("
                },
                {
                  "kind": "Reference",
                  "text": "target"
                },
                {
                  "kind": "Content",
                  "text": ": any, "
                },
                {
                  "kind": "Reference",
                  "text": "method"
                },
                {
                  "kind": "Content",
                  "text": "?: string | undefined, "
                },
                {
                  "kind": "Reference",
                  "text": "methodDescriptor"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Reference",
                  "text": "TypedPropertyDescriptor"
                },
                {
                  "kind": "Content",
                  "text": "<any> | undefined) => any"
                }
              ],
              "releaseTag": "Public",
              "name": "allow",
              "variableTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 13
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "@loopback/authorization!authorize.allowAll:var",
              "docComment": "/**\n * Allows all\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "allowAll"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Content",
                  "text": "() => ("
                },
                {
                  "kind": "Reference",
                  "text": "target"
                },
                {
                  "kind": "Content",
                  "text": ": any, "
                },
                {
                  "kind": "Reference",
                  "text": "method"
                },
                {
                  "kind": "Content",
                  "text": "?: string | undefined, "
                },
                {
                  "kind": "Reference",
                  "text": "methodDescriptor"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Reference",
                  "text": "TypedPropertyDescriptor"
                },
                {
                  "kind": "Content",
                  "text": "<any> | undefined) => any"
                }
              ],
              "releaseTag": "Public",
              "name": "allowAll",
              "variableTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 11
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "@loopback/authorization!authorize.allowAllExcept:var",
              "docComment": "/**\n * Allow all but the given roles\n *\n * @param  - roles\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "allowAllExcept"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Content",
                  "text": "(..."
                },
                {
                  "kind": "Reference",
                  "text": "roles"
                },
                {
                  "kind": "Content",
                  "text": ": string[]) => ("
                },
                {
                  "kind": "Reference",
                  "text": "target"
                },
                {
                  "kind": "Content",
                  "text": ": any, "
                },
                {
                  "kind": "Reference",
                  "text": "method"
                },
                {
                  "kind": "Content",
                  "text": "?: string | undefined, "
                },
                {
                  "kind": "Reference",
                  "text": "methodDescriptor"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Reference",
                  "text": "TypedPropertyDescriptor"
                },
                {
                  "kind": "Content",
                  "text": "<any> | undefined) => any"
                }
              ],
              "releaseTag": "Public",
              "name": "allowAllExcept",
              "variableTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 13
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "@loopback/authorization!authorize.allowAuthenticated:var",
              "docComment": "/**\n * Allow authenticated users\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "allowAuthenticated"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Content",
                  "text": "() => ("
                },
                {
                  "kind": "Reference",
                  "text": "target"
                },
                {
                  "kind": "Content",
                  "text": ": any, "
                },
                {
                  "kind": "Reference",
                  "text": "method"
                },
                {
                  "kind": "Content",
                  "text": "?: string | undefined, "
                },
                {
                  "kind": "Reference",
                  "text": "methodDescriptor"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Reference",
                  "text": "TypedPropertyDescriptor"
                },
                {
                  "kind": "Content",
                  "text": "<any> | undefined) => any"
                }
              ],
              "releaseTag": "Public",
              "name": "allowAuthenticated",
              "variableTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 11
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "@loopback/authorization!authorize.deny:var",
              "docComment": "/**\n * Shortcut to configure denied roles\n *\n * @param  - roles\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "deny"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Content",
                  "text": "(..."
                },
                {
                  "kind": "Reference",
                  "text": "roles"
                },
                {
                  "kind": "Content",
                  "text": ": string[]) => ("
                },
                {
                  "kind": "Reference",
                  "text": "target"
                },
                {
                  "kind": "Content",
                  "text": ": any, "
                },
                {
                  "kind": "Reference",
                  "text": "method"
                },
                {
                  "kind": "Content",
                  "text": "?: string | undefined, "
                },
                {
                  "kind": "Reference",
                  "text": "methodDescriptor"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Reference",
                  "text": "TypedPropertyDescriptor"
                },
                {
                  "kind": "Content",
                  "text": "<any> | undefined) => any"
                }
              ],
              "releaseTag": "Public",
              "name": "deny",
              "variableTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 13
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "@loopback/authorization!authorize.denyAll:var",
              "docComment": "/**\n * Deny all\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "denyAll"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Content",
                  "text": "() => ("
                },
                {
                  "kind": "Reference",
                  "text": "target"
                },
                {
                  "kind": "Content",
                  "text": ": any, "
                },
                {
                  "kind": "Reference",
                  "text": "method"
                },
                {
                  "kind": "Content",
                  "text": "?: string | undefined, "
                },
                {
                  "kind": "Reference",
                  "text": "methodDescriptor"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Reference",
                  "text": "TypedPropertyDescriptor"
                },
                {
                  "kind": "Content",
                  "text": "<any> | undefined) => any"
                }
              ],
              "releaseTag": "Public",
              "name": "denyAll",
              "variableTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 11
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "@loopback/authorization!authorize.denyAllExcept:var",
              "docComment": "/**\n * Deny all but the given roles\n *\n * @param  - roles\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "denyAllExcept"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Content",
                  "text": "(..."
                },
                {
                  "kind": "Reference",
                  "text": "roles"
                },
                {
                  "kind": "Content",
                  "text": ": string[]) => ("
                },
                {
                  "kind": "Reference",
                  "text": "target"
                },
                {
                  "kind": "Content",
                  "text": ": any, "
                },
                {
                  "kind": "Reference",
                  "text": "method"
                },
                {
                  "kind": "Content",
                  "text": "?: string | undefined, "
                },
                {
                  "kind": "Reference",
                  "text": "methodDescriptor"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Reference",
                  "text": "TypedPropertyDescriptor"
                },
                {
                  "kind": "Content",
                  "text": "<any> | undefined) => any"
                }
              ],
              "releaseTag": "Public",
              "name": "denyAllExcept",
              "variableTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 13
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "@loopback/authorization!authorize.denyUnauthenticated:var",
              "docComment": "/**\n * Deny unauthenticated users\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "denyUnauthenticated"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Content",
                  "text": "() => ("
                },
                {
                  "kind": "Reference",
                  "text": "target"
                },
                {
                  "kind": "Content",
                  "text": ": any, "
                },
                {
                  "kind": "Reference",
                  "text": "method"
                },
                {
                  "kind": "Content",
                  "text": "?: string | undefined, "
                },
                {
                  "kind": "Reference",
                  "text": "methodDescriptor"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Reference",
                  "text": "TypedPropertyDescriptor"
                },
                {
                  "kind": "Content",
                  "text": "<any> | undefined) => any"
                }
              ],
              "releaseTag": "Public",
              "name": "denyUnauthenticated",
              "variableTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 11
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "@loopback/authorization!authorize.scope:var",
              "docComment": "/**\n * Shortcut to specify access scopes\n *\n * @param  - scopes\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "scope"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Content",
                  "text": "(..."
                },
                {
                  "kind": "Reference",
                  "text": "scopes"
                },
                {
                  "kind": "Content",
                  "text": ": string[]) => ("
                },
                {
                  "kind": "Reference",
                  "text": "target"
                },
                {
                  "kind": "Content",
                  "text": ": any, "
                },
                {
                  "kind": "Reference",
                  "text": "method"
                },
                {
                  "kind": "Content",
                  "text": "?: string | undefined, "
                },
                {
                  "kind": "Reference",
                  "text": "methodDescriptor"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Reference",
                  "text": "TypedPropertyDescriptor"
                },
                {
                  "kind": "Content",
                  "text": "<any> | undefined) => any"
                }
              ],
              "releaseTag": "Public",
              "name": "scope",
              "variableTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 13
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "@loopback/authorization!authorize.vote:var",
              "docComment": "/**\n * Shortcut to configure voters\n *\n * @param  - voters\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "vote"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Content",
                  "text": "(..."
                },
                {
                  "kind": "Reference",
                  "text": "voters"
                },
                {
                  "kind": "Content",
                  "text": ": (string | "
                },
                {
                  "kind": "Reference",
                  "text": "Authorizer"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "AuthorizationMetadata"
                },
                {
                  "kind": "Content",
                  "text": "> | import(\"@loopback/context\")."
                },
                {
                  "kind": "Reference",
                  "text": "BindingKey"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Authorizer"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "AuthorizationMetadata"
                },
                {
                  "kind": "Content",
                  "text": ">>)[]) => ("
                },
                {
                  "kind": "Reference",
                  "text": "target"
                },
                {
                  "kind": "Content",
                  "text": ": any, "
                },
                {
                  "kind": "Reference",
                  "text": "method"
                },
                {
                  "kind": "Content",
                  "text": "?: string | undefined, "
                },
                {
                  "kind": "Reference",
                  "text": "methodDescriptor"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Reference",
                  "text": "TypedPropertyDescriptor"
                },
                {
                  "kind": "Content",
                  "text": "<any> | undefined) => any"
                }
              ],
              "releaseTag": "Public",
              "name": "vote",
              "variableTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 23
              }
            }
          ]
        },
        {
          "kind": "Class",
          "canonicalReference": "@loopback/authorization!AuthorizeMethodDecoratorFactory:class",
          "docComment": "",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare class "
            },
            {
              "kind": "Reference",
              "text": "AuthorizeMethodDecoratorFactory"
            },
            {
              "kind": "Content",
              "text": " extends "
            },
            {
              "kind": "Reference",
              "text": "MethodDecoratorFactory"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "AuthorizationMetadata"
            },
            {
              "kind": "Content",
              "text": "> "
            }
          ],
          "releaseTag": "Public",
          "name": "AuthorizeMethodDecoratorFactory",
          "members": [
            {
              "kind": "Method",
              "canonicalReference": "@loopback/authorization!AuthorizeMethodDecoratorFactory#mergeWithOwn:member(1)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected "
                },
                {
                  "kind": "Reference",
                  "text": "mergeWithOwn"
                },
                {
                  "kind": "Content",
                  "text": "("
                },
                {
                  "kind": "Reference",
                  "text": "ownMetadata"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "MetadataMap"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "AuthorizationMetadata"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ", "
                },
                {
                  "kind": "Reference",
                  "text": "target"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "Object"
                },
                {
                  "kind": "Content",
                  "text": ", "
                },
                {
                  "kind": "Reference",
                  "text": "methodName"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ", "
                },
                {
                  "kind": "Reference",
                  "text": "methodDescriptor"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Reference",
                  "text": "TypedPropertyDescriptor"
                },
                {
                  "kind": "Content",
                  "text": "<any> | number"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "MetadataMap"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "AuthorizationMetadata"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 23,
                "endIndex": 27
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "ownMetadata",
                  "parameterTypeTokenRange": {
                    "startIndex": 5,
                    "endIndex": 9
                  }
                },
                {
                  "parameterName": "target",
                  "parameterTypeTokenRange": {
                    "startIndex": 12,
                    "endIndex": 13
                  }
                },
                {
                  "parameterName": "methodName",
                  "parameterTypeTokenRange": {
                    "startIndex": 16,
                    "endIndex": 17
                  }
                },
                {
                  "parameterName": "methodDescriptor",
                  "parameterTypeTokenRange": {
                    "startIndex": 20,
                    "endIndex": 22
                  }
                }
              ],
              "name": "mergeWithOwn"
            }
          ],
          "extendsTokenRange": {
            "startIndex": 3,
            "endIndex": 7
          },
          "implementsTokenRanges": []
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "@loopback/authorization!Authorizer:type",
          "docComment": "/**\n * A function to decide if access to the target should be allowed or denied\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type "
            },
            {
              "kind": "Reference",
              "text": "Authorizer"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": " extends "
            },
            {
              "kind": "Reference",
              "text": "AuthorizationMetadata"
            },
            {
              "kind": "Content",
              "text": " "
            },
            {
              "kind": "Content",
              "text": "= "
            },
            {
              "kind": "Reference",
              "text": "AuthorizationMetadata"
            },
            {
              "kind": "Content",
              "text": "> = \n"
            },
            {
              "kind": "Content",
              "text": "("
            },
            {
              "kind": "Reference",
              "text": "context"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "AuthorizationContext"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "metadata"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": ") => "
            },
            {
              "kind": "Reference",
              "text": "Promise"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "AuthorizationDecision"
            },
            {
              "kind": "Content",
              "text": ">"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "Authorizer",
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 5,
                "endIndex": 7
              },
              "defaultTypeTokenRange": {
                "startIndex": 8,
                "endIndex": 9
              }
            }
          ],
          "typeTokenRange": {
            "startIndex": 10,
            "endIndex": 23
          }
        },
        {
          "kind": "Interface",
          "canonicalReference": "@loopback/authorization!Enforcer:interface",
          "docComment": "/**\n * An enforcer of authorization policies\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export interface "
            },
            {
              "kind": "Reference",
              "text": "Enforcer"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "releaseTag": "Public",
          "name": "Enforcer",
          "members": [
            {
              "kind": "MethodSignature",
              "canonicalReference": "@loopback/authorization!Enforcer#buildRequest:member(1)",
              "docComment": "/**\n * Extract the request from authorization context\n *\n * @param  - authorizationContext\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "buildRequest"
                },
                {
                  "kind": "Content",
                  "text": "("
                },
                {
                  "kind": "Reference",
                  "text": "authorizationContext"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "AuthorizationContext"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Promise"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "AuthorizationRequest"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "returnTypeTokenRange": {
                "startIndex": 6,
                "endIndex": 10
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "authorizationContext",
                  "parameterTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 5
                  }
                }
              ],
              "name": "buildRequest"
            },
            {
              "kind": "MethodSignature",
              "canonicalReference": "@loopback/authorization!Enforcer#enforce:member(1)",
              "docComment": "/**\n * Decide if the request can be granted access\n *\n * @param  - request\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "enforce"
                },
                {
                  "kind": "Content",
                  "text": "("
                },
                {
                  "kind": "Reference",
                  "text": "request"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "AuthorizationRequest"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Promise"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "AuthorizationDecision"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "returnTypeTokenRange": {
                "startIndex": 6,
                "endIndex": 10
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "request",
                  "parameterTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 5
                  }
                }
              ],
              "name": "enforce"
            }
          ],
          "extendsTokenRanges": []
        },
        {
          "kind": "Variable",
          "canonicalReference": "@loopback/authorization!EVERYONE:var",
          "docComment": "/**\n * Built-in roles\n */\n",
          "excerptTokens": [
            {
              "kind": "Reference",
              "text": "EVERYONE"
            },
            {
              "kind": "Content",
              "text": " = \"$everyone\""
            }
          ],
          "releaseTag": "Public",
          "name": "EVERYONE",
          "variableTypeTokenRange": {
            "startIndex": 0,
            "endIndex": 0
          }
        },
        {
          "kind": "Function",
          "canonicalReference": "@loopback/authorization!getAuthorizationMetadata:function(1)",
          "docComment": "/**\n * Fetch authorization metadata stored by `@authorize` decorator.\n *\n * @param  - target Target object/class\n *\n * @param  - methodName Target method\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function "
            },
            {
              "kind": "Reference",
              "text": "getAuthorizationMetadata"
            },
            {
              "kind": "Content",
              "text": "("
            },
            {
              "kind": "Reference",
              "text": "target"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Content",
              "text": "object"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "methodName"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Content",
              "text": "string"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "AuthorizationMetadata"
            },
            {
              "kind": "Content",
              "text": " | undefined"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 11,
            "endIndex": 13
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "target",
              "parameterTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 6
              }
            },
            {
              "parameterName": "methodName",
              "parameterTypeTokenRange": {
                "startIndex": 9,
                "endIndex": 10
              }
            }
          ],
          "name": "getAuthorizationMetadata"
        },
        {
          "kind": "Interface",
          "canonicalReference": "@loopback/authorization!Permission:interface",
          "docComment": "/**\n * `Permission` defines an action/access against a protected resource. It's the `what` for authorization.\n *\n * There are three levels of permissions\n *\n * - Resource level (Order, User) - Instance level (Order-0001, User-1001) - Property level (User-0001.email)\n *\n * @example\n *\n * - create a user - read email of a user - change email of a user - cancel an order\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export interface "
            },
            {
              "kind": "Reference",
              "text": "Permission"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "releaseTag": "Public",
          "name": "Permission",
          "members": [
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/authorization!Permission#action:member",
              "docComment": "/**\n * Action or access of a protected resources, such as `read`, `create`, `update`, or `delete`\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "action"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "action",
              "propertyTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              }
            },
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/authorization!Permission#resourceInstance:member",
              "docComment": "/**\n * Identity of a protected resource instance, such as `order-0001` or `customer-101`\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "resourceInstance"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "resourceInstance",
              "propertyTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              }
            },
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/authorization!Permission#resourceProperty:member",
              "docComment": "/**\n * Property of a protected resource type/instance, such as `email`\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "resourceProperty"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "resourceProperty",
              "propertyTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              }
            },
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/authorization!Permission#resourceType:member",
              "docComment": "/**\n * Type of protected resource, such as `Order` or `Customer`\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "resourceType"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "resourceType",
              "propertyTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              }
            }
          ],
          "extendsTokenRanges": []
        },
        {
          "kind": "Interface",
          "canonicalReference": "@loopback/authorization!Principal:interface",
          "docComment": "/**\n * Represent a user, an application, or a device\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export interface "
            },
            {
              "kind": "Reference",
              "text": "Principal"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "releaseTag": "Public",
          "name": "Principal",
          "members": [
            {
              "kind": "IndexSignature",
              "canonicalReference": "@loopback/authorization!Principal:index(1)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "["
                },
                {
                  "kind": "Reference",
                  "text": "attribute"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": "]: "
                },
                {
                  "kind": "Content",
                  "text": "any"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "returnTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 6
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "attribute",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 4
                  }
                }
              ]
            },
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/authorization!Principal#name:member",
              "docComment": "/**\n * Name/id\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "name"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "name",
              "propertyTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              }
            },
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/authorization!Principal#type:member",
              "docComment": "/**\n * Type - user/application/device etc\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "type"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "type",
              "propertyTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              }
            }
          ],
          "extendsTokenRanges": []
        },
        {
          "kind": "Interface",
          "canonicalReference": "@loopback/authorization!Role:interface",
          "docComment": "/**\n * Represent a group of principals that have the same authority. There are two types of roles:\n *\n * - explicit - implicit\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export interface "
            },
            {
              "kind": "Reference",
              "text": "Role"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "releaseTag": "Public",
          "name": "Role",
          "members": [
            {
              "kind": "IndexSignature",
              "canonicalReference": "@loopback/authorization!Role:index(1)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "["
                },
                {
                  "kind": "Reference",
                  "text": "attribute"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": "]: "
                },
                {
                  "kind": "Content",
                  "text": "any"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "returnTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 6
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "attribute",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 4
                  }
                }
              ]
            },
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/authorization!Role#name:member",
              "docComment": "/**\n * Name/id\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "name"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "name",
              "propertyTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              }
            }
          ],
          "extendsTokenRanges": []
        },
        {
          "kind": "Interface",
          "canonicalReference": "@loopback/authorization!Subject:interface",
          "docComment": "/**\n * `Subject` represents both security state and operations for a single application user.\n *\n * Such operations include: - authentication (login) - authorization (access control) - session access - logout\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export interface "
            },
            {
              "kind": "Reference",
              "text": "Subject"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "releaseTag": "Public",
          "name": "Subject",
          "members": [
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/authorization!Subject#principals:member",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "principals"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "Principal"
                },
                {
                  "kind": "Content",
                  "text": "[]"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "principals",
              "propertyTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 4
              }
            },
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/authorization!Subject#roles:member",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "roles"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "Role"
                },
                {
                  "kind": "Content",
                  "text": "[]"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "roles",
              "propertyTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 4
              }
            },
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/authorization!Subject#scopes:member",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "scopes"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Content",
                  "text": "string[]"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "scopes",
              "propertyTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              }
            }
          ],
          "extendsTokenRanges": []
        },
        {
          "kind": "Variable",
          "canonicalReference": "@loopback/authorization!UNAUTHENTICATED:var",
          "docComment": "",
          "excerptTokens": [
            {
              "kind": "Reference",
              "text": "UNAUTHENTICATED"
            },
            {
              "kind": "Content",
              "text": " = \"$unauthenticated\""
            }
          ],
          "releaseTag": "Public",
          "name": "UNAUTHENTICATED",
          "variableTypeTokenRange": {
            "startIndex": 0,
            "endIndex": 0
          }
        }
      ]
    }
  ]
}
