{
  "title": "Table 1140 OAuth 2.0 Setup",
  "url": "https://jonas-paprotka.de/ref/table/1140-oauth-2-0-setup/",
  "author": "Jonas Paprotka",
  "license": "Content © 2026 Jonas Paprotka. Quote freely with attribution and a link.",
  "subject": "Microsoft Dynamics 365 Business Central",
  "checked": "2026-09-20",
  "source": {
    "feed": "https://dynamicssmb2.pkgs.visualstudio.com/DynamicsBCPublicFeeds/_packaging/MSSymbols/nuget/v3/index.json",
    "package": "Microsoft.BaseApplication.symbols.437dbf0e-84ff-417a-965d-ed2bb9650972",
    "build": "28.5.54151.54365",
    "code": {
      "29": {
        "url": "https://jonas-paprotka.de/ref/table/1140-oauth-2-0-setup/source/29/",
        "repo": "https://github.com/microsoft/BCApps",
        "branch": "releases/29.x",
        "commit": "a66254c3b8b5bb1cea290dc8f9d097aec4381153",
        "path": "src/Layers/W1/BaseApp/System/OAuth/OAuth20Setup.Table.al",
        "license": "MIT"
      }
    },
    "note": "Presence per major, highest build of each; 17 is the oldest major on the feed. Local procedures are not listed."
  },
  "object": {
    "type": "table",
    "id": 1140,
    "name": "OAuth 2.0 Setup",
    "app": "Base Application",
    "appByVersion": [
      {
        "app": "Base Application",
        "from": 17
      }
    ],
    "nameByVersion": [
      {
        "name": "OAuth 2.0 Setup",
        "from": 17
      }
    ],
    "namespace": "System.Security.Authentication",
    "versions": "17-28",
    "majors": [
      17,
      18,
      19,
      20,
      21,
      22,
      23,
      24,
      25,
      26,
      27,
      28
    ],
    "extends": null,
    "sourceTable": null,
    "sourceFile": "System/OAuth/OAuth20Setup.Table.al",
    "obsolete": null,
    "obsoleteSeenFrom": null,
    "byVersion": {
      "17": {
        "app": "base-application",
        "name": "OAuth 2.0 Setup",
        "ns": "",
        "obsolete": null,
        "target": "",
        "sourceTable": "",
        "counts": {
          "fields": 20,
          "keys": 1,
          "methods": 14,
          "values": 0
        },
        "stub": false
      },
      "18": {
        "app": "base-application",
        "name": "OAuth 2.0 Setup",
        "ns": "",
        "obsolete": null,
        "target": "",
        "sourceTable": "",
        "counts": {
          "fields": 20,
          "keys": 1,
          "methods": 14,
          "values": 0
        },
        "stub": false
      },
      "19": {
        "app": "base-application",
        "name": "OAuth 2.0 Setup",
        "ns": "",
        "obsolete": null,
        "target": "",
        "sourceTable": "",
        "counts": {
          "fields": 22,
          "keys": 1,
          "methods": 17,
          "values": 0
        },
        "stub": false
      },
      "20": {
        "app": "base-application",
        "name": "OAuth 2.0 Setup",
        "ns": "",
        "obsolete": null,
        "target": "",
        "sourceTable": "",
        "counts": {
          "fields": 22,
          "keys": 1,
          "methods": 17,
          "values": 0
        },
        "stub": false
      },
      "21": {
        "app": "base-application",
        "name": "OAuth 2.0 Setup",
        "ns": "",
        "obsolete": null,
        "target": "",
        "sourceTable": "",
        "counts": {
          "fields": 22,
          "keys": 1,
          "methods": 17,
          "values": 0
        },
        "stub": false
      },
      "22": {
        "app": "base-application",
        "name": "OAuth 2.0 Setup",
        "ns": "",
        "obsolete": null,
        "target": "",
        "sourceTable": "",
        "counts": {
          "fields": 22,
          "keys": 1,
          "methods": 17,
          "values": 0
        },
        "stub": false
      },
      "23": {
        "app": "base-application",
        "name": "OAuth 2.0 Setup",
        "ns": "System.Security.Authentication",
        "obsolete": null,
        "target": "",
        "sourceTable": "",
        "counts": {
          "fields": 25,
          "keys": 1,
          "methods": 17,
          "values": 0
        },
        "stub": false
      },
      "24": {
        "app": "base-application",
        "name": "OAuth 2.0 Setup",
        "ns": "System.Security.Authentication",
        "obsolete": null,
        "target": "",
        "sourceTable": "",
        "counts": {
          "fields": 25,
          "keys": 1,
          "methods": 19,
          "values": 0
        },
        "stub": false
      },
      "25": {
        "app": "base-application",
        "name": "OAuth 2.0 Setup",
        "ns": "System.Security.Authentication",
        "obsolete": null,
        "target": "",
        "sourceTable": "",
        "counts": {
          "fields": 25,
          "keys": 1,
          "methods": 19,
          "values": 0
        },
        "stub": false
      },
      "26": {
        "app": "base-application",
        "name": "OAuth 2.0 Setup",
        "ns": "System.Security.Authentication",
        "obsolete": null,
        "target": "",
        "sourceTable": "",
        "counts": {
          "fields": 25,
          "keys": 1,
          "methods": 19,
          "values": 0
        },
        "stub": false
      },
      "27": {
        "app": "base-application",
        "name": "OAuth 2.0 Setup",
        "ns": "System.Security.Authentication",
        "obsolete": null,
        "target": "",
        "sourceTable": "",
        "counts": {
          "fields": 25,
          "keys": 1,
          "methods": 17,
          "values": 0
        },
        "stub": false
      },
      "28": {
        "app": "base-application",
        "name": "OAuth 2.0 Setup",
        "ns": "System.Security.Authentication",
        "obsolete": null,
        "target": "",
        "sourceTable": "",
        "counts": {
          "fields": 25,
          "keys": 1,
          "methods": 17,
          "values": 0
        },
        "stub": false
      }
    },
    "fields": [
      {
        "id": 1,
        "name": "Code",
        "type": "Code[20]",
        "obsolete": null,
        "majors": [
          17,
          18,
          19,
          20,
          21,
          22,
          23,
          24,
          25,
          26,
          27,
          28
        ],
        "range": "17-28",
        "first": 17,
        "last": 28,
        "obsoleteSince": null,
        "spans": [
          {
            "from": 17,
            "to": 28,
            "name": "Code",
            "type": "Code[20]",
            "obsolete": null
          }
        ]
      },
      {
        "id": 2,
        "name": "Description",
        "type": "Text[250]",
        "obsolete": null,
        "majors": [
          17,
          18,
          19,
          20,
          21,
          22,
          23,
          24,
          25,
          26,
          27,
          28
        ],
        "range": "17-28",
        "first": 17,
        "last": 28,
        "obsoleteSince": null,
        "spans": [
          {
            "from": 17,
            "to": 28,
            "name": "Description",
            "type": "Text[250]",
            "obsolete": null
          }
        ]
      },
      {
        "id": 3,
        "name": "Service URL",
        "type": "Text[250]",
        "obsolete": null,
        "majors": [
          17,
          18,
          19,
          20,
          21,
          22,
          23,
          24,
          25,
          26,
          27,
          28
        ],
        "range": "17-28",
        "first": 17,
        "last": 28,
        "obsoleteSince": null,
        "spans": [
          {
            "from": 17,
            "to": 28,
            "name": "Service URL",
            "type": "Text[250]",
            "obsolete": null
          }
        ]
      },
      {
        "id": 4,
        "name": "Redirect URL",
        "type": "Text[250]",
        "obsolete": null,
        "majors": [
          17,
          18,
          19,
          20,
          21,
          22,
          23,
          24,
          25,
          26,
          27,
          28
        ],
        "range": "17-28",
        "first": 17,
        "last": 28,
        "obsoleteSince": null,
        "spans": [
          {
            "from": 17,
            "to": 28,
            "name": "Redirect URL",
            "type": "Text[250]",
            "obsolete": null
          }
        ]
      },
      {
        "id": 5,
        "name": "Client ID",
        "type": "Guid",
        "obsolete": null,
        "majors": [
          17,
          18,
          19,
          20,
          21,
          22,
          23,
          24,
          25,
          26,
          27,
          28
        ],
        "range": "17-28",
        "first": 17,
        "last": 28,
        "obsoleteSince": null,
        "spans": [
          {
            "from": 17,
            "to": 28,
            "name": "Client ID",
            "type": "Guid",
            "obsolete": null
          }
        ]
      },
      {
        "id": 6,
        "name": "Client Secret",
        "type": "Guid",
        "obsolete": null,
        "majors": [
          17,
          18,
          19,
          20,
          21,
          22,
          23,
          24,
          25,
          26,
          27,
          28
        ],
        "range": "17-28",
        "first": 17,
        "last": 28,
        "obsoleteSince": null,
        "spans": [
          {
            "from": 17,
            "to": 28,
            "name": "Client Secret",
            "type": "Guid",
            "obsolete": null
          }
        ]
      },
      {
        "id": 7,
        "name": "Access Token",
        "type": "Guid",
        "obsolete": null,
        "majors": [
          17,
          18,
          19,
          20,
          21,
          22,
          23,
          24,
          25,
          26,
          27,
          28
        ],
        "range": "17-28",
        "first": 17,
        "last": 28,
        "obsoleteSince": null,
        "spans": [
          {
            "from": 17,
            "to": 28,
            "name": "Access Token",
            "type": "Guid",
            "obsolete": null
          }
        ]
      },
      {
        "id": 8,
        "name": "Refresh Token",
        "type": "Guid",
        "obsolete": null,
        "majors": [
          17,
          18,
          19,
          20,
          21,
          22,
          23,
          24,
          25,
          26,
          27,
          28
        ],
        "range": "17-28",
        "first": 17,
        "last": 28,
        "obsoleteSince": null,
        "spans": [
          {
            "from": 17,
            "to": 28,
            "name": "Refresh Token",
            "type": "Guid",
            "obsolete": null
          }
        ]
      },
      {
        "id": 9,
        "name": "Authorization URL Path",
        "type": "Text[250]",
        "obsolete": null,
        "majors": [
          17,
          18,
          19,
          20,
          21,
          22,
          23,
          24,
          25,
          26,
          27,
          28
        ],
        "range": "17-28",
        "first": 17,
        "last": 28,
        "obsoleteSince": null,
        "spans": [
          {
            "from": 17,
            "to": 28,
            "name": "Authorization URL Path",
            "type": "Text[250]",
            "obsolete": null
          }
        ]
      },
      {
        "id": 10,
        "name": "Access Token URL Path",
        "type": "Text[250]",
        "obsolete": null,
        "majors": [
          17,
          18,
          19,
          20,
          21,
          22,
          23,
          24,
          25,
          26,
          27,
          28
        ],
        "range": "17-28",
        "first": 17,
        "last": 28,
        "obsoleteSince": null,
        "spans": [
          {
            "from": 17,
            "to": 28,
            "name": "Access Token URL Path",
            "type": "Text[250]",
            "obsolete": null
          }
        ]
      },
      {
        "id": 11,
        "name": "Refresh Token URL Path",
        "type": "Text[250]",
        "obsolete": null,
        "majors": [
          17,
          18,
          19,
          20,
          21,
          22,
          23,
          24,
          25,
          26,
          27,
          28
        ],
        "range": "17-28",
        "first": 17,
        "last": 28,
        "obsoleteSince": null,
        "spans": [
          {
            "from": 17,
            "to": 28,
            "name": "Refresh Token URL Path",
            "type": "Text[250]",
            "obsolete": null
          }
        ]
      },
      {
        "id": 12,
        "name": "Scope",
        "type": "Text[250]",
        "obsolete": null,
        "majors": [
          17,
          18,
          19,
          20,
          21,
          22,
          23,
          24,
          25,
          26,
          27,
          28
        ],
        "range": "17-28",
        "first": 17,
        "last": 28,
        "obsoleteSince": null,
        "spans": [
          {
            "from": 17,
            "to": 28,
            "name": "Scope",
            "type": "Text[250]",
            "obsolete": null
          }
        ]
      },
      {
        "id": 13,
        "name": "Authorization Response Type",
        "type": "Text[250]",
        "obsolete": null,
        "majors": [
          17,
          18,
          19,
          20,
          21,
          22,
          23,
          24,
          25,
          26,
          27,
          28
        ],
        "range": "17-28",
        "first": 17,
        "last": 28,
        "obsoleteSince": null,
        "spans": [
          {
            "from": 17,
            "to": 28,
            "name": "Authorization Response Type",
            "type": "Text[250]",
            "obsolete": null
          }
        ]
      },
      {
        "id": 14,
        "name": "Status",
        "type": "Option",
        "obsolete": null,
        "majors": [
          17,
          18,
          19,
          20,
          21,
          22,
          23,
          24,
          25,
          26,
          27,
          28
        ],
        "range": "17-28",
        "first": 17,
        "last": 28,
        "obsoleteSince": null,
        "spans": [
          {
            "from": 17,
            "to": 28,
            "name": "Status",
            "type": "Option",
            "obsolete": null
          }
        ]
      },
      {
        "id": 15,
        "name": "Token DataScope",
        "type": "Option",
        "obsolete": null,
        "majors": [
          17,
          18,
          19,
          20,
          21,
          22,
          23,
          24,
          25,
          26,
          27,
          28
        ],
        "range": "17-28",
        "first": 17,
        "last": 28,
        "obsoleteSince": null,
        "spans": [
          {
            "from": 17,
            "to": 28,
            "name": "Token DataScope",
            "type": "Option",
            "obsolete": null
          }
        ]
      },
      {
        "id": 16,
        "name": "Activity Log ID",
        "type": "Integer",
        "obsolete": null,
        "majors": [
          17,
          18,
          19,
          20,
          21,
          22,
          23,
          24,
          25,
          26,
          27,
          28
        ],
        "range": "17-28",
        "first": 17,
        "last": 28,
        "obsoleteSince": null,
        "spans": [
          {
            "from": 17,
            "to": 28,
            "name": "Activity Log ID",
            "type": "Integer",
            "obsolete": null
          }
        ]
      },
      {
        "id": 17,
        "name": "Daily Limit",
        "type": "Integer",
        "obsolete": null,
        "majors": [
          17,
          18,
          19,
          20,
          21,
          22,
          23,
          24,
          25,
          26,
          27,
          28
        ],
        "range": "17-28",
        "first": 17,
        "last": 28,
        "obsoleteSince": null,
        "spans": [
          {
            "from": 17,
            "to": 28,
            "name": "Daily Limit",
            "type": "Integer",
            "obsolete": null
          }
        ]
      },
      {
        "id": 18,
        "name": "Daily Count",
        "type": "Integer",
        "obsolete": null,
        "majors": [
          17,
          18,
          19,
          20,
          21,
          22,
          23,
          24,
          25,
          26,
          27,
          28
        ],
        "range": "17-28",
        "first": 17,
        "last": 28,
        "obsoleteSince": null,
        "spans": [
          {
            "from": 17,
            "to": 28,
            "name": "Daily Count",
            "type": "Integer",
            "obsolete": null
          }
        ]
      },
      {
        "id": 19,
        "name": "Latest Datetime",
        "type": "DateTime",
        "obsolete": null,
        "majors": [
          17,
          18,
          19,
          20,
          21,
          22,
          23,
          24,
          25,
          26,
          27,
          28
        ],
        "range": "17-28",
        "first": 17,
        "last": 28,
        "obsoleteSince": null,
        "spans": [
          {
            "from": 17,
            "to": 28,
            "name": "Latest Datetime",
            "type": "DateTime",
            "obsolete": null
          }
        ]
      },
      {
        "id": 20,
        "name": "Access Token Due DateTime",
        "type": "DateTime",
        "obsolete": null,
        "majors": [
          17,
          18,
          19,
          20,
          21,
          22,
          23,
          24,
          25,
          26,
          27,
          28
        ],
        "range": "17-28",
        "first": 17,
        "last": 28,
        "obsoleteSince": null,
        "spans": [
          {
            "from": 17,
            "to": 28,
            "name": "Access Token Due DateTime",
            "type": "DateTime",
            "obsolete": null
          }
        ]
      },
      {
        "id": 21,
        "name": "Feature GUID",
        "type": "Guid",
        "obsolete": null,
        "majors": [
          19,
          20,
          21,
          22,
          23,
          24,
          25,
          26,
          27,
          28
        ],
        "range": "19-28",
        "first": 19,
        "last": 28,
        "obsoleteSince": null,
        "spans": [
          {
            "from": 19,
            "to": 28,
            "name": "Feature GUID",
            "type": "Guid",
            "obsolete": null
          }
        ]
      },
      {
        "id": 22,
        "name": "User ID",
        "type": "Code[50]",
        "obsolete": null,
        "majors": [
          19,
          20,
          21,
          22,
          23,
          24,
          25,
          26,
          27,
          28
        ],
        "range": "19-28",
        "first": 19,
        "last": 28,
        "obsoleteSince": null,
        "spans": [
          {
            "from": 19,
            "to": 28,
            "name": "User ID",
            "type": "Code[50]",
            "obsolete": null
          }
        ]
      },
      {
        "id": 50,
        "name": "Code Challenge Method",
        "type": "Enum OAuth 2.0 Code Challenge",
        "obsolete": null,
        "majors": [
          23,
          24,
          25,
          26,
          27,
          28
        ],
        "range": "23-28",
        "first": 23,
        "last": 28,
        "obsoleteSince": null,
        "spans": [
          {
            "from": 23,
            "to": 28,
            "name": "Code Challenge Method",
            "type": "Enum OAuth 2.0 Code Challenge",
            "obsolete": null
          }
        ]
      },
      {
        "id": 51,
        "name": "Code Verifier",
        "type": "Guid",
        "obsolete": null,
        "majors": [
          23,
          24,
          25,
          26,
          27,
          28
        ],
        "range": "23-28",
        "first": 23,
        "last": 28,
        "obsoleteSince": null,
        "spans": [
          {
            "from": 23,
            "to": 28,
            "name": "Code Verifier",
            "type": "Guid",
            "obsolete": null
          }
        ]
      },
      {
        "id": 52,
        "name": "Use Nonce",
        "type": "Boolean",
        "obsolete": null,
        "majors": [
          23,
          24,
          25,
          26,
          27,
          28
        ],
        "range": "23-28",
        "first": 23,
        "last": 28,
        "obsoleteSince": null,
        "spans": [
          {
            "from": 23,
            "to": 28,
            "name": "Use Nonce",
            "type": "Boolean",
            "obsolete": null
          }
        ]
      }
    ],
    "keys": [
      {
        "name": "Key1",
        "fields": [
          "Code"
        ],
        "clustered": true,
        "majors": [
          17,
          18,
          19,
          20,
          21,
          22,
          23,
          24,
          25,
          26,
          27,
          28
        ],
        "range": "17-28",
        "first": 17,
        "last": 28,
        "obsoleteSince": null,
        "spans": [
          {
            "from": 17,
            "to": 28,
            "fields": [
              "Code"
            ],
            "clustered": true
          }
        ]
      }
    ],
    "procedures": [
      {
        "name": "SetToken",
        "sig": "(var Guid, Text)",
        "returns": "",
        "kind": "procedure",
        "access": "public",
        "obsolete": {
          "state": "Pending",
          "reason": "Use SetToken with paramaters declared as SecretText instead.",
          "tag": "24.0"
        },
        "majors": [
          17,
          18,
          19,
          20,
          21,
          22,
          23,
          24,
          25,
          26
        ],
        "range": "17-26",
        "first": 17,
        "last": 26,
        "obsoleteSince": 24,
        "spans": [
          {
            "from": 17,
            "to": 23,
            "returns": "",
            "kind": "procedure",
            "access": "public",
            "obsolete": null
          },
          {
            "from": 24,
            "to": 26,
            "returns": "",
            "kind": "procedure",
            "access": "public",
            "obsolete": {
              "state": "Pending",
              "reason": "Use SetToken with paramaters declared as SecretText instead.",
              "tag": "24.0"
            }
          }
        ]
      },
      {
        "name": "GetToken",
        "sig": "(Guid)",
        "returns": "Text",
        "kind": "procedure",
        "access": "public",
        "obsolete": {
          "state": "Pending",
          "reason": "Use GetToken with paramaters declared as SecretText instead.",
          "tag": "24.0"
        },
        "majors": [
          17,
          18,
          19,
          20,
          21,
          22,
          23,
          24,
          25,
          26
        ],
        "range": "17-26",
        "first": 17,
        "last": 26,
        "obsoleteSince": 24,
        "spans": [
          {
            "from": 17,
            "to": 23,
            "returns": "Text",
            "kind": "procedure",
            "access": "public",
            "obsolete": null
          },
          {
            "from": 24,
            "to": 26,
            "returns": "Text",
            "kind": "procedure",
            "access": "public",
            "obsolete": {
              "state": "Pending",
              "reason": "Use GetToken with paramaters declared as SecretText instead.",
              "tag": "24.0"
            }
          }
        ]
      },
      {
        "name": "DeleteToken",
        "sig": "(Guid)",
        "returns": "",
        "kind": "procedure",
        "access": "internal",
        "obsolete": {
          "state": "Pending",
          "reason": "This method is being marked as internal. Call IsolatedStorage.Delete from your app.",
          "tag": "27.0"
        },
        "majors": [
          17,
          18,
          19,
          20,
          21,
          22,
          23,
          24,
          25,
          26,
          27,
          28
        ],
        "range": "17-28",
        "first": 17,
        "last": 28,
        "obsoleteSince": 27,
        "spans": [
          {
            "from": 17,
            "to": 26,
            "returns": "",
            "kind": "procedure",
            "access": "public",
            "obsolete": null
          },
          {
            "from": 27,
            "to": 28,
            "returns": "",
            "kind": "procedure",
            "access": "internal",
            "obsolete": {
              "state": "Pending",
              "reason": "This method is being marked as internal. Call IsolatedStorage.Delete from your app.",
              "tag": "27.0"
            }
          }
        ]
      },
      {
        "name": "HasToken",
        "sig": "(Guid)",
        "returns": "Boolean",
        "kind": "procedure",
        "access": "internal",
        "obsolete": {
          "state": "Pending",
          "reason": "This method is being marked as internal. Call IsolatedStorage.Contains from your app.",
          "tag": "27.0"
        },
        "majors": [
          17,
          18,
          19,
          20,
          21,
          22,
          23,
          24,
          25,
          26,
          27,
          28
        ],
        "range": "17-28",
        "first": 17,
        "last": 28,
        "obsoleteSince": 27,
        "spans": [
          {
            "from": 17,
            "to": 26,
            "returns": "Boolean",
            "kind": "procedure",
            "access": "public",
            "obsolete": null
          },
          {
            "from": 27,
            "to": 28,
            "returns": "Boolean",
            "kind": "procedure",
            "access": "internal",
            "obsolete": {
              "state": "Pending",
              "reason": "This method is being marked as internal. Call IsolatedStorage.Contains from your app.",
              "tag": "27.0"
            }
          }
        ]
      },
      {
        "name": "GetTokenDataScope",
        "sig": "()",
        "returns": "DataScope",
        "kind": "procedure",
        "access": "public",
        "obsolete": null,
        "majors": [
          17,
          18,
          19,
          20,
          21,
          22,
          23,
          24,
          25,
          26,
          27,
          28
        ],
        "range": "17-28",
        "first": 17,
        "last": 28,
        "obsoleteSince": null,
        "spans": [
          {
            "from": 17,
            "to": 28,
            "returns": "DataScope",
            "kind": "procedure",
            "access": "public",
            "obsolete": null
          }
        ]
      },
      {
        "name": "RequestAuthorizationCode",
        "sig": "()",
        "returns": "",
        "kind": "procedure",
        "access": "internal",
        "obsolete": {
          "state": "Pending",
          "reason": "This method is being marked as internal. Get the Rec.\"Client ID\" from IsolatedStorage, call OAuth20Mgt.GetAuthorizationURLAsSecretText with it, unwrap the result and make a hyperlink.",
          "tag": "27.0"
        },
        "majors": [
          17,
          18,
          19,
          20,
          21,
          22,
          23,
          24,
          25,
          26,
          27,
          28
        ],
        "range": "17-28",
        "first": 17,
        "last": 28,
        "obsoleteSince": 27,
        "spans": [
          {
            "from": 17,
            "to": 26,
            "returns": "",
            "kind": "procedure",
            "access": "public",
            "obsolete": null
          },
          {
            "from": 27,
            "to": 28,
            "returns": "",
            "kind": "procedure",
            "access": "internal",
            "obsolete": {
              "state": "Pending",
              "reason": "This method is being marked as internal. Get the Rec.\"Client ID\" from IsolatedStorage, call OAuth20Mgt.GetAuthorizationURLAsSecretText with it, unwrap the result and make a hyperlink.",
              "tag": "27.0"
            }
          }
        ]
      },
      {
        "name": "RequestAccessToken",
        "sig": "(var Text, Text)",
        "returns": "Boolean",
        "kind": "procedure",
        "access": "internal",
        "obsolete": {
          "state": "Pending",
          "reason": "This method is being marked as internal. Get the client credentials from IsolatedStorage using Rec.\"Client ID\" and Rec.\"Client Secret\", call OAuth20Mgt.RequestAccessToken or implement this yourself, then save the access token with IsolatedStorage.SetEncrypted or IsolatedStorage.Set.",
          "tag": "27.0"
        },
        "majors": [
          17,
          18,
          19,
          20,
          21,
          22,
          23,
          24,
          25,
          26,
          27,
          28
        ],
        "range": "17-28",
        "first": 17,
        "last": 28,
        "obsoleteSince": 27,
        "spans": [
          {
            "from": 17,
            "to": 26,
            "returns": "Boolean",
            "kind": "procedure",
            "access": "public",
            "obsolete": null
          },
          {
            "from": 27,
            "to": 28,
            "returns": "Boolean",
            "kind": "procedure",
            "access": "internal",
            "obsolete": {
              "state": "Pending",
              "reason": "This method is being marked as internal. Get the client credentials from IsolatedStorage using Rec.\"Client ID\" and Rec.\"Client Secret\", call OAuth20Mgt.RequestAccessToken or implement this yourself, then save the access token with IsolatedStorage.SetEncrypted or IsolatedStorage.Set.",
              "tag": "27.0"
            }
          }
        ]
      },
      {
        "name": "RefreshAccessToken",
        "sig": "(var Text)",
        "returns": "Boolean",
        "kind": "procedure",
        "access": "internal",
        "obsolete": {
          "state": "Pending",
          "reason": "This method is being marked as internal. Get the refresh token with IsolatedStorage.Get(Rec.\"Refresh Token\"), then call OAuth20Mgt.RefreshAccessToken with it and save the access token with IsolatedStorage.SetEncrypted or IsolatedStorage.Set.",
          "tag": "27.0"
        },
        "majors": [
          17,
          18,
          19,
          20,
          21,
          22,
          23,
          24,
          25,
          26,
          27,
          28
        ],
        "range": "17-28",
        "first": 17,
        "last": 28,
        "obsoleteSince": 27,
        "spans": [
          {
            "from": 17,
            "to": 26,
            "returns": "Boolean",
            "kind": "procedure",
            "access": "public",
            "obsolete": null
          },
          {
            "from": 27,
            "to": 28,
            "returns": "Boolean",
            "kind": "procedure",
            "access": "internal",
            "obsolete": {
              "state": "Pending",
              "reason": "This method is being marked as internal. Get the refresh token with IsolatedStorage.Get(Rec.\"Refresh Token\"), then call OAuth20Mgt.RefreshAccessToken with it and save the access token with IsolatedStorage.SetEncrypted or IsolatedStorage.Set.",
              "tag": "27.0"
            }
          }
        ]
      },
      {
        "name": "InvokeRequest",
        "sig": "(Text, var Text, var Text, Boolean)",
        "returns": "Boolean",
        "kind": "procedure",
        "access": "internal",
        "obsolete": {
          "state": "Pending",
          "reason": "This method is being marked as internal. Implement your version of InvokeRequest by getting the Rec.\"Access Token\" from IsolatedStorage, then calling public method OAuth20Mgt.InvokeRequest with it. If you set parameter RetryOnCredentialsFailure to true, you must also subscribe to event OnBeforeRefreshAccessToken raised by OAuth20Setup table and process it with your implementation of RefreshAccessToken and subscribe to OnBeforeInvokeRequest event raised by OAuth20Setup table and process it with your implementation of InvokeRequest (this implementation)",
          "tag": "27.0"
        },
        "majors": [
          17,
          18,
          19,
          20,
          21,
          22,
          23,
          24,
          25,
          26,
          27,
          28
        ],
        "range": "17-28",
        "first": 17,
        "last": 28,
        "obsoleteSince": 27,
        "spans": [
          {
            "from": 17,
            "to": 26,
            "returns": "Boolean",
            "kind": "procedure",
            "access": "public",
            "obsolete": null
          },
          {
            "from": 27,
            "to": 28,
            "returns": "Boolean",
            "kind": "procedure",
            "access": "internal",
            "obsolete": {
              "state": "Pending",
              "reason": "This method is being marked as internal. Implement your version of InvokeRequest by getting the Rec.\"Access Token\" from IsolatedStorage, then calling public method OAuth20Mgt.InvokeRequest with it. If you set parameter RetryOnCredentialsFailure to true, you must also subscribe to event OnBeforeRefreshAccessToken raised by OAuth20Setup table and process it with your implementation of RefreshAccessToken and subscribe to OnBeforeInvokeRequest event raised by OAuth20Setup table and process it with your implementation of InvokeRequest (this implementation)",
              "tag": "27.0"
            }
          }
        ]
      },
      {
        "name": "FindSetOAuth20SetupByFeature",
        "sig": "(Guid)",
        "returns": "Boolean",
        "kind": "procedure",
        "access": "public",
        "obsolete": null,
        "majors": [
          19,
          20,
          21,
          22,
          23,
          24,
          25,
          26,
          27,
          28
        ],
        "range": "19-28",
        "first": 19,
        "last": 28,
        "obsoleteSince": null,
        "spans": [
          {
            "from": 19,
            "to": 28,
            "returns": "Boolean",
            "kind": "procedure",
            "access": "public",
            "obsolete": null
          }
        ]
      },
      {
        "name": "FindFirstOAuth20SetupByFeatureAndCurrUser",
        "sig": "(Guid)",
        "returns": "Boolean",
        "kind": "procedure",
        "access": "public",
        "obsolete": null,
        "majors": [
          19,
          20,
          21,
          22,
          23,
          24,
          25,
          26,
          27,
          28
        ],
        "range": "19-28",
        "first": 19,
        "last": 28,
        "obsoleteSince": null,
        "spans": [
          {
            "from": 19,
            "to": 28,
            "returns": "Boolean",
            "kind": "procedure",
            "access": "public",
            "obsolete": null
          }
        ]
      },
      {
        "name": "FindFirstOAuth20SetupByFeatureAndUser",
        "sig": "(Guid, Code[50])",
        "returns": "Boolean",
        "kind": "procedure",
        "access": "public",
        "obsolete": null,
        "majors": [
          19,
          20,
          21,
          22,
          23,
          24,
          25,
          26,
          27,
          28
        ],
        "range": "19-28",
        "first": 19,
        "last": 28,
        "obsoleteSince": null,
        "spans": [
          {
            "from": 19,
            "to": 28,
            "returns": "Boolean",
            "kind": "procedure",
            "access": "public",
            "obsolete": null
          }
        ]
      },
      {
        "name": "SetToken",
        "sig": "(var Guid, SecretText)",
        "returns": "",
        "kind": "procedure",
        "access": "internal",
        "obsolete": {
          "state": "Pending",
          "reason": "This method is being marked as internal. Call IsolatedStorage.SetEncrypted or IsolatedStorage.Set from your app.",
          "tag": "27.0"
        },
        "majors": [
          24,
          25,
          26,
          27,
          28
        ],
        "range": "24-28",
        "first": 24,
        "last": 28,
        "obsoleteSince": 27,
        "spans": [
          {
            "from": 24,
            "to": 26,
            "returns": "",
            "kind": "procedure",
            "access": "public",
            "obsolete": null
          },
          {
            "from": 27,
            "to": 28,
            "returns": "",
            "kind": "procedure",
            "access": "internal",
            "obsolete": {
              "state": "Pending",
              "reason": "This method is being marked as internal. Call IsolatedStorage.SetEncrypted or IsolatedStorage.Set from your app.",
              "tag": "27.0"
            }
          }
        ]
      },
      {
        "name": "GetTokenAsSecretText",
        "sig": "(Guid)",
        "returns": "SecretText",
        "kind": "procedure",
        "access": "internal",
        "obsolete": {
          "state": "Pending",
          "reason": "This method is being marked as internal. Call IsolatedStorage.Get from your app.",
          "tag": "27.0"
        },
        "majors": [
          24,
          25,
          26,
          27,
          28
        ],
        "range": "24-28",
        "first": 24,
        "last": 28,
        "obsoleteSince": 27,
        "spans": [
          {
            "from": 24,
            "to": 26,
            "returns": "SecretText",
            "kind": "procedure",
            "access": "public",
            "obsolete": null
          },
          {
            "from": 27,
            "to": 28,
            "returns": "SecretText",
            "kind": "procedure",
            "access": "internal",
            "obsolete": {
              "state": "Pending",
              "reason": "This method is being marked as internal. Call IsolatedStorage.Get from your app.",
              "tag": "27.0"
            }
          }
        ]
      }
    ],
    "events": [
      {
        "name": "OnAfterRequestAccessToken",
        "sig": "(Record OAuth 2.0 Setup, Boolean, var Text)",
        "returns": "",
        "kind": "integrationevent",
        "access": "local",
        "obsolete": null,
        "majors": [
          17,
          18,
          19,
          20,
          21,
          22,
          23,
          24,
          25,
          26,
          27,
          28
        ],
        "range": "17-28",
        "first": 17,
        "last": 28,
        "obsoleteSince": null,
        "spans": [
          {
            "from": 17,
            "to": 28,
            "returns": "",
            "kind": "integrationevent",
            "access": "local",
            "obsolete": null
          }
        ]
      },
      {
        "name": "OnBeforeRequestAuthoizationCode",
        "sig": "(Record OAuth 2.0 Setup, var Boolean)",
        "returns": "",
        "kind": "integrationevent",
        "access": "local",
        "obsolete": null,
        "majors": [
          17,
          18,
          19,
          20,
          21,
          22,
          23,
          24,
          25,
          26,
          27,
          28
        ],
        "range": "17-28",
        "first": 17,
        "last": 28,
        "obsoleteSince": null,
        "spans": [
          {
            "from": 17,
            "to": 28,
            "returns": "",
            "kind": "integrationevent",
            "access": "local",
            "obsolete": null
          }
        ]
      },
      {
        "name": "OnBeforeRefreshAccessToken",
        "sig": "(var Record OAuth 2.0 Setup, var Boolean, var Text, var Boolean)",
        "returns": "",
        "kind": "integrationevent",
        "access": "local",
        "obsolete": null,
        "majors": [
          17,
          18,
          19,
          20,
          21,
          22,
          23,
          24,
          25,
          26,
          27,
          28
        ],
        "range": "17-28",
        "first": 17,
        "last": 28,
        "obsoleteSince": null,
        "spans": [
          {
            "from": 17,
            "to": 28,
            "returns": "",
            "kind": "integrationevent",
            "access": "local",
            "obsolete": null
          }
        ]
      },
      {
        "name": "OnBeforeRequestAccessToken",
        "sig": "(var Record OAuth 2.0 Setup, Text, var Boolean, var Text, var Boolean)",
        "returns": "",
        "kind": "integrationevent",
        "access": "local",
        "obsolete": null,
        "majors": [
          17,
          18,
          19,
          20,
          21,
          22,
          23,
          24,
          25,
          26,
          27,
          28
        ],
        "range": "17-28",
        "first": 17,
        "last": 28,
        "obsoleteSince": null,
        "spans": [
          {
            "from": 17,
            "to": 28,
            "returns": "",
            "kind": "integrationevent",
            "access": "local",
            "obsolete": null
          }
        ]
      },
      {
        "name": "OnBeforeInvokeRequest",
        "sig": "(var Record OAuth 2.0 Setup, Text, var Text, var Text, var Boolean, var Boolean, Boolean)",
        "returns": "",
        "kind": "integrationevent",
        "access": "local",
        "obsolete": null,
        "majors": [
          17,
          18,
          19,
          20,
          21,
          22,
          23,
          24,
          25,
          26,
          27,
          28
        ],
        "range": "17-28",
        "first": 17,
        "last": 28,
        "obsoleteSince": null,
        "spans": [
          {
            "from": 17,
            "to": 28,
            "returns": "",
            "kind": "integrationevent",
            "access": "local",
            "obsolete": null
          }
        ]
      }
    ],
    "values": []
  }
}