Welcome to Domo's Developer Portal repository!
If you'd like to contribute to our public docs, then you are in the right place. If you're looking for the Developer Portal itself see https://developer.domo.com/.
Before contributing to the Developer Portal, please ensure you've reviewed the contribution guidelines below.
In general, there are three types of articles in the Developer Portal. Please follow the style guide for each.
- Guide / How-to Article (Style Guide)
- Tutorial (Style Guide)
- API Reference (Style Guide)
Domo partners with Stoplight to host our Developer Portal. To contribute to this repository, it's useful to understand a few things about how these docs are rendered in the Stoplight portal.
assets/
is where any image files that you want to display will live.docs/
includes all guides, tutorials, and API References in the Developer Portal. The former two are markdown.md
files and the latter is either a markdown.md
file or an OpenAPI spec.yaml
file depending on the API.toc.json
is the configuration file that defines the structure of the left navigation sidebar in the Developer Portal.
The Stoplight Documentation is a great resource for learning how to make the most out of the nice functionality Stoplight can unlock. For writing documentation articles like Tutorials or Guides, Stoplight-flavored Markdown is a particularly useful reference.
The simplest way to contribute, is to raise a GitHub issue in this repository. Issues are great for suggesting ideas, feedback, or requesting particular documentation. Once you've raised an issue, others can follow it for updates and engage in discussion around it.
If you are hoping to add documentation to the Developer Portal, please create a new branch with the following naming convention <section>/<purpose>
where the section corresponds to the section of the developer portal you're adding to (e.g. data-science
) and the purpose is the reason for requesting a change (e.g. update-jupyter-examples
).
Across all resources, it's important to remain consistent. Please follow these brief principles in your contributions.
- Markdown: Please use Markdown syntax
#
rather than HTML<h1>
. - Headings: Use h1 (
#
) headings for all article titles. Use h2 (##
) and h3 (###
) headings to organize content logically - Emphasis: Apply bullet points or numbered lists for step-by-step instructions or key points, and emphasize important text using bold or italics sparingly.
- Code: Include code snippets within triple backticks for syntax highlighting, and use inline code formatting for short code references.
- Links: Hyperlink external references with descriptive text.
- Tone: Aim for a helpful and approachable tone, free of jargon unless necessary, while ensuring accessibility best practices are met.
- Credentials/PII: Scrub all Personal Identifying Information, live Credentials, Cookies, or any other authentication information. Ideally these should be replaced with
<placeholders>
Guides are the most common resource in the developer portal. They can range from overview articles, how-to achieve a specific task, or common code snippets and patterns that are useful.
They tend to be shorter and more focused on a single subject than tutorials.
- Start with a brief overview to set context and state the article’s goal clearly.
- Break down tasks into short, logically ordered steps, using bullet points or numbered lists as necessary. Introduce relevant code snippets with a brief explanation, ensuring they align with best practices.
- Include tips, warnings, and common pitfalls in callout blocks for clarity.
- Conclude by summarizing key takeaways or providing links to related resources for further exploration.
Example Guide - How to Hit Code Engine from an App
Tutorials are step-by-step, start-to-finish walkthroughs for complete solutions.
These usually have multiple parts, include all code required to build the solution, and explanations for the purpose of each step in the walkthrough. They can (and often do) bridge multiple features / areas of the Domo Product.
- Begin with an introduction outlining the goals, prerequisites, and expected outcomes.
- Divide the tutorial into clearly defined sections or parts, using numbered steps and descriptive headings to guide the user.
- Provide complete code snippets for each step, with detailed explanations of what each part does and why it’s essential to the solution.
- Incorporate visuals, such as diagrams or screenshots, to illustrate complex concepts.
- Summarize key points at the end of each section and conclude the tutorial with a recap and next steps for further exploration or related topics.
Example Tutorial - Building Dynamic Infographics with Domo and Canva
API documentation is one of the most critical components to enabling developers to build on Domo.
For convenience, we've divided APIs into three categories:
- App Framework APIs: APIs available within the Domo App context.
- Platform APIs: APIs that use an OAuth 2.0 authorization and authentication pattern which allows you to define clients with a variety of scopes.
- Product APIs: APIs that allow you to do anything you can do in the Domo UI. Tokens generated for these APIs provide access to all resources the user has in Domo. These have often been referred to as "undocumented" APIs.
See https://developer.domo.com/portal/8ba9aedad3679-ap-is for more info about the distinction.
Note: There is currently a project underway on Esteban's team to annotate APIs so many of the OpenAPI spec / internal Swagger docs can be synced with our public facing developer docs.
In the meantime, we should provide at least minimal documentation for Product APIs.
Please see the AI Service Layer API for an example of how to document these endpoints.
Please include:
-
Overview of the service - (including links to relevant guides, examples, etc.)
-
Then, each endpoint should have:
- title:
h2
- brief description:
plain text
- code example:
code snippet
- http request (including query params):
code snippet
- request body arguments accepted:
table
- request body example code example:
code snippet
- http response example:
code snippet
- title:
See DataSet API for an example.
These APIs are actively testable in the documentation itself. They are all OpenAPI spec .yaml
files.
As noted above, this is where we currently have the largest gap. Eventually, we'll be able to mirror the internal OpenAPI specs, but in the meantime many developers are already building on these APIs, and we need to provide more documentation.
At a minimum, we should prioritize documenting the following APIs:
- All endpoints referenced in Global Code Engine packages.
- Anything that you, or customers have built scripts on.