# Third Party App Publishing Checklist

This page contains a "checklist" to go over before you publish an app to customers. As with any guide if you have reason to deviate, it is recommended you follow your intuition and deviate.

## App Checklist

[Transition from Applets to Apps](/developer/apps/transitioning-from-applets-to-apps.md)

### `dxapp.json` and Source Code

* [ ] Conform to [Third Party App Style Guide](/developer/apps/third-party-and-community-apps/third-party-app-style-guide.md) and [Community App Guidelines](/developer/apps/third-party-and-community-apps/community-app-guidelines.md)
* [ ] In the `details` field, specify `whatsNew` and `citations`.
* [ ] In the `details` field, specify an `upstreamProjects` key whose value is an array of hashes, each of which describes the [licenses](/developer/apps/third-party-and-community-apps/third-party-app-style-guide.md#licenses) associated with software or packages included in this app. This is required to ensure compliance with open-source licenses. For each entry, specify the software's `name`, `repoUrl`, `version`, `license`, `licenseUrl`, and optionally `author`.
* [ ] Verify `regionalOptions` contains regions for ALL supported app regions.
* [ ] Set applicable timeout and restart policy in [`runSpec`](/developer/apps/app-metadata.md#runspec-entry-point-and-dependencies).
* [ ] In the `version` field, set proper [semantic versioning](https://semver.org/).
* [ ] Contemplate setting `"openSource": true`. Default is `False`, set at your discretion.
* [ ] Add unit tests for your app.

### Documentation

* [ ] Write `Readme.md` and (optional) `Readme.developer.md`.
* [ ] Read documentation to double check after building the unpublished app in the next section. (Unpublished app URL is available to developers as `https://platform.dnanexus.com/app/app-xxxx`.)

### Before Publishing the App

* [ ] Build as an app on the DNAnexus Platform billed to `org-your_handler` (**DO NOT PUBLISH YET**). Remember unpublished apps can be viewed by developers on the platform under `https://platform.dnanexus.com/app/app-xxxx`.
* [ ] Test it on expected data.
* [ ] Verify [entity-ids](/developer/api/entity-ids.md) are specified for all supported cloud regions in the app.
* [ ] Add Developers via the [`dx add developers`](/user/helpstrings-of-sdk-command-line-utilities.md#add-developers) CLI command
* [ ] Add `org-dnanexus_tools_admin` as a Developer so DNAnexus can help add `authorizedUsers PUBLIC` when needed.
* [ ] Add authorized users via the [`dx add users`](/user/helpstrings-of-sdk-command-line-utilities.md#add-users) CLI command
* [ ] Contact [DNAnexus Support](mailto:support@dnanexus.com) so the DNAnexus tools admin team is notified and can work with you to make the app PUBLIC.
* [ ] Publish via the [`dx publish`](/user/helpstrings-of-sdk-command-line-utilities.md#publish) CLI command
* [ ] Verify the versions that appear on the platform are the intended versions

Congratulations! You've published an app. Feel free to publicize your app and let your users know your tool is available in the cloud.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://documentation.dnanexus.com/developer/apps/third-party-and-community-apps/third-party-app-publishing-checklist.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
