Back to top

Savio Partners Integration Guide

Introduction

This integration guide provides an overview of the key steps for integrating external applications with Savio. The Savio API allows partners to seamlessly exchange user and project information with the Savio marketplace, and to automate key steps in the project workflow including:

  • Connecting new or existing users

  • Submitting new projects

  • Retrieving status and progress information about projects

  • Exchange files or documents with project team members via Savio’s project room

OAUTH 2.0

Savio uses OAuth 2.0 for user authentication. For more information about OAuth 2.0, please refer to the OAuth 2.0 specification.

REST API

The Savio API is organized around REST-ful calls, using HTTP response codes to indicate status and error conditions. Savio uses built-in HTTP features, such as HTTP authentication and HTTP verbs, which are understood by off-the-shelf HTTP clients. Cross-origin resource sharing is enabled wherever necessary to allow external applications to interact securely with the Savio marketplace from a client-side web application.

(though you should never expose your secret API key in any public website’s client-side code). All API calls return JSON objects as described in this documentation, including errors. The Savio API library will convert responses to appropriate language-specific objects where necessary.

All API requests must be made over HTTPS. Calls made via unsecured HTTP will fail. API requests without authentication will also fail.

All API requests require an application API key. API requests with a missing or invalid key will fail.

API rate limit

There is no hard limit currently enforced on API call frequency or volume. API activity is actively monitored, however; we may contact you if your application’s activity is significantly above what is expected.

Getting started

The Savio integration API is available to use for approved integration partners. Please contact support@savio.pro to request your API key.

You will need to provide:

  • Application Name ( e.g. “Datagame”)

  • Callback URL ( for API integration - e.g. "https://app.dataga.me/savio")

  • Webhook URL ( optional, for receiving events on Savio )

You’ll get two data sets for your production and staging applications: a test set and a production set. The test set should be used to authenticate any requests from a staging or development/test environment, while the production set should be used with your live application. Requests submitted with the test set will not affect live data in the Savio marketplace.

{
    application_name: "Datagame Test",
    redirect_uri: "https://test.datagame.io/savio",
    webhook_uri: "https://test.datagame.io/savio/webhook",
    client_id: 12349571,
    client_secret: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9eyJzdWIiOiI1OGIw"
}

{
    application_name: "Datagame",
    redirect_uri: "https://app.dataga.me/savio",
    webhook_uri: "https://app.dataga.me/savio/webhook",
    client_id: 12349571,
    client_secret: "KFHGhdshrFHFHFGHdkasdaseBVCB834CBDBUSlOFDNysjsfEEEEE"
}

API Integration

Authentication build around The OAuth 2.0.

  1. Build following link or button into your application workflow and open it in a new page or popup.
https://api.savio.pro/oauth/authorize
  ?client_id=client_id
  &name=John+Doe
  &email=john@doe.com

If you pass user’s email and/or name and user is not authenticated on Savio - we will pre-fill registration form with data submitted in URL

  1. After user click this links they see screen with
  • Registration form if user is not authenticated

  • Request to manage projects coming from

  1. If a user did not grant permission, we will redirect back to previously provided redirect_uri with:
{redirect_uri}
  ?error=access_denied
  &error_description=Access+denied
  1. If user did authorized, we’ll redirect to redirect_uri with:
{redirect_uri}
  ?code=AUTHORIZATION_CODE

To access Savio REST API you must exchange AUTHORIZATION_CODE you have received at step 4 to access_token. Do the following request:

POST https://api.savio.pro/oauth/token

Content-Type: application/x-www-form-urlencoded

  client_id=client_id
  &client_secret=client_secret
  &grant_type=authorization_code
  &code=AUTHORIZATION_CODE

You will get following response, together with information about the user

{
    "token_type": "bearer",
    "access_token": "ACCESS_TOKEN",
    "expires_in": 3600,
    "refresh_token": "REFRESH_TOKEN"
}
  1. Your new token will expire after set numbers of seconds. To get new token refresh it by making:
POST https://api.savio.pro/oauth/token

Content-Type: application/x-www-form-urlencoded

  client_id=client_id
  &client_secret=client_secret
  &grant_type=refresh_token
  &refresh_token=REFRESH_TOKEN
  1. Now you have full access to Savio API on behave of authenticated user. Just add this to headers with every API call you going to make:
Authorization: Bearer ACCESS_TOKEN

  1. Because a user may have more then one profile ( be a member of multiple companies for example ), you must specify which profile will own the project. First get list of all profiles for the user ( newly created user will only have one profile )
GET /api/profiles?scope=mine
  1. And then submit new project with given profile id and project data
POST /api/projects
  1. We will find best experts ready to take on the project and typically within few hours notify user by email about new proposals. If you have webhooks enabled, we will POST to your server with each proposal details.

  2. You may want to list all projects sent in your application by calling

GET /projects
  1. You may also show experts responded to specific project and their summary data, ranking or proposal details.
GET /orders/?project=id

POST Integration

POST Integration is the most simple way to integrate with Savio. We provide special URL where you can make POST request with details about user and their project and we’ll take it from there.

POST https://api.savio.pro/platform/post_project?client_id=client_id
{
  "nda": [
    "http://yoursite.com/nda.docx"
  ],
  "documents": [
    "http://yoursite.com/specification.docx"
  ],
  "milestones": [
    {
      "name": "Milestone 1",
      "description": "Milestone Description",
      "starts_at": "2017-05-25",
      "ends_at": "2017-05-25"
    }
  ],
  "status": "active",
  "name": "Project Name",
  "description": "Project Description",
  "options": {
    "starts_at": "2017-05-25",
    "ends_at": "2017-05-30",
    "bill_by": "hour",
    "rates": {
      "min": 25000,
      "max": 50000
    },
    "hours_per_week": 40,
    "skills": ["ca0000000000000000000001"],
    "technologies": ["cb0000000000000000000001"],
    "expertises": ["cc0000000000000000000002"],
    "certificates": ["ce0000000000000000000001"]
  }
}

When we receive this request we will:

  1. Validate your client id

  2. Validate if referrer domain the same as callback URL

  3. Download submitted files and save data to Local Storage

  4. Redirect user to signup page with your application branded section if user is not authenticated

  5. Pre-fill registration form with submitted user name and email

  1. Upon successful signup redirect user to project creation screen with data pre-filled

  2. Adding branded section on top to indicate how we got the data and options to continue to clean the form

Data provided by "Application Name" (Keep) (Discard)

where

  • Application Name – name of your oAuth application

  • Keep - will save the data and close branded section

  • Discard – will clean up the form and close branded section

  1. A user will have option to review project and pick experts before publishing.

Webhooks

Use webhooks to be notified about events that happen in a Savio account. Please contact support@savio.pro to enable this functionality for your application and provide callback URLs for your staging and production environments. We will start sending an HTTP POST request to that URL on every event.

Researcher status updated

Occurs whenever relation with researcher changes. E.g. researcher responded to the invite to bid, researcher sent proposal or their proposal got accepted or declined.

  • Request (POST)

    • Headers

      Content-Type: application/json
    • Body

      {
            "action": "order.change_status",
            "data": {
                "id": "59391d7d4d5a5000158aeba5",
                "project": {
                    "id": "59391d2c4d5a5000158aeba4",
                    "name": "Test",
                    "description": "Test",
                    "status": "active",
                    "milestones": [],
                    "nda": [],
                    "documents": [],
                    "options": {
                        "skills": [],
                        "technologies": [],
                        "expertises": [],
                        "certificates": [],
                        "starts_at": null,
                        "ends_at": null,
                        "bill_by": "hour",
                        "rates": {
                            "min": null,
                            "max": null
                        },
                        "hours_per_week": null
                    },
                    "created_at": "2017-06-08T09:47:24.500Z",
                    "updated_at": "2017-06-08T09:56:13.013Z",
                    "published_at": "2017-06-08T09:56:13.021Z",
                    "user": "5902d95fbae2f2006a44a469",
                    "profile": "5902d95fbae2f2006a44a46a"
                },
                "profile": {
                    "id": "59021429bf7e2a0014bd6db4",
                    "type": "user",
                    "picture": {
                        "default": false,
                        "uuid": "2bf20e9e-6108-484e-a26e-7a4f198312c2",
                        "original": "https://ucarecdn.com/2bf20e9e-6108-484e-a26e-7a4f198312c2/",
                        "small": "https://ucarecdn.com/2bf20e9e-6108-484e-a26e-7a4f198312c2/-/scale_crop/200x200/center/-/quality/better/-/sharp/",
                        "large": "https://ucarecdn.com/2bf20e9e-6108-484e-a26e-7a4f198312c2/-/scale_crop/300x300/center/-/quality/better/-/sharp/"
                    },
                    "name": "Igor Noskov",
                    "expert": true,
                    "rate": 100,
                    "certificates": [],
                    "ratings": {
                        "quality": null,
                        "responsiveness": null,
                        "professionalism": null
                    },
                    "ranking": {
                        "rankings": {
                            "cost": 2,
                            "delivered_on_project_goals": 2,
                            "timeliness": 4,
                            "easy_to_work_with_expert": 2,
                            "understanding_of_business_issue": 4
                        },
                        "reviews_count": 1,
                        "avg": 3
                    },
                    "skills": [
                        "ca0000000000000000000002",
                        "ca0000000000000000000003",
                        "ca0000000000000000000004",
                        "ca0000000000000000000005",
                        "ca0000000000000000000069",
                        "ca0000000000000000000125",
                        "ca0000000000000000000589",
                        "ca0000000000000000000585",
                        "ca0000000000000000000581",
                        "ca0000000000000000000577",
                        "ca0000000000000000000573",
                        "ca0000000000000000000557",
                        "ca0000000000000000000565"
                    ],
                    "skills_rates": []
                },
                "user": "5902d95fbae2f2006a44a469",
                "status": "pending",
                "files": [],
                "created_at": "2017-06-08T09:48:45.683Z",
                "updated_at": "2017-06-08T10:24:37.762Z",
                "status_changed_at": "2017-06-08T10:24:37.752Z",
                "milestone_states": [],
                "reviews": {},
                "relations": {
                    "access": []
                },
                "unread_messages": 0,
                "proposal": null,
                "billed": 0,
                "paid": 0,
                "url": "https://app.savio.pro/projects/59391d2c4d5a5000158aeba4?order=59391d7d4d5a5000158aeba5"
            }
        }

Proposal sent

Occurs whenever researcher sent a proposal. Proposal contains information about billing rate or fixed cost offer, eta, details and additional documents.

  • Request (POST)

    • Headers

      Content-Type: application/json
    • Body

      {
            "action": "order.new_proposal",
            "data": {
                "id": "59391d7d4d5a5000158aeba5",
                "project": {
                    "id": "59391d2c4d5a5000158aeba4",
                    "name": "Test",
                    "description": "Test",
                    "status": "active",
                    "milestones": [],
                    "nda": [],
                    "documents": [],
                    "options": {
                        "skills": [],
                        "technologies": [],
                        "expertises": [],
                        "certificates": [],
                        "starts_at": null,
                        "ends_at": null,
                        "bill_by": "hour",
                        "rates": {
                            "min": null,
                            "max": null
                        },
                        "hours_per_week": null
                    },
                    "created_at": "2017-06-08T09:47:24.500Z",
                    "updated_at": "2017-06-08T09:56:13.013Z",
                    "published_at": "2017-06-08T09:56:13.021Z",
                    "user": "5902d95fbae2f2006a44a469",
                    "profile": "5902d95fbae2f2006a44a46a"
                },
                "profile": {
                    "id": "59021429bf7e2a0014bd6db4",
                    "type": "user",
                    "picture": {
                        "default": false,
                        "uuid": "2bf20e9e-6108-484e-a26e-7a4f198312c2",
                        "original": "https://ucarecdn.com/2bf20e9e-6108-484e-a26e-7a4f198312c2/",
                        "small": "https://ucarecdn.com/2bf20e9e-6108-484e-a26e-7a4f198312c2/-/scale_crop/200x200/center/-/quality/better/-/sharp/",
                        "large": "https://ucarecdn.com/2bf20e9e-6108-484e-a26e-7a4f198312c2/-/scale_crop/300x300/center/-/quality/better/-/sharp/"
                    },
                    "name": "Igor Noskov",
                    "expert": true,
                    "rate": 100,
                    "certificates": [],
                    "ratings": {
                        "quality": null,
                        "responsiveness": null,
                        "professionalism": null
                    },
                    "ranking": {
                        "rankings": {
                            "cost": 2,
                            "delivered_on_project_goals": 2,
                            "timeliness": 4,
                            "easy_to_work_with_expert": 2,
                            "understanding_of_business_issue": 4
                        },
                        "reviews_count": 1,
                        "avg": 3
                    },
                    "skills": [
                        "ca0000000000000000000002",
                        "ca0000000000000000000003",
                        "ca0000000000000000000004",
                        "ca0000000000000000000005",
                        "ca0000000000000000000069",
                        "ca0000000000000000000125",
                        "ca0000000000000000000589",
                        "ca0000000000000000000585",
                        "ca0000000000000000000581",
                        "ca0000000000000000000577",
                        "ca0000000000000000000573",
                        "ca0000000000000000000557",
                        "ca0000000000000000000565"
                    ],
                    "skills_rates": []
                },
                "user": "5902d95fbae2f2006a44a469",
                "status": "pending",
                "files": [],
                "created_at": "2017-06-08T09:48:45.683Z",
                "updated_at": "2017-06-08T10:24:37.762Z",
                "status_changed_at": "2017-06-08T10:24:37.752Z",
                "milestone_states": [],
                "reviews": {},
                "relations": {
                    "access": []
                },
                "unread_messages": 0,
                "proposal": {
                    "type": "hour",
                    "rate": 10000,
                    "text": "Another proposal",
                    "created_at": "2017-06-26T09:47:07.100Z",
                    "accepted_at": null,
                    "declined_at": null,
                    "ended_at": null,
                    "files": [
                        {
                            "uuid": "042b87e1-70d8-4e53-b27a-7ccc4513435c",
                            "original": "https://ucarecdn.com/042b87e1-70d8-4e53-b27a-7ccc4513435c/"
                        }
                    ]
                },
                "billed": 0,
                "paid": 0,
                "url": "https://app.savio.pro/projects/59391d2c4d5a5000158aeba4?order=59391d7d4d5a5000158aeba5"
            }
        }

Profiles

Each user has one or more profiles. Each profile is either a buyer (a user who can create projects) or a seller (a user who can respond to projects).

Resource

GET/profiles?scope=mine

Get list of all profiles associated with authenticated user. Every user have at least one profile. A user may be expert or buyer, belong to the company or act as individual - you are allowed to create project on user’s behave as long as user active and has correct permissions

"relations": {
    "status": "member",
    "access": [
        "projects"
    ]
}

Note: Make sure to get scope=mine query string to get the list of profiles related to the user

Example URI

GET https://api.savio.pro/api/profiles?scope=mine
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
    "pagination": {"page": 1, "per_page": 10, "total": 1},
    "data": [
        {
            "id": "5907839e3ff6ef000189d3ae",
            "user": "5907839e3ff6ef000189d3ad",
            "type": "user",
            "picture": {
                "default": false,
                "uuid": "b4d4ab69-1db1-4e66-9783-3026b86c88e4",
                "original": "https://ucarecdn.com/b4d4ab69-1db1-4e66-9783-3026b86c88e4/",
                "small": "https://ucarecdn.com/b4d4ab69-1db1-4e66-9783-3026b86c88e4/-/scale_crop/200x200/center/-/quality/better/-/sharp/",
                "large": "https://ucarecdn.com/b4d4ab69-1db1-4e66-9783-3026b86c88e4/-/scale_crop/300x300/center/-/quality/better/-/sharp/"
            },
            "name": "Anton Isaykin",
            "address": {
                "country": "GB",
                "city": "London"
            },
            "website": "https://isaykin.com/",
            "pitch": "My pitch goes here.",
            "skills": [
                "ca0000000000000000000002",
                "ca0000000000000000000003",
                "ca0000000000000000000004",
                "ca0000000000000000000005"
            ],
            "technologies": [
                "cb0000000000000000000001"
                "cb0000000000000000000002"
                "cb0000000000000000000003"
            ],
            "expertises": [
                "cc0000000000000000000001"
                "cc0000000000000000000002"
                "cc0000000000000000000003"
            ],
            "skills_rates": [],
            "expert": true,
            "searchable": true,
            "rate": 10000,
            "ranking": {
                "rankings": {
                    "cost": 5,
                    "delivered_on_project_goals": 5,
                    "timeliness": 5,
                    "easy_to_work_with_expert": 5,
                    "understanding_of_business_issue": 5
                },
                "reviews_count": 1,
                "avg": 5
            },
            "certificates": [],
            "favorited": false,
            "relations": {"status": "member", "access": ["projects", "finances", "profile"]},
            "linkedin": {}
        }
    ]
}

Projects

Projects in Savio are the connection between a buyer and a seller. Buyers create projects that describes work available for bid; sellers bid on these projects and interact with the buyer to perform this work, exchange documents and other project artifacts, submit invoices, and receive payment.

Project API endpoints handle project creation and management.

Resource

POST/projects

To create and publish project in the most basic form

{
    "name": "Implement digital marketing plan",
    "description": "I need someone to implement certain areas of a digital marketing strategy for my work as a corporate entertainer.",
    "status": "active",
    "profile": "58af86831ceae30001968b9e",
    "expert_recommendation": true
}
  • status - Project status. Available values are “draft” ( default) , “active”, “completed”, “cancelled”, “archived”.

  • expert_recommendation - Tells Savio admins to start matching proocess.

Note: Please set status to “active” to publish project

Example URI

POST https://api.savio.pro/api/projects
Request
HideShow
Headers
Content-Type: application/json
Body
{
    "name": "Implement digital marketing plan",
    "description": "I need someone to implement certain areas of a digital marketing strategy for my work as a corporate entertainer.",
    "status": "active",
    "milestones": [
        {
            "name": "First Draft",
            "description": "Completion of first draft",
            "starts_at": "2017-03-07",
            "ends_at": "2017-03-13"
        },
        {
            "name": "Final Submission",
            "description": "Final acceptance",
            "starts_at": "2017-03-20",
            "ends_at": "2017-03-15"
        }
    ],
    "nda": [
      "https://cdn.surveymonkey.com/files/d23d4619-79c5-4cd1-9cb8-e79ac8ce2e1c.pdf/"
    ],
    "documents": [
        "https://cdn.surveymonkey.com/files/d23d4619-79c5-4cd1-9cb8-e79ac8ce2e1c.pdf/",
        "https://cdn.surveymonkey.com/files/d23d4619-79c5-4cd1-9cb8-DFFsd.doc/",
        "https://cdn.surveymonkey.com/files/d23d4619-79c5-4cd1-9cb8-DFFsd.mp3"
    ],
    "options": {
        "skills": [
            "ca0000000000000000000013",
            "ca0000000000000000000017",
            "ca0000000000000000000021",
            "ca0000000000000000000025"
        ],
        "technologies": [
            "cb0000000000000000000001"
            "cb0000000000000000000002"
            "cb0000000000000000000003"
        ],
        "expertises": [
            "cc0000000000000000000004"
            "cc0000000000000000000005"
            "cc0000000000000000000006"
        ],
        "certificates": [
            "ce0000000000000000000007"
            "ce0000000000000000000008"
            "ce0000000000000000000009"
        ],
        "starts_at": "2017-03-14",
        "ends_at": "2017-03-22",
        "bill_by": "hour",
        "rates": {
            "min": "10000",
            "max": "20000"
        },
        "hours_per_week": 30
    },
    "profile": "58af86831ceae30001968b9e",
    "expert_recommendation": true
}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
    "data": {
        "id": "58be021ce8c8540001cbacce",
        "name": "Implement digital marketing plan",
        "description": "I need someone to implement certain areas of a digital marketing strategy for my work as a corporate entertainer.",
        "status": "active",
        "milestones": [
            {
                "name": "test",
                "description": "asdsad",
                "starts_at": "2017-03-07",
                "ends_at": "2017-03-13",
                "completed": false,
                "approved": false
            },
            {
                "name": "wewqeqwe",
                "description": "wqewqeqw",
                "starts_at": "2017-03-14",
                "ends_at": "2017-03-15",
                "completed": false,
                "approved": false
            },
            {
                "name": "sadsad",
                "description": "asdsad",
                "starts_at": "2017-03-21",
                "completed": false,
                "approved": false
            }
        ],
        "nda": [
            {
                "name": "cd9f1bbfd9ccf19be6bff09dc837da16_cartoon-seaweed-clipart-1-seaweed-clipart_354-517.jpeg",
                "uuid": "93e7d97b-bcab-425e-b37e-d36bdd7de725",
                "mime_type": "image/jpeg",
                "size": 63862,
                "created_at": "2017-03-07T00:54:40.307Z"
            }
        ],
        "documents": [
            {
                "name": "EricCartman.png",
                "uuid": "1596ddac-4b3d-4a0e-ba1b-36d4fe447d9b",
                "mime_type": "image/png",
                "size": 95908,
                "created_at": "2017-03-07T00:44:09.445Z"
            }
        ],
        "options": {
           "skills": [
               "ca0000000000000000000013",
               "ca0000000000000000000017",
               "ca0000000000000000000021",
               "ca0000000000000000000025"
           ],
           "technologies": [
               "cb0000000000000000000001"
               "cb0000000000000000000002"
               "cb0000000000000000000003"
           ],
           "expertises": [
               "cc0000000000000000000004"
               "cc0000000000000000000005"
               "cc0000000000000000000006"
           ],
           "certificates": [
               "ce0000000000000000000007"
               "ce0000000000000000000008"
               "ce0000000000000000000009"
           ],
            "starts_at": "2017-03-14",
            "ends_at": "2017-03-22",
            "bill_by": "hour",
            "rates": {
                "min": "10000",
                "max": "20000"
            },
            "hours_per_week": 30
        },
        "created_at": "2017-03-07T00:43:08.424Z",
        "updated_at": "2017-03-07T01:08:18.432Z",
        "user": "58a37cd23771b50001015acb",
        "profile": {
            "id": "58af86831ceae30001968b9e",
            "type": "company",
            "picture": {
                "default": true,
                "uuid": null,
                "original": "/assets/images/default-userpic.322b9f343219683c3d546404d06fe23c.svg",
                "small": "/assets/images/default-userpic.322b9f343219683c3d546404d06fe23c.svg",
                "large": "/assets/images/default-userpic.322b9f343219683c3d546404d06fe23c.svg"
            },
            "name": "Uber",
            "expert": false,
            "relations": null
        }
    }
}

Resource

PUT/projects/{id}

After you created project you can update any or all fields.

{
  "status": "active"
}

Example URI

PUT https://api.savio.pro/api/projects/id
URI Parameters
HideShow
id
string (required) 

ID of the project

Request
HideShow
Body
{
    "name": "Implement digital marketing plan",
    "description": "I need someone to implement certain areas of a digital marketing strategy for my work as a corporate entertainer.",
    "status": "active",
    "milestones": [
        {
            "name": "First Draft",
            "description": "Completion of first draft",
            "starts_at": "2017-03-07",
            "ends_at": "2017-03-13",
            "completed": false,
            "approved": false
        },
        {
            "name": "Final Submission",
            "description": "Final acceptance",
            "starts_at": "2017-03-20",
            "ends_at": "2017-03-15",
            "completed": false,
            "approved": false
        }
    ],
    "nda": [
      "https://cdn.surveymonkey.com/files/d23d4619-79c5-4cd1-9cb8-e79ac8ce2e1c.pdf/"
    ],
    "documents": [
        "https://cdn.surveymonkey.com/files/d23d4619-79c5-4cd1-9cb8-e79ac8ce2e1c.pdf/",
        "https://cdn.surveymonkey.com/files/d23d4619-79c5-4cd1-9cb8-DFFsd.doc/",
        "https://cdn.surveymonkey.com/files/d23d4619-79c5-4cd1-9cb8-DFFsd.mp3"
    ],
    "options": {
           "skills": [
               "ca0000000000000000000013",
               "ca0000000000000000000017",
               "ca0000000000000000000021",
               "ca0000000000000000000025"
           ],
           "technologies": [
               "cb0000000000000000000001"
               "cb0000000000000000000002"
               "cb0000000000000000000003"
           ],
           "expertises": [
               "cc0000000000000000000004"
               "cc0000000000000000000005"
               "cc0000000000000000000006"
           ],
           "certificates": [
               "ce0000000000000000000007"
               "ce0000000000000000000008"
               "ce0000000000000000000009"
           ],
            "starts_at": "2017-03-14",
            "ends_at": "2017-03-22",
            "bill_by": "hour",
            "rates": {
                "min": "10000",
                "max": "20000"
            },
            "hours_per_week": 30
    },
    "expert_recommendation": true
}
Response  200
HideShow
Body
{
    "data": {
        "id": "58be021ce8c8540001cbacce",
        "name": "Implement digital marketing plan",
        "description": "I need someone to implement certain areas of a digital marketing strategy for my work as a corporate entertainer.",
        "status": "active",
        "milestones": [
            {
                "name": "test",
                "description": "asdsad",
                "starts_at": "2017-03-07",
                "ends_at": "2017-03-13",
                "completed": false,
                "approved": false
            },
            {
                "name": "wewqeqwe",
                "description": "wqewqeqw",
                "starts_at": "2017-03-14",
                "ends_at": "2017-03-15",
                "completed": false,
                "approved": false
            },
            {
                "name": "sadsad",
                "description": "asdsad",
                "starts_at": "2017-03-21",
                "completed": false,
                "approved": false
            }
        ],
        "nda": [
            {
                "name": "cd9f1bbfd9ccf19be6bff09dc837da16_cartoon-seaweed-clipart-1-seaweed-clipart_354-517.jpeg",
                "uuid": "93e7d97b-bcab-425e-b37e-d36bdd7de725",
                "mime_type": "image/jpeg",
                "size": 63862,
                "created_at": "2017-03-07T00:54:40.307Z"
            }
        ],
        "documents": [
            {
                "name": "EricCartman.png",
                "uuid": "1596ddac-4b3d-4a0e-ba1b-36d4fe447d9b",
                "mime_type": "image/png",
                "size": 95908,
                "created_at": "2017-03-07T00:44:09.445Z"
            }
        ],
        "options": {
           "skills": [
               "ca0000000000000000000013",
               "ca0000000000000000000017",
               "ca0000000000000000000021",
               "ca0000000000000000000025"
           ],
           "technologies": [
               "cb0000000000000000000001"
               "cb0000000000000000000002"
               "cb0000000000000000000003"
           ],
           "expertises": [
               "cc0000000000000000000004"
               "cc0000000000000000000005"
               "cc0000000000000000000006"
           ],
           "certificates": [
               "ce0000000000000000000007"
               "ce0000000000000000000008"
               "ce0000000000000000000009"
           ],
            "starts_at": "2017-03-14",
            "ends_at": "2017-03-22",
            "bill_by": "hour",
            "rates": {
                "min": "10000",
                "max": "20000"
            },
            "hours_per_week": 30
        },
        "created_at": "2017-03-07T00:43:08.424Z",
        "updated_at": "2017-03-07T01:08:18.432Z",
        "user": "58a37cd23771b50001015acb",
        "profile": {
            "id": "58af86831ceae30001968b9e",
            "type": "company",
            "picture": {
                "default": true,
                "uuid": null,
                "original": "/assets/images/default-userpic.322b9f343219683c3d546404d06fe23c.svg",
                "small": "/assets/images/default-userpic.322b9f343219683c3d546404d06fe23c.svg",
                "large": "/assets/images/default-userpic.322b9f343219683c3d546404d06fe23c.svg"
            },
            "name": "Uber",
            "expert": false,
            "relations": null
        },
        "expert_recommendation": true
    }
}

Resource

GET/projects/{id}

Get project details

Example URI

GET https://api.savio.pro/api/projects/id
URI Parameters
HideShow
id
string (required) 

ID of the project

Response  200
HideShow
Body
{
    "data": {
        "id": "58be021ce8c8540001cbacce",
        "name": "Implement digital marketing plan",
        "description": "I need someone to implement certain areas of a digital marketing strategy for my work as a corporate entertainer.",
        "status": "active",
        "milestones": [
            {
                "name": "test",
                "description": "asdsad",
                "starts_at": "2017-03-07",
                "ends_at": "2017-03-13",
                "completed": false,
                "approved": false
            },
            {
                "name": "wewqeqwe",
                "description": "wqewqeqw",
                "starts_at": "2017-03-14",
                "ends_at": "2017-03-15",
                "completed": false,
                "approved": false
            },
            {
                "name": "sadsad",
                "description": "asdsad",
                "starts_at": "2017-03-21",
                "completed": false,
                "approved": false
            }
        ],
        "nda": [
            {
                "name": "cd9f1bbfd9ccf19be6bff09dc837da16_cartoon-seaweed-clipart-1-seaweed-clipart_354-517.jpeg",
                "uuid": "93e7d97b-bcab-425e-b37e-d36bdd7de725",
                "mime_type": "image/jpeg",
                "size": 63862,
                "created_at": "2017-03-07T00:54:40.307Z",
                "user": "58a37cd23771b50001015acb"
            }
        ],
        "documents": [
            {
                "name": "EricCartman.png",
                "uuid": "1596ddac-4b3d-4a0e-ba1b-36d4fe447d9b",
                "mime_type": "image/png",
                "size": 95908,
                "created_at": "2017-03-07T00:44:09.445Z",
                "user": "58a37cd23771b50001015acb"
            }
        ],
        "options": {
            "skills": [
                "ca0000000000000000000013",
                "ca0000000000000000000017",
                "ca0000000000000000000021",
                "ca0000000000000000000025"
            ],
             "technologies": [
                "cb0000000000000000000001"
                "cb0000000000000000000002"
                "cb0000000000000000000003"
            ],
            "expertises": [
                "cc0000000000000000000001"
                "cc0000000000000000000002"
                "cc0000000000000000000003"
            ],
            "starts_at": "2017-03-14",
            "ends_at": "2017-03-22",
            "bill_by": "hour",
            "rates": {
                "min": "10000",
                "max": "20000"
            },
            "hours_per_week": 30
        },
        "created_at": "2017-03-07T00:43:08.424Z",
        "updated_at": "2017-03-07T01:08:18.432Z",
        "user": "58a37cd23771b50001015acb",
        "profile": {
            "id": "58af86831ceae30001968b9e",
            "type": "company",
            "picture": {
                "default": true,
                "uuid": null,
                "original": "/assets/images/default-userpic.322b9f343219683c3d546404d06fe23c.svg",
                "small": "/assets/images/default-userpic.322b9f343219683c3d546404d06fe23c.svg",
                "large": "/assets/images/default-userpic.322b9f343219683c3d546404d06fe23c.svg"
            },
            "name": "Uber",
            "expert": false,
            "relations": null
        },
        "experts_selected_by": "admin"
    }
}

Resource

GET/projects

Get a list of projects in various states related to authenticated user. Includes drafts, offered and archived projects.

Example URI

GET https://api.savio.pro/api/projects
URI Parameters
HideShow
scope
enum (required) 

filters project by project types.

Choices: my active archived

Response  200
HideShow
Body
{
  "pagination": {
    "page": 1,
    "per_page": 10,
    "total": 5
  },
  "data": [
    {
      "id": "58b0ce4df1f0570001385d10",
      "name": "Branding new business",
      "description": "I need good name",
      "status": "draft",
      "milestones": [],
      "nda": [],
      "documents": [],
      "options": {
        "skills": [],
        "technologies": [],
        "expertises": [],
        "certificates": [],
        "starts_at": null,
        "ends_at": null,
        "bill_by": "hour",
        "rates": {
          "min": null,
          "max": null
        },
        "hours_per_week": null
      },
      "created_at": "2017-02-25T00:22:37.706Z",
      "updated_at": "2017-02-25T00:24:29.030Z",
      "user": "58b0c85bf1f0570001385d0d",
      "profile": {
        "id": "58b0c85bf1f0570001385d0e",
        "type": "user",
        "picture": {
          "default": true,
          "uuid": null,
          "original": "/assets/images/default-userpic.322b9f343219683c3d546404d06fe23c.svg",
          "small": "/assets/images/default-userpic.322b9f343219683c3d546404d06fe23c.svg",
          "large": "/assets/images/default-userpic.322b9f343219683c3d546404d06fe23c.svg"
        },
        "name": "Joe Savio",
        "expert": false,
        "relations": null
      },
      "url": "https://app.savio.pro/projects/58b0ce4df1f0570001385d10"
    },
    {
      "id": "58b0ce3bf1f0570001385d0f",
      "status": "draft",
      "milestones": [],
      "nda": [],
      "documents": [],
      "options": {
        "skills": [],
        "technologies": [],
        "expertises": [],
        "certificates": [],
        "starts_at": null,
        "ends_at": null,
        "bill_by": null,
        "rates": {
          "min": null,
          "max": null
        },
        "hours_per_week": null
      },
      "created_at": "2017-02-25T00:22:19.315Z",
      "user": "58b0c85bf1f0570001385d0d",
      "profile": {
        "id": "58b0c85bf1f0570001385d0e",
        "type": "user",
        "picture": {
          "default": true,
          "uuid": null,
          "original": "/assets/images/default-userpic.322b9f343219683c3d546404d06fe23c.svg",
          "small": "/assets/images/default-userpic.322b9f343219683c3d546404d06fe23c.svg",
          "large": "/assets/images/default-userpic.322b9f343219683c3d546404d06fe23c.svg"
        },
        "name": "Joe Savio",
        "expert": false,
        "relations": null
      },
      "url": "https://app.savio.pro/projects/58b0ce3bf1f0570001385d0f"
    },
    {
      "id": "58b0cee9f1f0570001385d11",
      "status": "draft",
      "milestones": [],
      "nda": [],
      "documents": [],
      "options": {
        "skills": [],
        "technologies": [],
        "expertises": [],
        "certificates": [],
        "starts_at": null,
        "ends_at": null,
        "bill_by": null,
        "rates": {
          "min": null,
          "max": null
        },
        "hours_per_week": null
      },
      "created_at": "2017-02-25T00:25:13.702Z",
      "user": "58b0c85bf1f0570001385d0d",
      "profile": {
        "id": "58b0c85bf1f0570001385d0e",
        "type": "user",
        "picture": {
          "default": true,
          "uuid": null,
          "original": "/assets/images/default-userpic.322b9f343219683c3d546404d06fe23c.svg",
          "small": "/assets/images/default-userpic.322b9f343219683c3d546404d06fe23c.svg",
          "large": "/assets/images/default-userpic.322b9f343219683c3d546404d06fe23c.svg"
        },
        "name": "Joe Savio",
        "expert": false,
        "relations": null
      },
      "url": "https://app.savio.pro/projects/58b0cee9f1f0570001385d11"
    },
    {
      "id": "58b0cf25f1f0570001385d12",
      "status": "draft",
      "milestones": [],
      "nda": [],
      "documents": [],
      "options": {
        "skills": [],
        "technologies": [],
        "expertises": [],
        "certificates": [],
        "starts_at": null,
        "ends_at": null,
        "bill_by": null,
        "rates": {
          "min": null,
          "max": null
        },
        "hours_per_week": null
      },
      "created_at": "2017-02-25T00:26:13.094Z",
      "user": "58b0c85bf1f0570001385d0d",
      "profile": {
        "id": "58b0c85bf1f0570001385d0e",
        "type": "user",
        "picture": {
          "default": true,
          "uuid": null,
          "original": "/assets/images/default-userpic.322b9f343219683c3d546404d06fe23c.svg",
          "small": "/assets/images/default-userpic.322b9f343219683c3d546404d06fe23c.svg",
          "large": "/assets/images/default-userpic.322b9f343219683c3d546404d06fe23c.svg"
        },
        "name": "Joe Savio",
        "expert": false,
        "relations": null
      },
      "url": "https://app.savio.pro/projects/58b0cf25f1f0570001385d12"
    },
    {
      "id": "58b0cf7ef1f0570001385d13",
      "status": "draft",
      "milestones": [],
      "nda": [],
      "documents": [],
      "options": {
        "skills": [],
        "technologies": [],
        "expertises": [],
        "certificates": [],
        "starts_at": null,
        "ends_at": null,
        "bill_by": null,
        "rates": {
          "min": null,
          "max": null
        },
        "hours_per_week": null
      },
      "created_at": "2017-02-25T00:27:42.377Z",
      "user": "58b0c85bf1f0570001385d0d",
      "profile": {
        "id": "58b0c85bf1f0570001385d0e",
        "type": "user",
        "picture": {
          "default": true,
          "uuid": null,
          "original": "/assets/images/default-userpic.322b9f343219683c3d546404d06fe23c.svg",
          "small": "/assets/images/default-userpic.322b9f343219683c3d546404d06fe23c.svg",
          "large": "/assets/images/default-userpic.322b9f343219683c3d546404d06fe23c.svg"
        },
        "name": "Joe Savio",
        "expert": false,
        "relations": null
      },
      "url": "https://app.savio.pro/projects/58b0cf7ef1f0570001385d13"
    }
  ]
}

Researchers

Resource

GET/orders/?project=id

This endpoint returns list of researchers associated with the project in different states alone with details about their submitted proposals.

Example URI

GET https://api.savio.pro/api/orders/?project=id
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
    "params": {},
    "pagination": {
        "page": 1,
        "per_page": 10,
        "total": 1
    },
    "data": [
        {
            "id": "5909a91ab3c5d000017a6563"
            "profile": {
                "id": "590778c13ff6ef000189d35e",
                "type": "user",
                "picture": {
                    "default": false,
                    "uuid": "b49abaa7-4fc6-4cde-b050-4f8e3322e0f4",
                    "original": "https://ucarecdn.com/b49abaa7-4fc6-4cde-b050-4f8e3322e0f4/",
                    "small": "https://ucarecdn.com/b49abaa7-4fc6-4cde-b050-4f8e3322e0f4/-/scale_crop/200x200/center/-/quality/better/-/sharp/",
                    "large": "https://ucarecdn.com/b49abaa7-4fc6-4cde-b050-4f8e3322e0f4/-/scale_crop/300x300/center/-/quality/better/-/sharp/"
                },
                "name": "Peter Byrnes",
                "rate": 15500,
            }
      "status": "pending",
            "created_at": "2017-05-03T09:55:38.052Z",
            "updated_at": "2017-05-05T04:28:39.971Z",
            "unread_messages": 0,
            "proposal": null
            "url": "https://app.savio.pro/projects/59088d5f3ff6ef000189d3f1?order=5909a91ab3c5d000017a6563"
        }
    ]
}

Categories

Resource

GET/skills

Get the list of skills.

Example URI

GET https://api.savio.pro/api/skills
Response  200
HideShow
Body
{
    "data": [
        {
            "id": "ca0000000000000000000000",
            "name": "Advertising Research"
        },
        {
            "id": "ca0000000000000000000001",
            "name": "General",
            "parent": "ca0000000000000000000000"
        },
        {
            "id": "ca0000000000000000000002",
            "name": "Advertising Effectiveness",
            "parent": "ca0000000000000000000000"
        },
        {
            "id": "ca0000000000000000000003",
            "name": "Advertising Response Modeling",
            "parent": "ca0000000000000000000000"
        },
        {
            "id": "ca0000000000000000000004",
            "name": "Advertising Tracking",
            "parent": "ca0000000000000000000000"
        },
        ...
    ]
}

Resource

GET/technologies

Get the list of technologies.

Example URI

GET https://api.savio.pro/api/technologies
Response  200
HideShow
Body
{
    "data": [
        {
            "id": "cb0000000000000000000000",
            "name": "Analytics"
        },
        {
            "id": "cb0000000000000000000001",
            "name": "AlchemyAPI",
            "parent": "cb0000000000000000000000"
        },
        {
            "id": "cb0000000000000000000002",
            "name": "Ascribe",
            "parent": "cb0000000000000000000000"
        },
        {
            "id": "cb0000000000000000000003",
            "name": "Attensity",
            "parent": "cb0000000000000000000000"
        },
        ...
    ]
}

Resource

GET/expertises

Get the list of expertises.

Example URI

GET https://api.savio.pro/api/expertises
Response  200
HideShow
Body
{
    "data": [
        {
            "id": "ca0000000000000000000000",
            "name": "Advertising Research"
        },
        {
            "id": "ca0000000000000000000001",
            "name": "General",
            "parent": "ca0000000000000000000000"
        },
        {
            "id": "ca0000000000000000000002",
            "name": "Advertising Effectiveness",
            "parent": "ca0000000000000000000000"
        },
        {
            "id": "ca0000000000000000000003",
            "name": "Advertising Response Modeling",
            "parent": "ca0000000000000000000000"
        },
        {
            "id": "ca0000000000000000000004",
            "name": "Advertising Tracking",
            "parent": "ca0000000000000000000000"
        },
        ...
    ]
}

Resource

GET/certificates

Get the list of certificates.

Example URI

GET https://api.savio.pro/api/certificates
Response  200
HideShow
Body
{
    "data": [
        {
            "id": "ce0000000000000000000000",
            "name": "Survey Platforms"
        },
        {
            "id": "ce0000000000000000000001",
            "name": "AYTM",
            "parent": "ce0000000000000000000000"
        },
        {
            "id": "ce0000000000000000000002",
            "name": "Confirmit",
            "parent": "ce0000000000000000000000"
        },
        {
            "id": "ce0000000000000000000003",
            "name": "Google Surveys",
            "parent": "ce0000000000000000000000"
        },
        ...
    ]
}

Generated by aglio on 18 Aug 2017