{
  "openapi": "3.1.0",
  "info": {
    "title": "AT Protocol XRPC API",
    "summary": "An unofficial conversion of AT Protocol's lexicons to OpenAPI's schema format.",
    "version": "0.0.0",
    "license": {
      "name": "MIT License",
      "identifier": "MIT"
    }
  },
  "servers": [
    {
      "url": "https://api.rocksky.app/xrpc/",
      "description": "AT Protocol AppView XRPC server"
    }
  ],
  "paths": {
    "/app.rocksky.actor.getActorAlbums": {
      "get": {
        "tags": [
          "app.rocksky.actor"
        ],
        "summary": "Get albums for an actor",
        "operationId": "app.rocksky.actor.getActorAlbums",
        "security": [
          {
            "Bearer": []
          }
        ],
        "parameters": [
          {
            "name": "did",
            "in": "query",
            "description": "The DID or handle of the actor",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The DID or handle of the actor",
              "format": "at-identifier"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of albums to return",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The offset for pagination",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0
            }
          },
          {
            "name": "startDate",
            "in": "query",
            "description": "The start date to filter albums from (ISO 8601 format)",
            "required": false,
            "schema": {
              "type": "string",
              "description": "The start date to filter albums from (ISO 8601 format)",
              "format": "date-time"
            }
          },
          {
            "name": "endDate",
            "in": "query",
            "description": "The end date to filter albums to (ISO 8601 format)",
            "required": false,
            "schema": {
              "type": "string",
              "description": "The end date to filter albums to (ISO 8601 format)",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "albums": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/app.rocksky.album.defs.albumViewBasic"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.actor.getActorArtists": {
      "get": {
        "tags": [
          "app.rocksky.actor"
        ],
        "summary": "Get artists for an actor",
        "operationId": "app.rocksky.actor.getActorArtists",
        "security": [
          {
            "Bearer": []
          }
        ],
        "parameters": [
          {
            "name": "did",
            "in": "query",
            "description": "The DID or handle of the actor",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The DID or handle of the actor",
              "format": "at-identifier"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of albums to return",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The offset for pagination",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0
            }
          },
          {
            "name": "startDate",
            "in": "query",
            "description": "The start date to filter albums from (ISO 8601 format)",
            "required": false,
            "schema": {
              "type": "string",
              "description": "The start date to filter albums from (ISO 8601 format)",
              "format": "date-time"
            }
          },
          {
            "name": "endDate",
            "in": "query",
            "description": "The end date to filter albums to (ISO 8601 format)",
            "required": false,
            "schema": {
              "type": "string",
              "description": "The end date to filter albums to (ISO 8601 format)",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "artists": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/app.rocksky.artist.defs.artistViewBasic"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.actor.getActorCompatibility": {
      "get": {
        "tags": [
          "app.rocksky.actor"
        ],
        "summary": "Get compatibility for an actor",
        "operationId": "app.rocksky.actor.getActorCompatibility",
        "security": [
          {
            "Bearer": []
          }
        ],
        "parameters": [
          {
            "name": "did",
            "in": "query",
            "description": "DID or handle to get compatibility for",
            "required": true,
            "schema": {
              "type": "string",
              "description": "DID or handle to get compatibility for",
              "format": "at-identifier"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "compatibility": {
                      "$ref": "#/components/schemas/app.rocksky.actor.defs.compatibilityViewBasic"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.actor.getActorLovedSongs": {
      "get": {
        "tags": [
          "app.rocksky.actor"
        ],
        "summary": "Get loved songs for an actor",
        "operationId": "app.rocksky.actor.getActorLovedSongs",
        "security": [
          {
            "Bearer": []
          }
        ],
        "parameters": [
          {
            "name": "did",
            "in": "query",
            "description": "The DID or handle of the actor",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The DID or handle of the actor",
              "format": "at-identifier"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of albums to return",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The offset for pagination",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "tracks": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/app.rocksky.song.defs.songViewBasic"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.actor.getActorNeighbours": {
      "get": {
        "tags": [
          "app.rocksky.actor"
        ],
        "summary": "Get neighbours for an actor",
        "operationId": "app.rocksky.actor.getActorNeighbours",
        "security": [
          {
            "Bearer": []
          }
        ],
        "parameters": [
          {
            "name": "did",
            "in": "query",
            "description": "The DID or handle of the actor",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The DID or handle of the actor",
              "format": "at-identifier"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "neighbours": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/app.rocksky.actor.defs.neighbourViewBasic"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.actor.getActorPlaylists": {
      "get": {
        "tags": [
          "app.rocksky.actor"
        ],
        "summary": "Get playlists for an actor",
        "operationId": "app.rocksky.actor.getActorPlaylists",
        "security": [
          {
            "Bearer": []
          }
        ],
        "parameters": [
          {
            "name": "did",
            "in": "query",
            "description": "The DID or handle of the actor",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The DID or handle of the actor",
              "format": "at-identifier"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of albums to return",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The offset for pagination",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "playlists": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/app.rocksky.playlist.defs.playlistViewBasic"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.actor.getActorScrobbles": {
      "get": {
        "tags": [
          "app.rocksky.actor"
        ],
        "summary": "Get scrobbles for an actor",
        "operationId": "app.rocksky.actor.getActorScrobbles",
        "security": [
          {
            "Bearer": []
          }
        ],
        "parameters": [
          {
            "name": "did",
            "in": "query",
            "description": "The DID or handle of the actor",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The DID or handle of the actor",
              "format": "at-identifier"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of albums to return",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The offset for pagination",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "scrobbles": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/app.rocksky.scrobble.defs.scrobbleViewBasic"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.actor.getActorSongs": {
      "get": {
        "tags": [
          "app.rocksky.actor"
        ],
        "summary": "Get songs for an actor",
        "operationId": "app.rocksky.actor.getActorSongs",
        "security": [
          {
            "Bearer": []
          }
        ],
        "parameters": [
          {
            "name": "did",
            "in": "query",
            "description": "The DID or handle of the actor",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The DID or handle of the actor",
              "format": "at-identifier"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of albums to return",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The offset for pagination",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0
            }
          },
          {
            "name": "startDate",
            "in": "query",
            "description": "The start date to filter albums from (ISO 8601 format)",
            "required": false,
            "schema": {
              "type": "string",
              "description": "The start date to filter albums from (ISO 8601 format)",
              "format": "date-time"
            }
          },
          {
            "name": "endDate",
            "in": "query",
            "description": "The end date to filter albums to (ISO 8601 format)",
            "required": false,
            "schema": {
              "type": "string",
              "description": "The end date to filter albums to (ISO 8601 format)",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "songs": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/app.rocksky.song.defs.songViewBasic"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.actor.getProfile": {
      "get": {
        "tags": [
          "app.rocksky.actor"
        ],
        "summary": "Get the profile of an actor",
        "operationId": "app.rocksky.actor.getProfile",
        "security": [
          {
            "Bearer": []
          }
        ],
        "parameters": [
          {
            "name": "did",
            "in": "query",
            "description": "The DID or handle of the actor",
            "required": false,
            "schema": {
              "type": "string",
              "description": "The DID or handle of the actor",
              "format": "at-identifier"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/app.rocksky.actor.defs.profileViewDetailed"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.album.getAlbum": {
      "get": {
        "tags": [
          "app.rocksky.album"
        ],
        "summary": "Get detailed album view",
        "operationId": "app.rocksky.album.getAlbum",
        "security": [
          {
            "Bearer": []
          }
        ],
        "parameters": [
          {
            "name": "uri",
            "in": "query",
            "description": "The URI of the album to retrieve.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The URI of the album to retrieve.",
              "format": "at-uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/app.rocksky.album.defs.albumViewDetailed"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.album.getAlbumTracks": {
      "get": {
        "tags": [
          "app.rocksky.album"
        ],
        "summary": "Get tracks for an album",
        "operationId": "app.rocksky.album.getAlbumTracks",
        "security": [
          {
            "Bearer": []
          }
        ],
        "parameters": [
          {
            "name": "uri",
            "in": "query",
            "description": "The URI of the album to retrieve tracks from",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The URI of the album to retrieve tracks from",
              "format": "at-uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "tracks": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/app.rocksky.song.defs.songViewBasic"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.album.getAlbums": {
      "get": {
        "tags": [
          "app.rocksky.album"
        ],
        "summary": "Get albums",
        "operationId": "app.rocksky.album.getAlbums",
        "security": [
          {
            "Bearer": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of albums to return",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The offset for pagination",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0
            }
          },
          {
            "name": "genre",
            "in": "query",
            "description": "The genre to filter artists by",
            "required": false,
            "schema": {
              "type": "string",
              "description": "The genre to filter artists by"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "albums": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/app.rocksky.album.defs.albumViewBasic"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.apikey.createApikey": {
      "post": {
        "tags": [
          "app.rocksky.apikey"
        ],
        "summary": "Create a new API key for the authenticated user",
        "operationId": "app.rocksky.apikey.createApikey",
        "security": [
          {
            "Bearer": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "name"
                ],
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "The name of the API key."
                  },
                  "description": {
                    "type": "string",
                    "description": "A description for the API key."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/app.rocksky.apikey.defs.apiKey"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.apikey.getApikeys": {
      "get": {
        "tags": [
          "app.rocksky.apikey"
        ],
        "summary": "Get a list of API keys for the authenticated user",
        "operationId": "app.rocksky.apikey.getApikeys",
        "security": [
          {
            "Bearer": []
          }
        ],
        "parameters": [
          {
            "name": "offset",
            "in": "query",
            "description": "The number of API keys to skip before starting to collect the result set.",
            "required": false,
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The number of API keys to return per page.",
            "required": false,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "apiKeys": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/app.rocksky.apikey.defs.apikeyView"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.apikey.removeApikey": {
      "post": {
        "tags": [
          "app.rocksky.apikey"
        ],
        "summary": "Remove an API key for the authenticated user",
        "operationId": "app.rocksky.apikey.removeApikey",
        "security": [
          {
            "Bearer": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/app.rocksky.apikey.defs.apiKey"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.apikey.updateApikey": {
      "post": {
        "tags": [
          "app.rocksky.apikey"
        ],
        "summary": "Update an existing API key for the authenticated user",
        "operationId": "app.rocksky.apikey.updateApikey",
        "security": [
          {
            "Bearer": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id",
                  "name"
                ],
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "The ID of the API key to update."
                  },
                  "name": {
                    "type": "string",
                    "description": "The new name of the API key."
                  },
                  "description": {
                    "type": "string",
                    "description": "A new description for the API key."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/app.rocksky.apikey.defs.apiKey"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.artist.getArtist": {
      "get": {
        "tags": [
          "app.rocksky.artist"
        ],
        "summary": "Get artist details",
        "operationId": "app.rocksky.artist.getArtist",
        "security": [
          {
            "Bearer": []
          }
        ],
        "parameters": [
          {
            "name": "uri",
            "in": "query",
            "description": "The URI of the artist to retrieve details from",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The URI of the artist to retrieve details from",
              "format": "at-uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/app.rocksky.artist.defs.artistViewDetailed"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.artist.getArtistAlbums": {
      "get": {
        "tags": [
          "app.rocksky.artist"
        ],
        "summary": "Get artist's albums",
        "operationId": "app.rocksky.artist.getArtistAlbums",
        "security": [
          {
            "Bearer": []
          }
        ],
        "parameters": [
          {
            "name": "uri",
            "in": "query",
            "description": "The URI of the artist to retrieve albums from",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The URI of the artist to retrieve albums from",
              "format": "at-uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "albums": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/app.rocksky.album.defs.albumViewBasic"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.artist.getArtistListeners": {
      "get": {
        "tags": [
          "app.rocksky.artist"
        ],
        "summary": "Get artist listeners",
        "operationId": "app.rocksky.artist.getArtistListeners",
        "security": [
          {
            "Bearer": []
          }
        ],
        "parameters": [
          {
            "name": "uri",
            "in": "query",
            "description": "The URI of the artist to retrieve listeners from",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The URI of the artist to retrieve listeners from",
              "format": "at-uri"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of items to skip before returning results",
            "required": false,
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of results to return",
            "required": false,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "listeners": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/app.rocksky.artist.defs.listenerViewBasic"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.artist.getArtistRecentListeners": {
      "get": {
        "tags": [
          "app.rocksky.artist"
        ],
        "summary": "Get artist recent listeners ordered by most recent scrobble",
        "operationId": "app.rocksky.artist.getArtistRecentListeners",
        "security": [
          {
            "Bearer": []
          }
        ],
        "parameters": [
          {
            "name": "uri",
            "in": "query",
            "description": "The URI of the artist to retrieve recent listeners from",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The URI of the artist to retrieve recent listeners from",
              "format": "at-uri"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of items to skip before returning results",
            "required": false,
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of results to return",
            "required": false,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "listeners": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/app.rocksky.artist.defs.recentListenerView"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.artist.getArtistTracks": {
      "get": {
        "tags": [
          "app.rocksky.artist"
        ],
        "summary": "Get artist's tracks",
        "operationId": "app.rocksky.artist.getArtistTracks",
        "security": [
          {
            "Bearer": []
          }
        ],
        "parameters": [
          {
            "name": "uri",
            "in": "query",
            "description": "The URI of the artist to retrieve albums from",
            "required": false,
            "schema": {
              "type": "string",
              "description": "The URI of the artist to retrieve albums from",
              "format": "at-uri"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of tracks to return",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The offset for pagination",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "tracks": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/app.rocksky.song.defs.songViewBasic"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.artist.getArtists": {
      "get": {
        "tags": [
          "app.rocksky.artist"
        ],
        "summary": "Get artists",
        "operationId": "app.rocksky.artist.getArtists",
        "security": [
          {
            "Bearer": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of artists to return",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The offset for pagination",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0
            }
          },
          {
            "name": "names",
            "in": "query",
            "description": "The names of the artists to return",
            "required": false,
            "schema": {
              "type": "string",
              "description": "The names of the artists to return"
            }
          },
          {
            "name": "genre",
            "in": "query",
            "description": "The genre to filter artists by",
            "required": false,
            "schema": {
              "type": "string",
              "description": "The genre to filter artists by"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "artists": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/app.rocksky.artist.defs.artistViewBasic"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.charts.getScrobblesChart": {
      "get": {
        "tags": [
          "app.rocksky.charts"
        ],
        "summary": "Get the scrobbles chart",
        "operationId": "app.rocksky.charts.getScrobblesChart",
        "security": [
          {
            "Bearer": []
          }
        ],
        "parameters": [
          {
            "name": "did",
            "in": "query",
            "description": "The DID or handle of the actor",
            "required": false,
            "schema": {
              "type": "string",
              "description": "The DID or handle of the actor",
              "format": "at-identifier"
            }
          },
          {
            "name": "artisturi",
            "in": "query",
            "description": "The URI of the artist to filter by",
            "required": false,
            "schema": {
              "type": "string",
              "description": "The URI of the artist to filter by",
              "format": "at-uri"
            }
          },
          {
            "name": "albumuri",
            "in": "query",
            "description": "The URI of the album to filter by",
            "required": false,
            "schema": {
              "type": "string",
              "description": "The URI of the album to filter by",
              "format": "at-uri"
            }
          },
          {
            "name": "songuri",
            "in": "query",
            "description": "The URI of the track to filter by",
            "required": false,
            "schema": {
              "type": "string",
              "description": "The URI of the track to filter by",
              "format": "at-uri"
            }
          },
          {
            "name": "genre",
            "in": "query",
            "description": "The genre to filter by",
            "required": false,
            "schema": {
              "type": "string",
              "description": "The genre to filter by"
            }
          },
          {
            "name": "from",
            "in": "query",
            "description": "Start date (ISO 8601). Defaults to 6 months ago.",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Start date (ISO 8601). Defaults to 6 months ago."
            }
          },
          {
            "name": "to",
            "in": "query",
            "description": "End date (ISO 8601). Defaults to today.",
            "required": false,
            "schema": {
              "type": "string",
              "description": "End date (ISO 8601). Defaults to today."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/app.rocksky.charts.defs.chartsView"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.charts.getTopArtists": {
      "get": {
        "tags": [
          "app.rocksky.charts"
        ],
        "summary": "Get top artists",
        "operationId": "app.rocksky.charts.getTopArtists",
        "security": [
          {
            "Bearer": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of artists to return",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The offset for pagination",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0
            }
          },
          {
            "name": "startDate",
            "in": "query",
            "description": "The start date to filter artists from (ISO 8601 format)",
            "required": false,
            "schema": {
              "type": "string",
              "description": "The start date to filter artists from (ISO 8601 format)",
              "format": "date-time"
            }
          },
          {
            "name": "endDate",
            "in": "query",
            "description": "The end date to filter artists to (ISO 8601 format)",
            "required": false,
            "schema": {
              "type": "string",
              "description": "The end date to filter artists to (ISO 8601 format)",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "artists": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/app.rocksky.artist.defs.artistViewBasic"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.charts.getTopTracks": {
      "get": {
        "tags": [
          "app.rocksky.charts"
        ],
        "summary": "Get top tracks",
        "operationId": "app.rocksky.charts.getTopTracks",
        "security": [
          {
            "Bearer": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of tracks to return",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The offset for pagination",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0
            }
          },
          {
            "name": "startDate",
            "in": "query",
            "description": "The start date to filter tracks from (ISO 8601 format)",
            "required": false,
            "schema": {
              "type": "string",
              "description": "The start date to filter tracks from (ISO 8601 format)",
              "format": "date-time"
            }
          },
          {
            "name": "endDate",
            "in": "query",
            "description": "The end date to filter tracks to (ISO 8601 format)",
            "required": false,
            "schema": {
              "type": "string",
              "description": "The end date to filter tracks to (ISO 8601 format)",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "tracks": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/app.rocksky.song.defs.songViewBasic"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.feed.describeFeedGenerator": {
      "get": {
        "tags": [
          "app.rocksky.feed"
        ],
        "summary": "Get information about a feed generator",
        "operationId": "app.rocksky.feed.describeFeedGenerator",
        "security": [
          {
            "Bearer": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "did": {
                      "type": "string",
                      "description": "The DID of the feed generator.",
                      "format": "at-identifier"
                    },
                    "feeds": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/app.rocksky.feed.defs.feedUriView"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.feed.getAlbumRecommendations": {
      "get": {
        "tags": [
          "app.rocksky.feed"
        ],
        "summary": "Get personalised album recommendations for a user",
        "operationId": "app.rocksky.feed.getAlbumRecommendations",
        "security": [
          {
            "Bearer": []
          }
        ],
        "parameters": [
          {
            "name": "did",
            "in": "query",
            "description": "DID or handle of the user to recommend for.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "DID or handle of the user to recommend for."
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/app.rocksky.feed.defs.recommendedAlbumsView"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.feed.getArtistRecommendations": {
      "get": {
        "tags": [
          "app.rocksky.feed"
        ],
        "summary": "Get personalised artist recommendations for a user",
        "operationId": "app.rocksky.feed.getArtistRecommendations",
        "security": [
          {
            "Bearer": []
          }
        ],
        "parameters": [
          {
            "name": "did",
            "in": "query",
            "description": "DID or handle of the user to recommend for.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "DID or handle of the user to recommend for."
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/app.rocksky.feed.defs.recommendedArtistsView"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.feed.getFeed": {
      "get": {
        "tags": [
          "app.rocksky.feed"
        ],
        "summary": "Get the feed by uri",
        "operationId": "app.rocksky.feed.getFeed",
        "security": [
          {
            "Bearer": []
          }
        ],
        "parameters": [
          {
            "name": "feed",
            "in": "query",
            "description": "The feed URI.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The feed URI.",
              "format": "at-uri"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of scrobbles to return",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "description": "The cursor for pagination",
            "required": false,
            "schema": {
              "type": "string",
              "description": "The cursor for pagination"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/app.rocksky.feed.defs.feedView"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.feed.getFeedGenerator": {
      "get": {
        "tags": [
          "app.rocksky.feed"
        ],
        "summary": "Get information about a feed generator",
        "operationId": "app.rocksky.feed.getFeedGenerator",
        "security": [
          {
            "Bearer": []
          }
        ],
        "parameters": [
          {
            "name": "feed",
            "in": "query",
            "description": "AT-URI of the feed generator record.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "AT-URI of the feed generator record.",
              "format": "at-uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "view": {
                      "$ref": "#/components/schemas/app.rocksky.feed.defs.feedGeneratorView"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.feed.getFeedGenerators": {
      "get": {
        "tags": [
          "app.rocksky.feed"
        ],
        "summary": "Get all feed generators",
        "operationId": "app.rocksky.feed.getFeedGenerators",
        "security": [
          {
            "Bearer": []
          }
        ],
        "parameters": [
          {
            "name": "size",
            "in": "query",
            "description": "The maximum number of feed generators to return.",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/app.rocksky.feed.defs.feedGeneratorsView"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.feed.getFeedSkeleton": {
      "get": {
        "tags": [
          "app.rocksky.feed"
        ],
        "summary": "Get the feed by uri",
        "operationId": "app.rocksky.feed.getFeedSkeleton",
        "security": [
          {
            "Bearer": []
          }
        ],
        "parameters": [
          {
            "name": "feed",
            "in": "query",
            "description": "The feed URI.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The feed URI.",
              "format": "at-uri"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of scrobbles to return",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The offset for pagination",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "description": "The pagination cursor.",
            "required": false,
            "schema": {
              "type": "string",
              "description": "The pagination cursor."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "scrobbles": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/app.rocksky.scrobble.defs.scrobbleViewBasic"
                      }
                    },
                    "cursor": {
                      "type": "string",
                      "description": "The pagination cursor for the next set of results."
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.feed.getRecommendations": {
      "get": {
        "tags": [
          "app.rocksky.feed"
        ],
        "summary": "Get personalised track recommendations for a user",
        "operationId": "app.rocksky.feed.getRecommendations",
        "security": [
          {
            "Bearer": []
          }
        ],
        "parameters": [
          {
            "name": "did",
            "in": "query",
            "description": "DID or handle of the user to recommend for.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "DID or handle of the user to recommend for."
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/app.rocksky.feed.defs.recommendationsView"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.feed.getStories": {
      "get": {
        "tags": [
          "app.rocksky.feed"
        ],
        "summary": "Get all currently playing tracks by users",
        "operationId": "app.rocksky.feed.getStories",
        "security": [
          {
            "Bearer": []
          }
        ],
        "parameters": [
          {
            "name": "size",
            "in": "query",
            "description": "The maximum number of stories to return.",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "feed",
            "in": "query",
            "description": "The feed URI to filter stories by.",
            "required": false,
            "schema": {
              "type": "string",
              "format": "at-uri"
            }
          },
          {
            "name": "following",
            "in": "query",
            "description": "If true, only return stories from users the viewer follows. Requires authentication.",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/app.rocksky.feed.defs.storiesView"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.feed.search": {
      "get": {
        "tags": [
          "app.rocksky.feed"
        ],
        "summary": "Search for content in the feed",
        "operationId": "app.rocksky.feed.search",
        "security": [
          {
            "Bearer": []
          }
        ],
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "description": "The search query string",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The search query string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/app.rocksky.feed.defs.searchResultsView"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.graph.followAccount": {
      "post": {
        "tags": [
          "app.rocksky.graph"
        ],
        "summary": "Creates a 'follow' relationship from the authenticated account to a specified account.",
        "operationId": "app.rocksky.graph.followAccount",
        "security": [
          {
            "Bearer": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "subject",
                    "followers"
                  ],
                  "properties": {
                    "subject": {
                      "$ref": "#/components/schemas/app.rocksky.actor.defs.profileViewBasic"
                    },
                    "followers": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/app.rocksky.actor.defs.profileViewBasic"
                      }
                    },
                    "cursor": {
                      "type": "string",
                      "description": "A cursor value to pass to subsequent calls to get the next page of results."
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.graph.getFollowers": {
      "get": {
        "tags": [
          "app.rocksky.graph"
        ],
        "summary": "Enumerates accounts which follow a specified account (actor).",
        "operationId": "app.rocksky.graph.getFollowers",
        "security": [
          {
            "Bearer": []
          }
        ],
        "parameters": [
          {
            "name": "actor",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "at-identifier"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 50
            }
          },
          {
            "name": "dids",
            "in": "query",
            "description": "If provided, filters the followers to only include those with DIDs in this list.",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "did"
              }
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "subject",
                    "followers"
                  ],
                  "properties": {
                    "subject": {
                      "$ref": "#/components/schemas/app.rocksky.actor.defs.profileViewBasic"
                    },
                    "followers": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/app.rocksky.actor.defs.profileViewBasic"
                      }
                    },
                    "cursor": {
                      "type": "string",
                      "description": "A cursor value to pass to subsequent calls to get the next page of results."
                    },
                    "count": {
                      "type": "integer"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.graph.getFollows": {
      "get": {
        "tags": [
          "app.rocksky.graph"
        ],
        "summary": "Enumerates accounts which a specified account (actor) follows.",
        "operationId": "app.rocksky.graph.getFollows",
        "security": [
          {
            "Bearer": []
          }
        ],
        "parameters": [
          {
            "name": "actor",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "at-identifier"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 50
            }
          },
          {
            "name": "dids",
            "in": "query",
            "description": "If provided, filters the follows to only include those with DIDs in this list.",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "did"
              }
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "subject",
                    "follows"
                  ],
                  "properties": {
                    "subject": {
                      "$ref": "#/components/schemas/app.rocksky.actor.defs.profileViewBasic"
                    },
                    "follows": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/app.rocksky.actor.defs.profileViewBasic"
                      }
                    },
                    "cursor": {
                      "type": "string",
                      "description": "A cursor value to pass to subsequent calls to get the next page of results."
                    },
                    "count": {
                      "type": "integer"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.graph.getKnownFollowers": {
      "get": {
        "tags": [
          "app.rocksky.graph"
        ],
        "summary": "Enumerates accounts which follow a specified account (actor) and are followed by the viewer.",
        "operationId": "app.rocksky.graph.getKnownFollowers",
        "security": [
          {
            "Bearer": []
          }
        ],
        "parameters": [
          {
            "name": "actor",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "at-identifier"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 50
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "subject",
                    "followers"
                  ],
                  "properties": {
                    "subject": {
                      "$ref": "#/components/schemas/app.rocksky.actor.defs.profileViewBasic"
                    },
                    "followers": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/app.rocksky.actor.defs.profileViewBasic"
                      }
                    },
                    "cursor": {
                      "type": "string",
                      "description": "A cursor value to pass to subsequent calls to get the next page of results."
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.graph.unfollowAccount": {
      "post": {
        "tags": [
          "app.rocksky.graph"
        ],
        "summary": "Removes a 'follow' relationship from the authenticated account to a specified account.",
        "operationId": "app.rocksky.graph.unfollowAccount",
        "security": [
          {
            "Bearer": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "subject",
                    "followers"
                  ],
                  "properties": {
                    "subject": {
                      "$ref": "#/components/schemas/app.rocksky.actor.defs.profileViewBasic"
                    },
                    "followers": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/app.rocksky.actor.defs.profileViewBasic"
                      }
                    },
                    "cursor": {
                      "type": "string",
                      "description": "A cursor value to pass to subsequent calls to get the next page of results."
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.like.dislikeShout": {
      "post": {
        "tags": [
          "app.rocksky.like"
        ],
        "summary": "Dislike a shout",
        "operationId": "app.rocksky.like.dislikeShout",
        "security": [
          {
            "Bearer": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "uri": {
                    "type": "string",
                    "description": "The unique identifier of the shout to dislike",
                    "format": "at-uri"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/app.rocksky.shout.defs.shoutView"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.like.dislikeSong": {
      "post": {
        "tags": [
          "app.rocksky.like"
        ],
        "summary": "Dislike a song",
        "operationId": "app.rocksky.like.dislikeSong",
        "security": [
          {
            "Bearer": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "uri": {
                    "type": "string",
                    "description": "The unique identifier of the song to dislike",
                    "format": "at-uri"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/app.rocksky.song.defs.songViewDetailed"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.like.likeShout": {
      "post": {
        "tags": [
          "app.rocksky.like"
        ],
        "summary": "Like a shout",
        "operationId": "app.rocksky.like.likeShout",
        "security": [
          {
            "Bearer": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "uri": {
                    "type": "string",
                    "description": "The unique identifier of the shout to like",
                    "format": "at-uri"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/app.rocksky.shout.defs.shoutView"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.like.likeSong": {
      "post": {
        "tags": [
          "app.rocksky.like"
        ],
        "summary": "Like a song",
        "operationId": "app.rocksky.like.likeSong",
        "security": [
          {
            "Bearer": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "uri": {
                    "type": "string",
                    "description": "The unique identifier of the song to like",
                    "format": "at-uri"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/app.rocksky.song.defs.songViewDetailed"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.mirror.getMirrorSources": {
      "get": {
        "tags": [
          "app.rocksky.mirror"
        ],
        "summary": "Get the authenticated user's scrobble mirror sources (Last.fm, ListenBrainz, Teal.fm).",
        "operationId": "app.rocksky.mirror.getMirrorSources",
        "security": [
          {
            "Bearer": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "sources"
                  ],
                  "properties": {
                    "sources": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/app.rocksky.mirror.defs.mirrorSourceView"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.mirror.putMirrorSource": {
      "post": {
        "tags": [
          "app.rocksky.mirror"
        ],
        "summary": "Upsert a mirror source for the authenticated user. Toggling `enabled` notifies the mirror process over NATS so it can start/stop the per-user task without a restart.",
        "operationId": "app.rocksky.mirror.putMirrorSource",
        "security": [
          {
            "Bearer": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "provider"
                ],
                "properties": {
                  "provider": {
                    "type": "string",
                    "description": "One of: lastfm, listenbrainz, tealfm"
                  },
                  "enabled": {
                    "type": "boolean",
                    "description": "Enable or disable mirroring for this provider."
                  },
                  "externalUsername": {
                    "type": "string",
                    "description": "External username (Last.fm / ListenBrainz). Required when enabling those providers. Ignored for Teal.fm."
                  },
                  "apiKey": {
                    "type": "string",
                    "description": "API key / token to be encrypted at rest. Omit to leave the existing key unchanged. Pass an empty string to clear it."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/app.rocksky.mirror.defs.mirrorSourceView"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.player.addDirectoryToQueue": {
      "post": {
        "tags": [
          "app.rocksky.player"
        ],
        "summary": "Add directory to the player's queue",
        "operationId": "app.rocksky.player.addDirectoryToQueue",
        "security": [
          {
            "Bearer": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.player.addItemsToQueue": {
      "post": {
        "tags": [
          "app.rocksky.player"
        ],
        "summary": "Add items to the player's queue",
        "operationId": "app.rocksky.player.addItemsToQueue",
        "security": [
          {
            "Bearer": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.player.getCurrentlyPlaying": {
      "get": {
        "tags": [
          "app.rocksky.player"
        ],
        "summary": "Get the currently playing track",
        "operationId": "app.rocksky.player.getCurrentlyPlaying",
        "security": [
          {
            "Bearer": []
          }
        ],
        "parameters": [
          {
            "name": "playerId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "actor",
            "in": "query",
            "description": "Handle or DID of the actor to retrieve the currently playing track for. If not provided, defaults to the current user.",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Handle or DID of the actor to retrieve the currently playing track for. If not provided, defaults to the current user.",
              "format": "at-identifier"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/app.rocksky.player.defs.currentlyPlayingViewDetailed"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.player.getPlaybackQueue": {
      "get": {
        "tags": [
          "app.rocksky.player"
        ],
        "summary": "Retrieve the current playback queue",
        "operationId": "app.rocksky.player.getPlaybackQueue",
        "security": [
          {
            "Bearer": []
          }
        ],
        "parameters": [
          {
            "name": "playerId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/app.rocksky.player.defs.playbackQueueViewDetailed"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.player.next": {
      "post": {
        "tags": [
          "app.rocksky.player"
        ],
        "summary": "Play the next track in the queue",
        "operationId": "app.rocksky.player.next",
        "security": [
          {
            "Bearer": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.player.pause": {
      "post": {
        "tags": [
          "app.rocksky.player"
        ],
        "summary": "Pause the currently playing track",
        "operationId": "app.rocksky.player.pause",
        "security": [
          {
            "Bearer": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.player.play": {
      "post": {
        "tags": [
          "app.rocksky.player"
        ],
        "summary": "Resume playback of the currently paused track",
        "operationId": "app.rocksky.player.play",
        "security": [
          {
            "Bearer": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.player.playDirectory": {
      "post": {
        "tags": [
          "app.rocksky.player"
        ],
        "summary": "Play all tracks in a directory",
        "operationId": "app.rocksky.player.playDirectory",
        "security": [
          {
            "Bearer": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.player.playFile": {
      "post": {
        "tags": [
          "app.rocksky.player"
        ],
        "summary": "Play a specific audio file",
        "operationId": "app.rocksky.player.playFile",
        "security": [
          {
            "Bearer": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.player.previous": {
      "post": {
        "tags": [
          "app.rocksky.player"
        ],
        "summary": "Play the previous track in the queue",
        "operationId": "app.rocksky.player.previous",
        "security": [
          {
            "Bearer": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.player.seek": {
      "post": {
        "tags": [
          "app.rocksky.player"
        ],
        "summary": "Seek to a specific position in the currently playing track",
        "operationId": "app.rocksky.player.seek",
        "security": [
          {
            "Bearer": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.playlist.createPlaylist": {
      "post": {
        "tags": [
          "app.rocksky.playlist"
        ],
        "summary": "Create a new playlist",
        "operationId": "app.rocksky.playlist.createPlaylist",
        "security": [
          {
            "Bearer": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.playlist.getPlaylist": {
      "get": {
        "tags": [
          "app.rocksky.playlist"
        ],
        "summary": "Retrieve a playlist by its ID",
        "operationId": "app.rocksky.playlist.getPlaylist",
        "security": [
          {
            "Bearer": []
          }
        ],
        "parameters": [
          {
            "name": "uri",
            "in": "query",
            "description": "The URI of the playlist to retrieve.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The URI of the playlist to retrieve.",
              "format": "at-uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/app.rocksky.playlist.defs.playlistViewDetailed"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.playlist.getPlaylists": {
      "get": {
        "tags": [
          "app.rocksky.playlist"
        ],
        "summary": "Retrieve a list of playlists",
        "operationId": "app.rocksky.playlist.getPlaylists",
        "security": [
          {
            "Bearer": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of playlists to return.",
            "required": false,
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The offset for pagination, used to skip a number of playlists.",
            "required": false,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "playlists": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/app.rocksky.playlist.defs.playlistViewBasic"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.playlist.insertDirectory": {
      "post": {
        "tags": [
          "app.rocksky.playlist"
        ],
        "summary": "Insert a directory into a playlist",
        "operationId": "app.rocksky.playlist.insertDirectory",
        "security": [
          {
            "Bearer": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.playlist.insertFiles": {
      "post": {
        "tags": [
          "app.rocksky.playlist"
        ],
        "summary": "Insert files into a playlist",
        "operationId": "app.rocksky.playlist.insertFiles",
        "security": [
          {
            "Bearer": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.playlist.removePlaylist": {
      "post": {
        "tags": [
          "app.rocksky.playlist"
        ],
        "summary": "Remove a playlist",
        "operationId": "app.rocksky.playlist.removePlaylist",
        "security": [
          {
            "Bearer": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.playlist.removeTrack": {
      "post": {
        "tags": [
          "app.rocksky.playlist"
        ],
        "summary": "Remove a track from a playlist",
        "operationId": "app.rocksky.playlist.removeTrack",
        "security": [
          {
            "Bearer": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.playlist.startPlaylist": {
      "post": {
        "tags": [
          "app.rocksky.playlist"
        ],
        "summary": "Start a playlist",
        "operationId": "app.rocksky.playlist.startPlaylist",
        "security": [
          {
            "Bearer": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.scrobble.createScrobble": {
      "post": {
        "tags": [
          "app.rocksky.scrobble"
        ],
        "summary": "Create a new scrobble",
        "operationId": "app.rocksky.scrobble.createScrobble",
        "security": [
          {
            "Bearer": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "title",
                  "artist"
                ],
                "properties": {
                  "title": {
                    "type": "string",
                    "description": "The title of the track being scrobbled"
                  },
                  "artist": {
                    "type": "string",
                    "description": "The artist of the track being scrobbled"
                  },
                  "album": {
                    "type": "string",
                    "description": "The album of the track being scrobbled"
                  },
                  "duration": {
                    "type": "integer"
                  },
                  "mbId": {
                    "type": "string",
                    "description": "The MusicBrainz ID of the track, if available"
                  },
                  "isrc": {
                    "type": "string",
                    "description": "The International Standard Recording Code (ISRC) of the track, if available"
                  },
                  "albumArt": {
                    "type": "string",
                    "description": "The URL of the album art for the track",
                    "format": "uri"
                  },
                  "trackNumber": {
                    "type": "integer"
                  },
                  "releaseDate": {
                    "type": "string",
                    "description": "The release date of the track, formatted as YYYY-MM-DD"
                  },
                  "year": {
                    "type": "integer"
                  },
                  "discNumber": {
                    "type": "integer"
                  },
                  "lyrics": {
                    "type": "string",
                    "description": "The lyrics of the track, if available"
                  },
                  "composer": {
                    "type": "string",
                    "description": "The composer of the track, if available"
                  },
                  "copyrightMessage": {
                    "type": "string",
                    "description": "The copyright message for the track, if available"
                  },
                  "label": {
                    "type": "string",
                    "description": "The record label of the track, if available"
                  },
                  "artistPicture": {
                    "type": "string",
                    "description": "The URL of the artist's picture, if available",
                    "format": "uri"
                  },
                  "spotifyLink": {
                    "type": "string",
                    "description": "The Spotify link for the track, if available",
                    "format": "uri"
                  },
                  "lastfmLink": {
                    "type": "string",
                    "description": "The Last.fm link for the track, if available",
                    "format": "uri"
                  },
                  "tidalLink": {
                    "type": "string",
                    "description": "The Tidal link for the track, if available",
                    "format": "uri"
                  },
                  "appleMusicLink": {
                    "type": "string",
                    "description": "The Apple Music link for the track, if available",
                    "format": "uri"
                  },
                  "youtubeLink": {
                    "type": "string",
                    "description": "The Youtube link for the track, if available",
                    "format": "uri"
                  },
                  "deezerLink": {
                    "type": "string",
                    "description": "The Deezer link for the track, if available",
                    "format": "uri"
                  },
                  "timestamp": {
                    "type": "integer"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/app.rocksky.scrobble.defs.scrobbleViewBasic"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.scrobble.getScrobble": {
      "get": {
        "tags": [
          "app.rocksky.scrobble"
        ],
        "summary": "Get a scrobble by its unique identifier",
        "operationId": "app.rocksky.scrobble.getScrobble",
        "security": [
          {
            "Bearer": []
          }
        ],
        "parameters": [
          {
            "name": "uri",
            "in": "query",
            "description": "The unique identifier of the scrobble",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The unique identifier of the scrobble",
              "format": "at-uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/app.rocksky.scrobble.defs.scrobbleViewDetailed"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.scrobble.getScrobbles": {
      "get": {
        "tags": [
          "app.rocksky.scrobble"
        ],
        "summary": "Get scrobbles all scrobbles",
        "operationId": "app.rocksky.scrobble.getScrobbles",
        "security": [
          {
            "Bearer": []
          }
        ],
        "parameters": [
          {
            "name": "did",
            "in": "query",
            "description": "The DID or handle of the actor",
            "required": false,
            "schema": {
              "type": "string",
              "description": "The DID or handle of the actor",
              "format": "at-identifier"
            }
          },
          {
            "name": "following",
            "in": "query",
            "description": "If true, only return scrobbles from actors the viewer is following.",
            "required": false,
            "schema": {
              "type": "boolean",
              "description": "If true, only return scrobbles from actors the viewer is following."
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of scrobbles to return",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The offset for pagination",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "scrobbles": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/app.rocksky.scrobble.defs.scrobbleViewBasic"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.shout.createShout": {
      "post": {
        "tags": [
          "app.rocksky.shout"
        ],
        "summary": "Create a new shout",
        "operationId": "app.rocksky.shout.createShout",
        "security": [
          {
            "Bearer": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "message": {
                    "type": "string",
                    "description": "The content of the shout",
                    "minLength": 1
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/app.rocksky.shout.defs.shoutView"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.shout.getAlbumShouts": {
      "get": {
        "tags": [
          "app.rocksky.shout"
        ],
        "summary": "Get shouts for an album",
        "operationId": "app.rocksky.shout.getAlbumShouts",
        "security": [
          {
            "Bearer": []
          }
        ],
        "parameters": [
          {
            "name": "uri",
            "in": "query",
            "description": "The unique identifier of the album to retrieve shouts for",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The unique identifier of the album to retrieve shouts for",
              "format": "at-uri"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of shouts to return",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of shouts to skip before starting to collect the result set",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "shouts": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/app.rocksky.shout.defs.shoutViewBasic"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.shout.getArtistShouts": {
      "get": {
        "tags": [
          "app.rocksky.shout"
        ],
        "summary": "Get shouts for an artist",
        "operationId": "app.rocksky.shout.getArtistShouts",
        "security": [
          {
            "Bearer": []
          }
        ],
        "parameters": [
          {
            "name": "uri",
            "in": "query",
            "description": "The URI of the artist to retrieve shouts for",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The URI of the artist to retrieve shouts for",
              "format": "at-uri"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of shouts to return",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of shouts to skip before starting to collect the result set",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "shouts": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/app.rocksky.shout.defs.shoutViewBasic"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.shout.getProfileShouts": {
      "get": {
        "tags": [
          "app.rocksky.shout"
        ],
        "summary": "Get the shouts of an actor's profile",
        "operationId": "app.rocksky.shout.getProfileShouts",
        "security": [
          {
            "Bearer": []
          }
        ],
        "parameters": [
          {
            "name": "did",
            "in": "query",
            "description": "The DID or handle of the actor",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The DID or handle of the actor",
              "format": "at-identifier"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The offset for pagination",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of shouts to return",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "shouts": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/app.rocksky.shout.defs.shoutViewBasic"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.shout.getShoutReplies": {
      "get": {
        "tags": [
          "app.rocksky.shout"
        ],
        "summary": "Get replies to a shout",
        "operationId": "app.rocksky.shout.getShoutReplies",
        "security": [
          {
            "Bearer": []
          }
        ],
        "parameters": [
          {
            "name": "uri",
            "in": "query",
            "description": "The URI of the shout to retrieve replies for",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The URI of the shout to retrieve replies for",
              "format": "at-uri"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of shouts to return",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The number of shouts to skip before starting to collect the result set",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "shouts": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/app.rocksky.shout.defs.shoutViewBasic"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.shout.getTrackShouts": {
      "get": {
        "tags": [
          "app.rocksky.shout"
        ],
        "summary": "Get all shouts for a specific track",
        "operationId": "app.rocksky.shout.getTrackShouts",
        "security": [
          {
            "Bearer": []
          }
        ],
        "parameters": [
          {
            "name": "uri",
            "in": "query",
            "description": "The URI of the track to retrieve shouts for",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The URI of the track to retrieve shouts for",
              "format": "at-uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "shouts": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/app.rocksky.shout.defs.shoutViewBasic"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.shout.removeShout": {
      "post": {
        "tags": [
          "app.rocksky.shout"
        ],
        "summary": "Remove a shout by its ID",
        "operationId": "app.rocksky.shout.removeShout",
        "security": [
          {
            "Bearer": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/app.rocksky.shout.defs.shoutView"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.shout.replyShout": {
      "post": {
        "tags": [
          "app.rocksky.shout"
        ],
        "summary": "Reply to a shout",
        "operationId": "app.rocksky.shout.replyShout",
        "security": [
          {
            "Bearer": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "shoutId",
                  "message"
                ],
                "properties": {
                  "shoutId": {
                    "type": "string",
                    "description": "The unique identifier of the shout to reply to"
                  },
                  "message": {
                    "type": "string",
                    "description": "The content of the reply",
                    "minLength": 1
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/app.rocksky.shout.defs.shoutView"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.shout.reportShout": {
      "post": {
        "tags": [
          "app.rocksky.shout"
        ],
        "summary": "Report a shout for moderation",
        "operationId": "app.rocksky.shout.reportShout",
        "security": [
          {
            "Bearer": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "shoutId"
                ],
                "properties": {
                  "shoutId": {
                    "type": "string",
                    "description": "The unique identifier of the shout to report"
                  },
                  "reason": {
                    "type": "string",
                    "description": "The reason for reporting the shout",
                    "minLength": 1
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/app.rocksky.shout.defs.shoutView"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.song.createSong": {
      "post": {
        "tags": [
          "app.rocksky.song"
        ],
        "summary": "Create a new song",
        "operationId": "app.rocksky.song.createSong",
        "security": [
          {
            "Bearer": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "title",
                  "artist",
                  "album",
                  "albumArtist"
                ],
                "properties": {
                  "title": {
                    "type": "string",
                    "description": "The title of the song"
                  },
                  "artist": {
                    "type": "string",
                    "description": "The artist of the song"
                  },
                  "albumArtist": {
                    "type": "string",
                    "description": "The album artist of the song, if different from the main artist"
                  },
                  "album": {
                    "type": "string",
                    "description": "The album of the song, if applicable"
                  },
                  "duration": {
                    "type": "integer"
                  },
                  "mbId": {
                    "type": "string",
                    "description": "The MusicBrainz ID of the song, if available"
                  },
                  "isrc": {
                    "type": "string",
                    "description": "The International Standard Recording Code (ISRC) of the song, if available"
                  },
                  "albumArt": {
                    "type": "string",
                    "description": "The URL of the album art for the song",
                    "format": "uri"
                  },
                  "trackNumber": {
                    "type": "integer"
                  },
                  "releaseDate": {
                    "type": "string",
                    "description": "The release date of the song, formatted as YYYY-MM-DD"
                  },
                  "year": {
                    "type": "integer"
                  },
                  "discNumber": {
                    "type": "integer"
                  },
                  "lyrics": {
                    "type": "string",
                    "description": "The lyrics of the song, if available"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/app.rocksky.song.defs.songViewDetailed"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.song.getSong": {
      "get": {
        "tags": [
          "app.rocksky.song"
        ],
        "summary": "Get a song by its uri, MusicBrainz ID, or ISRC",
        "operationId": "app.rocksky.song.getSong",
        "security": [
          {
            "Bearer": []
          }
        ],
        "parameters": [
          {
            "name": "uri",
            "in": "query",
            "description": "The AT-URI of the song to retrieve",
            "required": false,
            "schema": {
              "type": "string",
              "description": "The AT-URI of the song to retrieve",
              "format": "at-uri"
            }
          },
          {
            "name": "mbid",
            "in": "query",
            "description": "The MusicBrainz ID of the song to retrieve",
            "required": false,
            "schema": {
              "type": "string",
              "description": "The MusicBrainz ID of the song to retrieve"
            }
          },
          {
            "name": "isrc",
            "in": "query",
            "description": "The International Standard Recording Code (ISRC) of the song to retrieve",
            "required": false,
            "schema": {
              "type": "string",
              "description": "The International Standard Recording Code (ISRC) of the song to retrieve"
            }
          },
          {
            "name": "spotifyId",
            "in": "query",
            "description": "The Spotify track ID of the song to retrieve (resolved internally to the Spotify track URL)",
            "required": false,
            "schema": {
              "type": "string",
              "description": "The Spotify track ID of the song to retrieve (resolved internally to the Spotify track URL)"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/app.rocksky.song.defs.songViewDetailed"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.song.getSongRecentListeners": {
      "get": {
        "tags": [
          "app.rocksky.song"
        ],
        "summary": "Get song recent listeners ordered by most recent scrobble",
        "operationId": "app.rocksky.song.getSongRecentListeners",
        "security": [
          {
            "Bearer": []
          }
        ],
        "parameters": [
          {
            "name": "uri",
            "in": "query",
            "description": "The URI of the song to retrieve recent listeners from",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The URI of the song to retrieve recent listeners from",
              "format": "at-uri"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of items to skip before returning results",
            "required": false,
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of results to return",
            "required": false,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "listeners": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/app.rocksky.song.defs.recentListenerView"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.song.getSongs": {
      "get": {
        "tags": [
          "app.rocksky.song"
        ],
        "summary": "Get songs",
        "operationId": "app.rocksky.song.getSongs",
        "security": [
          {
            "Bearer": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of songs to return",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The offset for pagination",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0
            }
          },
          {
            "name": "genre",
            "in": "query",
            "description": "The genre to filter artists by",
            "required": false,
            "schema": {
              "type": "string",
              "description": "The genre to filter artists by"
            }
          },
          {
            "name": "mbid",
            "in": "query",
            "description": "Filter songs by MusicBrainz ID",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Filter songs by MusicBrainz ID"
            }
          },
          {
            "name": "isrc",
            "in": "query",
            "description": "Filter songs by International Standard Recording Code (ISRC)",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Filter songs by International Standard Recording Code (ISRC)"
            }
          },
          {
            "name": "spotifyId",
            "in": "query",
            "description": "Filter songs by Spotify track ID (resolved internally to the Spotify track URL)",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Filter songs by Spotify track ID (resolved internally to the Spotify track URL)"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "songs": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/app.rocksky.song.defs.songViewBasic"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.song.matchSong": {
      "get": {
        "tags": [
          "app.rocksky.song"
        ],
        "summary": "Matches a song against Rocksky’s music database and external metadata providers to resolve the best canonical track, artist, and album",
        "operationId": "app.rocksky.song.matchSong",
        "security": [
          {
            "Bearer": []
          }
        ],
        "parameters": [
          {
            "name": "title",
            "in": "query",
            "description": "The title of the song to retrieve",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The title of the song to retrieve"
            }
          },
          {
            "name": "artist",
            "in": "query",
            "description": "The artist of the song to retrieve",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The artist of the song to retrieve"
            }
          },
          {
            "name": "mbId",
            "in": "query",
            "description": "Optional MusicBrainz recording ID to anchor the match",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Optional MusicBrainz recording ID to anchor the match"
            }
          },
          {
            "name": "isrc",
            "in": "query",
            "description": "Optional International Standard Recording Code (ISRC) to anchor the match",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Optional International Standard Recording Code (ISRC) to anchor the match"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/app.rocksky.song.defs.songViewDetailed"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.spotify.getCurrentlyPlaying": {
      "get": {
        "tags": [
          "app.rocksky.spotify"
        ],
        "summary": "Get the currently playing track",
        "operationId": "app.rocksky.spotify.getCurrentlyPlaying",
        "security": [
          {
            "Bearer": []
          }
        ],
        "parameters": [
          {
            "name": "actor",
            "in": "query",
            "description": "Handle or DID of the actor to retrieve the currently playing track for. If not provided, defaults to the current user.",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Handle or DID of the actor to retrieve the currently playing track for. If not provided, defaults to the current user.",
              "format": "at-identifier"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/app.rocksky.player.defs.currentlyPlayingViewDetailed"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.spotify.next": {
      "post": {
        "tags": [
          "app.rocksky.spotify"
        ],
        "summary": "Play the next track in the queue",
        "operationId": "app.rocksky.spotify.next",
        "security": [
          {
            "Bearer": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.spotify.pause": {
      "post": {
        "tags": [
          "app.rocksky.spotify"
        ],
        "summary": "Pause the currently playing track",
        "operationId": "app.rocksky.spotify.pause",
        "security": [
          {
            "Bearer": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.spotify.play": {
      "post": {
        "tags": [
          "app.rocksky.spotify"
        ],
        "summary": "Resume playback of the currently paused track",
        "operationId": "app.rocksky.spotify.play",
        "security": [
          {
            "Bearer": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.spotify.previous": {
      "post": {
        "tags": [
          "app.rocksky.spotify"
        ],
        "summary": "Play the previous track in the queue",
        "operationId": "app.rocksky.spotify.previous",
        "security": [
          {
            "Bearer": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.spotify.seek": {
      "post": {
        "tags": [
          "app.rocksky.spotify"
        ],
        "summary": "Seek to a specific position in the currently playing track",
        "operationId": "app.rocksky.spotify.seek",
        "security": [
          {
            "Bearer": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.stats.getStats": {
      "get": {
        "tags": [
          "app.rocksky.stats"
        ],
        "operationId": "app.rocksky.stats.getStats",
        "security": [
          {
            "Bearer": []
          }
        ],
        "parameters": [
          {
            "name": "did",
            "in": "query",
            "description": "The DID or handle of the user to get stats for.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The DID or handle of the user to get stats for.",
              "format": "at-identifier"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/app.rocksky.stats.defs.statsView"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/app.rocksky.stats.getWrapped": {
      "get": {
        "tags": [
          "app.rocksky.stats"
        ],
        "summary": "Get a user's year-in-review Wrapped stats",
        "operationId": "app.rocksky.stats.getWrapped",
        "security": [
          {
            "Bearer": []
          }
        ],
        "parameters": [
          {
            "name": "did",
            "in": "query",
            "description": "The DID or handle of the user",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The DID or handle of the user",
              "format": "at-identifier"
            }
          },
          {
            "name": "year",
            "in": "query",
            "description": "The year to get wrapped stats for (defaults to current year)",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 2000
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/app.rocksky.stats.defs.wrappedView"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "oneOf": [
                        {
                          "const": "InvalidRequest"
                        },
                        {
                          "const": "ExpiredToken"
                        },
                        {
                          "const": "InvalidToken"
                        }
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "message"
                  ],
                  "properties": {
                    "error": {
                      "const": "AuthMissing"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "app.rocksky.actor.defs.profileViewDetailed": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier of the actor."
          },
          "did": {
            "type": "string",
            "description": "The DID of the actor."
          },
          "handle": {
            "type": "string",
            "description": "The handle of the actor."
          },
          "displayName": {
            "type": "string",
            "description": "The display name of the actor."
          },
          "avatar": {
            "type": "string",
            "description": "The URL of the actor's avatar image.",
            "format": "uri"
          },
          "createdAt": {
            "type": "string",
            "description": "The date and time when the actor was created.",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "description": "The date and time when the actor was last updated.",
            "format": "date-time"
          }
        }
      },
      "app.rocksky.actor.defs.profileViewBasic": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier of the actor."
          },
          "did": {
            "type": "string",
            "description": "The DID of the actor."
          },
          "handle": {
            "type": "string",
            "description": "The handle of the actor."
          },
          "displayName": {
            "type": "string",
            "description": "The display name of the actor."
          },
          "avatar": {
            "type": "string",
            "description": "The URL of the actor's avatar image.",
            "format": "uri"
          },
          "createdAt": {
            "type": "string",
            "description": "The date and time when the actor was created.",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "description": "The date and time when the actor was last updated.",
            "format": "date-time"
          }
        }
      },
      "app.rocksky.actor.defs.neighbourViewBasic": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "string"
          },
          "did": {
            "type": "string"
          },
          "handle": {
            "type": "string"
          },
          "displayName": {
            "type": "string"
          },
          "avatar": {
            "type": "string",
            "description": "The URL of the actor's avatar image.",
            "format": "uri"
          },
          "sharedArtistsCount": {
            "type": "integer"
          },
          "similarityScore": {
            "type": "integer"
          },
          "topSharedArtistNames": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "topSharedArtistsDetails": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/app.rocksky.artist.defs.artistViewBasic"
            }
          }
        }
      },
      "app.rocksky.actor.defs.compatibilityViewBasic": {
        "type": "object",
        "properties": {
          "compatibilityLevel": {
            "type": "integer"
          },
          "compatibilityPercentage": {
            "type": "integer"
          },
          "sharedArtists": {
            "type": "integer"
          },
          "topSharedArtistNames": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "topSharedDetailedArtists": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/app.rocksky.actor.defs.artistViewBasic"
            }
          },
          "user1ArtistCount": {
            "type": "integer"
          },
          "user2ArtistCount": {
            "type": "integer"
          }
        }
      },
      "app.rocksky.actor.defs.artistViewBasic": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "picture": {
            "type": "string",
            "format": "uri"
          },
          "uri": {
            "type": "string",
            "format": "at-uri"
          },
          "user1Rank": {
            "type": "integer"
          },
          "user2Rank": {
            "type": "integer"
          },
          "weight": {
            "type": "integer"
          }
        }
      },
      "app.rocksky.actor.defs.trackView": {
        "type": "object",
        "required": [
          "name",
          "artist"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the track.",
            "minLength": 1,
            "maxLength": 512
          },
          "artist": {
            "type": "string",
            "description": "The primary artist name.",
            "minLength": 1,
            "maxLength": 256
          },
          "album": {
            "type": "string",
            "description": "The album name.",
            "maxLength": 256
          },
          "albumCoverUrl": {
            "type": "string",
            "description": "URL of the album cover image.",
            "format": "uri"
          },
          "durationMs": {
            "type": "integer",
            "minimum": 0
          },
          "source": {
            "type": "string",
            "description": "Music service source, e.g. 'spotify' or 'listenbrainz'.",
            "maxLength": 64
          },
          "recordingMbId": {
            "type": "string",
            "description": "MusicBrainz recording ID, if available."
          }
        }
      },
      "app.bsky.actor.profile": {
        "type": "object",
        "properties": {
          "displayName": {
            "type": "string",
            "maxLength": 640
          },
          "description": {
            "type": "string",
            "description": "Free-form profile description text.",
            "maxLength": 2560
          },
          "avatar": {
            "type": "string",
            "format": "binary",
            "maxLength": 1000000
          },
          "banner": {
            "type": "string",
            "format": "binary",
            "maxLength": 10000000
          },
          "labels": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/com.atproto.label.defs.selfLabels"
              }
            ]
          },
          "joinedViaStarterPack": {
            "$ref": "#/components/schemas/com.atproto.repo.strongRef"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "app.rocksky.actor.status": {
        "type": "object",
        "required": [
          "track",
          "startedAt"
        ],
        "properties": {
          "track": {
            "$ref": "#/components/schemas/app.rocksky.actor.defs.trackView"
          },
          "startedAt": {
            "type": "string",
            "description": "When the track started playing.",
            "format": "date-time"
          },
          "expiresAt": {
            "type": "string",
            "description": "When the status expires. Defaults to startedAt plus track duration plus idle time.",
            "format": "date-time"
          }
        }
      },
      "app.rocksky.album": {
        "type": "object",
        "required": [
          "title",
          "artist",
          "createdAt"
        ],
        "properties": {
          "title": {
            "type": "string",
            "description": "The title of the album.",
            "minLength": 1,
            "maxLength": 512
          },
          "artist": {
            "type": "string",
            "description": "The artist of the album.",
            "minLength": 1,
            "maxLength": 256
          },
          "duration": {
            "type": "integer"
          },
          "releaseDate": {
            "type": "string",
            "description": "The release date of the album.",
            "format": "date-time"
          },
          "year": {
            "type": "integer"
          },
          "genre": {
            "type": "string",
            "description": "The genre of the album.",
            "maxLength": 256
          },
          "albumArt": {
            "type": "string",
            "format": "binary",
            "maxLength": 2000000
          },
          "albumArtUrl": {
            "type": "string",
            "description": "The URL of the album art of the album.",
            "format": "uri"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 256
            }
          },
          "youtubeLink": {
            "type": "string",
            "description": "The YouTube link of the album.",
            "format": "uri"
          },
          "spotifyLink": {
            "type": "string",
            "description": "The Spotify link of the album.",
            "format": "uri"
          },
          "tidalLink": {
            "type": "string",
            "description": "The tidal link of the album.",
            "format": "uri"
          },
          "appleMusicLink": {
            "type": "string",
            "description": "The Apple Music link of the album.",
            "format": "uri"
          },
          "createdAt": {
            "type": "string",
            "description": "The date and time when the album was created.",
            "format": "date-time"
          }
        }
      },
      "app.rocksky.album.defs.albumViewBasic": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier of the album."
          },
          "uri": {
            "type": "string",
            "description": "The URI of the album.",
            "format": "at-uri"
          },
          "title": {
            "type": "string",
            "description": "The title of the album."
          },
          "artist": {
            "type": "string",
            "description": "The artist of the album."
          },
          "artistUri": {
            "type": "string",
            "description": "The URI of the album's artist.",
            "format": "at-uri"
          },
          "year": {
            "type": "integer"
          },
          "albumArt": {
            "type": "string",
            "description": "The URL of the album art image.",
            "format": "uri"
          },
          "releaseDate": {
            "type": "string",
            "description": "The release date of the album."
          },
          "sha256": {
            "type": "string",
            "description": "The SHA256 hash of the album."
          },
          "playCount": {
            "type": "integer",
            "minimum": 0
          },
          "uniqueListeners": {
            "type": "integer",
            "minimum": 0
          }
        }
      },
      "app.rocksky.album.defs.albumViewDetailed": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier of the album."
          },
          "uri": {
            "type": "string",
            "description": "The URI of the album.",
            "format": "at-uri"
          },
          "title": {
            "type": "string",
            "description": "The title of the album."
          },
          "artist": {
            "type": "string",
            "description": "The artist of the album."
          },
          "artistUri": {
            "type": "string",
            "description": "The URI of the album's artist.",
            "format": "at-uri"
          },
          "year": {
            "type": "integer"
          },
          "albumArt": {
            "type": "string",
            "description": "The URL of the album art image.",
            "format": "uri"
          },
          "releaseDate": {
            "type": "string",
            "description": "The release date of the album."
          },
          "sha256": {
            "type": "string",
            "description": "The SHA256 hash of the album."
          },
          "playCount": {
            "type": "integer",
            "minimum": 0
          },
          "uniqueListeners": {
            "type": "integer",
            "minimum": 0
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "tracks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/app.rocksky.song.defs.songViewBasic"
            }
          }
        }
      },
      "app.rocksky.apikey.defs.apiKeyView": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier of the API key."
          },
          "name": {
            "type": "string",
            "description": "The name of the API key."
          },
          "description": {
            "type": "string",
            "description": "A description for the API key."
          },
          "createdAt": {
            "type": "string",
            "description": "The date and time when the API key was created.",
            "format": "date-time"
          }
        }
      },
      "app.rocksky.artist": {
        "type": "object",
        "required": [
          "name",
          "createdAt"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the artist.",
            "minLength": 1,
            "maxLength": 512
          },
          "bio": {
            "type": "string",
            "description": "The biography of the artist.",
            "maxLength": 1000
          },
          "picture": {
            "type": "string",
            "format": "binary",
            "maxLength": 2000000
          },
          "pictureUrl": {
            "type": "string",
            "description": "The URL of the picture of the artist.",
            "format": "uri"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 256
            }
          },
          "born": {
            "type": "string",
            "description": "The birth date of the artist.",
            "format": "date-time"
          },
          "died": {
            "type": "string",
            "description": "The death date of the artist.",
            "format": "date-time"
          },
          "bornIn": {
            "type": "string",
            "description": "The birth place of the artist.",
            "maxLength": 256
          },
          "createdAt": {
            "type": "string",
            "description": "The date when the artist was created.",
            "format": "date-time"
          }
        }
      },
      "app.rocksky.artist.defs.artistViewBasic": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier of the artist."
          },
          "uri": {
            "type": "string",
            "description": "The URI of the artist.",
            "format": "at-uri"
          },
          "name": {
            "type": "string",
            "description": "The name of the artist."
          },
          "picture": {
            "type": "string",
            "description": "The picture of the artist."
          },
          "sha256": {
            "type": "string",
            "description": "The SHA256 hash of the artist."
          },
          "playCount": {
            "type": "integer",
            "minimum": 0
          },
          "uniqueListeners": {
            "type": "integer",
            "minimum": 0
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "app.rocksky.artist.defs.artistViewDetailed": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier of the artist."
          },
          "uri": {
            "type": "string",
            "description": "The URI of the artist.",
            "format": "at-uri"
          },
          "name": {
            "type": "string",
            "description": "The name of the artist."
          },
          "picture": {
            "type": "string",
            "description": "The picture of the artist."
          },
          "sha256": {
            "type": "string",
            "description": "The SHA256 hash of the artist."
          },
          "playCount": {
            "type": "integer",
            "minimum": 0
          },
          "uniqueListeners": {
            "type": "integer",
            "minimum": 0
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "app.rocksky.artist.defs.songViewBasic": {
        "type": "object",
        "properties": {
          "uri": {
            "type": "string",
            "description": "The URI of the song.",
            "format": "at-uri"
          },
          "title": {
            "type": "string",
            "description": "The title of the song."
          },
          "playCount": {
            "type": "integer",
            "minimum": 0
          }
        }
      },
      "app.rocksky.artist.defs.listenerViewBasic": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier of the actor."
          },
          "did": {
            "type": "string",
            "description": "The DID of the listener."
          },
          "handle": {
            "type": "string",
            "description": "The handle of the listener."
          },
          "displayName": {
            "type": "string",
            "description": "The display name of the listener."
          },
          "avatar": {
            "type": "string",
            "description": "The URL of the listener's avatar image.",
            "format": "uri"
          },
          "mostListenedSong": {
            "$ref": "#/components/schemas/app.rocksky.artist.defs.songViewBasic"
          },
          "totalPlays": {
            "type": "integer",
            "minimum": 0
          },
          "rank": {
            "type": "integer",
            "minimum": 1
          }
        }
      },
      "app.rocksky.artist.defs.recentListenerView": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier of the listener."
          },
          "did": {
            "type": "string",
            "description": "The DID of the listener."
          },
          "handle": {
            "type": "string",
            "description": "The handle of the listener."
          },
          "displayName": {
            "type": "string",
            "description": "The display name of the listener."
          },
          "avatar": {
            "type": "string",
            "description": "The URL of the listener's avatar image.",
            "format": "uri"
          },
          "timestamp": {
            "type": "string",
            "description": "The timestamp of the listener's most recent scrobble of this artist.",
            "format": "date-time"
          },
          "scrobbleUri": {
            "type": "string",
            "description": "The URI of the listener's most recent scrobble of this artist.",
            "format": "at-uri"
          }
        }
      },
      "app.rocksky.artist.defs.artistMbid": {
        "type": "object",
        "properties": {
          "mbid": {
            "type": "string",
            "description": "The MusicBrainz Identifier (MBID) of the artist."
          },
          "name": {
            "type": "string",
            "description": "The name of the artist.",
            "minLength": 1,
            "maxLength": 256
          }
        }
      },
      "app.rocksky.charts.defs.chartsView": {
        "type": "object",
        "properties": {
          "scrobbles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/app.rocksky.charts.defs.scrobbleViewBasic"
            }
          }
        }
      },
      "app.rocksky.charts.defs.scrobbleViewBasic": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "description": "The date of the scrobble.",
            "format": "date-time"
          },
          "count": {
            "type": "integer"
          }
        }
      },
      "app.rocksky.feed.defs.searchResultsView": {
        "type": "object",
        "properties": {
          "hits": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/app.rocksky.song.defs.songViewBasic"
                },
                {
                  "$ref": "#/components/schemas/app.rocksky.album.defs.albumViewBasic"
                },
                {
                  "$ref": "#/components/schemas/app.rocksky.artist.defs.artistViewBasic"
                },
                {
                  "$ref": "#/components/schemas/app.rocksky.playlist.defs.playlistViewBasic"
                },
                {
                  "$ref": "#/components/schemas/app.rocksky.actor.defs.profileViewBasic"
                }
              ]
            }
          },
          "processingTimeMs": {
            "type": "integer"
          },
          "limit": {
            "type": "integer"
          },
          "offset": {
            "type": "integer"
          },
          "estimatedTotalHits": {
            "type": "integer"
          }
        }
      },
      "app.rocksky.feed.defs.storyView": {
        "type": "object",
        "properties": {
          "album": {
            "type": "string"
          },
          "albumArt": {
            "type": "string",
            "format": "uri"
          },
          "albumArtist": {
            "type": "string"
          },
          "albumUri": {
            "type": "string",
            "format": "at-uri"
          },
          "artist": {
            "type": "string"
          },
          "artistUri": {
            "type": "string",
            "format": "at-uri"
          },
          "avatar": {
            "type": "string",
            "format": "uri"
          },
          "createdAt": {
            "type": "string"
          },
          "did": {
            "type": "string",
            "format": "at-identifier"
          },
          "handle": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "trackId": {
            "type": "string"
          },
          "trackUri": {
            "type": "string",
            "format": "at-uri"
          },
          "uri": {
            "type": "string",
            "format": "at-uri"
          }
        }
      },
      "app.rocksky.feed.defs.storiesView": {
        "type": "object",
        "properties": {
          "stories": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/app.rocksky.feed.defs.storyView"
            }
          }
        }
      },
      "app.rocksky.feed.defs.feedGeneratorsView": {
        "type": "object",
        "properties": {
          "feeds": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/app.rocksky.feed.defs.feedGeneratorView"
            }
          }
        }
      },
      "app.rocksky.feed.defs.feedGeneratorView": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "uri": {
            "type": "string",
            "format": "at-uri"
          },
          "avatar": {
            "type": "string",
            "format": "uri"
          },
          "creator": {
            "$ref": "#/components/schemas/app.rocksky.actor.defs.profileViewBasic"
          }
        }
      },
      "app.rocksky.feed.defs.feedUriView": {
        "type": "object",
        "properties": {
          "uri": {
            "type": "string",
            "description": "The feed URI.",
            "format": "at-uri"
          }
        }
      },
      "app.rocksky.feed.defs.feedItemView": {
        "type": "object",
        "properties": {
          "scrobble": {
            "$ref": "#/components/schemas/app.rocksky.scrobble.defs.scrobbleViewBasic"
          }
        }
      },
      "app.rocksky.feed.defs.feedView": {
        "type": "object",
        "properties": {
          "feed": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/app.rocksky.feed.defs.feedItemView"
            }
          },
          "cursor": {
            "type": "string",
            "description": "The pagination cursor for the next set of results."
          }
        }
      },
      "app.rocksky.feed.defs.recommendationView": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string"
          },
          "artist": {
            "type": "string"
          },
          "album": {
            "type": "string"
          },
          "albumArt": {
            "type": "string",
            "format": "uri"
          },
          "trackUri": {
            "type": "string",
            "format": "at-uri"
          },
          "artistUri": {
            "type": "string",
            "format": "at-uri"
          },
          "albumUri": {
            "type": "string",
            "format": "at-uri"
          },
          "genres": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "recommendationScore": {
            "type": "integer"
          },
          "source": {
            "type": "string",
            "description": "neighbour | social | serendipity"
          },
          "likesCount": {
            "type": "integer"
          }
        }
      },
      "app.rocksky.feed.defs.recommendationsView": {
        "type": "object",
        "properties": {
          "recommendations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/app.rocksky.feed.defs.recommendationView"
            }
          },
          "cursor": {
            "type": "string"
          }
        }
      },
      "app.rocksky.feed.defs.recommendedArtistView": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "uri": {
            "type": "string",
            "format": "at-uri"
          },
          "name": {
            "type": "string"
          },
          "picture": {
            "type": "string",
            "format": "uri"
          },
          "genres": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "recommendationScore": {
            "type": "integer"
          },
          "source": {
            "type": "string",
            "description": "neighbour | social | serendipity"
          }
        }
      },
      "app.rocksky.feed.defs.recommendedArtistsView": {
        "type": "object",
        "properties": {
          "artists": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/app.rocksky.feed.defs.recommendedArtistView"
            }
          },
          "cursor": {
            "type": "string"
          }
        }
      },
      "app.rocksky.feed.defs.recommendedAlbumView": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "uri": {
            "type": "string",
            "format": "at-uri"
          },
          "title": {
            "type": "string"
          },
          "artist": {
            "type": "string"
          },
          "artistUri": {
            "type": "string",
            "format": "at-uri"
          },
          "year": {
            "type": "integer"
          },
          "albumArt": {
            "type": "string",
            "format": "uri"
          },
          "recommendationScore": {
            "type": "integer"
          },
          "source": {
            "type": "string",
            "description": "known-artist | new-artist | serendipity"
          }
        }
      },
      "app.rocksky.feed.defs.recommendedAlbumsView": {
        "type": "object",
        "properties": {
          "albums": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/app.rocksky.feed.defs.recommendedAlbumView"
            }
          },
          "cursor": {
            "type": "string"
          }
        }
      },
      "app.rocksky.feed.generator": {
        "type": "object",
        "required": [
          "did",
          "displayName",
          "createdAt"
        ],
        "properties": {
          "did": {
            "type": "string",
            "format": "did"
          },
          "avatar": {
            "type": "string",
            "format": "binary",
            "maxLength": 1000000
          },
          "displayName": {
            "type": "string",
            "maxLength": 240
          },
          "description": {
            "type": "string",
            "maxLength": 3000
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "app.rocksky.graph.defs.notFoundActor": {
        "type": "object",
        "description": "indicates that a handle or DID could not be resolved",
        "required": [
          "actor",
          "notFound"
        ],
        "properties": {
          "actor": {
            "type": "string",
            "format": "at-identifier"
          },
          "notFound": {
            "type": "boolean"
          }
        }
      },
      "app.rocksky.graph.defs.relationship": {
        "type": "object",
        "required": [
          "did"
        ],
        "properties": {
          "did": {
            "type": "string",
            "format": "did"
          },
          "following": {
            "type": "string",
            "description": "if the actor follows this DID, this is the AT-URI of the follow record",
            "format": "at-uri"
          },
          "followedBy": {
            "type": "string",
            "description": "if the actor is followed by this DID, contains the AT-URI of the follow record",
            "format": "at-uri"
          }
        }
      },
      "app.rocksky.graph.follow": {
        "type": "object",
        "required": [
          "createdAt",
          "subject"
        ],
        "properties": {
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "subject": {
            "type": "string",
            "format": "did"
          },
          "via": {
            "$ref": "#/components/schemas/com.atproto.repo.strongRef"
          }
        }
      },
      "app.rocksky.like": {
        "type": "object",
        "required": [
          "createdAt",
          "subject"
        ],
        "properties": {
          "createdAt": {
            "type": "string",
            "description": "The date when the like was created.",
            "format": "date-time"
          },
          "subject": {
            "$ref": "#/components/schemas/com.atproto.repo.strongRef"
          }
        }
      },
      "app.rocksky.mirror.defs.mirrorSourceView": {
        "type": "object",
        "required": [
          "provider",
          "enabled",
          "hasCredentials"
        ],
        "properties": {
          "provider": {
            "type": "string",
            "description": "One of: lastfm, listenbrainz, tealfm"
          },
          "enabled": {
            "type": "boolean",
            "description": "Whether scrobbles from this source are being mirrored into Rocksky."
          },
          "externalUsername": {
            "type": "string",
            "description": "Username on the external service (Last.fm / ListenBrainz). Null for Teal.fm."
          },
          "hasCredentials": {
            "type": "boolean",
            "description": "True when an API key is stored. Last.fm/ListenBrainz only; always false for Teal.fm."
          },
          "lastPolledAt": {
            "type": "string",
            "description": "The last time the mirror process successfully polled this source.",
            "format": "date-time"
          },
          "lastScrobbleSeenAt": {
            "type": "string",
            "description": "Watermark — scrobbles from the external service older than this are skipped.",
            "format": "date-time"
          }
        }
      },
      "app.rocksky.player.defs.currentlyPlayingViewDetailed": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "description": "The title of the currently playing track"
          }
        }
      },
      "app.rocksky.player.defs.playbackQueueViewDetailed": {
        "type": "object",
        "properties": {
          "tracks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/app.rocksky.song.defs.songViewBasic"
            }
          }
        }
      },
      "app.rocksky.playlist.defs.playlistViewDetailed": {
        "type": "object",
        "description": "Detailed view of a playlist, including its tracks and metadata",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier of the playlist."
          },
          "title": {
            "type": "string",
            "description": "The title of the playlist."
          },
          "uri": {
            "type": "string",
            "description": "The URI of the playlist.",
            "format": "at-uri"
          },
          "curatorDid": {
            "type": "string",
            "description": "The DID of the curator of the playlist.",
            "format": "at-identifier"
          },
          "curatorHandle": {
            "type": "string",
            "description": "The handle of the curator of the playlist.",
            "format": "at-identifier"
          },
          "curatorName": {
            "type": "string",
            "description": "The name of the curator of the playlist."
          },
          "curatorAvatarUrl": {
            "type": "string",
            "description": "The URL of the avatar image of the curator.",
            "format": "uri"
          },
          "description": {
            "type": "string",
            "description": "A description of the playlist."
          },
          "coverImageUrl": {
            "type": "string",
            "description": "The URL of the cover image for the playlist.",
            "format": "uri"
          },
          "createdAt": {
            "type": "string",
            "description": "The date and time when the playlist was created.",
            "format": "date-time"
          },
          "tracks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/app.rocksky.song.defs.songViewBasic"
            }
          }
        }
      },
      "app.rocksky.playlist.defs.playlistViewBasic": {
        "type": "object",
        "description": "Basic view of a playlist, including its metadata",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier of the playlist."
          },
          "title": {
            "type": "string",
            "description": "The title of the playlist."
          },
          "uri": {
            "type": "string",
            "description": "The URI of the playlist.",
            "format": "at-uri"
          },
          "curatorDid": {
            "type": "string",
            "description": "The DID of the curator of the playlist.",
            "format": "at-identifier"
          },
          "curatorHandle": {
            "type": "string",
            "description": "The handle of the curator of the playlist.",
            "format": "at-identifier"
          },
          "curatorName": {
            "type": "string",
            "description": "The name of the curator of the playlist."
          },
          "curatorAvatarUrl": {
            "type": "string",
            "description": "The URL of the avatar image of the curator.",
            "format": "uri"
          },
          "description": {
            "type": "string",
            "description": "A description of the playlist."
          },
          "coverImageUrl": {
            "type": "string",
            "description": "The URL of the cover image for the playlist.",
            "format": "uri"
          },
          "createdAt": {
            "type": "string",
            "description": "The date and time when the playlist was created.",
            "format": "date-time"
          },
          "trackCount": {
            "type": "integer",
            "minimum": 0
          }
        }
      },
      "app.rocksky.playlist": {
        "type": "object",
        "required": [
          "name",
          "createdAt"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the playlist.",
            "minLength": 1,
            "maxLength": 512
          },
          "description": {
            "type": "string",
            "description": "The playlist description.",
            "minLength": 1,
            "maxLength": 256
          },
          "picture": {
            "type": "string",
            "format": "binary",
            "maxLength": 2000000
          },
          "pictureUrl": {
            "type": "string",
            "description": "The URL of the picture of the artist.",
            "format": "uri"
          },
          "createdAt": {
            "type": "string",
            "description": "The date the playlist was created.",
            "format": "date-time"
          },
          "spotifyLink": {
            "type": "string",
            "description": "The Spotify link of the playlist."
          },
          "tidalLink": {
            "type": "string",
            "description": "The Tidal link of the playlist."
          },
          "youtubeLink": {
            "type": "string",
            "description": "The YouTube link of the playlist."
          },
          "appleMusicLink": {
            "type": "string",
            "description": "The Apple Music link of the playlist."
          }
        }
      },
      "app.rocksky.playlistItem": {
        "type": "object",
        "required": [
          "createdAt",
          "track",
          "order",
          "subject"
        ],
        "properties": {
          "subject": {
            "$ref": "#/components/schemas/com.atproto.repo.strongRef"
          },
          "createdAt": {
            "type": "string",
            "description": "The date the playlist was created.",
            "format": "date-time"
          },
          "track": {
            "$ref": "#/components/schemas/app.rocksky.song.defs.songViewBasic"
          },
          "order": {
            "type": "integer",
            "minimum": 0
          }
        }
      },
      "app.rocksky.scrobble.defs.scrobbleViewBasic": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier of the scrobble."
          },
          "user": {
            "type": "string",
            "description": "The handle of the user who created the scrobble."
          },
          "userDisplayName": {
            "type": "string",
            "description": "The display name of the user who created the scrobble."
          },
          "userAvatar": {
            "type": "string",
            "description": "The avatar URL of the user who created the scrobble.",
            "format": "uri"
          },
          "title": {
            "type": "string",
            "description": "The title of the scrobble."
          },
          "artist": {
            "type": "string",
            "description": "The artist of the song."
          },
          "artistUri": {
            "type": "string",
            "description": "The URI of the artist.",
            "format": "at-uri"
          },
          "album": {
            "type": "string",
            "description": "The album of the song."
          },
          "albumUri": {
            "type": "string",
            "description": "The URI of the album.",
            "format": "at-uri"
          },
          "cover": {
            "type": "string",
            "description": "The album art URL of the song.",
            "format": "uri"
          },
          "date": {
            "type": "string",
            "description": "The timestamp when the scrobble was created.",
            "format": "date-time"
          },
          "uri": {
            "type": "string",
            "description": "The URI of the scrobble.",
            "format": "uri"
          },
          "sha256": {
            "type": "string",
            "description": "The SHA256 hash of the scrobble data."
          },
          "liked": {
            "type": "boolean"
          },
          "likesCount": {
            "type": "integer"
          }
        }
      },
      "app.rocksky.scrobble.defs.scrobbleViewDetailed": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier of the scrobble."
          },
          "user": {
            "type": "string",
            "description": "The handle of the user who created the scrobble."
          },
          "title": {
            "type": "string",
            "description": "The title of the scrobble."
          },
          "artist": {
            "type": "string",
            "description": "The artist of the song."
          },
          "artistUri": {
            "type": "string",
            "description": "The URI of the artist.",
            "format": "at-uri"
          },
          "album": {
            "type": "string",
            "description": "The album of the song."
          },
          "albumUri": {
            "type": "string",
            "description": "The URI of the album.",
            "format": "at-uri"
          },
          "cover": {
            "type": "string",
            "description": "The album art URL of the song.",
            "format": "uri"
          },
          "date": {
            "type": "string",
            "description": "The timestamp when the scrobble was created.",
            "format": "date-time"
          },
          "uri": {
            "type": "string",
            "description": "The URI of the scrobble.",
            "format": "uri"
          },
          "sha256": {
            "type": "string",
            "description": "The SHA256 hash of the scrobble data."
          },
          "listeners": {
            "type": "integer"
          },
          "scrobbles": {
            "type": "integer"
          },
          "artists": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/app.rocksky.artist.defs.artistViewBasic"
            }
          },
          "firstScrobble": {
            "$ref": "#/components/schemas/app.rocksky.scrobble.defs.firstScrobbleView"
          }
        }
      },
      "app.rocksky.scrobble.defs.firstScrobbleView": {
        "type": "object",
        "properties": {
          "handle": {
            "type": "string",
            "description": "The handle of the user who first scrobbled this song."
          },
          "avatar": {
            "type": "string",
            "description": "The avatar URL of the user who first scrobbled this song.",
            "format": "uri"
          },
          "timestamp": {
            "type": "string",
            "description": "The timestamp of the first scrobble.",
            "format": "date-time"
          }
        }
      },
      "app.rocksky.scrobble": {
        "type": "object",
        "required": [
          "title",
          "artist",
          "album",
          "albumArtist",
          "duration",
          "createdAt"
        ],
        "properties": {
          "title": {
            "type": "string",
            "description": "The title of the song.",
            "minLength": 1,
            "maxLength": 512
          },
          "artist": {
            "type": "string",
            "description": "The artist of the song.",
            "minLength": 1,
            "maxLength": 256
          },
          "artists": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/app.rocksky.artist.defs.artistMbid"
            }
          },
          "albumArtist": {
            "type": "string",
            "description": "The album artist of the song.",
            "minLength": 1,
            "maxLength": 256
          },
          "album": {
            "type": "string",
            "description": "The album of the song.",
            "minLength": 1,
            "maxLength": 256
          },
          "duration": {
            "type": "integer",
            "minimum": 1
          },
          "trackNumber": {
            "type": "integer",
            "minimum": 1
          },
          "discNumber": {
            "type": "integer",
            "minimum": 1
          },
          "releaseDate": {
            "type": "string",
            "description": "The release date of the song.",
            "format": "date-time"
          },
          "year": {
            "type": "integer"
          },
          "genre": {
            "type": "string",
            "description": "The genre of the song.",
            "maxLength": 256
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 256
            }
          },
          "composer": {
            "type": "string",
            "description": "The composer of the song.",
            "maxLength": 256
          },
          "lyrics": {
            "type": "string",
            "description": "The lyrics of the song.",
            "maxLength": 10000
          },
          "copyrightMessage": {
            "type": "string",
            "description": "The copyright message of the song.",
            "maxLength": 256
          },
          "wiki": {
            "type": "string",
            "description": "Informations about the song",
            "maxLength": 10000
          },
          "albumArt": {
            "type": "string",
            "format": "binary",
            "maxLength": 2000000
          },
          "albumArtUrl": {
            "type": "string",
            "description": "The URL of the album art of the song.",
            "format": "uri"
          },
          "youtubeLink": {
            "type": "string",
            "description": "The YouTube link of the song.",
            "format": "uri"
          },
          "spotifyLink": {
            "type": "string",
            "description": "The Spotify link of the song.",
            "format": "uri"
          },
          "tidalLink": {
            "type": "string",
            "description": "The Tidal link of the song.",
            "format": "uri"
          },
          "appleMusicLink": {
            "type": "string",
            "description": "The Apple Music link of the song.",
            "format": "uri"
          },
          "createdAt": {
            "type": "string",
            "description": "The date when the song was created.",
            "format": "date-time"
          },
          "mbid": {
            "type": "string",
            "description": "The MusicBrainz ID of the song."
          },
          "label": {
            "type": "string",
            "description": "The label of the song.",
            "maxLength": 256
          },
          "isrc": {
            "type": "string",
            "description": "The International Standard Recording Code (ISRC) of the song.",
            "maxLength": 32
          }
        }
      },
      "app.rocksky.shout.defs.author": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier of the author."
          },
          "did": {
            "type": "string",
            "description": "The decentralized identifier (DID) of the author.",
            "format": "at-identifier"
          },
          "handle": {
            "type": "string",
            "description": "The handle of the author.",
            "format": "at-identifier"
          },
          "displayName": {
            "type": "string",
            "description": "The display name of the author."
          },
          "avatar": {
            "type": "string",
            "description": "The URL of the author's avatar image.",
            "format": "uri"
          }
        }
      },
      "app.rocksky.shout.defs.shoutView": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier of the shout."
          },
          "message": {
            "type": "string",
            "description": "The content of the shout."
          },
          "parent": {
            "type": "string",
            "description": "The ID of the parent shout if this is a reply, otherwise null."
          },
          "createdAt": {
            "type": "string",
            "description": "The date and time when the shout was created.",
            "format": "date-time"
          },
          "author": {
            "$ref": "#/components/schemas/app.rocksky.shout.defs.author"
          }
        }
      },
      "app.rocksky.shout": {
        "type": "object",
        "required": [
          "message",
          "createdAt",
          "subject"
        ],
        "properties": {
          "message": {
            "type": "string",
            "description": "The message of the shout.",
            "minLength": 1,
            "maxLength": 1000
          },
          "createdAt": {
            "type": "string",
            "description": "The date when the shout was created.",
            "format": "date-time"
          },
          "parent": {
            "$ref": "#/components/schemas/com.atproto.repo.strongRef"
          },
          "subject": {
            "$ref": "#/components/schemas/com.atproto.repo.strongRef"
          }
        }
      },
      "app.rocksky.song.defs.songViewBasic": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier of the song."
          },
          "title": {
            "type": "string",
            "description": "The title of the song."
          },
          "artist": {
            "type": "string",
            "description": "The artist of the song."
          },
          "albumArtist": {
            "type": "string",
            "description": "The artist of the album the song belongs to."
          },
          "albumArt": {
            "type": "string",
            "description": "The URL of the album art image.",
            "format": "uri"
          },
          "uri": {
            "type": "string",
            "description": "The URI of the song.",
            "format": "at-uri"
          },
          "album": {
            "type": "string",
            "description": "The album of the song."
          },
          "duration": {
            "type": "integer"
          },
          "trackNumber": {
            "type": "integer"
          },
          "discNumber": {
            "type": "integer"
          },
          "playCount": {
            "type": "integer",
            "minimum": 0
          },
          "uniqueListeners": {
            "type": "integer",
            "minimum": 0
          },
          "albumUri": {
            "type": "string",
            "description": "The URI of the album the song belongs to.",
            "format": "at-uri"
          },
          "artistUri": {
            "type": "string",
            "description": "The URI of the artist of the song.",
            "format": "at-uri"
          },
          "sha256": {
            "type": "string",
            "description": "The SHA256 hash of the song."
          },
          "mbid": {
            "type": "string",
            "description": "The MusicBrainz ID of the song."
          },
          "isrc": {
            "type": "string",
            "description": "The International Standard Recording Code (ISRC) of the song."
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "createdAt": {
            "type": "string",
            "description": "The timestamp when the song was created.",
            "format": "date-time"
          }
        }
      },
      "app.rocksky.song.defs.songViewDetailed": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier of the song."
          },
          "title": {
            "type": "string",
            "description": "The title of the song."
          },
          "artist": {
            "type": "string",
            "description": "The artist of the song."
          },
          "albumArtist": {
            "type": "string",
            "description": "The artist of the album the song belongs to."
          },
          "albumArt": {
            "type": "string",
            "description": "The URL of the album art image.",
            "format": "uri"
          },
          "uri": {
            "type": "string",
            "description": "The URI of the song.",
            "format": "at-uri"
          },
          "album": {
            "type": "string",
            "description": "The album of the song."
          },
          "duration": {
            "type": "integer"
          },
          "trackNumber": {
            "type": "integer"
          },
          "discNumber": {
            "type": "integer"
          },
          "playCount": {
            "type": "integer",
            "minimum": 0
          },
          "uniqueListeners": {
            "type": "integer",
            "minimum": 0
          },
          "albumUri": {
            "type": "string",
            "description": "The URI of the album the song belongs to.",
            "format": "at-uri"
          },
          "artistUri": {
            "type": "string",
            "description": "The URI of the artist of the song.",
            "format": "at-uri"
          },
          "sha256": {
            "type": "string",
            "description": "The SHA256 hash of the song."
          },
          "mbid": {
            "type": "string",
            "description": "The MusicBrainz ID of the song."
          },
          "isrc": {
            "type": "string",
            "description": "The International Standard Recording Code (ISRC) of the song."
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "createdAt": {
            "type": "string",
            "description": "The timestamp when the song was created.",
            "format": "date-time"
          },
          "artists": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/app.rocksky.artist.defs.artistViewBasic"
            }
          },
          "firstScrobble": {
            "$ref": "#/components/schemas/app.rocksky.song.defs.firstScrobbleView"
          }
        }
      },
      "app.rocksky.song.defs.recentListenerView": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier of the listener."
          },
          "did": {
            "type": "string",
            "description": "The DID of the listener."
          },
          "handle": {
            "type": "string",
            "description": "The handle of the listener."
          },
          "displayName": {
            "type": "string",
            "description": "The display name of the listener."
          },
          "avatar": {
            "type": "string",
            "description": "The URL of the listener's avatar image.",
            "format": "uri"
          },
          "timestamp": {
            "type": "string",
            "description": "The timestamp of the listener's most recent scrobble of this song.",
            "format": "date-time"
          },
          "scrobbleUri": {
            "type": "string",
            "description": "The URI of the listener's most recent scrobble of this song.",
            "format": "at-uri"
          }
        }
      },
      "app.rocksky.song.defs.firstScrobbleView": {
        "type": "object",
        "properties": {
          "handle": {
            "type": "string",
            "description": "The handle of the user who first scrobbled this song."
          },
          "avatar": {
            "type": "string",
            "description": "The avatar URL of the user who first scrobbled this song.",
            "format": "uri"
          },
          "timestamp": {
            "type": "string",
            "description": "The timestamp of the first scrobble.",
            "format": "date-time"
          }
        }
      },
      "app.rocksky.song": {
        "type": "object",
        "required": [
          "title",
          "artist",
          "album",
          "albumArtist",
          "duration",
          "createdAt"
        ],
        "properties": {
          "title": {
            "type": "string",
            "description": "The title of the song.",
            "minLength": 1,
            "maxLength": 512
          },
          "artist": {
            "type": "string",
            "description": "The artist of the song.",
            "minLength": 1,
            "maxLength": 256
          },
          "artists": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/app.rocksky.artist.defs.artistMbid"
            }
          },
          "albumArtist": {
            "type": "string",
            "description": "The album artist of the song.",
            "minLength": 1,
            "maxLength": 256
          },
          "album": {
            "type": "string",
            "description": "The album of the song.",
            "minLength": 1,
            "maxLength": 256
          },
          "duration": {
            "type": "integer",
            "minimum": 1
          },
          "trackNumber": {
            "type": "integer",
            "minimum": 1
          },
          "discNumber": {
            "type": "integer",
            "minimum": 1
          },
          "releaseDate": {
            "type": "string",
            "description": "The release date of the song.",
            "format": "date-time"
          },
          "year": {
            "type": "integer"
          },
          "genre": {
            "type": "string",
            "description": "The genre of the song.",
            "minLength": 1,
            "maxLength": 256
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 256
            }
          },
          "composer": {
            "type": "string",
            "description": "The composer of the song.",
            "maxLength": 256
          },
          "lyrics": {
            "type": "string",
            "description": "The lyrics of the song.",
            "maxLength": 10000
          },
          "copyrightMessage": {
            "type": "string",
            "description": "The copyright message of the song.",
            "maxLength": 256
          },
          "wiki": {
            "type": "string",
            "description": "Informations about the song",
            "maxLength": 10000
          },
          "albumArt": {
            "type": "string",
            "format": "binary",
            "maxLength": 2000000
          },
          "albumArtUrl": {
            "type": "string",
            "description": "The URL of the album art of the song.",
            "format": "uri"
          },
          "youtubeLink": {
            "type": "string",
            "description": "The YouTube link of the song.",
            "format": "uri"
          },
          "spotifyLink": {
            "type": "string",
            "description": "The Spotify link of the song.",
            "format": "uri"
          },
          "tidalLink": {
            "type": "string",
            "description": "The Tidal link of the song.",
            "format": "uri"
          },
          "appleMusicLink": {
            "type": "string",
            "description": "The Apple Music link of the song.",
            "format": "uri"
          },
          "createdAt": {
            "type": "string",
            "description": "The date when the song was created.",
            "format": "date-time"
          },
          "mbid": {
            "type": "string",
            "description": "The MusicBrainz ID of the song."
          },
          "label": {
            "type": "string",
            "description": "The label of the song.",
            "maxLength": 256
          },
          "isrc": {
            "type": "string",
            "description": "The International Standard Recording Code (ISRC) of the song.",
            "maxLength": 32
          }
        }
      },
      "app.rocksky.spotify.defs.spotifyTrackView": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier of the Spotify track."
          },
          "name": {
            "type": "string",
            "description": "The name of the track."
          },
          "artist": {
            "type": "string",
            "description": "The name of the artist."
          },
          "album": {
            "type": "string",
            "description": "The name of the album."
          },
          "duration": {
            "type": "integer"
          },
          "previewUrl": {
            "type": "string",
            "description": "A URL to a preview of the track."
          }
        }
      },
      "app.rocksky.stats.defs.statsView": {
        "type": "object",
        "properties": {
          "scrobbles": {
            "type": "integer"
          },
          "artists": {
            "type": "integer"
          },
          "lovedTracks": {
            "type": "integer"
          },
          "albums": {
            "type": "integer"
          },
          "tracks": {
            "type": "integer"
          }
        }
      },
      "app.rocksky.stats.defs.wrappedArtist": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier of the artist."
          },
          "name": {
            "type": "string",
            "description": "The name of the artist."
          },
          "picture": {
            "type": "string",
            "description": "The picture URL of the artist."
          },
          "uri": {
            "type": "string",
            "description": "The AT-URI of the artist.",
            "format": "at-uri"
          },
          "playCount": {
            "type": "integer",
            "minimum": 0
          }
        }
      },
      "app.rocksky.stats.defs.wrappedTrack": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier of the track."
          },
          "title": {
            "type": "string",
            "description": "The title of the track."
          },
          "artist": {
            "type": "string",
            "description": "The artist of the track."
          },
          "albumArt": {
            "type": "string",
            "description": "The album art URL."
          },
          "uri": {
            "type": "string",
            "description": "The AT-URI of the track.",
            "format": "at-uri"
          },
          "artistUri": {
            "type": "string",
            "description": "The AT-URI of the artist.",
            "format": "at-uri"
          },
          "albumUri": {
            "type": "string",
            "description": "The AT-URI of the album.",
            "format": "at-uri"
          },
          "playCount": {
            "type": "integer",
            "minimum": 0
          }
        }
      },
      "app.rocksky.stats.defs.wrappedAlbum": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier of the album."
          },
          "title": {
            "type": "string",
            "description": "The title of the album."
          },
          "artist": {
            "type": "string",
            "description": "The artist of the album."
          },
          "albumArt": {
            "type": "string",
            "description": "The album art URL."
          },
          "uri": {
            "type": "string",
            "description": "The AT-URI of the album.",
            "format": "at-uri"
          },
          "playCount": {
            "type": "integer",
            "minimum": 0
          }
        }
      },
      "app.rocksky.stats.defs.wrappedGenreCount": {
        "type": "object",
        "properties": {
          "genre": {
            "type": "string",
            "description": "The genre name."
          },
          "count": {
            "type": "integer",
            "minimum": 0
          }
        }
      },
      "app.rocksky.stats.defs.wrappedMonthCount": {
        "type": "object",
        "properties": {
          "month": {
            "type": "integer",
            "minimum": 1,
            "maximum": 12
          },
          "count": {
            "type": "integer",
            "minimum": 0
          }
        }
      },
      "app.rocksky.stats.defs.wrappedDayCount": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "description": "The date (YYYY-MM-DD)."
          },
          "count": {
            "type": "integer",
            "minimum": 0
          }
        }
      },
      "app.rocksky.stats.defs.wrappedMilestone": {
        "type": "object",
        "properties": {
          "trackTitle": {
            "type": "string",
            "description": "The title of the track."
          },
          "artistName": {
            "type": "string",
            "description": "The name of the artist."
          },
          "timestamp": {
            "type": "string",
            "description": "The timestamp of the scrobble.",
            "format": "date-time"
          },
          "trackUri": {
            "type": "string",
            "description": "AT-URI of the track record, used to build a clickable link to the song page.",
            "format": "at-uri"
          }
        }
      },
      "app.rocksky.stats.defs.wrappedView": {
        "type": "object",
        "properties": {
          "year": {
            "type": "integer"
          },
          "totalScrobbles": {
            "type": "integer",
            "minimum": 0
          },
          "totalListeningTimeMinutes": {
            "type": "integer",
            "minimum": 0
          },
          "topArtists": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/app.rocksky.stats.defs.wrappedArtist"
            }
          },
          "topTracks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/app.rocksky.stats.defs.wrappedTrack"
            }
          },
          "topAlbums": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/app.rocksky.stats.defs.wrappedAlbum"
            }
          },
          "topGenres": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/app.rocksky.stats.defs.wrappedGenreCount"
            }
          },
          "scrobblesPerMonth": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/app.rocksky.stats.defs.wrappedMonthCount"
            }
          },
          "mostActiveDay": {
            "$ref": "#/components/schemas/app.rocksky.stats.defs.wrappedDayCount"
          },
          "mostActiveHour": {
            "type": "integer",
            "minimum": 0,
            "maximum": 23
          },
          "newArtistsCount": {
            "type": "integer",
            "minimum": 0
          },
          "longestStreak": {
            "type": "integer",
            "minimum": 0
          },
          "firstScrobble": {
            "$ref": "#/components/schemas/app.rocksky.stats.defs.wrappedMilestone"
          },
          "lastScrobble": {
            "$ref": "#/components/schemas/app.rocksky.stats.defs.wrappedMilestone"
          }
        }
      },
      "com.atproto.repo.strongRef": {
        "type": "object",
        "required": [
          "uri",
          "cid"
        ],
        "properties": {
          "uri": {
            "type": "string",
            "format": "at-uri"
          },
          "cid": {
            "type": "string",
            "format": "cid"
          }
        }
      }
    },
    "securitySchemes": {
      "Bearer": {
        "type": "http",
        "scheme": "bearer"
      }
    }
  },
  "tags": [
    {
      "name": "app.rocksky.actor"
    },
    {
      "name": "app.bsky.actor"
    },
    {
      "name": "app.rocksky.album"
    },
    {
      "name": "app.rocksky.apikey"
    },
    {
      "name": "app.rocksky.apikeys"
    },
    {
      "name": "app.rocksky.artist"
    },
    {
      "name": "app.rocksky.charts"
    },
    {
      "name": "app.rocksky.feed"
    },
    {
      "name": "app.rocksky.graph"
    },
    {
      "name": "app.rocksky.like"
    },
    {
      "name": "app.rocksky.mirror"
    },
    {
      "name": "app.rocksky.player"
    },
    {
      "name": "app.rocksky.playlist"
    },
    {
      "name": "app.rocksky.playlistItem"
    },
    {
      "name": "app.rocksky.scrobble"
    },
    {
      "name": "app.rocksky.shout"
    },
    {
      "name": "app.rocksky.song"
    },
    {
      "name": "app.rocksky.spotify"
    },
    {
      "name": "app.rocksky.stats"
    },
    {
      "name": "com.atproto.repo"
    }
  ]
}
