{"openapi":"3.1.0","info":{"title":"UFW API","version":"1.0.0","description":"Build podcast publishing, account, organization, OAuth client, and UFW Cloud integrations. Use OAuth 2.1 authorization code with PKCE for user-facing applications or a personal access token for your own account.\n\nThe API returns JSON unless an operation states otherwise. Error responses use a stable `code`, a human-readable `message`, and an optional `requestId` for support.","contact":{"name":"UFW developer support","url":"https://ufw.dev/contact"}},"servers":[{"url":"https://api.ufw.dev","description":"Production"}],"tags":[{"name":"Podcasts"},{"name":"Seasons"},{"name":"Episodes"},{"name":"Artwork uploads"},{"name":"Audio uploads"},{"name":"Publishing"},{"name":"Organizations"},{"name":"Cloud"},{"name":"Billing"},{"name":"OAuth 2.1"},{"name":"Discovery"},{"name":"OAuth clients"},{"name":"GraphQL"},{"name":"System"},{"name":"Account"},{"name":"Emails"},{"name":"Security"},{"name":"Sessions"}],"x-tagGroups":[{"name":"Podcasts","tags":["Podcasts","Seasons","Episodes","Artwork uploads","Audio uploads","Publishing"]},{"name":"Organizations","tags":["Organizations"]},{"name":"Cloud","tags":["Cloud","Billing"]},{"name":"Identity","tags":["OAuth 2.1","Discovery"]},{"name":"Developer","tags":["OAuth clients"]},{"name":"GraphQL","tags":["GraphQL"]},{"name":"System","tags":["System"]},{"name":"Account","tags":["Account","Emails","Security","Sessions"]}],"paths":{"/":{"get":{"tags":["System"],"summary":"API service information","operationId":"get_","description":"","parameters":[],"security":[],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/healthz":{"get":{"tags":["System"],"summary":"Check process health","operationId":"get_healthz","description":"","parameters":[],"security":[],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/readyz":{"get":{"tags":["System"],"summary":"Check service readiness","operationId":"get_readyz","description":"","parameters":[],"security":[],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/meta":{"get":{"tags":["System"],"summary":"Get API metadata","operationId":"get_v1_meta","description":"","parameters":[],"security":[],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/graphql":{"post":{"tags":["GraphQL"],"summary":"Execute a GraphQL operation","operationId":"post_v1_graphql","description":"Send a GraphQL query or mutation. Authorization is evaluated for every selected field.\n\nRequired scope: `podcasts.read`.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GraphQLRequest"}}}},"security":[{"oauth2":["podcasts.read"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Resource created"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/developer/applications/{client_id}":{"get":{"tags":["OAuth clients"],"summary":"Get public application details","operationId":"get_v1_developer_applications_client_id","description":"","parameters":[{"name":"client_id","in":"path","required":true,"schema":{"type":"string"},"description":"client_id identifier."}],"security":[],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/oauth2/v2.0/.well-known/openid-configuration":{"get":{"tags":["Discovery"],"summary":"Get OpenID Connect metadata","operationId":"get_oauth2_v2_0_well_known_openid_configuration","description":"","parameters":[],"security":[],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/oauth2/v2.0/.well-known/oauth-authorization-server":{"get":{"tags":["Discovery"],"summary":"Get OAuth authorization server metadata","operationId":"get_oauth2_v2_0_well_known_oauth_authorization_server","description":"","parameters":[],"security":[],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/oauth2/v2.0/discovery/keys":{"get":{"tags":["Discovery"],"summary":"Get signing keys","operationId":"get_oauth2_v2_0_discovery_keys","description":"","parameters":[],"security":[],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/oauth2/v2.0/jwks":{"get":{"tags":["Discovery"],"summary":"Get JSON Web Key Set","operationId":"get_oauth2_v2_0_jwks","description":"","parameters":[],"security":[],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/oauth2/v2.0/authorize":{"get":{"tags":["OAuth 2.1"],"summary":"Start authorization","operationId":"get_oauth2_v2_0_authorize","description":"Starts the authorization-code flow with PKCE. Interactive requests are redirected to the UFW sign-in UI. Authorization codes expire after five minutes.","parameters":[],"security":[],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/oauth2/v2.0/token":{"post":{"tags":["OAuth 2.1"],"summary":"Exchange a code or refresh token","operationId":"post_oauth2_v2_0_token","description":"Returns an access token valid for 3,600 seconds. Public clients must use PKCE.","parameters":[],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/OAuthTokenRequest"}}}},"security":[],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Resource created"},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/oauth2/v2.0/userinfo":{"get":{"tags":["OAuth 2.1"],"summary":"Get OpenID user information","operationId":"get_oauth2_v2_0_userinfo","description":"Required scope: `account.profile.read`.","parameters":[],"security":[{"oauth2":["account.profile.read"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["OAuth 2.1"],"summary":"Get OpenID user information","operationId":"post_oauth2_v2_0_userinfo","description":"Required scope: `account.profile.read`.","parameters":[],"security":[{"oauth2":["account.profile.read"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Resource created"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/oauth2/v2.0/logout":{"get":{"tags":["OAuth 2.1"],"summary":"End an OpenID session","operationId":"get_oauth2_v2_0_logout","description":"","parameters":[],"security":[],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/podcasts":{"get":{"tags":["Podcasts"],"summary":"List podcasts","operationId":"get_v1_podcasts","description":"Required scope: `podcasts.read`.","parameters":[],"security":[{"oauth2":["podcasts.read"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Podcasts"],"summary":"Create a podcast","operationId":"post_v1_podcasts","description":"Required scope: `podcasts.write`.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PodcastWrite"}}}},"security":[{"oauth2":["podcasts.write"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Resource created"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/podcasts/{podcastId}":{"get":{"tags":["Podcasts"],"summary":"Get a podcast","operationId":"get_v1_podcasts_podcastid","description":"Required scope: `podcasts.read`.","parameters":[{"name":"podcastId","in":"path","required":true,"schema":{"type":"string"},"description":"podcastId identifier."}],"security":[{"oauth2":["podcasts.read"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}},"patch":{"tags":["Podcasts"],"summary":"Replace podcast details","operationId":"patch_v1_podcasts_podcastid","description":"This is a complete replacement of editable details; title, description, category, and showType are required.\n\nRequired scope: `podcasts.write`.","parameters":[{"name":"podcastId","in":"path","required":true,"schema":{"type":"string"},"description":"podcastId identifier."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PodcastWrite"}}}},"security":[{"oauth2":["podcasts.write"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}},"delete":{"tags":["Podcasts"],"summary":"Delete a podcast","operationId":"delete_v1_podcasts_podcastid","description":"Required scope: `podcasts.delete`.","parameters":[{"name":"podcastId","in":"path","required":true,"schema":{"type":"string"},"description":"podcastId identifier."}],"security":[{"oauth2":["podcasts.delete"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"204":{"description":"Resource deleted"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/podcasts/{podcastId}/validation":{"get":{"tags":["Podcasts"],"summary":"Validate a podcast","operationId":"get_v1_podcasts_podcastid_validation","description":"Required scope: `podcasts.read`.","parameters":[{"name":"podcastId","in":"path","required":true,"schema":{"type":"string"},"description":"podcastId identifier."}],"security":[{"oauth2":["podcasts.read"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/podcasts/{podcastId}/analytics":{"get":{"tags":["Podcasts"],"summary":"Get podcast analytics","operationId":"get_v1_podcasts_podcastid_analytics","description":"Required scope: `podcasts.read`.","parameters":[{"name":"podcastId","in":"path","required":true,"schema":{"type":"string"},"description":"podcastId identifier."}],"security":[{"oauth2":["podcasts.read"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/podcasts/feeds/{podcastId}":{"get":{"tags":["Podcasts"],"summary":"Get the public podcast feed","operationId":"get_v1_podcasts_feeds_podcastid","description":"","parameters":[{"name":"podcastId","in":"path","required":true,"schema":{"type":"string"},"description":"podcastId identifier."}],"security":[],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/podcasts/{podcastId}/seasons":{"post":{"tags":["Seasons"],"summary":"Create a season","operationId":"post_v1_podcasts_podcastid_seasons","description":"Required scope: `podcasts.write`.","parameters":[{"name":"podcastId","in":"path","required":true,"schema":{"type":"string"},"description":"podcastId identifier."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SeasonWrite"}}}},"security":[{"oauth2":["podcasts.write"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Resource created"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/podcasts/{podcastId}/seasons/{seasonId}":{"patch":{"tags":["Seasons"],"summary":"Update a season","operationId":"patch_v1_podcasts_podcastid_seasons_seasonid","description":"Required scope: `podcasts.write`.","parameters":[{"name":"podcastId","in":"path","required":true,"schema":{"type":"string"},"description":"podcastId identifier."},{"name":"seasonId","in":"path","required":true,"schema":{"type":"string"},"description":"seasonId identifier."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SeasonWrite"}}}},"security":[{"oauth2":["podcasts.write"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}},"delete":{"tags":["Seasons"],"summary":"Delete a season","operationId":"delete_v1_podcasts_podcastid_seasons_seasonid","description":"Required scope: `podcasts.delete`.","parameters":[{"name":"podcastId","in":"path","required":true,"schema":{"type":"string"},"description":"podcastId identifier."},{"name":"seasonId","in":"path","required":true,"schema":{"type":"string"},"description":"seasonId identifier."}],"security":[{"oauth2":["podcasts.delete"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"204":{"description":"Resource deleted"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/podcasts/{podcastId}/artwork/presign":{"post":{"tags":["Artwork uploads"],"summary":"Create an artwork upload URL","operationId":"post_v1_podcasts_podcastid_artwork_presign","description":"Accepts JPEG or PNG artwork up to 10 MiB.\n\nRequired scope: `podcasts.artwork.write`.","parameters":[{"name":"podcastId","in":"path","required":true,"schema":{"type":"string"},"description":"podcastId identifier."}],"security":[{"oauth2":["podcasts.artwork.write"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Resource created"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/podcasts/{podcastId}/artwork/complete":{"post":{"tags":["Artwork uploads"],"summary":"Complete an artwork upload","operationId":"post_v1_podcasts_podcastid_artwork_complete","description":"Required scope: `podcasts.artwork.write`.","parameters":[{"name":"podcastId","in":"path","required":true,"schema":{"type":"string"},"description":"podcastId identifier."}],"security":[{"oauth2":["podcasts.artwork.write"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Resource created"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/podcasts/{podcastId}/episodes":{"post":{"tags":["Episodes"],"summary":"Create an episode","operationId":"post_v1_podcasts_podcastid_episodes","description":"Required scope: `podcasts.write`.","parameters":[{"name":"podcastId","in":"path","required":true,"schema":{"type":"string"},"description":"podcastId identifier."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EpisodeWrite"}}}},"security":[{"oauth2":["podcasts.write"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Resource created"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/podcasts/{podcastId}/episodes/{episodeId}":{"patch":{"tags":["Episodes"],"summary":"Replace episode details","operationId":"patch_v1_podcasts_podcastid_episodes_episodeid","description":"This is a complete replacement of editable details; title and type are required.\n\nRequired scope: `podcasts.write`.","parameters":[{"name":"podcastId","in":"path","required":true,"schema":{"type":"string"},"description":"podcastId identifier."},{"name":"episodeId","in":"path","required":true,"schema":{"type":"string"},"description":"episodeId identifier."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EpisodeWrite"}}}},"security":[{"oauth2":["podcasts.write"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}},"delete":{"tags":["Episodes"],"summary":"Delete an episode","operationId":"delete_v1_podcasts_podcastid_episodes_episodeid","description":"Required scope: `podcasts.delete`.","parameters":[{"name":"podcastId","in":"path","required":true,"schema":{"type":"string"},"description":"podcastId identifier."},{"name":"episodeId","in":"path","required":true,"schema":{"type":"string"},"description":"episodeId identifier."}],"security":[{"oauth2":["podcasts.delete"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"204":{"description":"Resource deleted"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/podcasts/{podcastId}/episodes/{episodeId}/master/presign":{"post":{"tags":["Audio uploads"],"summary":"Create an audio upload URL","operationId":"post_v1_podcasts_podcastid_episodes_episodeid_master_presign","description":"Creates a presigned upload for an audio master up to 5 GiB.\n\nRequired scope: `podcasts.audio.write`.","parameters":[{"name":"podcastId","in":"path","required":true,"schema":{"type":"string"},"description":"podcastId identifier."},{"name":"episodeId","in":"path","required":true,"schema":{"type":"string"},"description":"episodeId identifier."}],"security":[{"oauth2":["podcasts.audio.write"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Resource created"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/podcasts/{podcastId}/episodes/{episodeId}/master/complete":{"post":{"tags":["Audio uploads"],"summary":"Complete an audio upload","operationId":"post_v1_podcasts_podcastid_episodes_episodeid_master_complete","description":"Required scope: `podcasts.audio.write`.","parameters":[{"name":"podcastId","in":"path","required":true,"schema":{"type":"string"},"description":"podcastId identifier."},{"name":"episodeId","in":"path","required":true,"schema":{"type":"string"},"description":"episodeId identifier."}],"security":[{"oauth2":["podcasts.audio.write"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Resource created"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/podcasts/{podcastId}/episodes/{episodeId}/publish":{"post":{"tags":["Publishing"],"summary":"Publish an episode","operationId":"post_v1_podcasts_podcastid_episodes_episodeid_publish","description":"Required scope: `podcasts.publish`.","parameters":[{"name":"podcastId","in":"path","required":true,"schema":{"type":"string"},"description":"podcastId identifier."},{"name":"episodeId","in":"path","required":true,"schema":{"type":"string"},"description":"episodeId identifier."}],"security":[{"oauth2":["podcasts.publish"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Resource created"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/podcasts/{podcastId}/episodes/{episodeId}/unpublish":{"post":{"tags":["Publishing"],"summary":"Unpublish an episode","operationId":"post_v1_podcasts_podcastid_episodes_episodeid_unpublish","description":"Required scope: `podcasts.publish`.","parameters":[{"name":"podcastId","in":"path","required":true,"schema":{"type":"string"},"description":"podcastId identifier."},{"name":"episodeId","in":"path","required":true,"schema":{"type":"string"},"description":"episodeId identifier."}],"security":[{"oauth2":["podcasts.publish"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Resource created"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/podcasts/{podcastId}/episodes/{episodeId}/schedule":{"post":{"tags":["Publishing"],"summary":"Schedule an episode","operationId":"post_v1_podcasts_podcastid_episodes_episodeid_schedule","description":"Required scope: `podcasts.publish`.","parameters":[{"name":"podcastId","in":"path","required":true,"schema":{"type":"string"},"description":"podcastId identifier."},{"name":"episodeId","in":"path","required":true,"schema":{"type":"string"},"description":"episodeId identifier."}],"security":[{"oauth2":["podcasts.publish"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Resource created"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/podcasts/{podcastId}/episodes/{episodeId}/retry":{"post":{"tags":["Publishing"],"summary":"Retry an episode","operationId":"post_v1_podcasts_podcastid_episodes_episodeid_retry","description":"Required scope: `podcasts.publish`.","parameters":[{"name":"podcastId","in":"path","required":true,"schema":{"type":"string"},"description":"podcastId identifier."},{"name":"episodeId","in":"path","required":true,"schema":{"type":"string"},"description":"episodeId identifier."}],"security":[{"oauth2":["podcasts.publish"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Resource created"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/account/me":{"get":{"tags":["Account"],"summary":"Get the current account","operationId":"get_v1_account_me","description":"Required scope: `account.profile.read`.","parameters":[],"security":[{"oauth2":["account.profile.read"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/account/profile":{"post":{"tags":["Account"],"summary":"Update the account profile","operationId":"post_v1_account_profile","description":"Required scope: `account.profile.write`.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfileWrite"}}}},"security":[{"oauth2":["account.profile.write"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Resource created"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/account/emails":{"get":{"tags":["Emails"],"summary":"List email addresses","operationId":"get_v1_account_emails","description":"Required scope: `account.email.read`.","parameters":[],"security":[{"oauth2":["account.email.read"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Emails"],"summary":"Add an email address","operationId":"post_v1_account_emails","description":"Required scope: `account.email.write`.","parameters":[],"security":[{"oauth2":["account.email.write"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Resource created"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/account/emails/{emailId}":{"delete":{"tags":["Emails"],"summary":"Remove an email address","operationId":"delete_v1_account_emails_emailid","description":"Required scope: `account.email.write`.","parameters":[{"name":"emailId","in":"path","required":true,"schema":{"type":"string"},"description":"emailId identifier."}],"security":[{"oauth2":["account.email.write"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"204":{"description":"Resource deleted"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/account/emails/{emailId}/verify":{"post":{"tags":["Emails"],"summary":"Verify an email address","operationId":"post_v1_account_emails_emailid_verify","description":"Required scope: `account.email.write`.","parameters":[{"name":"emailId","in":"path","required":true,"schema":{"type":"string"},"description":"emailId identifier."}],"security":[{"oauth2":["account.email.write"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Resource created"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/account/profile-picture/presign":{"post":{"tags":["Account"],"summary":"Create a profile-picture upload URL","operationId":"post_v1_account_profile_picture_presign","description":"Accepts JPEG, PNG, or WebP images smaller than 2 MiB.\n\nRequired scope: `account.profile.write`.","parameters":[],"security":[{"oauth2":["account.profile.write"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Resource created"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/account/profile-picture/complete":{"post":{"tags":["Account"],"summary":"Complete a profile-picture upload","operationId":"post_v1_account_profile_picture_complete","description":"Required scope: `account.profile.write`.","parameters":[],"security":[{"oauth2":["account.profile.write"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Resource created"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/account/factors":{"get":{"tags":["Security"],"summary":"List security factors","operationId":"get_v1_account_factors","description":"Required scope: `account.security.read`.","parameters":[],"security":[{"oauth2":["account.security.read"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Security"],"summary":"Add a security factor","operationId":"post_v1_account_factors","description":"Required scope: `account.security.write`.","parameters":[],"security":[{"oauth2":["account.security.write"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Resource created"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/account/password":{"post":{"tags":["Security"],"summary":"Change the account password","operationId":"post_v1_account_password","description":"Required scope: `account.security.write`.","parameters":[],"security":[{"oauth2":["account.security.write"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Resource created"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/account/totp/start":{"post":{"tags":["Security"],"summary":"Totp Start","operationId":"post_v1_account_totp_start","description":"Required scope: `account.security.write`.","parameters":[],"security":[{"oauth2":["account.security.write"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Resource created"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/account/totp/verify":{"post":{"tags":["Security"],"summary":"Totp Verify","operationId":"post_v1_account_totp_verify","description":"Required scope: `account.security.write`.","parameters":[],"security":[{"oauth2":["account.security.write"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Resource created"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/account/passkeys/options":{"post":{"tags":["Security"],"summary":"Passkeys Options","operationId":"post_v1_account_passkeys_options","description":"Required scope: `account.security.write`.","parameters":[],"security":[{"oauth2":["account.security.write"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Resource created"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/account/passkeys/verify":{"post":{"tags":["Security"],"summary":"Passkeys Verify","operationId":"post_v1_account_passkeys_verify","description":"Required scope: `account.security.write`.","parameters":[],"security":[{"oauth2":["account.security.write"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Resource created"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/account/sessions":{"get":{"tags":["Sessions"],"summary":"List sessions","operationId":"get_v1_account_sessions","description":"Required scope: `account.security.read`.","parameters":[],"security":[{"oauth2":["account.security.read"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Sessions"],"summary":"Revoke sessions","operationId":"post_v1_account_sessions","description":"Required scope: `account.sessions.write`.","parameters":[],"security":[{"oauth2":["account.sessions.write"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Resource created"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/account/deletion/request":{"get":{"tags":["Account"],"summary":"Get account-deletion status","operationId":"get_v1_account_deletion_request","description":"Required scope: `account.profile.read`.","parameters":[],"security":[{"oauth2":["account.profile.read"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Account"],"summary":"Request account deletion","operationId":"post_v1_account_deletion_request","description":"Required scope: `account.profile.write`.","parameters":[],"security":[{"oauth2":["account.profile.write"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Resource created"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/account/organizations/{organizationId}":{"get":{"tags":["Organizations"],"summary":"Get an organization","operationId":"get_v1_account_organizations_organizationid","description":"Required scope: `organizations.read`.","parameters":[{"name":"organizationId","in":"path","required":true,"schema":{"type":"string"},"description":"organizationId identifier."}],"security":[{"oauth2":["organizations.read"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/organizations/{organizationId}":{"patch":{"tags":["Organizations"],"summary":"Update an organization","operationId":"patch_v1_organizations_organizationid","description":"Required scope: `organizations.write`.","parameters":[{"name":"organizationId","in":"path","required":true,"schema":{"type":"string"},"description":"organizationId identifier."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationWrite"}}}},"security":[{"oauth2":["organizations.write"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}},"delete":{"tags":["Organizations"],"summary":"Delete an organization","operationId":"delete_v1_organizations_organizationid","description":"Required scope: `organizations.delete`.","parameters":[{"name":"organizationId","in":"path","required":true,"schema":{"type":"string"},"description":"organizationId identifier."}],"security":[{"oauth2":["organizations.delete"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"204":{"description":"Resource deleted"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/account/organizations/{organizationId}/logo/presign":{"post":{"tags":["Organizations"],"summary":"Create a logo upload URL","operationId":"post_v1_account_organizations_organizationid_logo_presign","description":"Required scope: `organizations.write`.","parameters":[{"name":"organizationId","in":"path","required":true,"schema":{"type":"string"},"description":"organizationId identifier."}],"security":[{"oauth2":["organizations.write"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Resource created"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/account/organizations/{organizationId}/logo/complete":{"post":{"tags":["Organizations"],"summary":"Complete a logo upload","operationId":"post_v1_account_organizations_organizationid_logo_complete","description":"Required scope: `organizations.write`.","parameters":[{"name":"organizationId","in":"path","required":true,"schema":{"type":"string"},"description":"organizationId identifier."}],"security":[{"oauth2":["organizations.write"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Resource created"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/account/clients":{"get":{"tags":["OAuth clients"],"summary":"List OAuth clients","operationId":"get_v1_account_clients","description":"Required scope: `oauth.clients.read`.","parameters":[],"security":[{"oauth2":["oauth.clients.read"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/account/clients/{client_id}":{"get":{"tags":["OAuth clients"],"summary":"Get an OAuth client","operationId":"get_v1_account_clients_client_id","description":"Required scope: `oauth.clients.read`.","parameters":[{"name":"client_id","in":"path","required":true,"schema":{"type":"string"},"description":"client_id identifier."}],"security":[{"oauth2":["oauth.clients.read"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/account/clients/{client_id}/activity":{"get":{"tags":["OAuth clients"],"summary":"Get OAuth client activity","operationId":"get_v1_account_clients_client_id_activity","description":"Required scope: `oauth.clients.read`.","parameters":[{"name":"client_id","in":"path","required":true,"schema":{"type":"string"},"description":"client_id identifier."}],"security":[{"oauth2":["oauth.clients.read"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/developer/clients":{"post":{"tags":["OAuth clients"],"summary":"Register an OAuth client","operationId":"post_v1_developer_clients","description":"Required scope: `oauth.clients.write`.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuthClientWrite"}}}},"security":[{"oauth2":["oauth.clients.write"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Resource created"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/developer/clients/{client_id}":{"patch":{"tags":["OAuth clients"],"summary":"Replace an OAuth client","operationId":"patch_v1_developer_clients_client_id","description":"This is a complete replacement of editable client details.\n\nRequired scope: `oauth.clients.write`.","parameters":[{"name":"client_id","in":"path","required":true,"schema":{"type":"string"},"description":"client_id identifier."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuthClientWrite"}}}},"security":[{"oauth2":["oauth.clients.write"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}},"delete":{"tags":["OAuth clients"],"summary":"Delete an OAuth client","operationId":"delete_v1_developer_clients_client_id","description":"Required scope: `oauth.clients.delete`.","parameters":[{"name":"client_id","in":"path","required":true,"schema":{"type":"string"},"description":"client_id identifier."}],"security":[{"oauth2":["oauth.clients.delete"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"204":{"description":"Resource deleted"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/developer/clients/{client_id}/secret":{"post":{"tags":["OAuth clients"],"summary":"Rotate the client secret","operationId":"post_v1_developer_clients_client_id_secret","description":"Required scope: `oauth.clients.write`.","parameters":[{"name":"client_id","in":"path","required":true,"schema":{"type":"string"},"description":"client_id identifier."}],"security":[{"oauth2":["oauth.clients.write"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Resource created"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/developer/clients/{client_id}/icon/presign":{"post":{"tags":["OAuth clients"],"summary":"Create a client-icon upload URL","operationId":"post_v1_developer_clients_client_id_icon_presign","description":"Required scope: `oauth.clients.write`.","parameters":[{"name":"client_id","in":"path","required":true,"schema":{"type":"string"},"description":"client_id identifier."}],"security":[{"oauth2":["oauth.clients.write"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Resource created"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/developer/clients/{client_id}/icon/complete":{"post":{"tags":["OAuth clients"],"summary":"Complete a client-icon upload","operationId":"post_v1_developer_clients_client_id_icon_complete","description":"Required scope: `oauth.clients.write`.","parameters":[{"name":"client_id","in":"path","required":true,"schema":{"type":"string"},"description":"client_id identifier."}],"security":[{"oauth2":["oauth.clients.write"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Resource created"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/cloud/overview":{"get":{"tags":["Cloud"],"summary":"Get Cloud overview","operationId":"get_v1_cloud_overview","description":"Required scope: `cloud.read`.","parameters":[],"security":[{"oauth2":["cloud.read"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/cloud/storage":{"get":{"tags":["Cloud"],"summary":"Get Cloud storage","operationId":"get_v1_cloud_storage","description":"Required scope: `cloud.read`.","parameters":[],"security":[{"oauth2":["cloud.read"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/cloud/billing":{"get":{"tags":["Cloud"],"summary":"Get Cloud billing","operationId":"get_v1_cloud_billing","description":"Required scope: `cloud.read`.","parameters":[],"security":[{"oauth2":["cloud.read"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/cloud/orders":{"get":{"tags":["Cloud"],"summary":"Get Cloud orders","operationId":"get_v1_cloud_orders","description":"Required scope: `cloud.read`.","parameters":[],"security":[{"oauth2":["cloud.read"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Cloud"],"summary":"Create a Cloud order","operationId":"post_v1_cloud_orders","description":"Required scope: `cloud.write`.","parameters":[],"security":[{"oauth2":["cloud.write"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Resource created"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/cloud/pro/checkout":{"post":{"tags":["Billing"],"summary":"Checkout a Pro subscription","operationId":"post_v1_cloud_pro_checkout","description":"Required scope: `cloud.write`.","parameters":[],"security":[{"oauth2":["cloud.write"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Resource created"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/cloud/pro/portal":{"post":{"tags":["Billing"],"summary":"Portal a Pro subscription","operationId":"post_v1_cloud_pro_portal","description":"Required scope: `cloud.write`.","parameters":[],"security":[{"oauth2":["cloud.write"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Resource created"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/cloud/pro/cancel":{"post":{"tags":["Billing"],"summary":"Cancel a Pro subscription","operationId":"post_v1_cloud_pro_cancel","description":"Required scope: `cloud.write`.","parameters":[],"security":[{"oauth2":["cloud.write"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Resource created"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/cloud/pro/resume":{"post":{"tags":["Billing"],"summary":"Resume a Pro subscription","operationId":"post_v1_cloud_pro_resume","description":"Required scope: `cloud.write`.","parameters":[],"security":[{"oauth2":["cloud.write"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Resource created"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/cloud/pro/refund":{"post":{"tags":["Billing"],"summary":"Refund a Pro subscription","operationId":"post_v1_cloud_pro_refund","description":"Required scope: `cloud.write`.","parameters":[],"security":[{"oauth2":["cloud.write"]},{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"201":{"description":"Resource created"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth access token or personal access token."},"oauth2":{"type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://api.ufw.dev/oauth2/v2.0/authorize","tokenUrl":"https://api.ufw.dev/oauth2/v2.0/token","refreshUrl":"https://api.ufw.dev/oauth2/v2.0/token","scopes":{"podcasts.read":"Read podcasts, seasons, episodes, feeds, and analytics.","podcasts.write":"Create and update podcasts, seasons, and episodes.","podcasts.delete":"Delete podcasts, seasons, and episodes.","podcasts.artwork.write":"Upload podcast artwork.","podcasts.audio.write":"Upload episode audio masters.","podcasts.publish":"Publish, unpublish, schedule, and retry episodes.","account.profile.read":"Read the current account profile.","account.profile.write":"Update profile details and profile picture.","account.email.read":"Read account email addresses.","account.email.write":"Add, verify, and remove email addresses.","account.security.read":"Read security factors and sessions.","account.security.write":"Change password and manage security factors.","account.sessions.write":"Revoke account sessions.","organizations.read":"Read organizations.","organizations.write":"Update organizations and logos.","organizations.delete":"Delete organizations.","oauth.clients.read":"Read OAuth clients and activity.","oauth.clients.write":"Create and update OAuth clients, secrets, and icons.","oauth.clients.delete":"Delete OAuth clients.","cloud.read":"Read Cloud usage, storage, billing, and orders.","cloud.write":"Create orders and manage a Pro subscription."}}}},"openId":{"type":"openIdConnect","openIdConnectUrl":"https://api.ufw.dev/oauth2/v2.0/.well-known/openid-configuration"}},"schemas":{"Error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","example":"invalid_request"},"message":{"type":"string","example":"The request could not be processed."},"requestId":{"type":"string"}}},"OAuthTokenRequest":{"type":"object","required":["grant_type","client_id"],"properties":{"grant_type":{"type":"string","enum":["authorization_code","refresh_token"]},"client_id":{"type":"string"},"code":{"type":"string"},"redirect_uri":{"type":"string","format":"uri"},"code_verifier":{"type":"string"},"refresh_token":{"type":"string"}}},"GraphQLRequest":{"type":"object","required":["query"],"properties":{"query":{"type":"string","example":"query { viewer { id } }"},"variables":{"type":"object","additionalProperties":true},"operationName":{"type":["string","null"]}}},"PodcastWrite":{"type":"object","required":["title","description","category","showType"],"properties":{"title":{"type":"string"},"description":{"type":"string"},"category":{"type":"string"},"showType":{"type":"string","enum":["EPISODIC","SERIAL"]},"language":{"type":"string","example":"en"},"explicit":{"type":"boolean"}}},"SeasonWrite":{"type":"object","required":["number"],"properties":{"number":{"type":"integer","minimum":1},"title":{"type":"string"},"description":{"type":"string"}}},"EpisodeWrite":{"type":"object","required":["title","type"],"properties":{"title":{"type":"string"},"type":{"type":"string","enum":["FULL","TRAILER","BONUS"]},"description":{"type":"string"},"seasonId":{"type":"string"},"episodeNumber":{"type":"integer"},"explicit":{"type":"boolean"}}},"ProfileWrite":{"type":"object","properties":{"name":{"type":"string"},"username":{"type":"string"},"bio":{"type":"string"},"websiteUrl":{"type":"string","format":"uri"}}},"OrganizationWrite":{"type":"object","properties":{"name":{"type":"string"},"websiteUrl":{"type":"string","format":"uri"},"termsUrl":{"type":"string","format":"uri"},"privacyPolicyUrl":{"type":"string","format":"uri"},"supportEmail":{"type":"string","format":"email"},"description":{"type":"string"}}},"OAuthClientWrite":{"type":"object","required":["name","redirectUris"],"properties":{"name":{"type":"string"},"redirectUris":{"type":"array","items":{"type":"string","format":"uri"}},"clientType":{"type":"string","enum":["PUBLIC","CONFIDENTIAL"]},"description":{"type":"string"},"websiteUrl":{"type":"string","format":"uri"}}}},"responses":{"BadRequest":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Unauthorized":{"description":"Missing or invalid access token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Forbidden":{"description":"The token does not have the required scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"RateLimited":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","headers":{"Retry-After":{"schema":{"type":"integer","example":60}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}