Ejemplo n.º 1
0
        /// <summary>
        /// Create new record in ServiceNow using its Table API
        /// </summary>
        /// <typeparam name="T">Record type</typeparam>
        /// <param name="record">Instance of Record type</param>
        /// <returns></returns>
        public Task <RestResponseSingle <T> > Post <T>(T record) where T : Record, new()
        {
            if (record == null)
            {
                throw new ArgumentNullException(nameof(record));
            }
            if (record.Equals(new T()))
            {
                throw new ArgumentException("The record cannot be empty.", nameof(record));
            }
            if (record.Id != null)
            {
                throw new ArgumentException("The record cannot contain an ID when creating.", nameof(record));
            }

            return(Post <RestResponseSingle <T>, T>($"{GetUrl<T>()}?sysparm_fields={RecordTable.GetFieldList<T>()}", record));
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Get ServiceNow records of type T (which must inherit from Record) by a ServiceNow string query
        /// The maximum number of records returned is 100
        /// </summary>
        /// <typeparam name="T">Record type (example: SupportRequest)</typeparam>
        /// <param name="query">ServiceNow string query (example: "number=SR1234567")</param>
        /// <returns></returns>
        public async Task <RestResponseQuery <T> > GetByQuery <T>(string query) where T : Record
        {
            if (query == null)
            {
                throw new ArgumentNullException(nameof(query));
            }

            var response = await Get <RestResponseQuery <T> >($"{GetUrl<T>()}?sysparm_limit=100&sysparm_fields={RecordTable.GetFieldList<T>()}&sysparm_query={query}");

            if (!response.IsError && response.Result.Count == 0)
            {
                response.ErrorMsg = "GET error (NotFound): Empty list";
            }

            return(response);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Get ServiceNow child records by parent RecordNumber
        /// The maximum number of records returned is 5000
        /// </summary>
        /// <typeparam name="T">Record type</typeparam>
        /// <param name="number"></param>
        /// <returns></returns>
        public async Task <RestResponseQuery <T> > GetByParentNumber <T>(RecordNumber number) where T : Record
        {
            if (number == null)
            {
                throw new ArgumentNullException(nameof(number));
            }

            return(await Get <RestResponseQuery <T> >($"{GetUrl<T>()}?sysparm_limit=5000&sysparm_fields={RecordTable.GetFieldList<T>()}&sysparm_query=parent.number={number.Number}"));
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Get ServiceNow record of type T (which must inherit from Record) by id
        /// </summary>
        /// <typeparam name="T">Record type (example: SupportRequest)</typeparam>
        /// <param name="id">ServiceNow sys_id</param>
        /// <returns></returns>
        public Task <RestResponseSingle <T> > GetById <T>(string id) where T : Record
        {
            if (string.IsNullOrWhiteSpace(id))
            {
                throw new ArgumentNullException(nameof(id));
            }
            if (!RecordNumber.IsValidId(id))
            {
                throw new ArgumentException("Invalid record ID.", nameof(id));
            }

            return(Get <RestResponseSingle <T> >($"{GetUrl<T>()}/{id}?sysparm_limit=1&sysparm_fields={RecordTable.GetFieldList<T>()}"));
        }