Skip to content

Commit

Permalink
Add video tags endpoint
Browse files Browse the repository at this point in the history
  • Loading branch information
olivierapivideo authored Sep 26, 2024
1 parent b716f83 commit e4c8d28
Show file tree
Hide file tree
Showing 11 changed files with 330 additions and 1 deletion.
6 changes: 6 additions & 0 deletions .openapi-generator/FILES
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand All @@ -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
Expand Down
2 changes: 1 addition & 1 deletion .openapi-generator/oas_apivideo.yaml-defaut-cli.sha256
Original file line number Diff line number Diff line change
@@ -1 +1 @@
17ac0a7b292afb851962592fd7280e7727bb901d5d4e2a3f75808aa76a1ecdf5
3fd917525a7ff151e1d54f6eb1cced24739639393e8718ebf6da4058a67d8131
18 changes: 18 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
- [ChaptersAPI](#ChaptersAPI)
- [LiveStreamsAPI](#LiveStreamsAPI)
- [PlayerThemesAPI](#PlayerThemesAPI)
- [TagsAPI](#TagsAPI)
- [UploadTokensAPI](#UploadTokensAPI)
- [VideosAPI](#VideosAPI)
- [WatermarksAPI](#WatermarksAPI)
Expand Down Expand Up @@ -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:
Expand Down Expand Up @@ -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)
Expand Down
109 changes: 109 additions & 0 deletions Sources/APIs/TagsAPI.swift
Original file line number Diff line number Diff line change
@@ -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<Response<ListTagsResponse>, 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 &#x60;value&#x60;. These are the available fields to sort by: - &#x60;value&#x60;: Sorts the results based on tag values in alphabetic order. - &#x60;videoCount&#x60;: Sorts the results based on the number of times a video tag is used. (optional)
- parameter sortOrder: (query) Use this parameter to sort results. &#x60;asc&#x60; is ascending and sorts from A to Z. &#x60;desc&#x60; 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<ListTagsResponse>
*/
internal class func listWithRequestBuilder(value: String? = nil, sortBy: SortByList? = nil, sortOrder: SortOrderList? = nil, currentPage: Int? = nil, pageSize: Int? = nil) -> RequestBuilder<ListTagsResponse> {
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<ListTagsResponse>.Type = ApiVideoClient.requestBuilderFactory.getBuilder()

return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters)
}

}
36 changes: 36 additions & 0 deletions Sources/Models/ListTagsResponse.swift
Original file line number Diff line number Diff line change
@@ -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)
}
}

38 changes: 38 additions & 0 deletions Sources/Models/ListTagsResponseData.swift
Original file line number Diff line number Diff line change
@@ -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)
}
}

26 changes: 26 additions & 0 deletions Tests/TestResources/payloads/tags/list/responses/200.json
Original file line number Diff line number Diff line change
@@ -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"
} ]
}
}
5 changes: 5 additions & 0 deletions Tests/TestResources/payloads/tags/list/responses/429.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"type" : "https://docs.api.video/reference/too-many-requests",
"title" : "Too many requests.",
"status" : 429
}
11 changes: 11 additions & 0 deletions docs/ListTagsResponse.md
Original file line number Diff line number Diff line change
@@ -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)


11 changes: 11 additions & 0 deletions docs/ListTagsResponseData.md
Original file line number Diff line number Diff line change
@@ -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)


69 changes: 69 additions & 0 deletions docs/TagsAPI.md
Original file line number Diff line number Diff line change
@@ -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<Response<ListTagsResponse>, 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 &#x60;value&#x60;. These are the available fields to sort by: - &#x60;value&#x60;: Sorts the results based on tag values in alphabetic order. - &#x60;videoCount&#x60;: Sorts the results based on the number of times a video tag is used. | [optional]
**sortOrder** | **String** | Use this parameter to sort results. &#x60;asc&#x60; is ascending and sorts from A to Z. &#x60;desc&#x60; 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)

0 comments on commit e4c8d28

Please sign in to comment.