/// <summary>
        /// Create ticket (login) **Note:** this endpoint is available in Alfresco 5.2 and newer versions.  Logs in and returns the new authentication ticket.  The userId and password properties are mandatory in the request body. For example: &#x60;&#x60;&#x60;JSON {     \&quot;userId\&quot;: \&quot;jbloggs\&quot;,     \&quot;password\&quot;: \&quot;password\&quot; } &#x60;&#x60;&#x60; To use the ticket in future requests you should pass it in the request header. For example using Javascript:   &#x60;&#x60;&#x60;Javascript     request.setRequestHeader (\&quot;Authorization\&quot;, \&quot;Basic \&quot; + btoa(ticket));   &#x60;&#x60;&#x60;
        /// </summary>
        /// <param name="ticketBodyCreate">The user credential.</param>
        /// <returns>TicketEntry</returns>
        public TicketEntry CreateTicket(TicketBody ticketBodyCreate)
        {
            // verify the required parameter 'ticketBodyCreate' is set
            if (ticketBodyCreate == null)
            {
                throw new ApiException(400, "Missing required parameter 'ticketBodyCreate' when calling CreateTicket");
            }


            var path = "/tickets";

            path = path.Replace("{format}", "json");

            var    queryParams  = new Dictionary <String, String>();
            var    headerParams = new Dictionary <String, String>();
            var    formParams   = new Dictionary <String, String>();
            var    fileParams   = new Dictionary <String, FileParameter>();
            String postBody     = null;

            postBody = ApiClient.Serialize(ticketBodyCreate);                                     // http body (model) parameter

            // authentication setting, if any
            String[] authSettings = new String[] { "basicAuth" };

            // make the HTTP request
            IRestResponse response = (IRestResponse)ApiClient.CallApi(path, Method.POST, queryParams, postBody, headerParams, formParams, fileParams, authSettings);

            if (((int)response.StatusCode) >= 400)
            {
                throw new ApiException((int)response.StatusCode, "Error calling CreateTicket: " + response.Content, response.Content);
            }
            else if (((int)response.StatusCode) == 0)
            {
                throw new ApiException((int)response.StatusCode, "Error calling CreateTicket: " + response.ErrorMessage, response.ErrorMessage);
            }

            return((TicketEntry)ApiClient.Deserialize(response.Content, typeof(TicketEntry), response.Headers));
        }
        private TicketBody Read21Body(BinaryReader reader)
        {
            var body       = new TicketBody();
            var bodyHeader = ReadSectionHeader(reader);

            //serial_id
            var serialHeader = ReadValueHeader(reader);

            body.SerialId = reader.ReadBytes(serialHeader.Length);

            //issuer_id
            var issuerHeader = ReadValueHeader(reader);

            body.IssuerId = reader.ReadUInt32Be();

            //issued_date
            var issuedDateHeader = ReadValueHeader(reader);

            body.IssuedDate = reader.ReadUInt64Be();

            //expire_date
            var expireDateHeader = ReadValueHeader(reader);

            body.ExpireDate = reader.ReadUInt64Be();

            //user_id
            var userIdHeader = ReadValueHeader(reader);

            body.UserId = reader.ReadUInt64Be();

            //online_id
            var usernameHeader = ReadValueHeader(reader);

            //TODO: confirm utf8
            body.Username = Encoding.ASCII.GetString(reader.ReadBytes(usernameHeader.Length)).TrimEnd('\0');

            //region/lang
            var regionHeader = ReadValueHeader(reader);

            body.Region   = Encoding.ASCII.GetString(reader.ReadBytes(3)).TrimEnd('\0');
            body.Language = reader.ReadByte();

            //domain
            var domainHeader = ReadValueHeader(reader);

            body.Domain = Encoding.ASCII.GetString(reader.ReadBytes(domainHeader.Length)).TrimEnd('\0');

            //service_id
            var serviceHeader = ReadValueHeader(reader);

            body.ServiceId = reader.ReadBytes(serviceHeader.Length);

            //age/status
            var statusHeader = ReadValueHeader(reader);

            body.Age = reader.ReadByte();
            reader.ReadByte(); //00
            body.Status = reader.ReadByte();
            reader.ReadByte(); //00

            //TODO: handle these correctly they are just for rpcn for now
            ReadValueHeader(reader); //status_duration
            ReadValueHeader(reader); //dob

            return(body);
        }
        private TicketBody Read30Body(BinaryReader reader)
        {
            var body       = new TicketBody();
            var bodyHeader = ReadSectionHeader(reader);

            //serial_id
            var serialHeader = ReadValueHeader(reader);

            body.SerialId = reader.ReadBytes(serialHeader.Length);

            //issuer_id
            var issuerHeader = ReadValueHeader(reader);

            body.IssuerId = reader.ReadUInt32Be();

            //issued_date
            var issuedDateHeader = ReadValueHeader(reader);

            body.IssuedDate = reader.ReadUInt64Be();

            //expire_date
            var expireDateHeader = ReadValueHeader(reader);

            body.ExpireDate = reader.ReadUInt64Be();

            //user_id
            var userIdHeader = ReadValueHeader(reader);

            body.UserId = reader.ReadUInt64Be();

            //online_id
            var usernameHeader = ReadValueHeader(reader);

            //TODO: confirm utf8
            body.Username = Encoding.ASCII.GetString(reader.ReadBytes(usernameHeader.Length)).TrimEnd('\0');

            //region/lang
            var regionHeader = ReadValueHeader(reader);

            body.Region   = Encoding.ASCII.GetString(reader.ReadBytes(3)).TrimEnd('\0');
            body.Language = reader.ReadByte();

            //domain
            var domainHeader = ReadValueHeader(reader);

            body.Domain = Encoding.ASCII.GetString(reader.ReadBytes(domainHeader.Length)).TrimEnd('\0');

            //service_id
            var serviceHeader = ReadValueHeader(reader);

            body.ServiceId = reader.ReadBytes(serviceHeader.Length);

            //date_of_birth
            var dobHeader = ReadSectionHeader(reader);
            var dob       = new DateOfBirth();

            dob.Year         = reader.ReadUInt16Be();
            dob.Month        = reader.ReadByte();
            dob.Day          = reader.ReadByte();
            body.DateOfBirth = dob;

            //age/status
            var statusHeader = ReadValueHeader(reader);

            body.Age = reader.ReadByte();
            reader.ReadByte(); //00
            body.Status = reader.ReadByte();
            reader.ReadByte(); //00

            //unknown
            var unknownHeader = ReadSectionHeader(reader);

            ReadValueHeader(reader);

            return(body);
        }