Skip to main content

Skylab Studio python client

Project description

Skylab Studio Python Client

CircleCI Maintainability Test Coverage

SkylabTech Studio Python client.

studio.skylabtech.ai

Requirements

Installation

$ pip install skylab_studio

Usage

For all examples, assume:

import skylab_studio

api = skylab_studio.api(api_key='YOUR-API-KEY')

Error Handling

By default, the API calls return a response object no matter the type of response.

Endpoints

List all jobs

api.list_jobs()

Create job

payload = {
  'profile_id': 1
}

api.create_job(payload=payload)

For all payload options, consult the API documentation.

Get job

api.get_job(job_id)

Update job

payload = {
  'profile_id': 2
}

api.create_job(job_id, payload=payload)

For all payload options, consult the API documentation.

Queue job

payload = {
  "callback_url": "desired_callback_url"
}

api.queue_job(job_id, payload)

Delete job

api.delete_job(job_id)

Cancel job

api.cancel_job(job_id)

Jobs in front

Use after queueing job to check number of jobs ahead of yours

api.fetch_jobs_in_front(job_id)

List all profiles

api.list_profiles()

Create profile

payload = {
  'name': 'My profile'
}

api.create_profile(payload=payload)

For all payload options, consult the API documentation.

Get profile

api.get_profile(profile_id)

Update profile

payload = {
  'name': 'My profile'
}

api.update_profile(profile_id, payload=payload)

For all payload options, consult the API documentation.

List all photos

api.list_photos()

Get photo

api.get_photo(photo_id)

Upload photo

This function handles validating a photo, creating a photo object and uploading it to your job/profile's s3 bucket. If the bucket upload process fails, it retries 3 times and if failures persist, the photo object is deleted.

upload_photo(photo_path, model, model_id)

model can either be 'job' or 'profile'

model_id is the jobs/profiles respective id

api.upload_photo('/path/to/photo', 'job', job_id)

OR

api.upload_photo('/path/to/photo', 'profile', profile_id)

Returns: { photo: { photo_object }, upload_response: bucket_upload_response_status }

If upload fails, the photo object is deleted for you. If upload succeeds and you later decide you no longer want to include that image, use delete_photo to remove it.

Delete photo

This will remove the photo from the job/profile's bucket. Useful for when you've accidentally uploaded an image that you'd like removed.

api.delete_photo(photo_id)

Validate hmac headers

Applicable if you utilize the job callback url. Use to validate the job payload integrity.

  • secret_key (string): Obtain from Skylab

  • job_json (string): Stringified json object obtained from callback PATCH request

  • request_timestamp (string): Obtained from callback PATCH request header 'X-Skylab-Timestamp'

  • signature (string): Signature generated by Skylab to compare. Obtained from callback PATCH request header 'X-Skylab-Signature'

Returns True or False based on whether or not the signatures match.

api.validate_hmac_headers(secret_key, job_json, request_timestamp, signature)

Expected Responses

Success

    >>> response.status_code
    200

    >>> response.json().get('success')
    True

    >>> response.json().get('status')
    u'OK'

    >>> response.json().get('profile_id')
    u'numeric-profile-id'

Error

  • Malformed request
    >>> response.status_code
    422
  • Bad API key
    >>> response.status_code
    403

Troubleshooting

General Troubleshooting

  • Enable debug mode
  • Make sure you're using the latest Python client
  • Capture the response data and check your logs — often this will have the exact error

Enable Debug Mode

Debug mode prints out the underlying request information as well as the data payload that gets sent to Studio. You will most likely find this information in your logs. To enable it, simply put debug=True as a parameter when instantiating the API object. Use the debug mode to compare the data payload getting sent to Studio' API docs.

import skylab_studio

api = skylab_studio.api(api_key='YOUR-API-KEY', debug=True)

Response Ranges

Studio' API typically sends responses back in these ranges:

  • 2xx – Successful Request
  • 4xx – Failed Request (Client error)
  • 5xx – Failed Request (Server error)

If you're receiving an error in the 400 response range follow these steps:

  • Double check the data and ID's getting passed to Studio
  • Ensure your API key is correct
  • Log and check the body of the response

Distribution

To package:

  python -m build
  python -m twine upload dist/*

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

skylab_studio-0.0.9.tar.gz (11.6 kB view hashes)

Uploaded Source

Built Distribution

skylab_studio-0.0.9-py3-none-any.whl (11.0 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page