This is an api generated from a OpenAPI 3.0 spec with SwagGen
Operation
Each operation lives under the API namespace and within an optional tag: API(.tagName).operationId. If an operation doesn’t have an operationId one will be generated from the path and method.
Each operation has a nested Request and a Response, as well as a static service property
Service
This is the struct that contains the static information about an operation including it’s id, tag, method, pre-modified path, and authorization requirements. It has a generic ResponseType type which maps to the Response type.
You shouldn’t really need to interact with this service type.
Request
Each request is a subclass of APIRequest and has an init with a body param if it has a body, and a options struct for other url and path parameters. There is also a convenience init for passing parameters directly.
The options and body structs are both mutable so they can be modified before actually sending the request.
Response
The response is an enum of all the possible responses the request can return. it also contains getters for the statusCode, whether it was successful, and the actual decoded optional success response. If the operation only has one type of failure type there is also an optional failure type.
Model
Models that are sent and returned from the API are mutable classes. Each model is Equatable and Codable.
Required properties are non optional and non-required are optional
All properties can be passed into the initializer, with required properties being mandatory.
If a model has additionalProperties it will have a subscript to access these by string
APIClient
The APIClient is used to encode, authorize, send, monitor, and decode the requests. There is a APIClient.default that uses the default baseURL otherwise a custom one can be initialized:
Example request (that is not neccessarily in this api):
let getUserRequest = API.User.GetUser.Request(id: 123)
let apiClient = APIClient.default
apiClient.makeRequest(getUserRequest) { apiResponse in
switch apiResponse {
case .result(let apiResponseValue):
if let user = apiResponseValue.success {
print("GetUser returned user \(user)")
} else {
print("GetUser returned \(apiResponseValue)")
}
case .error(let apiError):
print("GetUser failed with \(apiError)")
}
}
Each Request also has a makeRequest convenience function that uses API.shared.
APIResponse
The APIResponse that gets passed to the completion closure contains the following properties:
request: The original request
result: A Result type either containing an APIClientError or the Response of the request
urlRequest: The URLRequest used to send the request
urlResponse: The HTTPURLResponse that was returned by the request
data: The Data returned by the request.
timeline: The Alamofire.Timeline of the request which contains timing information.
Encoding and Decoding
Only JSON requests and responses are supported. These are encoded and decoded by JSONEncoder and JSONDecoder respectively, using Swift’s Codable apis.
There are some options to control how invalid JSON is handled when decoding and these are available as static properties on API:
safeOptionalDecoding: Whether to discard any errors when decoding optional properties. Defaults to true.
safeArrayDecoding: Whether to remove invalid elements instead of throwing when decoding arrays. Defaults to true.
Dates are encoded and decoded differently according to the swagger date format. They use different DateFormatter‘s that you can set.
date-time
DateTime.dateEncodingFormatter: defaults to yyyy-MM-dd'T'HH:mm:ss.Z
DateTime.dateDecodingFormatters: an array of date formatters. The first one to decode successfully will be used
date
DateDay.dateFormatter: defaults to yyyy-MM-dd
APIClientError
This is error enum that APIResponse.result may contain:
public enum APIClientError: Error {
case unexpectedStatusCode(statusCode: Int, data: Data)
case decodingError(DecodingError)
case requestEncodingError(String)
case validationError(String)
case networkError(Error)
case unknownError(Error)
}
RequestBehaviour
Request behaviours are used to modify, authorize, monitor or respond to requests. They can be added to the APIClient.behaviours for all requests, or they can passed into makeRequest for just that single request.
RequestBehaviour is a protocol you can conform to with each function being optional. As the behaviours must work across multiple different request types, they only have access to a typed erased AnyRequest.
public protocol RequestBehaviour {
/// runs first and allows the requests to be modified. If modifying asynchronously use validate
func modifyRequest(request: AnyRequest, urlRequest: URLRequest) -> URLRequest
/// validates and modifies the request. complete must be called with either .success or .fail
func validate(request: AnyRequest, urlRequest: URLRequest, complete: @escaping (RequestValidationResult) -> Void)
/// called before request is sent
func beforeSend(request: AnyRequest)
/// called when request successfuly returns a 200 range response
func onSuccess(request: AnyRequest, result: Any)
/// called when request fails with an error. This will not be called if the request returns a known response even if the a status code is out of the 200 range
func onFailure(request: AnyRequest, error: APIClientError)
/// called if the request recieves a network response. This is not called if request fails validation or encoding
func onResponse(request: AnyRequest, response: AnyResponse)
}
Authorization
Each request has an optional securityRequirement. You can create a RequestBehaviour that checks this requirement and adds some form of authorization (usually via headers) in validate or modifyRequest. An alternative way is to set the APIClient.defaultHeaders which applies to all requests.
Reactive and Promises
To add support for a specific asynchronous library, just add an extension on APIClient and add a function that wraps the makeRequest function and converts from a closure based syntax to returning the object of choice (stream, future…ect)
Models
AbuseReport
AbuseType
AccessPolicy
Activity
ActivityContentDetails
ActivityContentDetailsBulletin
ActivityContentDetailsChannelItem
ActivityContentDetailsComment
ActivityContentDetailsFavorite
ActivityContentDetailsLike
ActivityContentDetailsPlaylistItem
ActivityContentDetailsPromotedItem
ActivityContentDetailsRecommendation
ActivityContentDetailsSocial
ActivityContentDetailsSubscription
ActivityContentDetailsUpload
ActivityListResponse
ActivitySnippet
Caption
CaptionListResponse
CaptionSnippet
CdnSettings
Channel
ChannelAuditDetails
ChannelBannerResource
ChannelBrandingSettings
ChannelContentDetails
ChannelContentOwnerDetails
ChannelConversionPing
ChannelConversionPings
ChannelListResponse
ChannelLocalization
ChannelProfileDetails
ChannelSection
ChannelSectionContentDetails
ChannelSectionListResponse
ChannelSectionLocalization
ChannelSectionSnippet
ChannelSectionTargeting
ChannelSettings
ChannelSnippet
ChannelStatistics
ChannelStatus
ChannelToStoreLinkDetails
ChannelTopicDetails
Comment
CommentListResponse
CommentSnippet
CommentSnippetAuthorChannelId
CommentThread
CommentThreadListResponse
CommentThreadReplies
CommentThreadSnippet
ContentRating
Entity
GeoPoint
I18nLanguage
I18nLanguageListResponse
I18nLanguageSnippet
I18nRegion
I18nRegionListResponse
I18nRegionSnippet
ImageSettings
IngestionInfo
InvideoBranding
InvideoPosition
InvideoTiming
LanguageTag
LevelDetails
LiveBroadcast
LiveBroadcastContentDetails
LiveBroadcastListResponse
LiveBroadcastSnippet
LiveBroadcastStatistics
LiveBroadcastStatus
LiveChatBan
LiveChatBanSnippet
LiveChatFanFundingEventDetails
LiveChatMemberMilestoneChatDetails
LiveChatMessage
LiveChatMessageAuthorDetails
LiveChatMessageDeletedDetails
LiveChatMessageListResponse
LiveChatMessageRetractedDetails
LiveChatMessageSnippet
LiveChatModerator
LiveChatModeratorListResponse
LiveChatModeratorSnippet
LiveChatNewSponsorDetails
LiveChatSuperChatDetails
LiveChatSuperStickerDetails
LiveChatTextMessageDetails
LiveChatUserBannedMessageDetails
LiveStream
LiveStreamConfigurationIssue
LiveStreamContentDetails
LiveStreamHealthStatus
LiveStreamListResponse
LiveStreamSnippet
LiveStreamStatus
LocalizedProperty
LocalizedString
Member
MemberListResponse
MemberSnippet
MembershipsDetails
MembershipsDuration
MembershipsDurationAtLevel
MembershipsLevel
MembershipsLevelListResponse
MembershipsLevelSnippet
MonitorStreamInfo
PageInfo
Playlist
PlaylistContentDetails
PlaylistItem
PlaylistItemContentDetails
PlaylistItemListResponse
PlaylistItemSnippet
PlaylistItemStatus
PlaylistListResponse
PlaylistLocalization
PlaylistPlayer
PlaylistSnippet
PlaylistStatus
PropertyValue
RelatedEntity
ResourceId
SearchListResponse
SearchResult
SearchResultSnippet
Subscription
SubscriptionContentDetails
SubscriptionListResponse
SubscriptionSnippet
SubscriptionSubscriberSnippet
SuperChatEvent
SuperChatEventListResponse
SuperChatEventSnippet
SuperStickerMetadata
TestItem
TestItemTestItemSnippet
ThirdPartyLink
ThirdPartyLinkSnippet
ThirdPartyLinkStatus
Thumbnail
ThumbnailDetails
ThumbnailSetResponse
TokenPagination
Video
VideoAbuseReport
VideoAbuseReportReason
VideoAbuseReportReasonListResponse
VideoAbuseReportReasonSnippet
VideoAbuseReportSecondaryReason
VideoAgeGating
VideoCategory
VideoCategoryListResponse
VideoCategorySnippet
VideoContentDetails
VideoContentDetailsRegionRestriction
VideoFileDetails
VideoFileDetailsAudioStream
VideoFileDetailsVideoStream
VideoGetRatingResponse
VideoListResponse
VideoLiveStreamingDetails
VideoLocalization
VideoMonetizationDetails
VideoPlayer
VideoProcessingDetails
VideoProcessingDetailsProcessingProgress
VideoProjectDetails
VideoRating
VideoRecordingDetails
VideoSnippet
VideoStatistics
VideoStatus
VideoSuggestions
VideoSuggestionsTagSuggestion
VideoTopicDetails
WatchSettings
Requests
API.AbuseReports
YoutubeAbuseReportsInsert: POST /youtube/v3/abusereports
API
This is an api generated from a OpenAPI 3.0 spec with SwagGen
Operation
Each operation lives under the
API
namespace and within an optional tag:API(.tagName).operationId
. If an operation doesn’t have an operationId one will be generated from the path and method.Each operation has a nested
Request
and aResponse
, as well as a staticservice
propertyService
This is the struct that contains the static information about an operation including it’s id, tag, method, pre-modified path, and authorization requirements. It has a generic
ResponseType
type which maps to theResponse
type. You shouldn’t really need to interact with this service type.Request
Each request is a subclass of
APIRequest
and has aninit
with a body param if it has a body, and aoptions
struct for other url and path parameters. There is also a convenience init for passing parameters directly. Theoptions
andbody
structs are both mutable so they can be modified before actually sending the request.Response
The response is an enum of all the possible responses the request can return. it also contains getters for the
statusCode
, whether it wassuccessful
, and the actual decoded optionalsuccess
response. If the operation only has one type of failure type there is also an optionalfailure
type.Model
Models that are sent and returned from the API are mutable classes. Each model is
Equatable
andCodable
.Required
properties are non optional and non-required are optionalAll properties can be passed into the initializer, with
required
properties being mandatory.If a model has
additionalProperties
it will have a subscript to access these by stringAPIClient
The
APIClient
is used to encode, authorize, send, monitor, and decode the requests. There is aAPIClient.default
that uses the defaultbaseURL
otherwise a custom one can be initialized:APIClient properties
baseURL
: The base url that every requestpath
will be appended tobehaviours
: A list of Request Behaviours to add to every requestsessionManager
: AnAlamofire.SessionManager
that can be customizeddefaultHeaders
: Headers that will be applied to every requestdecodingQueue
: TheDispatchQueue
to decode responses onMaking a request
To make a request first initialize a Request and then pass it to
makeRequest
. Thecomplete
closure will be called with anAPIResponse
Example request (that is not neccessarily in this api):
Each Request also has a
makeRequest
convenience function that usesAPI.shared
.APIResponse
The
APIResponse
that gets passed to the completion closure contains the following properties:request
: The original requestresult
: AResult
type either containing anAPIClientError
or the Response of the requesturlRequest
: TheURLRequest
used to send the requesturlResponse
: TheHTTPURLResponse
that was returned by the requestdata
: TheData
returned by the request.timeline
: TheAlamofire.Timeline
of the request which contains timing information.Encoding and Decoding
Only JSON requests and responses are supported. These are encoded and decoded by
JSONEncoder
andJSONDecoder
respectively, using Swift’sCodable
apis. There are some options to control how invalid JSON is handled when decoding and these are available as static properties onAPI
:safeOptionalDecoding
: Whether to discard any errors when decoding optional properties. Defaults totrue
.safeArrayDecoding
: Whether to remove invalid elements instead of throwing when decoding arrays. Defaults totrue
.Dates are encoded and decoded differently according to the swagger date format. They use different
DateFormatter
‘s that you can set.date-time
DateTime.dateEncodingFormatter
: defaults toyyyy-MM-dd'T'HH:mm:ss.Z
DateTime.dateDecodingFormatters
: an array of date formatters. The first one to decode successfully will be useddate
DateDay.dateFormatter
: defaults toyyyy-MM-dd
APIClientError
This is error enum that
APIResponse.result
may contain:RequestBehaviour
Request behaviours are used to modify, authorize, monitor or respond to requests. They can be added to the
APIClient.behaviours
for all requests, or they can passed intomakeRequest
for just that single request.RequestBehaviour
is a protocol you can conform to with each function being optional. As the behaviours must work across multiple different request types, they only have access to a typed erasedAnyRequest
.Authorization
Each request has an optional
securityRequirement
. You can create aRequestBehaviour
that checks this requirement and adds some form of authorization (usually via headers) invalidate
ormodifyRequest
. An alternative way is to set theAPIClient.defaultHeaders
which applies to all requests.Reactive and Promises
To add support for a specific asynchronous library, just add an extension on
APIClient
and add a function that wraps themakeRequest
function and converts from a closure based syntax to returning the object of choice (stream, future…ect)Models
Requests
/youtube/v3/abusereports
/youtube/v3/activities
/youtube/v3/captions
/youtube/v3/captions/{id}
/youtube/v3/captions
/youtube/v3/captions
/youtube/v3/captions
/youtube/v3/channelbanners/insert
/youtube/v3/channels
/youtube/v3/channels
/youtube/v3/channelsections
/youtube/v3/channelsections
/youtube/v3/channelsections
/youtube/v3/channelsections
/youtube/v3/comments
/youtube/v3/comments
/youtube/v3/comments
/youtube/v3/comments/markasspam
/youtube/v3/comments/setmoderationstatus
/youtube/v3/comments
/youtube/v3/commentthreads
/youtube/v3/commentthreads
/youtube/v3/i18nlanguages
/youtube/v3/i18nregions
/youtube/v3/livebroadcasts/bind
/youtube/v3/livebroadcasts
/youtube/v3/livebroadcasts
/youtube/v3/livebroadcasts
/youtube/v3/livebroadcasts/transition
/youtube/v3/livebroadcasts
/youtube/v3/livechat/bans
/youtube/v3/livechat/bans
/youtube/v3/livechat/messages
/youtube/v3/livechat/messages
/youtube/v3/livechat/messages
/youtube/v3/livechat/moderators
/youtube/v3/livechat/moderators
/youtube/v3/livechat/moderators
/youtube/v3/livestreams
/youtube/v3/livestreams
/youtube/v3/livestreams
/youtube/v3/livestreams
/youtube/v3/members
/youtube/v3/membershipslevels
/youtube/v3/playlistitems
/youtube/v3/playlistitems
/youtube/v3/playlistitems
/youtube/v3/playlistitems
/youtube/v3/playlists
/youtube/v3/playlists
/youtube/v3/playlists
/youtube/v3/playlists
/youtube/v3/search
/youtube/v3/subscriptions
/youtube/v3/subscriptions
/youtube/v3/subscriptions
/youtube/v3/superchatevents
/youtube/v3/tests
/youtube/v3/thirdpartylinks
/youtube/v3/thirdpartylinks
/youtube/v3/thirdpartylinks
/youtube/v3/thirdpartylinks
/youtube/v3/thumbnails/set
/youtube/v3/videoabusereportreasons
/youtube/v3/videocategories
/youtube/v3/videos
/youtube/v3/videos/getrating
/youtube/v3/videos
/youtube/v3/videos
/youtube/v3/videos/rate
/youtube/v3/videos/reportabuse
/youtube/v3/videos
/youtube/v3/watermarks/set
/youtube/v3/watermarks/unset
/youtube/v3/commentthreads