diff --git a/.openapi-generator/FILES b/.openapi-generator/FILES index c24d654..105a6fe 100644 --- a/.openapi-generator/FILES +++ b/.openapi-generator/FILES @@ -11,6 +11,7 @@ Sources/APIs/CaptionsAPI.swift Sources/APIs/ChaptersAPI.swift Sources/APIs/LiveStreamsAPI.swift Sources/APIs/PlayerThemesAPI.swift +Sources/APIs/TagsAPI.swift Sources/APIs/UploadTokensAPI.swift Sources/APIs/VideosAPI.swift Sources/APIs/WatermarksAPI.swift @@ -52,6 +53,8 @@ Sources/Models/FilterBy.swift Sources/Models/FilterBy1.swift Sources/Models/FilterBy2.swift Sources/Models/Link.swift +Sources/Models/ListTagsResponse.swift +Sources/Models/ListTagsResponseData.swift Sources/Models/LiveStream.swift Sources/Models/LiveStreamAssets.swift Sources/Models/LiveStreamCreationPayload.swift @@ -136,6 +139,8 @@ docs/FilterBy.md docs/FilterBy1.md docs/FilterBy2.md docs/Link.md +docs/ListTagsResponse.md +docs/ListTagsResponseData.md docs/LiveStream.md docs/LiveStreamAssets.md docs/LiveStreamCreationPayload.md @@ -158,6 +163,7 @@ docs/Quality.md docs/RefreshTokenPayload.md docs/RestreamsRequestObject.md docs/RestreamsResponseObject.md +docs/TagsAPI.md docs/TokenCreationPayload.md docs/TokenListResponse.md docs/TooManyRequests.md diff --git a/.openapi-generator/oas_apivideo.yaml-defaut-cli.sha256 b/.openapi-generator/oas_apivideo.yaml-defaut-cli.sha256 index c691017..341a8d3 100644 --- a/.openapi-generator/oas_apivideo.yaml-defaut-cli.sha256 +++ b/.openapi-generator/oas_apivideo.yaml-defaut-cli.sha256 @@ -1 +1 @@ -17ac0a7b292afb851962592fd7280e7727bb901d5d4e2a3f75808aa76a1ecdf5 \ No newline at end of file +3fd917525a7ff151e1d54f6eb1cced24739639393e8718ebf6da4058a67d8131 \ No newline at end of file diff --git a/README.md b/README.md index ee5c913..4f78dbb 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,7 @@ - [ChaptersAPI](#ChaptersAPI) - [LiveStreamsAPI](#LiveStreamsAPI) - [PlayerThemesAPI](#PlayerThemesAPI) + - [TagsAPI](#TagsAPI) - [UploadTokensAPI](#UploadTokensAPI) - [VideosAPI](#VideosAPI) - [WatermarksAPI](#WatermarksAPI) @@ -189,6 +190,21 @@ Method | HTTP request | Description [**deleteLogo**](https://github.com/apivideo/api.video-swift-client/blob/main/docs/PlayerThemesAPI.md#deleteLogo) | **DELETE** `/players/{playerId}/logo` | Delete logo +#### TagsAPI + +##### Retrieve an instance of TagsAPI: + +```swift +TagsAPI +``` + +##### Endpoints + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**list**](https://github.com/apivideo/api.video-swift-client/blob/main/docs/TagsAPI.md#list) | **GET** `/tags` | List all video tags + + #### UploadTokensAPI ##### Retrieve an instance of UploadTokensAPI: @@ -299,6 +315,8 @@ Method | HTTP request | Description - [FilterBy1](https://github.com/apivideo/api.video-swift-client/blob/main/docs/FilterBy1.md) - [FilterBy2](https://github.com/apivideo/api.video-swift-client/blob/main/docs/FilterBy2.md) - [Link](https://github.com/apivideo/api.video-swift-client/blob/main/docs/Link.md) + - [ListTagsResponse](https://github.com/apivideo/api.video-swift-client/blob/main/docs/ListTagsResponse.md) + - [ListTagsResponseData](https://github.com/apivideo/api.video-swift-client/blob/main/docs/ListTagsResponseData.md) - [LiveStream](https://github.com/apivideo/api.video-swift-client/blob/main/docs/LiveStream.md) - [LiveStreamAssets](https://github.com/apivideo/api.video-swift-client/blob/main/docs/LiveStreamAssets.md) - [LiveStreamCreationPayload](https://github.com/apivideo/api.video-swift-client/blob/main/docs/LiveStreamCreationPayload.md) diff --git a/Sources/APIs/TagsAPI.swift b/Sources/APIs/TagsAPI.swift new file mode 100644 index 0000000..fb96074 --- /dev/null +++ b/Sources/APIs/TagsAPI.swift @@ -0,0 +1,109 @@ +// +// TagsAPI.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif + +open class TagsAPI { + + /** + * enum for parameter sortBy + */ + public enum SortByList: String, CaseIterable { + case value = "value" + case videocount = "videoCount" + } + + /** + * enum for parameter sortOrder + */ + public enum SortOrderList: String, CaseIterable { + case asc = "asc" + case desc = "desc" + } + + /** + List all video tags + + - parameter value: (query) Use this parameter to search for specific video tags. The API filters results even on partial values, and ignores accents, uppercase, and lowercase. (optional) + - parameter sortBy: (query) Use this parameter to choose which field the API will use to sort the response data. The default is `value`. These are the available fields to sort by: - `value`: Sorts the results based on tag values in alphabetic order. - `videoCount`: Sorts the results based on the number of times a video tag is used. (optional) + - parameter sortOrder: (query) Use this parameter to sort results. `asc` is ascending and sorts from A to Z. `desc` is descending and sorts from Z to A. (optional) + - parameter currentPage: (query) Choose the number of search results to return per page. Minimum value: 1 (optional, default to 1) + - parameter pageSize: (query) Results per page. Allowed values 1-100, default is 25. (optional, default to 25) + - parameter apiResponseQueue: The queue on which api response is dispatched. + - parameter completion: completion handler to receive the data and the error objects. + */ + @discardableResult + open class func list(value: String? = nil, sortBy: SortByList? = nil, sortOrder: SortOrderList? = nil, currentPage: Int? = nil, pageSize: Int? = nil, apiResponseQueue: DispatchQueue = ApiVideoClient.apiResponseQueue, completion: @escaping ((_ data: ListTagsResponse?, _ error: Error?) -> Void)) -> RequestTask { + return list(value: value, sortBy: sortBy, sortOrder: sortOrder, currentPage: currentPage, pageSize: pageSize, apiResponseQueue: apiResponseQueue) { result in + switch result { + case let .success(response): + completion(response.body, nil) + case let .failure(error): + completion(nil, error) + } + } + } + + /** + List all video tags + + - parameter value: (query) Use this parameter to search for specific video tags. The API filters results even on partial values, and ignores accents, uppercase, and lowercase. (optional) + - parameter sortBy: (query) Use this parameter to choose which field the API will use to sort the response data. The default is `value`. These are the available fields to sort by: - `value`: Sorts the results based on tag values in alphabetic order. - `videoCount`: Sorts the results based on the number of times a video tag is used. (optional) + - parameter sortOrder: (query) Use this parameter to sort results. `asc` is ascending and sorts from A to Z. `desc` is descending and sorts from Z to A. (optional) + - parameter currentPage: (query) Choose the number of search results to return per page. Minimum value: 1 (optional, default to 1) + - parameter pageSize: (query) Results per page. Allowed values 1-100, default is 25. (optional, default to 25) + - parameter apiResponseQueue: The queue on which api response is dispatched. + - parameter completion: completion handler to receive the result of the request (incl. headers). + */ + @discardableResult + open class func list(value: String? = nil, sortBy: SortByList? = nil, sortOrder: SortOrderList? = nil, currentPage: Int? = nil, pageSize: Int? = nil, apiResponseQueue: DispatchQueue = ApiVideoClient.apiResponseQueue, completion: @escaping (_ result: Swift.Result, ErrorResponse>) -> Void) -> RequestTask { + return listWithRequestBuilder(value: value, sortBy: sortBy, sortOrder: sortOrder, currentPage: currentPage, pageSize: pageSize).execute(apiResponseQueue, completion) + } + + + /** + List all video tags + - GET /tags + - This endpoint enables you to search for video tags in a project and see how many videos are tagged with them. If you do not define any query parameters, the endpoint lists all video tags and the numbers of times they are used in a project. + - responseHeaders: [X-RateLimit-Limit(Int), X-RateLimit-Remaining(Int), X-RateLimit-Retry-After(Int)] + - parameter value: (query) Use this parameter to search for specific video tags. The API filters results even on partial values, and ignores accents, uppercase, and lowercase. (optional) + - parameter sortBy: (query) Use this parameter to choose which field the API will use to sort the response data. The default is `value`. These are the available fields to sort by: - `value`: Sorts the results based on tag values in alphabetic order. - `videoCount`: Sorts the results based on the number of times a video tag is used. (optional) + - parameter sortOrder: (query) Use this parameter to sort results. `asc` is ascending and sorts from A to Z. `desc` is descending and sorts from Z to A. (optional) + - parameter currentPage: (query) Choose the number of search results to return per page. Minimum value: 1 (optional, default to 1) + - parameter pageSize: (query) Results per page. Allowed values 1-100, default is 25. (optional, default to 25) + - returns: RequestBuilder + */ + internal class func listWithRequestBuilder(value: String? = nil, sortBy: SortByList? = nil, sortOrder: SortOrderList? = nil, currentPage: Int? = nil, pageSize: Int? = nil) -> RequestBuilder { + let localVariablePath = "/tags" + let localVariableURLString = ApiVideoClient.basePath + localVariablePath + let localVariableParameters: [String: Any]? = nil + + var localVariableUrlComponents = URLComponents(string: localVariableURLString) + localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([ + "value": value?.encodeToJSON(), + "sortBy": sortBy?.encodeToJSON(), + "sortOrder": sortOrder?.encodeToJSON(), + "currentPage": currentPage?.encodeToJSON(), + "pageSize": pageSize?.encodeToJSON(), + ]) + + + let localVariableNillableHeaders: [String: Any?] = [ + : + ] + + let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders) + + let localVariableRequestBuilder: RequestBuilder.Type = ApiVideoClient.requestBuilderFactory.getBuilder() + + return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters) + } + +} diff --git a/Sources/Models/ListTagsResponse.swift b/Sources/Models/ListTagsResponse.swift new file mode 100644 index 0000000..f0e49d1 --- /dev/null +++ b/Sources/Models/ListTagsResponse.swift @@ -0,0 +1,36 @@ +// +// ListTagsResponse.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif + +public struct ListTagsResponse: Codable, Hashable { + + public var data: [ListTagsResponseData]? + public var pagination: Pagination? + + public init(data: [ListTagsResponseData]? = nil, pagination: Pagination? = nil) { + self.data = data + self.pagination = pagination + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case data + case pagination + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(data, forKey: .data) + try container.encodeIfPresent(pagination, forKey: .pagination) + } +} + diff --git a/Sources/Models/ListTagsResponseData.swift b/Sources/Models/ListTagsResponseData.swift new file mode 100644 index 0000000..7d9b9a9 --- /dev/null +++ b/Sources/Models/ListTagsResponseData.swift @@ -0,0 +1,38 @@ +// +// ListTagsResponseData.swift +// +// Generated by openapi-generator +// https://openapi-generator.tech +// + +import Foundation +#if canImport(AnyCodable) +import AnyCodable +#endif + +public struct ListTagsResponseData: Codable, Hashable { + + /** Returns the value of a video tag used in your project. */ + public var value: String? + /** Returns the number of times a video tag is used. */ + public var videoCount: Int? + + public init(value: String? = nil, videoCount: Int? = nil) { + self.value = value + self.videoCount = videoCount + } + + public enum CodingKeys: String, CodingKey, CaseIterable { + case value + case videoCount + } + + // Encodable protocol methods + + public func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(value, forKey: .value) + try container.encodeIfPresent(videoCount, forKey: .videoCount) + } +} + diff --git a/Tests/TestResources/payloads/tags/list/responses/200.json b/Tests/TestResources/payloads/tags/list/responses/200.json new file mode 100644 index 0000000..fd895e6 --- /dev/null +++ b/Tests/TestResources/payloads/tags/list/responses/200.json @@ -0,0 +1,26 @@ +{ + "data" : [ { + "value" : "maths", + "videoCount" : "33" + }, { + "value" : "tutorials", + "videoCount" : "10" + } ], + "pagination" : { + "currentPage" : 1, + "pageSize" : 25, + "pagesTotal" : 1, + "itemsTotal" : 2, + "currentPageItems" : 2, + "links" : [ { + "rel" : "self", + "uri" : "https://ws.api.video/watermarks?currentPage=1" + }, { + "rel" : "first", + "uri" : "https://ws.api.video/watermarks?currentPage=1" + }, { + "rel" : "last", + "uri" : "https://ws.api.video/watermarks?currentPage=1" + } ] + } +} \ No newline at end of file diff --git a/Tests/TestResources/payloads/tags/list/responses/429.json b/Tests/TestResources/payloads/tags/list/responses/429.json new file mode 100644 index 0000000..d312e2b --- /dev/null +++ b/Tests/TestResources/payloads/tags/list/responses/429.json @@ -0,0 +1,5 @@ +{ + "type" : "https://docs.api.video/reference/too-many-requests", + "title" : "Too many requests.", + "status" : 429 +} \ No newline at end of file diff --git a/docs/ListTagsResponse.md b/docs/ListTagsResponse.md new file mode 100644 index 0000000..9cce309 --- /dev/null +++ b/docs/ListTagsResponse.md @@ -0,0 +1,11 @@ +# ListTagsResponse + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**data** | [ListTagsResponseData] | | [optional] +**pagination** | [**Pagination**](Pagination.md) | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/ListTagsResponseData.md b/docs/ListTagsResponseData.md new file mode 100644 index 0000000..637c8f5 --- /dev/null +++ b/docs/ListTagsResponseData.md @@ -0,0 +1,11 @@ +# ListTagsResponseData + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**value** | **String** | Returns the value of a video tag used in your project. | [optional] +**videoCount** | **Int** | Returns the number of times a video tag is used. | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/TagsAPI.md b/docs/TagsAPI.md new file mode 100644 index 0000000..f7b0ee5 --- /dev/null +++ b/docs/TagsAPI.md @@ -0,0 +1,69 @@ +# TagsAPI + +All URIs are relative to *https://ws.api.video* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**list**](TagsAPI.md#listtags) | **GET** /tags | List all video tags + + +# **list** +```swift + open class func list(value: String? = nil, sortBy: SortBy_list? = nil, sortOrder: SortOrder_list? = nil, currentPage: Int? = nil, pageSize: Int? = nil, completion: @escaping (_ data: ListTagsResponse?, _ error: Error?) -> Void) + open class func list(value: String? = nil, sortBy: SortBy_list? = nil, sortOrder: SortOrder_list? = nil, currentPage: Int? = nil, pageSize: Int? = nil, completion: @escaping (_ result: Swift.Result, ErrorResponse>) -> Void) +``` + +List all video tags + +This endpoint enables you to search for video tags in a project and see how many videos are tagged with them. If you do not define any query parameters, the endpoint lists all video tags and the numbers of times they are used in a project. + + +### Example +```swift +// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new +import ApiVideoClient + +let value = "value_example" // String | Use this parameter to search for specific video tags. The API filters results even on partial values, and ignores accents, uppercase, and lowercase. (optional) +let sortBy = "sortBy_example" // String | Use this parameter to choose which field the API will use to sort the response data. The default is `value`. These are the available fields to sort by: - `value`: Sorts the results based on tag values in alphabetic order. - `videoCount`: Sorts the results based on the number of times a video tag is used. (optional) +let sortOrder = "sortOrder_example" // String | Use this parameter to sort results. `asc` is ascending and sorts from A to Z. `desc` is descending and sorts from Z to A. (optional) +let currentPage = 987 // Int | Choose the number of search results to return per page. Minimum value: 1 (optional) (default to 1) +let pageSize = 987 // Int | Results per page. Allowed values 1-100, default is 25. (optional) (default to 25) + +// List all video tags +TagsAPI.list(value: value, sortBy: sortBy, sortOrder: sortOrder, currentPage: currentPage, pageSize: pageSize) { (response, error) in + guard error == nil else { + print(error) + return + } + + if (response) { + dump(response) + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **value** | **String** | Use this parameter to search for specific video tags. The API filters results even on partial values, and ignores accents, uppercase, and lowercase. | [optional] + **sortBy** | **String** | Use this parameter to choose which field the API will use to sort the response data. The default is `value`. These are the available fields to sort by: - `value`: Sorts the results based on tag values in alphabetic order. - `videoCount`: Sorts the results based on the number of times a video tag is used. | [optional] + **sortOrder** | **String** | Use this parameter to sort results. `asc` is ascending and sorts from A to Z. `desc` is descending and sorts from Z to A. | [optional] + **currentPage** | **Int** | Choose the number of search results to return per page. Minimum value: 1 | [optional] [default to 1] + **pageSize** | **Int** | Results per page. Allowed values 1-100, default is 25. | [optional] [default to 25] + +### Return type + +[**ListTagsResponse**](ListTagsResponse.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) +