> For the complete documentation index, see [llms.txt](https://docs.coherent.global/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.coherent.global/spark-apis/spark-openapi-specification/service-apis.md).

# Service APIs

Manage Spark services.

## Upload Excel file to Spark

> Returns \`nodegen\_compilation\_jobid\`, \`original\_file\_documentid\`, and \`engine\_file\_documentid\` which are needed to Publish service.\<br>\<br> If using an API key, the API key group must contain user groups that are also assigned to \`Spark.ServiceUpload.json\` or \`Spark.AllEncompassingProxy.json\`.

```json
{"openapi":"3.1.0","info":{"title":"Spark OpenAPI specification","version":"0.1.0"},"tags":[{"name":"Service APIs","description":"Manage Spark services."}],"servers":[{"url":"https://excel.{environment}.coherent.global","variables":{"environment":{"default":"myenvironment"}}}],"security":[{"bearerAuth":[]},{"tenantName":[],"apiKeyAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Bearer token can be accessed from the user menu."},"tenantName":{"type":"apiKey","in":"header","name":"x-tenant-name","description":"Tenant name header required when using API key authentication."}},"parameters":{"tenant":{"name":"tenant","in":"path","required":true,"description":"Tenant is part of your sign-in URL and also available in the user menu.","schema":{"type":"string"}},"folder":{"name":"folder","in":"path","required":true,"description":"Folder associated with the API call.","schema":{"type":"string"}},"service":{"name":"service","in":"path","required":true,"description":"Service associated with the API call.","schema":{"type":"string"}}}},"paths":{"/{tenant}/api/v3/folders/{folder}/services/{service}/upload":{"post":{"tags":["Service APIs"],"summary":"Upload Excel file to Spark","description":"Returns `nodegen_compilation_jobid`, `original_file_documentid`, and `engine_file_documentid` which are needed to Publish service.<br><br> If using an API key, the API key group must contain user groups that are also assigned to `Spark.ServiceUpload.json` or `Spark.AllEncompassingProxy.json`.","operationId":"postFoldersServicesUpload","parameters":[{"$ref":"#/components/parameters/tenant"},{"$ref":"#/components/parameters/folder"},{"$ref":"#/components/parameters/service"}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"serviceFile":{"type":"string","format":"binary","description":"Service file to be uploaded."},"engineUploadRequestEntity":{"type":"object","description":"Request parameters for the engine upload. These settings may be overridden during Publish.","properties":{"request_data":{"type":"object","properties":{"version_difference":{"anyOf":[{"type":"null"},{"type":"string","enum":["major","minor","patch"]}],"description":"Parameter is required but ignored. Value is set in Publish service.","default":"minor"},"effective_start_date":{"anyOf":[{"type":"null"},{"type":"string","format":"date"},{"type":"string","format":"date-time"}],"description":"Parameter is required but ignored. Value is set in Publish service.","default":"2000-01-01"},"effective_end_date":{"anyOf":[{"type":"null"},{"type":"string","format":"date"},{"type":"string","format":"date-time"}],"description":"Parameter is required but ignored. Value is set in Publish service.","default":"2100-01-01"},"compiler_version":{"type":["null","string"],"description":"Neuron version to use for compilation if specified. Reference Neuron release history."},"compiler_type":{"type":["null","string"],"enum":["MaintainVersion","TenantDefault","StableLatest","ReleaseCandidate"],"description":"Sets the default method to choose the Neuron version for the next upload."}},"required":["version_difference","effective_start_date","effective_end_date"]}},"required":["request_data"]}},"required":["serviceFile","engineUploadRequestEntity"]},"encoding":{"engineUploadRequestEntity":{"contentType":"application/json"}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}}}}}}}
```

## Check compilation status

> Get the Neuron "Excel-to-code" compilation status of the Excel upload. This can be run after Upload Excel file to Spark.\<br>\<br> If using an API key, the API key group must contain user groups that are also assigned to \`Spark.ServiceCompilationProgress.json\` or \`Spark.AllEncompassingProxy.json\`.

```json
{"openapi":"3.1.0","info":{"title":"Spark OpenAPI specification","version":"0.1.0"},"tags":[{"name":"Service APIs","description":"Manage Spark services."}],"servers":[{"url":"https://excel.{environment}.coherent.global","variables":{"environment":{"default":"myenvironment"}}}],"security":[{"bearerAuth":[]},{"tenantName":[],"apiKeyAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Bearer token can be accessed from the user menu."},"tenantName":{"type":"apiKey","in":"header","name":"x-tenant-name","description":"Tenant name header required when using API key authentication."}},"parameters":{"tenant":{"name":"tenant","in":"path","required":true,"description":"Tenant is part of your sign-in URL and also available in the user menu.","schema":{"type":"string"}},"folder":{"name":"folder","in":"path","required":true,"description":"Folder associated with the API call.","schema":{"type":"string"}},"service":{"name":"service","in":"path","required":true,"description":"Service associated with the API call.","schema":{"type":"string"}},"jobId":{"name":"jobId","in":"path","required":true,"description":"`job_id` associated from `POST` job.","schema":{"type":"string","format":"uuid"}}}},"paths":{"/{tenant}/api/v3/folders/{folder}/services/{service}/getcompilationprogess/{jobId}":{"get":{"tags":["Service APIs"],"summary":"Check compilation status","description":"Get the Neuron \"Excel-to-code\" compilation status of the Excel upload. This can be run after Upload Excel file to Spark.<br><br> If using an API key, the API key group must contain user groups that are also assigned to `Spark.ServiceCompilationProgress.json` or `Spark.AllEncompassingProxy.json`.","operationId":"getFoldersServicesGetCompilationProgress","parameters":[{"$ref":"#/components/parameters/tenant"},{"$ref":"#/components/parameters/folder"},{"$ref":"#/components/parameters/service"},{"$ref":"#/components/parameters/jobId"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}}}}}}}
```

## Publish service

> Publish the service to complete the actions to create a Spark service. Compilation must be completed before publishing.\<br>\<br> If using an API key, the API key group must contain user groups that are also assigned to \`Spark.ServicePublish.json\` or \`Spark.AllEncompassingProxy.json\`.

```json
{"openapi":"3.1.0","info":{"title":"Spark OpenAPI specification","version":"0.1.0"},"tags":[{"name":"Service APIs","description":"Manage Spark services."}],"servers":[{"url":"https://excel.{environment}.coherent.global","variables":{"environment":{"default":"myenvironment"}}}],"security":[{"bearerAuth":[]},{"tenantName":[],"apiKeyAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Bearer token can be accessed from the user menu."},"tenantName":{"type":"apiKey","in":"header","name":"x-tenant-name","description":"Tenant name header required when using API key authentication."}},"parameters":{"tenant":{"name":"tenant","in":"path","required":true,"description":"Tenant is part of your sign-in URL and also available in the user menu.","schema":{"type":"string"}},"folder":{"name":"folder","in":"path","required":true,"description":"Folder associated with the API call.","schema":{"type":"string"}},"service":{"name":"service","in":"path","required":true,"description":"Service associated with the API call.","schema":{"type":"string"}}}},"paths":{"/{tenant}/api/v3/folders/{folder}/services/{service}/publish":{"post":{"tags":["Service APIs"],"summary":"Publish service","description":"Publish the service to complete the actions to create a Spark service. Compilation must be completed before publishing.<br><br> If using an API key, the API key group must contain user groups that are also assigned to `Spark.ServicePublish.json` or `Spark.AllEncompassingProxy.json`.","operationId":"postFoldersServicesPublish","parameters":[{"$ref":"#/components/parameters/tenant"},{"$ref":"#/components/parameters/folder"},{"$ref":"#/components/parameters/service"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"request_data":{"type":"object","properties":{"original_file_documentid":{"oneOf":[{"type":"null"},{"type":"string","format":"uuid"}],"description":"`id` from Upload Excel to Spark."},"engine_file_documentid":{"oneOf":[{"type":"null"},{"type":"string","format":"uuid"}],"description":"`id` from Upload Excel to Spark."},"draft_service_name":{"type":["null","string"],"description":"Target service name overrides `service` from Upload Excel file to Spark."},"version_label":{"type":["null","string"],"description":"Text field that attaches to version numbers across the Spark user interface."},"release_note":{"type":["null","string"],"description":"Text field to describe the purpose of the upload."},"effective_start_date":{"anyOf":[{"type":"null"},{"type":"string","format":"date"},{"type":"string","format":"date-time"}],"description":"Timestamp to set the parameters for the version resolution capability. Use [Timestamp converter](https://www.timestamp-converter.com/) to convert dates to ISO 8601."},"effective_end_date":{"anyOf":[{"type":"null"},{"type":"string","format":"date"},{"type":"string","format":"date-time"}],"description":"Timestamp to set the parameters for the version resolution capability. Use [Timestamp converter](https://www.timestamp-converter.com/) to convert dates to ISO 8601."},"version_difference":{"anyOf":[{"type":"null"},{"type":"string","enum":["major","minor","patch","custom"]}],"description":"`major`, `minor`, `patch` or `custom` method of updating [Semantic Versioning](https://semver.org/)."},"should_trck_user_action":{"type":"boolean","description":"Boolean whether to record an event for this action. Events are visible in the **Options** **Event viewer**."},"tags":{"type":["null","string"],"description":"Comma-separated list of tags. If tags are required, then at least one tag must be supplied."},"description":{"type":["null","string"],"description":"Text field to describe the service version."},"semantic_version":{"type":["null","string"],"description":"Semantic version needs to be populated if `version_difference` is `custom`."}},"required":["original_file_documentid","engine_file_documentid","draft_service_name"]}},"required":["request_data"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}}}}}}}
```

## Check if service exists

> Check if service exists.\<br>\<br> If using an API key, the API key group must contain user groups that are also assigned to \`Spark.ServiceExists.json\` or \`Spark.AllEncompassingProxy.json\`.

```json
{"openapi":"3.1.0","info":{"title":"Spark OpenAPI specification","version":"0.1.0"},"tags":[{"name":"Service APIs","description":"Manage Spark services."}],"servers":[{"url":"https://excel.{environment}.coherent.global","variables":{"environment":{"default":"myenvironment"}}}],"security":[{"bearerAuth":[]},{"tenantName":[],"apiKeyAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Bearer token can be accessed from the user menu."},"tenantName":{"type":"apiKey","in":"header","name":"x-tenant-name","description":"Tenant name header required when using API key authentication."}},"parameters":{"tenant":{"name":"tenant","in":"path","required":true,"description":"Tenant is part of your sign-in URL and also available in the user menu.","schema":{"type":"string"}},"folder":{"name":"folder","in":"path","required":true,"description":"Folder associated with the API call.","schema":{"type":"string"}},"service":{"name":"service","in":"path","required":true,"description":"Service associated with the API call.","schema":{"type":"string"}}}},"paths":{"/{tenant}/api/v3/folders/{folder}/services/{service}/exists":{"get":{"tags":["Service APIs"],"summary":"Check if service exists","description":"Check if service exists.<br><br> If using an API key, the API key group must contain user groups that are also assigned to `Spark.ServiceExists.json` or `Spark.AllEncompassingProxy.json`.","operationId":"getFoldersServicesExists","parameters":[{"$ref":"#/components/parameters/tenant"},{"$ref":"#/components/parameters/folder"},{"$ref":"#/components/parameters/service"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}}}}}}}
```

## List service versions

> List service versions.\<br>\<br> Supported query operators are equal \`=\`, less than \`lt:\`, less than equal \`lte:\`, greater than \`gt:\`, and greater than equals \`gte:\`.\<br>\<br> Rendered examples for \`createdAt\`, \`effectiveStartDate\`, \`effectiveEndDate\` might be incorrect. Sample URI \`<https://excel.myenvironment.coherent.global/api/v1/product/myfolder/engines/getversions/myservice?createdAt=gt%3A2026-01-01\\&createdAt=lt%3A2027-01-01\\&effectiveStartDate=gt%3A2026-01-01\\&effectiveStartDate=lt%3A2027-01-01\\&effectiveEndDate=gt%3A2026-01-01\\&effectiveEndDate=lt%3A2027-01-01\\`.\\><br>\<br> If using an API key, the API key group must contain user groups that are also assigned to \`Spark.GetVersions.json\` or \`Spark.AllEncompassingProxy.json\`.\<br>\<br>

```json
{"openapi":"3.1.0","info":{"title":"Spark OpenAPI specification","version":"0.1.0"},"tags":[{"name":"Service APIs","description":"Manage Spark services."}],"servers":[{"url":"https://excel.{environment}.coherent.global","variables":{"environment":{"default":"myenvironment"}}}],"security":[{"bearerAuth":[]},{"tenantName":[],"apiKeyAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Bearer token can be accessed from the user menu."},"tenantName":{"type":"apiKey","in":"header","name":"x-tenant-name","description":"Tenant name header required when using API key authentication."}},"parameters":{"folder":{"name":"folder","in":"path","required":true,"description":"Folder associated with the API call.","schema":{"type":"string"}},"service":{"name":"service","in":"path","required":true,"description":"Service associated with the API call.","schema":{"type":"string"}},"createdAt":{"name":"createdAt","in":"query","required":false,"description":"Filter by the created date of the service version.","schema":{"type":"array","items":[{"type":"string"}]},"explode":true},"effectiveStartDate":{"name":"effectiveStartDate","in":"query","required":false,"description":"Filter by the Effective from date of the service version.","schema":{"type":"array","items":[{"type":"string"}]},"explode":true},"effectiveEndDate":{"name":"effectiveEndDate","in":"query","required":false,"description":"Filter by the Effective until date of the service version.","schema":{"type":"array","items":[{"type":"string"}]},"explode":true},"revision":{"name":"revision","in":"query","required":false,"description":"Filter by the version number.","schema":{"type":"string"}}}},"paths":{"/api/v1/product/{folder}/engines/getversions/{service}":{"get":{"tags":["Service APIs"],"summary":"List service versions","description":"List service versions.<br><br> Supported query operators are equal `=`, less than `lt:`, less than equal `lte:`, greater than `gt:`, and greater than equals `gte:`.<br><br> Rendered examples for `createdAt`, `effectiveStartDate`, `effectiveEndDate` might be incorrect. Sample URI `https://excel.myenvironment.coherent.global/api/v1/product/myfolder/engines/getversions/myservice?createdAt=gt%3A2026-01-01&createdAt=lt%3A2027-01-01&effectiveStartDate=gt%3A2026-01-01&effectiveStartDate=lt%3A2027-01-01&effectiveEndDate=gt%3A2026-01-01&effectiveEndDate=lt%3A2027-01-01`.<br><br> If using an API key, the API key group must contain user groups that are also assigned to `Spark.GetVersions.json` or `Spark.AllEncompassingProxy.json`.<br><br>","operationId":"getProductEnginesGetVersions","parameters":[{"$ref":"#/components/parameters/folder"},{"$ref":"#/components/parameters/service"},{"$ref":"#/components/parameters/createdAt"},{"$ref":"#/components/parameters/effectiveStartDate"},{"$ref":"#/components/parameters/effectiveEndDate"},{"$ref":"#/components/parameters/revision"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}}}}}}}
```

## Get service version

> Get detailed information about the Excel workbook, upload details, Neuron compilation outputs, mapped \`Xinput\`, \`Xoutput\`, and metadata, etc.\<br>\<br> If using an API key, the API key group must contain user groups that are also assigned to \`Spark.ServiceGet.json\` or \`Spark.AllEncompassingProxy.json\`.

```json
{"openapi":"3.1.0","info":{"title":"Spark OpenAPI specification","version":"0.1.0"},"tags":[{"name":"Service APIs","description":"Manage Spark services."}],"servers":[{"url":"https://excel.{environment}.coherent.global","variables":{"environment":{"default":"myenvironment"}}}],"security":[{"bearerAuth":[]},{"tenantName":[],"apiKeyAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Bearer token can be accessed from the user menu."},"tenantName":{"type":"apiKey","in":"header","name":"x-tenant-name","description":"Tenant name header required when using API key authentication."}},"parameters":{"folder":{"name":"folder","in":"path","required":true,"description":"Folder associated with the API call.","schema":{"type":"string"}},"service":{"name":"service","in":"path","required":true,"description":"Service associated with the API call.","schema":{"type":"string"}},"versionId":{"name":"versionId","in":"path","required":true,"description":"`version_id` of the requested service.","schema":{"type":"string","format":"uuid"}}}},"paths":{"/api/v1/product/{folder}/engines/get/{service}/{versionId}":{"get":{"tags":["Service APIs"],"summary":"Get service version","description":"Get detailed information about the Excel workbook, upload details, Neuron compilation outputs, mapped `Xinput`, `Xoutput`, and metadata, etc.<br><br> If using an API key, the API key group must contain user groups that are also assigned to `Spark.ServiceGet.json` or `Spark.AllEncompassingProxy.json`.","operationId":"getProductEnginesGet","parameters":[{"$ref":"#/components/parameters/folder"},{"$ref":"#/components/parameters/service"},{"$ref":"#/components/parameters/versionId"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}}}}}}}
```

## Edit service version

> Edit service version properties.

```json
{"openapi":"3.1.0","info":{"title":"Spark OpenAPI specification","version":"0.1.0"},"tags":[{"name":"Service APIs","description":"Manage Spark services."}],"servers":[{"url":"https://excel.{environment}.coherent.global","variables":{"environment":{"default":"myenvironment"}}}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Bearer token can be accessed from the user menu."}},"parameters":{"tenant":{"name":"tenant","in":"path","required":true,"description":"Tenant is part of your sign-in URL and also available in the user menu.","schema":{"type":"string"}},"folder":{"name":"folder","in":"path","required":true,"description":"Folder associated with the API call.","schema":{"type":"string"}},"service":{"name":"service","in":"path","required":true,"description":"Service associated with the API call.","schema":{"type":"string"}},"versionId":{"name":"versionId","in":"path","required":true,"description":"`version_id` of the requested service.","schema":{"type":"string","format":"uuid"}}}},"paths":{"/{tenant}/api/v3/folders/{folder}/services/{service}/updateversion/{versionId}":{"put":{"tags":["Service APIs"],"summary":"Edit service version","description":"Edit service version properties.","operationId":"putFoldersServicesUpdateversion","parameters":[{"$ref":"#/components/parameters/tenant"},{"$ref":"#/components/parameters/folder"},{"$ref":"#/components/parameters/service"},{"$ref":"#/components/parameters/versionId"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"request_data":{"type":"object","properties":{"description":{"type":["null","string"],"description":"Text field to describe the service version."},"release_note":{"type":["null","string"],"description":"Text field to describe the purpose of the upload.."},"version_label":{"type":["null","string"],"description":"Text field that attaches to version numbers across the Spark user interface."},"tags":{"type":["null","string"],"description":"Comma-separated list of tags. If tags are required, then at least one tag must be supplied."},"effective_start_date":{"anyOf":[{"type":"null"},{"type":"string","format":"date"},{"type":"string","format":"date-time"}],"description":"Timestamp to set the parameters for the version resolution capability. Use [Timestamp converter](https://www.timestamp-converter.com/) to convert dates to ISO 8601."},"effective_end_date":{"anyOf":[{"type":"null"},{"type":"string","format":"date"},{"type":"string","format":"date-time"}],"description":"Timestamp to set the parameters for the version resolution capability. Use [Timestamp converter](https://www.timestamp-converter.com/) to convert dates to ISO 8601."},"book_properties":{"anyOf":[{"type":"null"},{"type":"array"}],"description":"Array of objects containing property `name` and `value` to modify."}},"required":["description","release_note","version_label","tags","effective_start_date","effective_end_date"]}},"required":["request_data"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}}}}}}}
```

## Delete intermediate service version

> The first and latest versions of a service cannot be deleted. Deleting a version also makes data associated with that version unavailable, including its Excel file, API Call History entries, and testbed results.

```json
{"openapi":"3.1.0","info":{"title":"Spark OpenAPI specification","version":"0.1.0"},"tags":[{"name":"Service APIs","description":"Manage Spark services."}],"servers":[{"url":"https://excel.{environment}.coherent.global","variables":{"environment":{"default":"myenvironment"}}}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Bearer token can be accessed from the user menu."}},"parameters":{"tenant":{"name":"tenant","in":"path","required":true,"description":"Tenant is part of your sign-in URL and also available in the user menu.","schema":{"type":"string"}},"folder":{"name":"folder","in":"path","required":true,"description":"Folder associated with the API call.","schema":{"type":"string"}},"service":{"name":"service","in":"path","required":true,"description":"Service associated with the API call.","schema":{"type":"string"}},"versionId":{"name":"versionId","in":"path","required":true,"description":"`version_id` of the requested service.","schema":{"type":"string","format":"uuid"}}}},"paths":{"/{tenant}/api/v3/folders/{folder}/services/{service}/version/{versionId}":{"delete":{"tags":["Service APIs"],"summary":"Delete intermediate service version","description":"The first and latest versions of a service cannot be deleted. Deleting a version also makes data associated with that version unavailable, including its Excel file, API Call History entries, and testbed results.","operationId":"deleteFoldersServicesVersion","parameters":[{"$ref":"#/components/parameters/tenant"},{"$ref":"#/components/parameters/folder"},{"$ref":"#/components/parameters/service"},{"$ref":"#/components/parameters/versionId"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}}}}}}}
```

## Download service

> Get the Excel file from a Spark service.\<br>\<br>If using an API key, the API key group must contain user groups that are also assigned to \`Spark.DownloadServiceByVersionId.json\` or \`Spark.AllEncompassingProxy.json\`.

```json
{"openapi":"3.1.0","info":{"title":"Spark OpenAPI specification","version":"0.1.0"},"tags":[{"name":"Service APIs","description":"Manage Spark services."}],"servers":[{"url":"https://excel.{environment}.coherent.global","variables":{"environment":{"default":"myenvironment"}}}],"security":[{"bearerAuth":[]},{"tenantName":[],"apiKeyAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Bearer token can be accessed from the user menu."},"tenantName":{"type":"apiKey","in":"header","name":"x-tenant-name","description":"Tenant name header required when using API key authentication."}},"parameters":{"folder":{"name":"folder","in":"path","required":true,"description":"Folder associated with the API call.","schema":{"type":"string"}},"service":{"name":"service","in":"path","required":true,"description":"Service associated with the API call.","schema":{"type":"string"}},"versionId":{"name":"versionId","in":"path","required":true,"description":"`version_id` of the requested service.","schema":{"type":"string","format":"uuid"}}}},"paths":{"/api/v1/product/{folder}/engines/{service}/download/{versionId}":{"get":{"tags":["Service APIs"],"summary":"Download service","description":"Get the Excel file from a Spark service.<br><br>If using an API key, the API key group must contain user groups that are also assigned to `Spark.DownloadServiceByVersionId.json` or `Spark.AllEncompassingProxy.json`.","operationId":"getProductEnginesDownload","parameters":[{"$ref":"#/components/parameters/folder"},{"$ref":"#/components/parameters/service"},{"$ref":"#/components/parameters/versionId"},{"name":"filename","in":"query","description":"Name of the downloaded file. If not provided, Spark will use an appropriate name.","schema":{"type":"string"}},{"name":"type","in":"query","description":"`ca` downloads the Coherent Assistant-enhanced version of the workbook. If not provided, the original workbook will be downloaded.","schema":{"type":["null","string"],"enum":["ca"]}}],"responses":{"200":{"description":"OK","content":{"application/octet-stream":{"schema":{"type":"string","format":"binary"}}}}}}}}}
```

## Download Swagger

> Get \[Swagger]\(<https://swagger.io/specification/v2/>) (OpenAPI 2.0) documentation for a Spark service.\<br>\<br> If using an API key, the API key group must contain user groups that are also assigned to \`Spark.DownloadSwagger.json\` or \`Spark.AllEncompassingProxy.json\`.

```json
{"openapi":"3.1.0","info":{"title":"Spark OpenAPI specification","version":"0.1.0"},"tags":[{"name":"Service APIs","description":"Manage Spark services."}],"servers":[{"url":"https://excel.{environment}.coherent.global","variables":{"environment":{"default":"myenvironment"}}}],"security":[{"bearerAuth":[]},{"tenantName":[],"apiKeyAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Bearer token can be accessed from the user menu."},"tenantName":{"type":"apiKey","in":"header","name":"x-tenant-name","description":"Tenant name header required when using API key authentication."}},"parameters":{"tenant":{"name":"tenant","in":"path","required":true,"description":"Tenant is part of your sign-in URL and also available in the user menu.","schema":{"type":"string"}},"folder":{"name":"folder","in":"path","required":true,"description":"Folder associated with the API call.","schema":{"type":"string"}},"service":{"name":"service","in":"path","required":true,"description":"Service associated with the API call.","schema":{"type":"string"}},"versionId":{"name":"versionId","in":"path","required":true,"description":"`version_id` of the requested service.","schema":{"type":"string","format":"uuid"}}}},"paths":{"/{tenant}/api/v3/folders/{folder}/services/{service}/downloadswagger/{category}/{isDownload}/{versionId}":{"get":{"tags":["Service APIs"],"summary":"Download Swagger","description":"Get [Swagger](https://swagger.io/specification/v2/) (OpenAPI 2.0) documentation for a Spark service.<br><br> If using an API key, the API key group must contain user groups that are also assigned to `Spark.DownloadSwagger.json` or `Spark.AllEncompassingProxy.json`.","operationId":"getFoldersServicesDownloadSwagger","parameters":[{"$ref":"#/components/parameters/tenant"},{"$ref":"#/components/parameters/folder"},{"$ref":"#/components/parameters/service"},{"name":"category","in":"path","required":true,"description":"`All` for all subservices or a list of the requested subservices.","schema":{"type":"string"}},{"name":"isDownload","in":"path","required":true,"description":"`true` for integrating with this endpoint.","schema":{"type":"boolean"}},{"$ref":"#/components/parameters/versionId"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}}}}}}}
```

## Delete service

> If using an API key, the API key group must contain user groups that are also assigned to \`Spark.ServiceDelete.json\` or \`Spark.AllEncompassingProxy.json\`.

```json
{"openapi":"3.1.0","info":{"title":"Spark OpenAPI specification","version":"0.1.0"},"tags":[{"name":"Service APIs","description":"Manage Spark services."}],"servers":[{"url":"https://excel.{environment}.coherent.global","variables":{"environment":{"default":"myenvironment"}}}],"security":[{"bearerAuth":[]},{"tenantName":[],"apiKeyAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Bearer token can be accessed from the user menu."},"tenantName":{"type":"apiKey","in":"header","name":"x-tenant-name","description":"Tenant name header required when using API key authentication."}},"parameters":{"folder":{"name":"folder","in":"path","required":true,"description":"Folder associated with the API call.","schema":{"type":"string"}},"service":{"name":"service","in":"path","required":true,"description":"Service associated with the API call.","schema":{"type":"string"}}}},"paths":{"/api/v1/product/{folder}/engines/delete/{service}":{"delete":{"tags":["Service APIs"],"summary":"Delete service","description":"If using an API key, the API key group must contain user groups that are also assigned to `Spark.ServiceDelete.json` or `Spark.AllEncompassingProxy.json`.","operationId":"deleteProductEnginesDelete","parameters":[{"$ref":"#/components/parameters/folder"},{"$ref":"#/components/parameters/service"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}}}}}}}
```
