ArcGIS portal

A portal is a website with tools that can be used to create, manage, access, and share geospatial content and data. It supports many different types of content such as web maps, web scenes, hosted layers, data services, and files. A portal also provides tools to create maps, scenes, and layers, import data, create data services, and manage users and groups in the organization.

In addition, a portal includes security and authentication capabilities, comprised of access controls for that portal's content, as well as authentication services for apps and users to gain access to a portal's secured content and tools.

As a developer, you can use a portal to manage developer credentials and create content and data services for your applications.

ArcGIS Location Platform, ArcGIS Online, and ArcGIS Enterprise all include portals which a developer can use to authenticate their apps and users, create or manage content, and control access to that content. For ArcGIS Location Platform and ArcGIS Online, the portal is hosted in Esri's infrastructure. For ArcGIS Enterprise, the portal is installed and hosted on infrastructure you control, either in the cloud or on-premises.

Learn more about working with portals in Introduction to portals. See How to use authentication in the developer guide to learn more about creating and managing developer credentials.

ArcGIS Online

With ArcGIS Online you can do things like:

  • Create web maps
  • Web enable your data
  • Control how your maps, data, and applications are shared
  • Find relevant and useful basemaps, data, and configurable GIS resources
  • Manage content and users in your organization

Once hosted, you can access your data as services from your applications. You can also create new content (items), search for users and groups, and manage sharing.

ArcGIS for organizations

To access all the capabilities of ArcGIS Online, your organization can purchase a subscription. With a subscription to ArcGIS Online, organizations can manage all of their geographic content in a secure, cloud-based Esri environment. Members of the organization can use maps to explore data, create and share maps and apps, and publish their data as hosted web layers. Administrators customize the website, invite and add members to the organization, and manage resources.

Learn more about ArcGIS for organizations at ArcGIS Online.

Portal items, users, and groups

ArcGIS Online is an information portal and is represented in the API by the Portal class.

This class is loadable.

When you sign in to ArcGIS Online with an organization account, you see a specialized view that your organization administrator has configured for you, giving you access to maps, content, and other services specific to your organization. You can also access all your own content and services.

Portal items

ArcGIS Online and ArcGIS Enterprise can store many types of content. See Supported items in the ArcGIS documentation for an exhaustive list. Perhaps the type most commonly used by apps is a web map—a JSON description of the data in a map, along with other display and behavioral properties. Other types include tile packages, feature collections, and services. Some types, such as globe documents and map templates, may only be relevant to desktop systems. Although you can access these types of data, you may not be able to use them on a mobile device.

The PortalItem class represents an individual item stored on a portal. Each item includes the following:

  • Metadata, such as a unique identifier (ID), title, summary, description, thumbnail image, and tags
  • Binary or text-based data—for example, the JSON that defines a web map or a feature collection, or a URL pointing to a map service, or the binary data of a tile package or shapefile

The item ID is the most important metadata for a portal item. You can use the ID to access an item in the portal and work with it in your app (such as loading a web map from a portal item, for example).

Portal users

A registered user of a portal is represented in the API by the PortalUser class. When you have signed in to a portal, you can get authentication information relating to the authenticated user from the portal class.

A user must authenticate to access secured resources. The authentication method you decide to implement might vary based upon the resources required by your application. Esri's preferred authentication methods are:

  • User authentication: This method prompts users to sign in with an ArcGIS account and grants an OAuth access token associated with the account to the client app. The app uses this token in all subsequent requests to the platform. This is the recommended method, and is most commonly used with ArcGIS Online and ArcGIS Enterprise.

  • API key authentication: This type of authentication uses a long-lived access token to authenticate requests to location services and private content. Go to the Create an API key tutorial to obtain a new API Key access token. It is the recommended type of authentication for developers new to ArcGIS or to development in general.

For an overview of the ways to access secure services, see ArcGIS Security and Authentication.

Portal groups

Groups are a way to collaborate with other users who share a common interest. A user can create groups, join groups, and share items with those groups. Groups have titles, descriptions, thumbnails, and unique IDs to help users identify them. The sharing model within ArcGIS Online is based on groups. Groups are represented in the API by the PortalGroup class.

Connect to public content

To connect to ArcGIS Online and access public content anonymously, you can begin by creating an Portal instance (without authenticating with the portal).

Use dark colors for code blocksCopy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
  // Connect to a portal
  Portal* portal = new Portal(this);

  // Load the portal and read its properties.
  connect(portal, &Portal::loadStatusChanged, this, [portal](LoadStatus loadStatus)
  {
    // Test if the portal succeeded loading.
    if (loadStatus != LoadStatus::Loaded)
      return;

    // Get the portal info from the portal.
    PortalInfo* portalInfo = portal->portalInfo();

    // Check portal info properties.
    qDebug() << "Access:" << (int)portalInfo->access();
    qDebug() << "Name:" << portalInfo->portalName();
    qDebug() << "Mode:" << (int)portalInfo->portalMode();
  });

  // Load the portal.
  portal->load();

From here, you can access public content; for example, you can

  • Display a web map.
  • Access the data stored in a portal item.
  • Search for content such as web maps, map services, map features, groups, and users.

Some organizations share content publicly and allow anonymous access to that content; connect to publicly accessible content from such organizations by specifying the organization URL.

For example:

Use dark colors for code blocksCopy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
  // Create a portal with a specific QUrl.
  Portal* organizationPortal = new Portal(QUrl("http://anorganization.maps.arcgis.com/sharing/rest"), this);

  // Check the portal user's username.
  qDebug() << "The username is: " << organizationPortal->portalUser()->username();

Connect to secured content

Apps that target organization users who have an ArcGIS account should add a Credential to the AuthenticationManager to authenticate the user when creating the portal object.

The portal object will have access to all the secure content for which the user has access rights and can be used to find out more information about the user, such as the user's full name (instead of the account user name). Additionally, information about the organization such as the name, banner image, description, and so on, can be found as shown above. Apps often make use of this information when a user connects to a specific portal, to show the user organization branding and context.

Typically, the portal object with the authenticated user is cached and used throughout the app session, to provide the app with a view of a portal that is centered around a single user. When the app is restarted, the credential must be reinstated, or the user must repeat the authentication process.

Use dark colors for code blocksCopy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
  // Specify the username and password for the credential.
  Credential* portalCredential = new Credential("username", "password", this);

  // Create a portal with a QUrl and credential.
  Portal* portal = new Portal(QUrl("http://geoportal.mycompany.com/sharing/rest"), portalCredential, this);

  // Load the current portal and check the portal info.
  connect(portal, &Portal::loadStatusChanged, this, [portal](LoadStatus loadStatus)
  {
    // Test if the portal succeeded loading.
    if (loadStatus == LoadStatus::Loaded)
    {
      // Get the portal info from the portal.
      PortalInfo* portalInfo = portal->portalInfo();
      qDebug() << portalInfo->portalName();
    }
  });

  // Load the portal.
  portal->load();

ArcGIS Enterprise

ArcGIS Enterprise provides you with the same core capabilities as ArcGIS Online except it's hosted on infrastructure you control, either in the cloud or on-premises, for controlled distribution of content.

Learn more about ArcGIS Enterprise.

Connecting to an instance of ArcGIS Enterprise portal is done in a very similar way to connecting to ArcGIS Online and is represented in the API by the same class, Portal. Use the URL to the Enterprise portal website, along with an appropriate credential valid on that portal, or no credential if accessing public content anonymously.

Use dark colors for code blocksCopy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
  // Generate an ArcGISTokenCredential using input from the user (username and password).
  Credential* credential = new Credential("username", "password", this);

  // Connect to a portal.
  Portal* portal = new Portal(QUrl("http://geoportal.mycompany.com/sharing/rest"), credential, this);

  // Load the current portal user and check privileges.
  connect(portal, &Portal::loadStatusChanged, this, [portal](LoadStatus loadStatus)
  {
    // Test if the portal succeeded loading.
    if (loadStatus != LoadStatus::Loaded)
      return;

    // Get the portal user from the portal.
    PortalUser* portalUser = portal->portalUser();

    // Get the portal privilige list model from the portal user.
    PortalPrivilegeListModel* portalPrivilegeListModel = portalUser->privileges();
    qDebug() << portalPrivilegeListModel->mimeTypes();
  });

  // Load the portal.
  portal->load();

Samples

Open map (URL)

Open scene (portal item)

Create and save a map

Search for web map

Show organization basemaps

Feature collection layer (portal item)

Portal user info

Services

Tools

Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.