Upload Service Definition (Server)

Summary

Uploads and shares a web layer, web tool, or service to ArcGIS Online, ArcGIS Enterprise, or ArcGIS Server.

Usage

  • This tool uploads and shares a web layer, web tool, or service based on the input service definition. Whenever you share a web layer or service using ArcGIS Pro, this tool is run, and an entry appears in the Geoprocessing History item in the Catalog pane.

  • This tool does not upload and share service definition draft files (.sddraft). If you have a service definition draft, you can convert it to a staged service definition using the Stage Service tool.

  • Web tools can only be shared to ArcGIS Enterprise. Geoprocessing tools can only be shared to ArcGIS Server.

Syntax

arcpy.server.UploadServiceDefinition(in_sd_file, in_server, {in_service_name}, {in_cluster}, {in_folder_type}, {in_folder}, {in_startupType}, {in_override}, {in_my_contents}, {in_public}, {in_organization}, {in_groups})
ParameterExplanationData Type
in_sd_file

The service definition file (.sd) that contains all the information needed to share a web layer, web tool, or service.

File
in_server

A string representing the server type. The following server types are supported:

  • My Hosted Services—Use when sharing a hosted web layer to ArcGIS Online or ArcGIS Enterprise. Enter My Hosted Services for the server connection. Capitalize the first letter of each word and include spaces between the words.
  • HOSTING_SERVER—Use when sharing a hosted web layer to ArcGIS Online or ArcGIS Enterprise.
  • The URL to the ArcGIS Enterprise portal federated server—Use when sharing a web tool or map image layer to an ArcGIS Enterprise portal federated server.
  • An ArcGIS Server connection—Use when sharing a map or geoprocessing service to ArcGIS Server. You can use ArcGIS Server connections listed under the Servers node in the Project window, or you can browse to a folder where server connection files are stored.
  • A URL to ArcGIS Server—Use when sharing a map or geoprocessing service to ArcGIS Server. You can specify the URL to ArcGIS Server provided a publisher connection to ArcGIS Server has been added to the ArcGIS Pro project, and you're opening the project in the script or you're running the tool in ArcGIS Pro.

ServerConnection
in_service_name
(Optional)

Use this option to override the service name currently specified in the service definition with a new name.

String
in_cluster
(Optional)

Use this option if you want to change the cluster to which the service has been assigned. You must choose from clusters that are available on the specified server.

Legacy:

Clusters are deprecated at ArcGIS Enterprise 10.5.1. This parameter will be ignored for servers that do not support multiple clusters.

String
in_folder_type
(Optional)

Specifies the folder type used to determine the source for the folder. The default is to get a folder from the service definition. You can also choose to get a list of folders already existing on the specified online server, or you can specify a new folder to be created once you share this web layer or service.

  • NEWCreate a new folder.
  • EXISTINGSpecify a folder that exists on the server.
  • FROM_SERVICE_DEFINITIONSpecify the folder in the service definition. This is the default.
String
in_folder
(Optional)

Use this option to specify the folder for the web layer or service. The default is to use the folder specified in the service definition. If you specified NEW for in_folder_type, use this parameter to enter a new folder name. If you specified EXISTING for in_folder_type, you can choose from the existing folders on the server.

String
in_startupType
(Optional)

Use this option to specify the start or stop state of the service immediately after publishing.

  • STARTEDThe service starts immediately after sharing.
  • STOPPEDThe service does not start after sharing. The service will be started manually.
Boolean
in_override
(Optional)

Use this parameter to override the sharing properties set in the service definition. These properties define if, and how, you are sharing your web layer or web tool with ArcGIS Online or ArcGIS Enterprise. Sharing your web layer or web tool exposes it for others to use.

  • OVERRIDE_DEFINITIONOverride the sharing properties set in the service definition with new values.
  • USE_DEFINITIONThe sharing properties currently set in the service definition will be used when the web layer or web tool is shared. This is the default.

You must be signed in to ArcGIS Online or ArcGIS Enterprise to override sharing properties.

This parameter is not honored when sharing to ArcGIS Server.

Boolean
in_my_contents
(Optional)

Specifies how web layers and web tools will be shared. All shared web layers and web tools are available through My Content. Even if you only want to share with a specific group in your organization, the web layer or web tool will also be shared through My Content.

  • SHARE_ONLINEShare the web layer or web tool on ArcGIS Online or ArcGIS Enterprise. The web layer or web tool will be listed under My Content.
  • NO_SHARE_ONLINEThe web layer or web tool will not be shared on ArcGIS Online or ArcGIS Enterprise and will be inaccessible to other ArcGIS Online or ArcGIS Enterprise users and clients on the web.

You must be signed in to a portal to override sharing properties.

This parameter is not honored when sharing to ArcGIS Server.

Boolean
in_public
(Optional)

Specifies whether the web layer or web tool will be available to the public.

  • PUBLICShare the web layer or web tool with the public.
  • PRIVATEDo not share the web layer or web tool with the public.

You must be signed in to ArcGIS Online or ArcGIS Enterprise to override sharing properties.

This parameter is not honored when sharing to ArcGIS Server.

Boolean
in_organization
(Optional)

Specifies whether to share the web layer or web tool with your organization.

  • SHARE_ORGANIZATIONShare the web layer or web tool with your organization.
  • NO_SHARE_ORGANIZATIONDo not share the web layer or web tool with your organization.

You must be signed in to ArcGIS Online or ArcGIS Enterprise to override sharing properties.

This parameter is not honored when sharing to ArcGIS Server.

Boolean
in_groups
[group_name,...]
(Optional)

A list of group names with which to share the web layer or web tool.

You must be signed in to ArcGIS Online or ArcGIS Enterprise to override sharing properties.

This parameter is not honored when sharing to ArcGIS Server.

String

Derived Output

NameExplanationData Type
out_soap_svc_url

The SOAP URL of a service published to the server.

String
out_rest_svc_url

The REST URL of a service published to the server.

String
out_mapServiceItemID

The Item ID of the map image layer shared to the portal.

String
out_featServiceItemID

The Item ID of the hosted feature service layer shared to the portal.

String
out_cached_service

An image service or a map service with caching enabled.

Image Service; MapServer
out_featureServiceURL

The REST URL of a hosted feature layer shared to the portal.

String
out_mapServiceURL

The REST URL of a map image layer shared to the portal.

String
out_LayerIDMap

The published layers and their respective IDs in the format Layer1|ID1;Layer2|ID2; and so on.

String
out_standaloneTableIDMap

The published stand-alone tables and their respective IDs in the format Table1|ID1;Table2|ID2; and so on.

String
out_vectorTileServiceID

The Item ID of the vector tile service.

String
out_vectorTileServiceURL

The REST URL of the vector tile service.

String

Code sample

UploadServiceDefinition example 1 (stand-alone script)

The following script publishes a list of layers from a map as a web tile layer to either ArcGIS Enterprise or ArcGIS Online. Portal information is obtained from the Portals page in ArcGIS Pro.

import arcpy
import os

# Set output file names
outdir = r"C:\Project\Output"
service = "TileSharingDraftExample"
sddraft_filename = service + ".sddraft"
sddraft_output_filename = os.path.join(outdir, sddraft_filename)

# Reference map to publish
aprx = arcpy.mp.ArcGISProject(r"C:\Project\World.aprx")
m = aprx.listMaps("World")[0]
lyrs = []
lyrs.append(m.listLayers('cities')[0])
lyrs.append(m.listLayers('counties')[0])

# Create TileSharingDraft and set service properties
sharing_draft = m.getWebLayerSharingDraft("HOSTING_SERVER", "TILE", service, lyrs)
sharing_draft.summary = "My Summary"
sharing_draft.tags = "My Tags"
sharing_draft.description = "My Description"
sharing_draft.credits = "My Credits"
sharing_draft.useLimitations = "My Use Limitations"

# Create Service Definition Draft file
sharing_draft.exportToSDDraft(sddraft_output_filename)

# Stage Service
sd_filename = service + ".sd"
sd_output_filename = os.path.join(outdir, sd_filename)
arcpy.StageService_server(sddraft_output_filename, sd_output_filename)

# Share to portal
print("Uploading Service Definition...")
arcpy.UploadServiceDefinition_server(sd_output_filename, "My Hosted Services")

print("Successfully Uploaded service.")
UploadServiceDefinition example 2 (stand-alone script)

The following script uploads an existing service definition and uses optional parameters to modify properties of the service.

import arcpy

# Set environment settings
arcpy.env.workspace = "C:/data"

# Set local variables
inSdFile = "myMapService.sd"
inServer = "myServerConnection.ags"
inServiceName = "newServiceName"
inCluster = "myCluster"
inFolderType = "NEW"
inFolder = "newFolder"
inStartup = "STOPPED"

# Execute UploadServiceDefinition
arcpy.UploadServiceDefinition_server(inSdFile, inServer, inServiceName, 
                                     inCluster, inFolderType, inFolder, 
                                     inStartup)
UploadServiceDefinition example 3 (stand-alone script)

The following script uploads an existing service definition to either ArcGIS Online or ArcGIS Enterprise and uses optional parameters to modify properties of the service.

import arcpy

# Set environment settings
arcpy.env.workspace = "C:/data"

# Set local variables
inSdFile = "myMapService.sd"
inServer = "HOSTING_SERVER"
inServiceName = "newServiceName"
inCluster = "myCluster"
inFolderType = "EXISTING"
inFolder = "existingFolder"
inStartup = "STOPPED"
inOverride = "OVERRIDE_DEFINITION"
inMyContents = "SHARE_ONLINE"
inPublic = "PRIVATE"
inOrganization = "NO_SHARE_ORGANIZATION"
inGroups = ["My Group", "MyGroup 2"]

# Execute UploadServiceDefinition
arcpy.UploadServiceDefinition_server(inSdFile, inServer, inServiceName, 
                                     inCluster, inFolderType, inFolder, 
                                     inStartup, inOverride, inMyContents, 
                                     inPublic, inOrganization, inGroups)

Environments

This tool does not use any geoprocessing environments.

Licensing information

  • Basic: Yes
  • Standard: Yes
  • Advanced: Yes

Related topics