Saving progress

This commit is contained in:
Luke Hagar
2024-06-02 22:50:13 -05:00
parent 81be5d53ac
commit c0ea9a5560
78 changed files with 7786 additions and 1047 deletions

25
.github/workflows/sdk_generation.yaml vendored Normal file
View File

@@ -0,0 +1,25 @@
name: Generate
permissions:
checks: write
contents: write
pull-requests: write
statuses: write
"on":
workflow_dispatch:
inputs:
force:
description: Force generation of SDKs
type: boolean
default: false
schedule:
- cron: 0 0 * * *
jobs:
generate:
uses: speakeasy-api/sdk-generation-action/.github/workflows/workflow-executor.yaml@v15
with:
force: ${{ github.event.inputs.force }}
mode: pr
speakeasy_version: latest
secrets:
github_access_token: ${{ secrets.GITHUB_TOKEN }}
speakeasy_api_key: ${{ secrets.SPEAKEASY_API_KEY }}

11
.speakeasy/workflow.yaml Normal file
View File

@@ -0,0 +1,11 @@
workflowVersion: 1.0.0
speakeasyVersion: latest
sources:
# Plex-API:
# inputs:
# - location: registry.speakeasyapi.dev/lukehagar/lukehagar/plex-api:latest
# # overlays:
# # - location: ./mintlify-overlay.yaml
# # - location: https://github.com/LukeHagar/plexjs/raw/main/codeSamples.yaml
# output: plexapi
targets: {}

View File

@@ -0,0 +1,3 @@
---
openapi: delete /activities/{activityUUID}
---

View File

@@ -0,0 +1,3 @@
---
openapi: get /activities
---

View File

@@ -0,0 +1,3 @@
---
openapi: get /security/token
---

View File

@@ -0,0 +1,3 @@
---
openapi: get /security/resources
---

View File

@@ -0,0 +1,3 @@
---
openapi: get /butler
---

View File

@@ -0,0 +1,3 @@
---
openapi: post /butler/{taskName}
---

View File

@@ -0,0 +1,3 @@
---
openapi: post /butler
---

View File

@@ -0,0 +1,3 @@
---
openapi: delete /butler/{taskName}
---

View File

@@ -0,0 +1,3 @@
---
openapi: delete /butler
---

View File

@@ -1,4 +0,0 @@
---
title: 'Create Plant'
openapi: 'POST /plants'
---

View File

@@ -1,4 +0,0 @@
---
title: 'Delete Plant'
openapi: 'DELETE /plants/{id}'
---

View File

@@ -1,4 +0,0 @@
---
title: 'Get Plants'
openapi: 'GET /plants'
---

View File

@@ -0,0 +1,3 @@
---
openapi: get /hubs
---

View File

@@ -0,0 +1,3 @@
---
openapi: get /hubs/sections/{sectionId}
---

View File

@@ -1,33 +0,0 @@
---
title: 'Introduction'
description: 'Example section for showcasing API endpoints'
---
<Note>
If you're not looking to build API reference documentation, you can delete
this section by removing the api-reference folder.
</Note>
## Welcome
There are two ways to build API documentation: [OpenAPI](https://mintlify.com/docs/api-playground/openapi/setup) and [MDX components](https://mintlify.com/docs/api-playground/mdx/configuration). For the starter kit, we are using the following OpenAPI specification.
<Card
title="Plant Store Endpoints"
icon="leaf"
href="https://github.com/mintlify/starter/blob/main/api-reference/openapi.json"
>
View the OpenAPI specification file
</Card>
## Authentication
All API endpoints are authenticated using Bearer tokens and picked up from the specification file.
```json
"security": [
{
"bearerAuth": []
}
]
```

View File

@@ -0,0 +1,3 @@
---
openapi: delete /library/sections/{sectionId}
---

View File

@@ -0,0 +1,3 @@
---
openapi: get /library/sections
---

View File

@@ -0,0 +1,3 @@
---
openapi: get /library/hashes
---

View File

@@ -0,0 +1,3 @@
---
openapi: get /library/metadata/{ratingKey}/children
---

View File

@@ -0,0 +1,3 @@
---
openapi: get /library/metadata/{ratingKey}
---

View File

@@ -0,0 +1,3 @@
---
openapi: get /library/sections/{sectionId}
---

View File

@@ -0,0 +1,3 @@
---
openapi: get /library/sections/{sectionId}/{tag}
---

View File

@@ -0,0 +1,3 @@
---
openapi: get /library/onDeck
---

View File

@@ -0,0 +1,3 @@
---
openapi: get /library/recentlyAdded
---

View File

@@ -0,0 +1,3 @@
---
openapi: get /library/sections/{sectionId}/refresh
---

View File

@@ -0,0 +1,3 @@
---
openapi: get /library/sections/{sectionId}/search
---

View File

@@ -0,0 +1,3 @@
---
openapi: get /log/networked
---

View File

@@ -0,0 +1,3 @@
---
openapi: post /log
---

View File

@@ -0,0 +1,3 @@
---
openapi: get /log
---

View File

@@ -0,0 +1,3 @@
---
openapi: get /:/scrobble
---

View File

@@ -0,0 +1,3 @@
---
openapi: get /:/unscrobble
---

View File

@@ -0,0 +1,3 @@
---
openapi: post /:/progress
---

View File

@@ -0,0 +1,3 @@
---
openapi: put /playlists/{playlistID}/items
---

View File

@@ -0,0 +1,3 @@
---
openapi: post /playlists
---

View File

@@ -0,0 +1,3 @@
---
openapi: delete /playlists/{playlistID}/items
---

View File

@@ -0,0 +1,3 @@
---
openapi: delete /playlists/{playlistID}
---

View File

@@ -0,0 +1,3 @@
---
openapi: get /playlists
---

View File

@@ -0,0 +1,3 @@
---
openapi: get /playlists/{playlistID}/items
---

View File

@@ -0,0 +1,3 @@
---
openapi: get /playlists/{playlistID}
---

View File

@@ -0,0 +1,3 @@
---
openapi: put /playlists/{playlistID}
---

View File

@@ -0,0 +1,3 @@
---
openapi: post /playlists/upload
---

View File

@@ -0,0 +1,3 @@
---
openapi: post /pins
---

View File

@@ -0,0 +1,3 @@
---
openapi: get /pins/{pinID}
---

View File

@@ -0,0 +1,3 @@
---
openapi: get /search
---

View File

@@ -0,0 +1,3 @@
---
openapi: get /hubs/search
---

View File

@@ -0,0 +1,3 @@
---
openapi: get /hubs/search/voice
---

View File

@@ -0,0 +1,3 @@
---
openapi: get /photo/:/transcode
---

View File

@@ -0,0 +1,3 @@
---
openapi: get /clients
---

View File

@@ -0,0 +1,3 @@
---
openapi: get /devices
---

View File

@@ -0,0 +1,3 @@
---
openapi: get /myplex/account
---

View File

@@ -0,0 +1,3 @@
---
openapi: get /identity
---

View File

@@ -0,0 +1,3 @@
---
openapi: get /servers
---

View File

@@ -0,0 +1,3 @@
---
openapi: get /:/prefs
---

View File

@@ -0,0 +1,3 @@
---
openapi: get /
---

View File

@@ -0,0 +1,3 @@
---
openapi: get /status/sessions
---

View File

@@ -0,0 +1,3 @@
---
openapi: get /status/sessions/history/all
---

View File

@@ -0,0 +1,3 @@
---
openapi: get /transcode/sessions
---

View File

@@ -0,0 +1,3 @@
---
openapi: delete /transcode/sessions/{sessionKey}
---

View File

@@ -0,0 +1,3 @@
---
openapi: get /statistics/media
---

View File

@@ -0,0 +1,3 @@
---
openapi: put /updater/apply
---

View File

@@ -0,0 +1,3 @@
---
openapi: put /updater/check
---

View File

@@ -0,0 +1,3 @@
---
openapi: get /updater/status
---

View File

@@ -0,0 +1,3 @@
---
openapi: get /:/timeline
---

View File

@@ -0,0 +1,3 @@
---
openapi: get /video/:/transcode/universal/start.mpd
---

View File

@@ -1,98 +0,0 @@
---
title: 'Development'
description: 'Learn how to preview changes locally'
---
<Info>
**Prerequisite** You should have installed Node.js (version 18.10.0 or
higher).
</Info>
Step 1. Install Mintlify on your OS:
<CodeGroup>
```bash npm
npm i -g mintlify
```
```bash yarn
yarn global add mintlify
```
</CodeGroup>
Step 2. Go to the docs are located (where you can find `mint.json`) and run the following command:
```bash
mintlify dev
```
The documentation website is now available at `http://localhost:3000`.
### Custom Ports
Mintlify uses port 3000 by default. You can use the `--port` flag to customize the port Mintlify runs on. For example, use this command to run in port 3333:
```bash
mintlify dev --port 3333
```
You will see an error like this if you try to run Mintlify in a port that's already taken:
```md
Error: listen EADDRINUSE: address already in use :::3000
```
## Mintlify Versions
Each CLI is linked to a specific version of Mintlify. Please update the CLI if your local website looks different than production.
<CodeGroup>
```bash npm
npm i -g mintlify@latest
```
```bash yarn
yarn global upgrade mintlify
```
</CodeGroup>
## Deployment
<Tip>
Unlimited editors available under the [Startup
Plan](https://mintlify.com/pricing)
</Tip>
You should see the following if the deploy successfully went through:
<Frame>
<img src="/images/checks-passed.png" style={{ borderRadius: '0.5rem' }} />
</Frame>
## Troubleshooting
Here's how to solve some common problems when working with the CLI.
<AccordionGroup>
<Accordion title="Mintlify is not loading">
Update to Node v18. Run `mintlify install` and try again.
</Accordion>
<Accordion title="No such file or directory on Windows">
Go to the `C:/Users/Username/.mintlify/` directory and remove the `mint`
folder. Then Open the Git Bash in this location and run `git clone
https://github.com/mintlify/mint.git`.
Repeat step 3.
</Accordion>
<Accordion title="Getting an unknown error">
Try navigating to the root of your device and delete the ~/.mintlify folder.
Then run `mintlify dev` again.
</Accordion>
</AccordionGroup>
Curious about what changed in a CLI version? [Check out the CLI changelog.](/changelog/command-line)

View File

@@ -1,37 +0,0 @@
---
title: 'Code Blocks'
description: 'Display inline code and code blocks'
icon: 'code'
---
## Basic
### Inline Code
To denote a `word` or `phrase` as code, enclose it in backticks (`).
```
To denote a `word` or `phrase` as code, enclose it in backticks (`).
```
### Code Block
Use [fenced code blocks](https://www.markdownguide.org/extended-syntax/#fenced-code-blocks) by enclosing code in three backticks and follow the leading ticks with the programming language of your snippet to get syntax highlighting. Optionally, you can also write the name of your code after the programming language.
```java HelloWorld.java
class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
```
````md
```java HelloWorld.java
class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
```
````

View File

@@ -1,59 +0,0 @@
---
title: 'Images and Embeds'
description: 'Add image, video, and other HTML elements'
icon: 'image'
---
<img
style={{ borderRadius: '0.5rem' }}
src="https://mintlify-assets.b-cdn.net/bigbend.jpg"
/>
## Image
### Using Markdown
The [markdown syntax](https://www.markdownguide.org/basic-syntax/#images) lets you add images using the following code
```md
![title](/path/image.jpg)
```
Note that the image file size must be less than 5MB. Otherwise, we recommend hosting on a service like [Cloudinary](https://cloudinary.com/) or [S3](https://aws.amazon.com/s3/). You can then use that URL and embed.
### Using Embeds
To get more customizability with images, you can also use [embeds](/writing-content/embed) to add images
```html
<img height="200" src="/path/image.jpg" />
```
## Embeds and HTML elements
<iframe
width="560"
height="315"
src="https://www.youtube.com/embed/4KzFe50RQkQ"
title="YouTube video player"
frameBorder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowFullScreen
style={{ width: '100%', borderRadius: '0.5rem' }}
></iframe>
<br />
<Tip>
Mintlify supports [HTML tags in Markdown](https://www.markdownguide.org/basic-syntax/#html). This is helpful if you prefer HTML tags to Markdown syntax, and lets you create documentation with infinite flexibility.
</Tip>
### iFrames
Loads another HTML page within the document. Most commonly used for embedding videos.
```html
<iframe src="https://www.youtube.com/embed/4KzFe50RQkQ"> </iframe>
```

View File

@@ -1,88 +0,0 @@
---
title: 'Markdown Syntax'
description: 'Text, title, and styling in standard markdown'
icon: 'text-size'
---
## Titles
Best used for section headers.
```md
## Titles
```
### Subtitles
Best use to subsection headers.
```md
### Subtitles
```
<Tip>
Each **title** and **subtitle** creates an anchor and also shows up on the table of contents on the right.
</Tip>
## Text Formatting
We support most markdown formatting. Simply add `**`, `_`, or `~` around text to format it.
| Style | How to write it | Result |
| ------------- | ----------------- | --------------- |
| Bold | `**bold**` | **bold** |
| Italic | `_italic_` | _italic_ |
| Strikethrough | `~strikethrough~` | ~strikethrough~ |
You can combine these. For example, write `**_bold and italic_**` to get **_bold and italic_** text.
You need to use HTML to write superscript and subscript text. That is, add `<sup>` or `<sub>` around your text.
| Text Size | How to write it | Result |
| ----------- | ------------------------ | ---------------------- |
| Superscript | `<sup>superscript</sup>` | <sup>superscript</sup> |
| Subscript | `<sub>subscript</sub>` | <sub>subscript</sub> |
## Linking to Pages
You can add a link by wrapping text in `[]()`. You would write `[link to google](https://google.com)` to [link to google](https://google.com).
Links to pages in your docs need to be root-relative. Basically, you should include the entire folder path. For example, `[link to text](/writing-content/text)` links to the page "Text" in our components section.
Relative links like `[link to text](../text)` will open slower because we cannot optimize them as easily.
## Blockquotes
### Singleline
To create a blockquote, add a `>` in front of a paragraph.
> Dorothy followed her through many of the beautiful rooms in her castle.
```md
> Dorothy followed her through many of the beautiful rooms in her castle.
```
### Multiline
> Dorothy followed her through many of the beautiful rooms in her castle.
>
> The Witch bade her clean the pots and kettles and sweep the floor and keep the fire fed with wood.
```md
> Dorothy followed her through many of the beautiful rooms in her castle.
>
> The Witch bade her clean the pots and kettles and sweep the floor and keep the fire fed with wood.
```
### LaTeX
Mintlify supports [LaTeX](https://www.latex-project.org) through the Latex component.
<Latex>8 x (vk x H1 - H2) = (0,1)</Latex>
```md
<Latex>8 x (vk x H1 - H2) = (0,1)</Latex>
```

View File

@@ -1,66 +0,0 @@
---
title: 'Navigation'
description: 'The navigation field in mint.json defines the pages that go in the navigation menu'
icon: 'map'
---
The navigation menu is the list of links on every website.
You will likely update `mint.json` every time you add a new page. Pages do not show up automatically.
## Navigation syntax
Our navigation syntax is recursive which means you can make nested navigation groups. You don't need to include `.mdx` in page names.
<CodeGroup>
```json Regular Navigation
"navigation": [
{
"group": "Getting Started",
"pages": ["quickstart"]
}
]
```
```json Nested Navigation
"navigation": [
{
"group": "Getting Started",
"pages": [
"quickstart",
{
"group": "Nested Reference Pages",
"pages": ["nested-reference-page"]
}
]
}
]
```
</CodeGroup>
## Folders
Simply put your MDX files in folders and update the paths in `mint.json`.
For example, to have a page at `https://yoursite.com/your-folder/your-page` you would make a folder called `your-folder` containing an MDX file called `your-page.mdx`.
<Warning>
You cannot use `api` for the name of a folder unless you nest it inside another folder. Mintlify uses Next.js which reserves the top-level `api` folder for internal server calls. A folder name such as `api-reference` would be accepted.
</Warning>
```json Navigation With Folder
"navigation": [
{
"group": "Group Name",
"pages": ["your-folder/your-page"]
}
]
```
## Hidden Pages
MDX files not included in `mint.json` will not show up in the sidebar but are accessible through the search bar and by linking directly to them.

View File

@@ -1,110 +0,0 @@
---
title: Reusable Snippets
description: Reusable, custom snippets to keep content in sync
icon: 'recycle'
---
import SnippetIntro from '/snippets/snippet-intro.mdx';
<SnippetIntro />
## Creating a custom snippet
**Pre-condition**: You must create your snippet file in the `snippets` directory.
<Note>
Any page in the `snippets` directory will be treated as a snippet and will not
be rendered into a standalone page. If you want to create a standalone page
from the snippet, import the snippet into another file and call it as a
component.
</Note>
### Default export
1. Add content to your snippet file that you want to re-use across multiple
locations. Optionally, you can add variables that can be filled in via props
when you import the snippet.
```mdx snippets/my-snippet.mdx
Hello world! This is my content I want to reuse across pages. My keyword of the
day is {word}.
```
<Warning>
The content that you want to reuse must be inside the `snippets` directory in
order for the import to work.
</Warning>
2. Import the snippet into your destination file.
```mdx destination-file.mdx
---
title: My title
description: My Description
---
import MySnippet from '/snippets/path/to/my-snippet.mdx';
## Header
Lorem impsum dolor sit amet.
<MySnippet word="bananas" />
```
### Reusable variables
1. Export a variable from your snippet file:
```mdx snippets/path/to/custom-variables.mdx
export const myName = 'my name';
export const myObject = { fruit: 'strawberries' };
```
2. Import the snippet from your destination file and use the variable:
```mdx destination-file.mdx
---
title: My title
description: My Description
---
import { myName, myObject } from '/snippets/path/to/custom-variables.mdx';
Hello, my name is {myName} and I like {myObject.fruit}.
```
### Reusable components
1. Inside your snippet file, create a component that takes in props by exporting
your component in the form of an arrow function.
```mdx snippets/custom-component.mdx
export const MyComponent = ({ title }) => (
<div>
<h1>{title}</h1>
<p>... snippet content ...</p>
</div>
);
```
<Warning>
MDX does not compile inside the body of an arrow function. Stick to HTML
syntax when you can or use a default export if you need to use MDX.
</Warning>
2. Import the snippet into your destination file and pass in the props
```mdx destination-file.mdx
---
title: My title
description: My Description
---
import { MyComponent } from '/snippets/custom-component.mdx';
Lorem ipsum dolor sit amet.
<MyComponent title={'Custom title'} />
```

View File

@@ -1,318 +0,0 @@
---
title: 'Global Settings'
description: 'Mintlify gives you complete control over the look and feel of your documentation using the mint.json file'
icon: 'gear'
---
Every Mintlify site needs a `mint.json` file with the core configuration settings. Learn more about the [properties](#properties) below.
## Properties
<ResponseField name="name" type="string" required>
Name of your project. Used for the global title.
Example: `mintlify`
</ResponseField>
<ResponseField name="navigation" type="Navigation[]" required>
An array of groups with all the pages within that group
<Expandable title="Navigation">
<ResponseField name="group" type="string">
The name of the group.
Example: `Settings`
</ResponseField>
<ResponseField name="pages" type="string[]">
The relative paths to the markdown files that will serve as pages.
Example: `["customization", "page"]`
</ResponseField>
</Expandable>
</ResponseField>
<ResponseField name="logo" type="string or object">
Path to logo image or object with path to "light" and "dark" mode logo images
<Expandable title="Logo">
<ResponseField name="light" type="string">
Path to the logo in light mode
</ResponseField>
<ResponseField name="dark" type="string">
Path to the logo in dark mode
</ResponseField>
<ResponseField name="href" type="string" default="/">
Where clicking on the logo links you to
</ResponseField>
</Expandable>
</ResponseField>
<ResponseField name="favicon" type="string">
Path to the favicon image
</ResponseField>
<ResponseField name="colors" type="Colors">
Hex color codes for your global theme
<Expandable title="Colors">
<ResponseField name="primary" type="string" required>
The primary color. Used for most often for highlighted content, section
headers, accents, in light mode
</ResponseField>
<ResponseField name="light" type="string">
The primary color for dark mode. Used for most often for highlighted
content, section headers, accents, in dark mode
</ResponseField>
<ResponseField name="dark" type="string">
The primary color for important buttons
</ResponseField>
<ResponseField name="background" type="object">
The color of the background in both light and dark mode
<Expandable title="Object">
<ResponseField name="light" type="string" required>
The hex color code of the background in light mode
</ResponseField>
<ResponseField name="dark" type="string" required>
The hex color code of the background in dark mode
</ResponseField>
</Expandable>
</ResponseField>
</Expandable>
</ResponseField>
<ResponseField name="topbarLinks" type="TopbarLink[]">
Array of `name`s and `url`s of links you want to include in the topbar
<Expandable title="TopbarLink">
<ResponseField name="name" type="string">
The name of the button.
Example: `Contact us`
</ResponseField>
<ResponseField name="url" type="string">
The url once you click on the button. Example: `https://mintlify.com/contact`
</ResponseField>
</Expandable>
</ResponseField>
<ResponseField name="topbarCtaButton" type="Call to Action">
<Expandable title="Topbar Call to Action">
<ResponseField name="type" type={'"link" or "github"'} default="link">
Link shows a button. GitHub shows the repo information at the url provided including the number of GitHub stars.
</ResponseField>
<ResponseField name="url" type="string">
If `link`: What the button links to.
If `github`: Link to the repository to load GitHub information from.
</ResponseField>
<ResponseField name="name" type="string">
Text inside the button. Only required if `type` is a `link`.
</ResponseField>
</Expandable>
</ResponseField>
<ResponseField name="versions" type="string[]">
Array of version names. Only use this if you want to show different versions
of docs with a dropdown in the navigation bar.
</ResponseField>
<ResponseField name="anchors" type="Anchor[]">
An array of the anchors, includes the `icon`, `color`, and `url`.
<Expandable title="Anchor">
<ResponseField name="icon" type="string">
The [Font Awesome](https://fontawesome.com/search?s=brands%2Cduotone) icon used to feature the anchor.
Example: `comments`
</ResponseField>
<ResponseField name="name" type="string">
The name of the anchor label.
Example: `Community`
</ResponseField>
<ResponseField name="url" type="string">
The start of the URL that marks what pages go in the anchor. Generally, this is the name of the folder you put your pages in.
</ResponseField>
<ResponseField name="color" type="string">
The hex color of the anchor icon background. Can also be a gradient if you pass an object with the properties `from` and `to` that are each a hex color.
</ResponseField>
<ResponseField name="version" type="string">
Used if you want to hide an anchor until the correct docs version is selected.
</ResponseField>
<ResponseField name="isDefaultHidden" type="boolean" default="false">
Pass `true` if you want to hide the anchor until you directly link someone to docs inside it.
</ResponseField>
<ResponseField name="iconType" default="duotone" type="string">
One of: "brands", "duotone", "light", "sharp-solid", "solid", or "thin"
</ResponseField>
</Expandable>
</ResponseField>
<ResponseField name="topAnchor" type="Object">
Override the default configurations for the top-most anchor.
<Expandable title="Object">
<ResponseField name="name" default="Documentation" type="string">
The name of the top-most anchor
</ResponseField>
<ResponseField name="icon" default="book-open" type="string">
Font Awesome icon.
</ResponseField>
<ResponseField name="iconType" default="duotone" type="string">
One of: "brands", "duotone", "light", "sharp-solid", "solid", or "thin"
</ResponseField>
</Expandable>
</ResponseField>
<ResponseField name="tabs" type="Tabs[]">
An array of navigational tabs.
<Expandable title="Tabs">
<ResponseField name="name" type="string">
The name of the tab label.
</ResponseField>
<ResponseField name="url" type="string">
The start of the URL that marks what pages go in the tab. Generally, this
is the name of the folder you put your pages in.
</ResponseField>
</Expandable>
</ResponseField>
<ResponseField name="api" type="API">
Configuration for API settings. Learn more about API pages at [API Components](/api-playground/demo).
<Expandable title="API">
<ResponseField name="baseUrl" type="string">
The base url for all API endpoints. If `baseUrl` is an array, it will enable for multiple base url
options that the user can toggle.
</ResponseField>
<ResponseField name="auth" type="Auth">
<Expandable title="Auth">
<ResponseField name="method" type='"bearer" | "basic" | "key"'>
The authentication strategy used for all API endpoints.
</ResponseField>
<ResponseField name="name" type="string">
The name of the authentication parameter used in the API playground.
If method is `basic`, the format should be `[usernameName]:[passwordName]`
</ResponseField>
<ResponseField name="inputPrefix" type="string">
The default value that's designed to be a prefix for the authentication input field.
E.g. If an `inputPrefix` of `AuthKey` would inherit the default input result of the authentication field as `AuthKey`.
</ResponseField>
</Expandable>
</ResponseField>
<ResponseField name="playground" type="Playground">
Configurations for the API playground
<Expandable title="Playground">
<ResponseField name="mode" default="show" type='"show" | "simple" | "hide"'>
Whether the playground is showing, hidden, or only displaying the endpoint with no added user interactivity `simple`
Learn more at the [playground guides](/api-playground/demo)
</ResponseField>
</Expandable>
</ResponseField>
<ResponseField name="maintainOrder" type="boolean">
Enabling this flag ensures that key ordering in OpenAPI pages matches the key ordering defined in the OpenAPI file.
<Warning>This behavior will soon be enabled by default, at which point this field will be deprecated.</Warning>
</ResponseField>
</Expandable>
</ResponseField>
<ResponseField name="openapi" type="string | string[]">
A string or an array of strings of URL(s) or relative path(s) pointing to your
OpenAPI file.
Examples:
<CodeGroup>
```json Absolute
"openapi": "https://example.com/openapi.json"
```
```json Relative
"openapi": "/openapi.json"
```
```json Multiple
"openapi": ["https://example.com/openapi1.json", "/openapi2.json", "/openapi3.json"]
```
</CodeGroup>
</ResponseField>
<ResponseField name="footerSocials" type="FooterSocials">
An object of social media accounts where the key:property pair represents the social media platform and the account url.
Example:
```json
{
"twitter": "https://twitter.com/mintlify",
"website": "https://mintlify.com"
}
```
<Expandable title="FooterSocials">
<ResponseField name="[key]" type="string">
One of the following values `website`, `facebook`, `twitter`, `discord`, `slack`, `github`, `linkedin`, `instagram`, `hacker-news`
Example: `twitter`
</ResponseField>
<ResponseField name="property" type="string">
The URL to the social platform.
Example: `https://twitter.com/mintlify`
</ResponseField>
</Expandable>
</ResponseField>
<ResponseField name="feedback" type="Feedback">
Configurations to enable feedback buttons
<Expandable title="Feedback">
<ResponseField name="suggestEdit" type="boolean" default="false">
Enables a button to allow users to suggest edits via pull requests
</ResponseField>
<ResponseField name="raiseIssue" type="boolean" default="false">
Enables a button to allow users to raise an issue about the documentation
</ResponseField>
</Expandable>
</ResponseField>
<ResponseField name="modeToggle" type="ModeToggle">
Customize the dark mode toggle.
<Expandable title="ModeToggle">
<ResponseField name="default" type={'"light" or "dark"'}>
Set if you always want to show light or dark mode for new users. When not
set, we default to the same mode as the user's operating system.
</ResponseField>
<ResponseField name="isHidden" type="boolean" default="false">
Set to true to hide the dark/light mode toggle. You can combine `isHidden` with `default` to force your docs to only use light or dark mode. For example:
<CodeGroup>
```json Only Dark Mode
"modeToggle": {
"default": "dark",
"isHidden": true
}
```
```json Only Light Mode
"modeToggle": {
"default": "light",
"isHidden": true
}
```
</CodeGroup>
</ResponseField>
</Expandable>
</ResponseField>
<ResponseField name="backgroundImage" type="string">
A background image to be displayed behind every page. See example with
[Infisical](https://infisical.com/docs) and [FRPC](https://frpc.io).
</ResponseField>

View File

@@ -1,71 +0,0 @@
---
title: Introduction
description: 'Welcome to the home of your new documentation'
---
<img
className="block dark:hidden"
src="/images/hero-light.svg"
alt="Hero Light"
/>
<img
className="hidden dark:block"
src="/images/hero-dark.svg"
alt="Hero Dark"
/>
## Setting up
The first step to world-class documentation is setting up your editing environments.
<CardGroup cols={2}>
<Card
title="Edit Your Docs"
icon="pen-to-square"
href="https://mintlify.com/docs/quickstart"
>
Get your docs set up locally for easy development
</Card>
<Card
title="Preview Changes"
icon="image"
href="https://mintlify.com/docs/development"
>
Preview your changes before you push to make sure they're perfect
</Card>
</CardGroup>
## Make it yours
Update your docs to your brand and add valuable content for the best user conversion.
<CardGroup cols={2}>
<Card
title="Customize Style"
icon="palette"
href="https://mintlify.com/docs/settings/global"
>
Customize your docs to your company's colors and brands
</Card>
<Card
title="Reference APIs"
icon="code"
href="https://mintlify.com/docs/api-playground/openapi"
>
Automatically generate endpoints from an OpenAPI spec
</Card>
<Card
title="Add Components"
icon="screwdriver-wrench"
href="https://mintlify.com/docs/components/accordion"
>
Build interactive features and designs to guide your users
</Card>
<Card
title="Get Inspiration"
icon="stars"
href="https://mintlify.com/customers"
>
Check out our showcase of our favorite documentation
</Card>
</CardGroup>

208
mint.json
View File

@@ -1,11 +1,11 @@
{ {
"$schema": "https://mintlify.com/schema.json", "$schema": "https://mintlify.com/schema.json",
"name": "Starter Kit", "name": "Plex Developer Documentation",
"logo": { "logo": {
"dark": "/logo/dark.svg", "dark": "/logo/dark.svg",
"light": "/logo/light.svg" "light": "/logo/light.svg"
}, },
"openapi": "https://raw.githubusercontent.com/LukeHagar/plex-api-spec/main/plex-media-server-spec-dereferenced.yaml", "openapi": ["./plex-spec.yaml"],
"favicon": "/favicon.svg", "favicon": "/favicon.svg",
"colors": { "colors": {
"primary": "#0D9373", "primary": "#0D9373",
@@ -16,82 +16,162 @@
"to": "#07C983" "to": "#07C983"
} }
}, },
"analytics": {
"plausible": {
"domain": "events.plygrnd.org"
}
},
"topbarLinks": [
{
"name": "Support",
"url": "mailto:hi@mintlify.com"
}
],
"topbarCtaButton": { "topbarCtaButton": {
"name": "Dashboard", "name": "Suggest an edit",
"url": "https://dashboard.mintlify.com" "url": "https://github.com/LukeHagar/plex-api-spec"
}, },
"tabs": [
{
"name": "API Reference",
"url": "api-reference"
}
],
"anchors": [ "anchors": [
{
"name": "Documentation",
"icon": "book-open-cover",
"url": "https://mintlify.com/docs"
},
{ {
"name": "Community", "name": "Community",
"icon": "slack", "icon": "discord",
"url": "https://mintlify.com/community" "url": "https://discord.gg/CYuDKV9uK3"
},
{
"name": "Blog",
"icon": "newspaper",
"url": "https://mintlify.com/blog"
} }
], ],
"navigation": [ "navigation": [
{
"group": "Get Started",
"pages": [
"introduction",
"quickstart",
"development"
]
},
{
"group": "Essentials",
"pages": [
"essentials/markdown",
"essentials/code",
"essentials/images",
"essentials/settings",
"essentials/navigation",
"essentials/reusable-snippets"
]
},
{ {
"group": "API Documentation", "group": "API Documentation",
"pages": [ "pages": [
"api-reference/introduction" {
] "group": "Server",
}, "pages": [
{ "api-reference/server/server-capabilities",
"group": "Endpoint Examples", "api-reference/server/get-server-preferences",
"pages": [ "api-reference/server/get-available-clients",
"api-reference/endpoint/get", "api-reference/server/get-devices",
"api-reference/endpoint/create", "api-reference/server/get-server-identity",
"api-reference/endpoint/delete" "api-reference/server/get-myplex-account",
"api-reference/server/get-a-resized-photo",
"api-reference/server/get-server-list"
]
},
{
"group": "Media",
"pages": [
"api-reference/media/mark-media-played",
"api-reference/media/mark-media-unplayed",
"api-reference/media/update-media-play-progress"
]
},
{
"group": "Video",
"pages": [
"api-reference/video/get-the-timeline-for-a-media-item",
"api-reference/video/start-universal-transcode"
]
},
{
"group": "Activities",
"pages": [
"api-reference/activities/get-server-activities",
"api-reference/activities/cancel-server-activities"
]
},
{
"group": "Butler",
"pages": [
"api-reference/butler/get-butler-tasks",
"api-reference/butler/start-all-butler-tasks",
"api-reference/butler/stop-all-butler-tasks",
"api-reference/butler/start-a-single-butler-task",
"api-reference/butler/stop-a-single-butler-task"
]
},
{
"group": "Hubs",
"pages": [
"api-reference/hubs/get-global-hubs",
"api-reference/hubs/get-library-specific-hubs"
]
},
{
"group": "Search",
"pages": [
"api-reference/search/perform-a-search",
"api-reference/search/perform-a-voice-search",
"api-reference/search/get-search-results"
]
},
{
"group": "Library",
"pages": [
"api-reference/library/get-hash-value",
"api-reference/library/get-recently-added",
"api-reference/library/get-all-libraries",
"api-reference/library/get-library-details",
"api-reference/library/delete-library-section",
"api-reference/library/get-library-items",
"api-reference/library/refresh-library",
"api-reference/library/search-library",
"api-reference/library/get-items-metadata",
"api-reference/library/get-items-children",
"api-reference/library/get-on-deck"
]
},
{
"group": "Log",
"pages": [
"api-reference/log/logging-a-single-line-message",
"api-reference/log/logging-a-multi-line-message",
"api-reference/log/enabling-papertrail"
]
},
{
"group": "Plex",
"pages": [
"api-reference/plex/get-a-pin",
"api-reference/plex/get-access-token"
]
},
{
"group": "Playlists",
"pages": [
"api-reference/playlists/get-all-playlists",
"api-reference/playlists/create-a-playlist",
"api-reference/playlists/retrieve-playlist",
"api-reference/playlists/update-a-playlist",
"api-reference/playlists/deletes-a-playlist",
"api-reference/playlists/retrieve-playlist-contents",
"api-reference/playlists/adding-to-a-playlist",
"api-reference/playlists/delete-playlist-contents",
"api-reference/playlists/upload-playlist"
]
},
{
"group": "Authentication",
"pages": [
"api-reference/authentication/get-a-transient-token",
"api-reference/authentication/get-source-connection-information"
]
},
{
"group": "Statistics",
"pages": ["api-reference/statistics/get-media-statistics"]
},
{
"group": "Sessions",
"pages": [
"api-reference/sessions/get-active-sessions",
"api-reference/sessions/get-session-history",
"api-reference/sessions/get-transcode-sessions",
"api-reference/sessions/stop-a-transcode-session"
]
},
{
"group": "Updater",
"pages": [
"api-reference/updater/querying-status-of-updates",
"api-reference/updater/checking-for-updates",
"api-reference/updater/apply-updates"
]
}
] ]
} }
], ],
"footerSocials": { "footerSocials": {
"twitter": "https://twitter.com/mintlify", "github": "https://github.com/lukehagar",
"github": "https://github.com/mintlify", "linkedin": "https://www.linkedin.com/in/lukehagar/"
"linkedin": "https://www.linkedin.com/company/mintsearch"
} }
} }

7425
plex-spec.yaml Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,86 +0,0 @@
---
title: 'Quickstart'
description: 'Start building awesome documentation in under 5 minutes'
---
## Setup your development
Learn how to update your docs locally and and deploy them to the public.
### Edit and preview
<AccordionGroup>
<Accordion icon="github" title="Clone your docs locally">
During the onboarding process, we created a repository on your Github with
your docs content. You can find this repository on our
[dashboard](https://dashboard.mintlify.com). To clone the repository
locally, follow these
[instructions](https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository)
in your terminal.
</Accordion>
<Accordion icon="rectangle-terminal" title="Preview changes">
Previewing helps you make sure your changes look as intended. We built a
command line interface to render these changes locally. 1. Install the
[Mintlify CLI](https://www.npmjs.com/package/mintlify) to preview the
documentation changes locally with this command: ``` npm i -g mintlify ```
2. Run the following command at the root of your documentation (where
`mint.json` is): ``` mintlify dev ```
</Accordion>
</AccordionGroup>
### Deploy your changes
<AccordionGroup>
<Accordion icon="message-bot" title="Install our Github app">
Our Github app automatically deploys your changes to your docs site, so you
don't need to manage deployments yourself. You can find the link to install on
your [dashboard](https://dashboard.mintlify.com). Once the bot has been
successfully installed, there should be a check mark next to the commit hash
of the repo.
</Accordion>
<Accordion icon="rocket" title="Push your changes">
[Commit and push your changes to
Git](https://docs.github.com/en/get-started/using-git/pushing-commits-to-a-remote-repository#about-git-push)
for your changes to update in your docs site. If you push and don't see that
the Github app successfully deployed your changes, you can also manually
update your docs through our [dashboard](https://dashboard.mintlify.com).
</Accordion>
</AccordionGroup>
## Update your docs
Add content directly in your files with MDX syntax and React components. You can use any of our components, or even build your own.
<CardGroup>
<Card title="Style Your Docs" icon="paintbrush" href="/settings/global">
Add flair to your docs with personalized branding.
</Card>
<Card
title="Add API Endpoints"
icon="square-code"
href="/api-playground/configuration"
>
Implement your OpenAPI spec and enable API user interaction.
</Card>
<Card
title="Integrate Analytics"
icon="chart-mixed"
href="/analytics/supported-integrations"
>
Draw insights from user interactions with your documentation.
</Card>
<Card
title="Host on a Custom Domain"
icon="browser"
href="/settings/custom-domain/subdomain"
>
Keep your docs on your own website's subdomain.
</Card>
</CardGroup>

View File

@@ -1,4 +0,0 @@
One of the core principles of software development is DRY (Don't Repeat
Yourself). This is a principle that apply to documentation as
well. If you find yourself repeating the same content in multiple places, you
should consider creating a custom snippet to keep your content in sync.