The Scripted API Client

Setup

Install via RubyGems:

gem install scripted_client

Or a Gemfile:

gem 'scripted_client'

In an initializer, set up your account organization_key and access token. For example:

# config/initializers/scripted.rb
ScriptedClient.organization_key = 'orangutan'
ScriptedClient.access_token = 'make-great-pets'

In production, make sure you set the environment to :production

ScriptedClient.env = :production

Otherwise, it will be :sandbox by default. Contact us for a Sandbox Account!

Creating a Job

First, find a JobTemplate that you'd like to use:

templates = ScriptedClient::JobTemplate.all
blog_post = templates.find { |template| template.name == 'Standard Blog Post' }

Next, assign some values for the Prompts on that JobTemplate. Prompts are question/answer pairs that help guorganization_keye your writer. They can be one of five kinds: string[255] string[1024] radio checkbox array. The data type of the value that you post will depend on the kind of the Prompt:

Kind Value Type Has value_options?
string[255] String (max. 255 characters) No
string[1024] String (max. 1024 characters) No
radio String Yes
checkbox Array Yes
array Array No

If the prompt has value_options the value you pick has to be one of them.

Here's how you might update a couple of prompt values:

sample_blog = blog_post.prompts.find { |prompt| prompt.label == 'Sample Blog' }
sample_blog.value = 'https://scripted.com/blogs/'
goal = blog_post.prompts.find { |prompt| prompt.label == 'Goal' }
goal.value = ['Informed analysis']
key_points = blog_post.prompts.find { |prompt| prompt.label == 'Key Points' }
key_points.value = ['Orangutans make great pets', 'Normal pets are lame']

Next, you can find an Industry:

industries = ScriptedClient::Industry.all
lifestyle = industries.find { |industry| industry.name == 'Lifestyle & Travel' }

Now you can create the Job!

job = ScriptedClient::Job.new(
  topic: 'Top 10 Reasons to Buy an Orangutan',
  job_template: blog_post,
  industries: [lifestyle]
)
job.save
# => true

Protip If job.save returns false use job.errors.full_messages to see what went wrong.

Retrieving Jobs

Get all jobs using ScriptedClient::Job.all, or be a bit more specific using any of these scopes:

screening writing draft_ready revising final_ready in_progress needs_review accepted rejected finished

For example:

jobs = ScriptedClient::Job.needs_review

There are also scopes on Pitchset: open, closed and requires_action.

If the collection has a next page:

jobs = ScriptedClient::Job.all
jobs.has_next?
# => true

you can retrieve that next page using next:

jobs = ScriptedClient::Job.all
page_two = jobs.next

If you'd like to review the written content itself, use the html_contents method:

job = ScriptedClient::Job.first
job.html_contents

Development

From within this directory, bundle install and run rspec to execute the tests. If you want to use the gem against a local version of the API, set ScriptedClient.env = :development.