## # This code was generated by # ___ _ _ _ _ _ _ ____ ____ ____ _ ____ ____ _ _ ____ ____ ____ ___ __ __ # | | | | | | | | | __ | | |__| | __ | __ |___ |\ | |___ |__/ |__| | | | |__/ # | |_|_| | |___ | |__| |__| | | | |__] |___ | \| |___ | \ | | | |__| | \ # # Twilio - Bulkexports # This is the public Twilio REST API. # # NOTE: This class is auto generated by OpenAPI Generator. # https://openapi-generator.tech # Do not edit the class manually. # module Twilio module REST class Bulkexports < BulkexportsBase class V1 < Version class ExportContext < InstanceContext class ExportCustomJobList < ListResource ## # Initialize the ExportCustomJobList # @param [Version] version Version that contains the resource # @return [ExportCustomJobList] ExportCustomJobList def initialize(version, resource_type: nil) super(version) # Path Solution @solution = { resource_type: resource_type } @uri = "/Exports/#{@solution[:resource_type]}/Jobs" end ## # Create the ExportCustomJobInstance # @param [String] start_day The start day for the custom export specified as a string in the format of yyyy-mm-dd # @param [String] end_day The end day for the custom export specified as a string in the format of yyyy-mm-dd. End day is inclusive and must be 2 days earlier than the current UTC day. # @param [String] friendly_name The friendly name specified when creating the job # @param [String] webhook_url The optional webhook url called on completion of the job. If this is supplied, `WebhookMethod` must also be supplied. If you set neither webhook nor email, you will have to check your job's status manually. # @param [String] webhook_method This is the method used to call the webhook on completion of the job. If this is supplied, `WebhookUrl` must also be supplied. # @param [String] email The optional email to send the completion notification to. You can set both webhook, and email, or one or the other. If you set neither, the job will run but you will have to query to determine your job's status. # @return [ExportCustomJobInstance] Created ExportCustomJobInstance def create( start_day: nil, end_day: nil, friendly_name: nil, webhook_url: :unset, webhook_method: :unset, email: :unset ) data = Twilio::Values.of({ 'StartDay' => start_day, 'EndDay' => end_day, 'FriendlyName' => friendly_name, 'WebhookUrl' => webhook_url, 'WebhookMethod' => webhook_method, 'Email' => email, }) payload = @version.create('POST', @uri, data: data) ExportCustomJobInstance.new( @version, payload, resource_type: @solution[:resource_type], ) end ## # Lists ExportCustomJobInstance records from the API as a list. # Unlike stream(), this operation is eager and will load `limit` records into # memory before returning. # @param [Integer] limit Upper limit for the number of records to return. stream() # guarantees to never return more than limit. Default is no limit # @param [Integer] page_size Number of records to fetch per request, when # not set will use the default value of 50 records. If no page_size is defined # but a limit is defined, stream() will attempt to read the limit with the most # efficient page size, i.e. min(limit, 1000) # @return [Array] Array of up to limit results def list(limit: nil, page_size: nil) self.stream( limit: limit, page_size: page_size ).entries end ## # Streams Instance records from the API as an Enumerable. # This operation lazily loads records as efficiently as possible until the limit # is reached. # @param [Integer] limit Upper limit for the number of records to return. stream() # guarantees to never return more than limit. Default is no limit # @param [Integer] page_size Number of records to fetch per request, when # not set will use the default value of 50 records. If no page_size is defined # but a limit is defined, stream() will attempt to read the limit with the most # efficient page size, i.e. min(limit, 1000) # @return [Enumerable] Enumerable that will yield up to limit results def stream(limit: nil, page_size: nil) limits = @version.read_limits(limit, page_size) page = self.page( page_size: limits[:page_size], ) @version.stream(page, limit: limits[:limit], page_limit: limits[:page_limit]) end ## # When passed a block, yields ExportCustomJobInstance records from the API. # This operation lazily loads records as efficiently as possible until the limit # is reached. def each limits = @version.read_limits page = self.page(page_size: limits[:page_size], ) @version.stream(page, limit: limits[:limit], page_limit: limits[:page_limit]).each {|x| yield x} end ## # Retrieve a single page of ExportCustomJobInstance records from the API. # Request is executed immediately. # @param [String] page_token PageToken provided by the API # @param [Integer] page_number Page Number, this value is simply for client state # @param [Integer] page_size Number of records to return, defaults to 50 # @return [Page] Page of ExportCustomJobInstance def page(page_token: :unset, page_number: :unset, page_size: :unset) params = Twilio::Values.of({ 'PageToken' => page_token, 'Page' => page_number, 'PageSize' => page_size, }) response = @version.page('GET', @uri, params: params) ExportCustomJobPage.new(@version, response, @solution) end ## # Retrieve a single page of ExportCustomJobInstance records from the API. # Request is executed immediately. # @param [String] target_url API-generated URL for the requested results page # @return [Page] Page of ExportCustomJobInstance def get_page(target_url) response = @version.domain.request( 'GET', target_url ) ExportCustomJobPage.new(@version, response, @solution) end # Provide a user friendly representation def to_s '#' end end class ExportCustomJobPage < Page ## # Initialize the ExportCustomJobPage # @param [Version] version Version that contains the resource # @param [Response] response Response from the API # @param [Hash] solution Path solution for the resource # @return [ExportCustomJobPage] ExportCustomJobPage def initialize(version, response, solution) super(version, response) # Path Solution @solution = solution end ## # Build an instance of ExportCustomJobInstance # @param [Hash] payload Payload response from the API # @return [ExportCustomJobInstance] ExportCustomJobInstance def get_instance(payload) ExportCustomJobInstance.new(@version, payload, resource_type: @solution[:resource_type]) end ## # Provide a user friendly representation def to_s '' end end class ExportCustomJobInstance < InstanceResource ## # Initialize the ExportCustomJobInstance # @param [Version] version Version that contains the resource # @param [Hash] payload payload that contains response from Twilio # @param [String] account_sid The SID of the # {Account}[https://www.twilio.com/docs/iam/api/account] that created this ExportCustomJob # resource. # @param [String] sid The SID of the Call resource to fetch. # @return [ExportCustomJobInstance] ExportCustomJobInstance def initialize(version, payload , resource_type: nil) super(version) # Marshaled Properties @properties = { 'friendly_name' => payload['friendly_name'], 'resource_type' => payload['resource_type'], 'start_day' => payload['start_day'], 'end_day' => payload['end_day'], 'webhook_url' => payload['webhook_url'], 'webhook_method' => payload['webhook_method'], 'email' => payload['email'], 'job_sid' => payload['job_sid'], 'details' => payload['details'], 'job_queue_position' => payload['job_queue_position'], 'estimated_completion_time' => payload['estimated_completion_time'], } end ## # @return [String] The friendly name specified when creating the job def friendly_name @properties['friendly_name'] end ## # @return [String] The type of communication – Messages, Calls, Conferences, and Participants def resource_type @properties['resource_type'] end ## # @return [String] The start day for the custom export specified when creating the job def start_day @properties['start_day'] end ## # @return [String] The end day for the export specified when creating the job def end_day @properties['end_day'] end ## # @return [String] The optional webhook url called on completion of the job. If this is supplied, `WebhookMethod` must also be supplied. def webhook_url @properties['webhook_url'] end ## # @return [String] This is the method used to call the webhook on completion of the job. If this is supplied, `WebhookUrl` must also be supplied. def webhook_method @properties['webhook_method'] end ## # @return [String] The optional email to send the completion notification to def email @properties['email'] end ## # @return [String] The unique job_sid returned when the custom export was created def job_sid @properties['job_sid'] end ## # @return [Hash] The details of a job which is an object that contains an array of status grouped by `status` state. Each `status` object has a `status` string, a count which is the number of days in that `status`, and list of days in that `status`. The day strings are in the format yyyy-MM-dd. As an example, a currently running job may have a status object for COMPLETED and a `status` object for SUBMITTED each with its own count and list of days. def details @properties['details'] end ## # @return [String] This is the job position from the 1st in line. Your queue position will never increase. As jobs ahead of yours in the queue are processed, the queue position number will decrease def job_queue_position @properties['job_queue_position'] end ## # @return [String] this is the time estimated until your job is complete. This is calculated each time you request the job list. The time is calculated based on the current rate of job completion (which may vary) and your job queue position def estimated_completion_time @properties['estimated_completion_time'] end ## # Provide a user friendly representation def to_s "" end ## # Provide a detailed, user friendly representation def inspect "" end end end end end end end