@tool
extends TwitchData

# CLASS GOT AUTOGENERATED DON'T CHANGE MANUALLY. CHANGES CAN BE OVERWRITTEN EASILY.

## 
## #/components/schemas/StreamMarkers
class_name TwitchStreamMarkers
	
## The ID of the user that created the marker.
@export var user_id: String:
	set(val): 
		user_id = val
		track_data(&"user_id", val)

## The user’s display name.
@export var user_name: String:
	set(val): 
		user_name = val
		track_data(&"user_name", val)

## The user’s login name.
@export var user_login: String:
	set(val): 
		user_login = val
		track_data(&"user_login", val)

## A list of videos that contain markers. The list contains a single video.
@export var videos: Array[Variant]:
	set(val): 
		videos = val
		track_data(&"videos", val)

## An ID that identifies this video.
@export var video_id: String:
	set(val): 
		video_id = val
		track_data(&"video_id", val)

## The list of markers in this video. The list in ascending order by when the marker was created.
@export var markers: Array[Markers]:
	set(val): 
		markers = val
		track_data(&"markers", val)
var response: BufferedHTTPClient.ResponseData


## Constructor with all required fields.
static func create(_user_id: String, _user_name: String, _user_login: String, _videos: Array[Variant], _video_id: String, _markers: Array[Markers]) -> TwitchStreamMarkers:
	var twitch_stream_markers: TwitchStreamMarkers = TwitchStreamMarkers.new()
	twitch_stream_markers.user_id = _user_id
	twitch_stream_markers.user_name = _user_name
	twitch_stream_markers.user_login = _user_login
	twitch_stream_markers.videos = _videos
	twitch_stream_markers.video_id = _video_id
	twitch_stream_markers.markers = _markers
	return twitch_stream_markers


static func from_json(d: Dictionary) -> TwitchStreamMarkers:
	var result: TwitchStreamMarkers = TwitchStreamMarkers.new()
	if d.get("user_id", null) != null:
		result.user_id = d["user_id"]
	if d.get("user_name", null) != null:
		result.user_name = d["user_name"]
	if d.get("user_login", null) != null:
		result.user_login = d["user_login"]
	if d.get("videos", null) != null:
		for value in d["videos"]:
			result.videos.append(value)
	if d.get("video_id", null) != null:
		result.video_id = d["video_id"]
	if d.get("markers", null) != null:
		for value in d["markers"]:
			result.markers.append(Markers.from_json(value))
	return result



## The list of markers in this video. The list in ascending order by when the marker was created.
## #/components/schemas/StreamMarkers/Markers
class Markers extends TwitchData:

	## An ID that identifies this marker.
	@export var id: String:
		set(val): 
			id = val
			track_data(&"id", val)
	
	## The UTC date and time (in RFC3339 format) of when the user created the marker.
	@export var created_at: String:
		set(val): 
			created_at = val
			track_data(&"created_at", val)
	
	## The description that the user gave the marker to help them remember why they marked the location. Is an empty string if the user didn’t provide one.
	@export var description: String:
		set(val): 
			description = val
			track_data(&"description", val)
	
	## The relative offset (in seconds) of the marker from the beginning of the stream.
	@export var position_seconds: int:
		set(val): 
			position_seconds = val
			track_data(&"position_seconds", val)
	
	## A URL that opens the video in Twitch Highlighter.
	@export var url: String:
		set(val): 
			url = val
			track_data(&"url", val)
	
	
	
	## Constructor with all required fields.
	static func create(_id: String, _created_at: String, _description: String, _position_seconds: int, _url: String) -> Markers:
		var markers: Markers = Markers.new()
		markers.id = _id
		markers.created_at = _created_at
		markers.description = _description
		markers.position_seconds = _position_seconds
		markers.url = _url
		return markers
	
	
	static func from_json(d: Dictionary) -> Markers:
		var result: Markers = Markers.new()
		if d.get("id", null) != null:
			result.id = d["id"]
		if d.get("created_at", null) != null:
			result.created_at = d["created_at"]
		if d.get("description", null) != null:
			result.description = d["description"]
		if d.get("position_seconds", null) != null:
			result.position_seconds = d["position_seconds"]
		if d.get("url", null) != null:
			result.url = d["url"]
		return result
	