# coding: utf-8

"""
    LINE Messaging API

    This document describes LINE Messaging API.  # noqa: E501

    The version of the OpenAPI document: 0.0.1
    Generated by OpenAPI Generator (https://openapi-generator.tech)

    Do not edit the class manually.
"""


from __future__ import annotations
import pprint
import re  # noqa: F401
import json


from typing import List, Optional
from pydantic.v1 import BaseModel, Field, StrictStr, conlist

class GetJoinedMembershipUsersResponse(BaseModel):
    """
    List of users who have joined the membership
    https://developers.line.biz/en/reference/messaging-api/#get-membership-user-ids
    """
    user_ids: conlist(StrictStr, max_items=1000) = Field(..., alias="userIds", description="A list of user IDs who joined the membership. Users who have not agreed to the bot user agreement, are not following the bot, or are not active will be excluded. If there are no users in the membership, an empty list will be returned. ")
    next: Optional[StrictStr] = Field(None, description="A continuation token to get next remaining membership user IDs. Returned only when there are remaining user IDs that weren't returned in the userIds property in the previous request. The continuation token expires in 24 hours (86,400 seconds).  ")

    __properties = ["userIds", "next"]

    class Config:
        """Pydantic configuration"""
        allow_population_by_field_name = True
        validate_assignment = True

    def to_str(self) -> str:
        """Returns the string representation of the model using alias"""
        return pprint.pformat(self.dict(by_alias=True))

    def to_json(self) -> str:
        """Returns the JSON representation of the model using alias"""
        return json.dumps(self.to_dict())

    @classmethod
    def from_json(cls, json_str: str) -> GetJoinedMembershipUsersResponse:
        """Create an instance of GetJoinedMembershipUsersResponse from a JSON string"""
        return cls.from_dict(json.loads(json_str))

    def to_dict(self):
        """Returns the dictionary representation of the model using alias"""
        _dict = self.dict(by_alias=True,
                          exclude={
                          },
                          exclude_none=True)
        return _dict

    @classmethod
    def from_dict(cls, obj: dict) -> GetJoinedMembershipUsersResponse:
        """Create an instance of GetJoinedMembershipUsersResponse from a dict"""
        if obj is None:
            return None

        if not isinstance(obj, dict):
            return GetJoinedMembershipUsersResponse.parse_obj(obj)

        _obj = GetJoinedMembershipUsersResponse.parse_obj({
            "user_ids": obj.get("userIds"),
            "next": obj.get("next")
        })
        return _obj

