Introduction

Good2Go provides an HTTP-based API for integrating with your existing backend. Many functionalities of Good2Go are accessible through these REST APIs. You can use any scripting language to call these APIs. These APIs virtually allow Good2Go to be driven by external systems like an MIS solution, or drive downstream applications such as workflow automation solutions.

This documentation aims to provide necessary information you need to work with our API.

Preface

In Good2Go, everything centers around jobs, their properties, and associated actions. A job can either be a file or a folder.

The first step for an API consumer is to understand four fundamental actions:

  • Creating a job, especially a file;
  • Retrieving a list of available jobs;
  • Obtaining intrinsic properties of a job; and
  • Creating a task associated with a job.

The two most frequently used APIs are: (1) retrieving a list of available jobs, and (2) obtaining intrinsic properties of a job. To get the list of jobs, simply use the API endpoint: api/v1/jobs. This will return a list of jobs already available on Good2Go for the given user.

If the GUID of the job is known then intrinsic properties of job can be retrieve using API: api/v1/jobs/{job_guid}. Where in {job_guid} need to be replaced with GUID of the job. Various properties returned by this API are documented in the respective section.

There are APIs to upload and download the document associated with a job.

There are APIs to add task to a job and send reminders, or update existing task.

There are also few APIs to retrieve past history of the job, get list of reminders, get the customer associated with the job, etc.

API Integration Overview

Job and actions

Each job is associated with several properties. Some properties are fundamental properties of job. Through API, these properties can be read and updated. There are also optional properties which are available (readonly) only when certain condition is meet. The following fundamental properties are worth to mention here:

  • File or folder name.
  • Alternative text for reference.
  • Job is a file or folder.
  • Current status of the job.
  • To whom the job being assigned for a given task.
  • The end customer of the job (especially print buyer).
  • The size of the file.
  • The mime type of the file.
  • The current file version.
  • Some more information about given job type (pdf, image etc.).
  • Due date.

Also several actions can be performed on jobs, such as sending a review request to customer, or sending email for quote approval etc. They are defined in Job notifications section.

Job status

There are eight predefined job statuses:

  • approved,
  • change-requested,
  • done,
  • expired,
  • new,
  • pending,
  • processing, and
  • rejected.

Expired, pending, and processing are internal job statuses, and they can't be set by any API method call.

Expired

Job status is set to expired when job is idle for a predefined time period. A job once expired can be reverted to previous status by simply modifying any properties of the job.

Pending

When a task is initiated, job status is automatically set to pending. For example, when a job is sent for review, its status is set to pending.

Processing

When a print buyer or reviewer opens the task-related page, e.g., the review page, the job status is automatically set to processing.

Alternative text

Every job has an alternative text (alt_text) field. The alternative text field can be used to save a description or information about a job, e.g., MIS order number.

Webhook

Good2Go service internally can notify about a precise event on job. This is a great way to received an event rather than continuously polling the job data from Good2Go to identify changes. Webhook are efficient way to receive events. Webhooks can be used as alerts to keep your workflow or your applications in sync with jobs inside Good2Go. Good2Go webhook can send events to any publicly accessible server.

API Integration Overview

Authentication and Security

You can include HTTP Basic Authentication to the endpoint URL to verify the request is coming from Good2Go servers.

The webhook endpoint are always called from following IP address:

  • 54.144.219.59
  • 3.93.121.127

You can configure endpoint to refuse other IP addresses.

Retry

Good2Go will attempt to send this notification to the specified endpoint(s). The endpoint must respond with a 2XX status code in timely manner. If failed to receive correct status, Good2Go will try three (3) more times after 30 seconds, 5 minutes and 15 minutes respectively.

Payload

It sent only JSON data. The common structure of the event payload is as follows:

  • data: Data specific to the event, if any.
  • event_type: Event type in dotted event type notation.
  • job: Good2Go job structure.
  • job_guid: The GUID of the job for which the event is sent.

For the structure of job parameter refer to Get job information. The data parameter is specific to the event.

Event Type

  • jobs.anonymous.reminder
  • jobs.created
  • jobs.label.changed
  • jobs.preflighted
  • jobs.review.approval
  • jobs.review.message
  • jobs.review.notify
  • jobs.status.changed
  • jobs.task.completed
  • jobs.task.created
  • jobs.task.email.reply
  • jobs.version.changed

Method

Endpoint is always called with HTTP POST request.

Authenticating requests

To authenticate requests, include an Authorization header with the value "Bearer {YOUR_AUTH_KEY}".

All authenticated endpoints are marked with a requires authentication badge in the documentation below.

The authentication key can be retrieved after logging to Good2Go Review application. Visit to integration page, go to API Keys section, register an application name and click Create API token.

Job management

APIs for managing jobs and job information.

Get job list

GET
https://www.review.good2gosoftware.com
/api/v1/jobs
requires authentication

The jobs are filtered by query parameters as described below. The response is paginated data. The number of jobs returned as part of this query depends upon the "Items shown per page" setup in user settings. In the response, the page information can be found inside the meta field.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}

Query Parameters

assignee
string

The assignee options [ any, none, only, user ]
any - jobs assigned to current user or owned by current user
none - jobs which are not assigned to any one
only - jobs are assigned to current user or owned by current user but assigned to another user
user - jobs assigned to current user

customer
string

Customer email address.

date_for
string

The associated field for start and end date. The valid values are [assigned_at, created_at, due_at, reviewed_at, updated_at]. By default, if parameter is not provided, it assume the dates are for 'due_at'.

Example:
reviewed_at
dir_only
boolean

If defined then files are ignored and only folders are selected. (Note: Its value is ignored)

end_date
string

The end date for field defined in 'date_for'. (ISO UTC datetime). For example, 2021-01-25T14:13:10.000Z.

flat
boolean

If 'true' then all kind of jobs (file and folder) are returned. See also 'parent' parameter.

file_only
boolean

If defined then folders are ignored and only files are selected. (Note: Its value is ignored)

label
string

If defined, items with a matching label are selected.

name
string

Name of the job to match.

page
integer

The page number. Number items returns per page depends upon the user settings.

parent
string

The GUID of the parent. If empty then top level (Desktop) items are returned.

p_email
string

Partner email address.

sort_column
string

Valid values are:

  • asg_email
  • created_at
  • customer
  • due_at
  • name
  • owner
  • p_email
  • size
  • updated_at
Example:
created_at
sort_direction
string

Valid values are [ ASC, DESC].

Example:
ASC
state
string

Supported values [ deleted ].
deleted - Returned items found in trash.

status
string

Valid values are:

  • approved
  • change-requested
  • done
  • expired
  • new
  • pending
  • processing
  • rejected

Note, more than one statuses can be combined with '|'.

Example:
approved|rejected
start_date
string

The start date for field defined in 'date_for' (ISO UTC datetime).

Example:
2021-01-25T14:13:10.000Z.
type
string

The document mime type associated with job. For example, application/pdf, text/plain, image/png, etc.

Response Fields

Example request:
curl --request GET \
    --get "https://www.review.good2gosoftware.com/api/v1/jobs?date_for=reviewed_at&sort_column=created_at&sort_direction=ASC&status=approved%7Crejected&start_date=2021-01-25T14%3A13%3A10.000Z." \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response:
{
    "ac": {
        "can_assign": true,
        "can_delete": true,
        "can_edit": true,
        "can_view": true,
        "control_job": true,
        "delete_options": {
            "action": "trash"
        },
        "doc_token": null
    },
    "data": [
        {
            "ac": {
                "can_delete": true,
                "can_download": true,
                "can_edit": true,
                "can_view": true
            },
            "asg_email": "tom.jerry@tj.com",
            "c_email": "my.customer@domain.com",
            "created_at": "2022-06-20T17:05:45.000Z",
            "cus_download": true,
            "deleted_at": null,
            "due_at": "2022-06-30T14:54:22.000Z",
            "guid": "3d6daf30-6f86-4980-8b82-8520e5872986",
            "has_comment": false,
            "is_folder": false,
            "is_own": true,
            "is_portal": false,
            "is_watching": false,
            "locked": false,
            "name": "Image Test File.png",
            "newly_assigned": false,
            "parent_guid": "b17a8274-184c-4cb8-a9a7-5f006f41c0ac",
            "p_email": "partner@domain.com",
            "path_url": "https://www.good2gosoftware.com/review/file/3d6daf30-6f86-4980-8b82-8520e5872986/document/Image%20Test%20File.png?version=25",
            "reminded_at": null,
            "set_to_me": false,
            "size": 14975,
            "source": "in-app",
            "status": "approved",
            "type": "image/png",
            "updated_at": "2022-06-20T17:05:45.000Z",
            "user_email": "niranjanbai@yahoo.com",
            "version": 25
        },
        {
            "ac": {
                "can_delete": true,
                "can_download": true,
                "can_edit": true,
                "can_view": true
            },
            "asg_email": null,
            "c_email": null,
            "created_at": "2022-06-17T18:28:51.000Z",
            "cus_download": false,
            "deleted_at": null,
            "due_at": null,
            "guid": "fe4a0d40-34fd-4050-90ae-f8622b5ac528",
            "has_comment": false,
            "is_folder": true,
            "is_own": true,
            "is_portal": false,
            "is_watching": false,
            "locked": true,
            "name": "Test Folder",
            "newly_assigned": false,
            "parent_guid": "b17a8274-184c-4cb8-a9a7-5f006f41c0ac",
            "p_email": null,
            "path_url": null,
            "reminded_at": null,
            "set_to_me": false,
            "size": 0,
            "source": "in-app",
            "status": "new",
            "type": null,
            "updated_at": "2022-06-17T18:28:51.000Z",
            "user_email": "niranjanbai@yahoo.com",
            "version": 1
        }
    ],
    "guid": "b17a8274-184c-4cb8-a9a7-5f006f41c0ac",
    "links": {
        "first": "https://www.good2gosoftware.com/api/v1/jobs?page=1",
        "last": "https://www.good2gosoftware.com/api/v1/jobs?page=2",
        "prev": null,
        "next": "https://www.good2gosoftware.com/api/v1/jobs?page=2"
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 2,
        "path": "https://www.good2gosoftware.com/api/v1/jobs",
        "per_page": 10,
        "to": 10,
        "total": 12
    },
    "name": "Customer Folder",
    "parent_guid": "",
    "p_email": null
}

Get job information

GET
https://www.review.good2gosoftware.com
/api/v1/jobs/{job_guid}
requires authentication

Get information about the job identified by given GUID.

The return JSON provides all the information about a given job. Few properties worth to mention here are:

  1. Status of the job,
  2. To whom the job being assigned,
  3. The customer of the job,
  4. Any comments added to the job by print buyer,
  5. The size of the job,
  6. File mime type,
  7. The current job version,
  8. Also it provides some more information about given job type (pdf, image etc.).

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}

URL Parameters

job_guid
string
required

The GUID of the job. This can be derived from the list of jobs returned from api api/v1/jobs (Get job information).

Example:
b507769f-f7ec-40d2-bd29-f3825adf83ca.

Response Fields

Example request:
curl --request GET \
    --get "https://www.review.good2gosoftware.com/api/v1/jobs/b507769f-f7ec-40d2-bd29-f3825adf83ca." \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response:
{
    "ac": {
        "can_assign": true,
        "can_delete": true,
        "can_download": false,
        "can_edit": true,
        "can_view": true,
        "control_job": true,
        "delete_options": {
            "action": "trash"
        }
    },
    "asg_email": "tom.jerry@tj.com",
    "asg_name": "Tom",
    "c_email": "my.customer@domain.com",
    "c_name": "My Customer",
    "created_at": "2021-02-06T10:21:06.000Z",
    "cus_download": true,
    "deleted_at": null,
    "due_at": null,
    "guid": "b7926eb4-6726-4917-abfd-e6eed3476e56",
    "has_comment": false,
    "is_folder": false,
    "is_own": true,
    "is_portal": false,
    "is_watching": false,
    "locked": false,
    "more_info": {
        "annotations": {
            "annot_cnt": 0,
            "annot_cnt_plus": false
        },
        "pageCount": 1,
        "pages": [
            {
                "bits": 0,
                "color": "UNKNOWN",
                "height": 922,
                "mime": "image/png",
                "width": 1616
            }
        ]
    },
    "name": "A Test File.png",
    "newly_assigned": false,
    "parent_guid": "f1096786-687e-4e40-87c7-bdb90ef631e7",
    "p_email": "forward.partner@domain.com",
    "path_url": "https://www.good2gosoftware.com/review/file/b7926eb4-6726-4917-abfd-e6eed3476e56/document/A%20Test%20File.png?version=1",
    "p_name": "DEF Printer",
    "size": 582817,
    "source": "in-app",
    "status": "new",
    "type": "image/png",
    "updated_at": "2021-02-06T10:21:06.000Z",
    "version": 1
}
{
    "error": {
        "message": "Resource not found.",
        "status_code": 404
    }
}

Create a new job

POST
https://www.review.good2gosoftware.com
/api/v1/jobs
requires authentication

This method can be used basically to create a folder. You can create a folder by setting the parameter 'is_folder' to 'true'.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json

Body Parameters

Example request:
curl --request POST \
    "https://www.review.good2gosoftware.com/api/v1/jobs" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"alt_text\": \"This is test job. MIS order #12345.\",
    \"c_email\": \"abc@pqr.com\",
    \"cus_download\": false,
    \"due_at\": \"2026-02-14T05:22:35.000Z\",
    \"is_folder\": true,
    \"is_portal\": false,
    \"label\": \"Send for review\",
    \"name\": \"10 Pack Art Side Label - 10mg proof.pdf\",
    \"p_email\": \"def@xyz.com\",
    \"parent_guid\": \"f2d1efca-f9b7-49d4-a937-ada904e8926e\",
    \"show_job_spec\": true,
    \"show_preflight\": false,
    \"status\": \"new\",
    \"type\": \"application\\/pdf\"
}"
Example response:
{
    "ac": {
        "can_assign": true,
        "can_delete": true,
        "can_download": false,
        "can_edit": true,
        "can_view": true,
        "control_job": true,
        "delete_options": {
            "action": "trash"
        }
    },
    "asg_email": "tom.jerry@tj.com",
    "asg_name": "Tom",
    "c_email": "my.customer@domain.com",
    "c_name": "My Customer",
    "created_at": "2021-02-06T10:21:06.000Z",
    "cus_download": true,
    "deleted_at": null,
    "due_at": null,
    "guid": "b7926eb4-6726-4917-abfd-e6eed3476e56",
    "has_comment": false,
    "is_folder": false,
    "is_own": true,
    "is_portal": false,
    "is_watching": false,
    "locked": false,
    "more_info": {
        "annotations": {
            "annot_cnt": 0,
            "annot_cnt_plus": false
        },
        "pageCount": 1,
        "pages": [
            {
                "bits": 0,
                "color": "UNKNOWN",
                "height": 922,
                "mime": "image/png",
                "width": 1616
            }
        ]
    },
    "name": "A Test File.png",
    "newly_assigned": false,
    "parent_guid": "f1096786-687e-4e40-87c7-bdb90ef631e7",
    "p_email": "forward.partner@domain.com",
    "path_url": "https://www.good2gosoftware.com/review/file/b7926eb4-6726-4917-abfd-e6eed3476e56/document/A%20Test%20File.png?version=1",
    "p_name": "DEF Printer",
    "size": 582817,
    "source": "in-app",
    "status": "new",
    "type": "image/png",
    "updated_at": "2021-02-06T10:21:06.000Z",
    "version": 1
}
{
    "error": {
        "message": "Resource not found",
        "status_code": 404
    }
}

Update an existing job

PUT
https://www.review.good2gosoftware.com
/api/v1/jobs/{job_guid}
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json

URL Parameters

job_guid
string
required

The GUID of the job. This can be derived from the list of jobs returned from api api/v1/jobs (Get job information).

Example:
b507769f-f7ec-40d2-bd29-f3825adf83ca.

Body Parameters

Example request:
curl --request PUT \
    "https://www.review.good2gosoftware.com/api/v1/jobs/b507769f-f7ec-40d2-bd29-f3825adf83ca." \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"alt_text\": \"This is test job. MIS order #12345.\",
    \"c_email\": \"abc@pqr.com\",
    \"cus_download\": false,
    \"due_at\": \"2026-02-14T05:22:35.000Z\",
    \"is_folder\": true,
    \"is_portal\": false,
    \"label\": \"Send for review\",
    \"name\": \"10 Pack Art Side Label - 10mg proof.pdf\",
    \"p_email\": \"def@xyz.com\",
    \"parent_guid\": \"f2d1efca-f9b7-49d4-a937-ada904e8926e\",
    \"show_job_spec\": true,
    \"show_preflight\": false,
    \"status\": \"expired\",
    \"type\": \"application\\/pdf\"
}"
Example response:
{
    "ac": {
        "can_assign": true,
        "can_delete": true,
        "can_download": false,
        "can_edit": true,
        "can_view": true,
        "control_job": true,
        "delete_options": {
            "action": "trash"
        }
    },
    "asg_email": "tom.jerry@tj.com",
    "asg_name": "Tom",
    "c_email": "my.customer@domain.com",
    "c_name": "My Customer",
    "created_at": "2021-02-06T10:21:06.000Z",
    "cus_download": true,
    "deleted_at": null,
    "due_at": null,
    "guid": "b7926eb4-6726-4917-abfd-e6eed3476e56",
    "has_comment": false,
    "is_folder": false,
    "is_own": true,
    "is_portal": false,
    "is_watching": false,
    "locked": false,
    "more_info": {
        "annotations": {
            "annot_cnt": 0,
            "annot_cnt_plus": false
        },
        "pageCount": 1,
        "pages": [
            {
                "bits": 0,
                "color": "UNKNOWN",
                "height": 922,
                "mime": "image/png",
                "width": 1616
            }
        ]
    },
    "name": "A Test File.png",
    "newly_assigned": false,
    "parent_guid": "f1096786-687e-4e40-87c7-bdb90ef631e7",
    "p_email": "forward.partner@domain.com",
    "path_url": "https://www.good2gosoftware.com/review/file/b7926eb4-6726-4917-abfd-e6eed3476e56/document/A%20Test%20File.png?version=1",
    "p_name": "DEF Printer",
    "size": 582817,
    "source": "in-app",
    "status": "new",
    "type": "image/png",
    "updated_at": "2021-02-06T10:21:06.000Z",
    "version": 1
}
{
    "error": {
        "message": "Resource not found",
        "status_code": 404
    }
}

Delete an existing job

DELETE
https://www.review.good2gosoftware.com
/api/v1/jobs/{job_guid}
requires authentication

If the trash-on-delete is enabled in the user setting then a live job is moved to trash. If trash-on-delete is disabled in the user setting then job is permanently deleted.

If the delete method is called for a trashed job then it is permanently deleted.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}

URL Parameters

job_guid
string
required

The GUID of the job. This can be derived from the list of jobs returned from api api/v1/jobs (Get job information).

Example:
b507769f-f7ec-40d2-bd29-f3825adf83ca.
Example request:
curl --request DELETE \
    "https://www.review.good2gosoftware.com/api/v1/jobs/b507769f-f7ec-40d2-bd29-f3825adf83ca." \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response:
{}
{
    "error": {
        "message": "Resource not found",
        "status_code": 404
    }
}

Duplicate document

POST
https://www.review.good2gosoftware.com
/api/v1/jobs/{job_guid}/duplicate
requires authentication

It is often useful to be able to create a new document using a previously uploaded file. This avoid repeating the upload process.

This will copy the document and their latest preflight and image metadata, (and annotation for PDF files, if any).

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json

URL Parameters

job_guid
string
required

The guid of the document to be duplicated.

Example:
b507769f-f7ec-40d2-bd29-f3825adf83ca

Body Parameters

Example request:
curl --request POST \
    "https://www.review.good2gosoftware.com/api/v1/jobs/b507769f-f7ec-40d2-bd29-f3825adf83ca/duplicate" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"alt_text\": \"This file is duplicated from Brochure.pdf.\",
    \"c_email\": \"abc@pqr.com\"
}"
Example response:
{
    "ac": {
        "can_assign": true,
        "can_delete": true,
        "can_download": false,
        "can_edit": true,
        "can_view": true,
        "control_job": true,
        "delete_options": {
            "action": "trash"
        }
    },
    "asg_email": "tom.jerry@tj.com",
    "asg_name": "Tom",
    "c_email": "my.customer@domain.com",
    "c_name": "My Customer",
    "created_at": "2021-02-06T10:21:06.000Z",
    "cus_download": true,
    "deleted_at": null,
    "due_at": null,
    "guid": "b7926eb4-6726-4917-abfd-e6eed3476e56",
    "has_comment": false,
    "is_folder": false,
    "is_own": true,
    "is_portal": false,
    "is_watching": false,
    "locked": false,
    "more_info": {
        "annotations": {
            "annot_cnt": 0,
            "annot_cnt_plus": false
        },
        "pageCount": 1,
        "pages": [
            {
                "bits": 0,
                "color": "UNKNOWN",
                "height": 922,
                "mime": "image/png",
                "width": 1616
            }
        ]
    },
    "name": "A Test File.png",
    "newly_assigned": false,
    "parent_guid": "f1096786-687e-4e40-87c7-bdb90ef631e7",
    "p_email": "forward.partner@domain.com",
    "path_url": "https://www.good2gosoftware.com/review/file/b7926eb4-6726-4917-abfd-e6eed3476e56/document/A%20Test%20File.png?version=1",
    "p_name": "DEF Printer",
    "size": 582817,
    "source": "in-app",
    "status": "new",
    "type": "image/png",
    "updated_at": "2021-02-06T10:21:06.000Z",
    "version": 1
}
{
    "error": {
        "message": "Resource not found",
        "status_code": 404
    }
}

Customer


Get job's customer information

GET
https://www.review.good2gosoftware.com
/api/v1/jobs/{job_guid}/customer
requires authentication

This returns information available about the customer associated with this job.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}

URL Parameters

job_guid
string
required

The GUID of the job. This can be derived from the list of jobs returned from api api/v1/jobs (Get job information).

Example:
b507769f-f7ec-40d2-bd29-f3825adf83ca.

Response Fields

Example request:
curl --request GET \
    --get "https://www.review.good2gosoftware.com/api/v1/jobs/b507769f-f7ec-40d2-bd29-f3825adf83ca./customer" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response:
{
    "address": "3456, N Park Meadow Way",
    "alt_phone": "1234567890",
    "c_email": "test.good2go@gmail.com",
    "c_name": "Test Good2Go",
    "city": "New York",
    "company": "Good2Go",
    "created_at": "2020-10-23T16:53:35.000Z",
    "group": "Sales Team",
    "id": 2,
    "identity": "0123456789",
    "phone": "9876543210",
    "state": "NY",
    "updated_at": "2021-02-10T11:20:44.000Z",
    "valid_email": 1,
    "zip_code": "12345"
}
{
    "error": {
        "message": "Customer email not defined.",
        "status_code": 404
    }
}

Update job's customer

PUT
https://www.review.good2gosoftware.com
/api/v1/jobs/{job_guid}/customer
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json

URL Parameters

job_guid
string
required

The GUID of the job. This can be derived from the list of jobs returned from api api/v1/jobs (Get job information).

Example:
b507769f-f7ec-40d2-bd29-f3825adf83ca.

Body Parameters

Response Fields

Example request:
curl --request PUT \
    "https://www.review.good2gosoftware.com/api/v1/jobs/b507769f-f7ec-40d2-bd29-f3825adf83ca./customer" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"address\": \"40 North Canal Street, Shickshinny, PA 12345, United States\",
    \"alt_phone\": \"123-456-7890\",
    \"c_email\": \"ayla.krajcik@example.com\",
    \"c_name\": \"Tom Jerry\",
    \"city\": \"Shickshinny\",
    \"company\": \"Good2Go Software\",
    \"group\": \"abc-company\",
    \"identity\": \"acf093ed\",
    \"phone\": \"234-567-8901\",
    \"state\": \"PA\",
    \"zip_code\": \"12345\"
}"
Example response:
{
    "address": "3456, N Park Meadow Way",
    "alt_phone": "1234567890",
    "c_email": "test.good2go@gmail.com",
    "c_name": "Test Good2Go",
    "city": "New York",
    "company": "Good2Go",
    "created_at": "2020-10-23T16:53:35.000Z",
    "group": "Sales Team",
    "id": 2,
    "identity": "0123456789",
    "phone": "9876543210",
    "state": "NY",
    "updated_at": "2021-02-10T11:20:44.000Z",
    "valid_email": 1,
    "zip_code": "12345"
}

Unassign job's customer

DELETE
https://www.review.good2gosoftware.com
/api/v1/jobs/{job_guid}/customer
requires authentication

Remove job customer associated with given job.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}

URL Parameters

job_guid
string
required

The GUID of the job. This can be derived from the list of jobs returned from api api/v1/jobs (Get job information).

Example:
b507769f-f7ec-40d2-bd29-f3825adf83ca.
Example request:
curl --request DELETE \
    "https://www.review.good2gosoftware.com/api/v1/jobs/b507769f-f7ec-40d2-bd29-f3825adf83ca./customer" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response:
{}

Ownership


Get job owner information

GET
https://www.review.good2gosoftware.com
/api/v1/jobs/{job_guid}/ownership
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}

URL Parameters

job_guid
string
required

The GUID of the job to be transferred.

Example:
odio

Response Fields

Example request:
curl --request GET \
    --get "https://www.review.good2gosoftware.com/api/v1/jobs/odio/ownership" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response:
{
     "guid": "f6ac15ca-e4fa-4e1f-bb94-088ec04d7dab",
     "owner": {
         "email": "abc.pqr@mail.com",
         "full_name": "Abc Pqr",
         ...
     },
     "parent": {
         "c_email": "customer@mail.com"
         "guid": "292fb01f-23ad-4d42-b126-251bd95d2637",
         "name": "Test folder",
         ...
     },
     "parent_guid": "292fb01f-23ad-4d42-b126-251bd95d2637"
}
{
    "error": {
        "message": "Resource not found",
        "status_code": 404
    }
}

Update job owner and parent folder.

POST
https://www.review.good2gosoftware.com
/api/v1/jobs/{job_guid}/ownership
requires authentication

Transfer a job between folders within the same user or move it from one user to another.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json

URL Parameters

job_guid
string
required

The GUID of the job.

Example:
e42b0e73-ba61-40b0-9c04-87af0a50acf5.

Body Parameters

Example request:
curl --request POST \
    "https://www.review.good2gosoftware.com/api/v1/jobs/e42b0e73-ba61-40b0-9c04-87af0a50acf5./ownership" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"parent_guid\": \"f2d1efca-f9b7-49d4-a937-ada904e8926e.\"
}"
Example response:
{
    "ac": {
        "can_assign": true,
        "can_delete": true,
        "can_download": false,
        "can_edit": true,
        "can_view": true,
        "control_job": true,
        "delete_options": {
            "action": "trash"
        }
    },
    "asg_email": "tom.jerry@tj.com",
    "asg_name": "Tom",
    "c_email": "my.customer@domain.com",
    "c_name": "My Customer",
    "created_at": "2021-02-06T10:21:06.000Z",
    "cus_download": true,
    "deleted_at": null,
    "due_at": null,
    "guid": "b7926eb4-6726-4917-abfd-e6eed3476e56",
    "has_comment": false,
    "is_folder": false,
    "is_own": true,
    "is_portal": false,
    "is_watching": false,
    "locked": false,
    "more_info": {
        "annotations": {
            "annot_cnt": 0,
            "annot_cnt_plus": false
        },
        "pageCount": 1,
        "pages": [
            {
                "bits": 0,
                "color": "UNKNOWN",
                "height": 922,
                "mime": "image/png",
                "width": 1616
            }
        ]
    },
    "name": "A Test File.png",
    "newly_assigned": false,
    "parent_guid": "f1096786-687e-4e40-87c7-bdb90ef631e7",
    "p_email": "forward.partner@domain.com",
    "path_url": "https://www.good2gosoftware.com/review/file/b7926eb4-6726-4917-abfd-e6eed3476e56/document/A%20Test%20File.png?version=1",
    "p_name": "DEF Printer",
    "size": 582817,
    "source": "in-app",
    "status": "new",
    "type": "image/png",
    "updated_at": "2021-02-06T10:21:06.000Z",
    "version": 1
}

Partner


Get job's partner information

GET
https://www.review.good2gosoftware.com
/api/v1/jobs/{job_guid}/partner
requires authentication

This returns information available about the partner associated with this job.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}

URL Parameters

job_guid
string
required

The GUID of the job. This can be derived from the list of jobs returned from api api/v1/jobs (Get job information).

Example:
b507769f-f7ec-40d2-bd29-f3825adf83ca.

Response Fields

Example request:
curl --request GET \
    --get "https://www.review.good2gosoftware.com/api/v1/jobs/b507769f-f7ec-40d2-bd29-f3825adf83ca./partner" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response:
{
    "address": "3456, N Park Meadow Way",
    "alt_phone": "1234567890",
    "c_email": "test.good2go@gmail.com",
    "c_name": "Test Good2Go",
    "city": "New York",
    "company": "Good2Go",
    "created_at": "2020-10-23T16:53:35.000Z",
    "group": "Sales Team",
    "id": 2,
    "identity": "0123456789",
    "phone": "9876543210",
    "state": "NY",
    "updated_at": "2021-02-10T11:20:44.000Z",
    "valid_email": 1,
    "zip_code": "12345"
}
{
    "error": {
        "message": "Partner email not defined.",
        "status_code": 404
    }
}

Update job's partner

PUT
https://www.review.good2gosoftware.com
/api/v1/jobs/{job_guid}/partner
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json

URL Parameters

job_guid
string
required

The GUID of the job. This can be derived from the list of jobs returned from api api/v1/jobs (Get job information).

Example:
b507769f-f7ec-40d2-bd29-f3825adf83ca.

Body Parameters

Response Fields

Example request:
curl --request PUT \
    "https://www.review.good2gosoftware.com/api/v1/jobs/b507769f-f7ec-40d2-bd29-f3825adf83ca./partner" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"address\": \"40 North Canal Street, Shickshinny, PA 12345, United States\",
    \"alt_phone\": \"123-456-7890\",
    \"c_email\": \"reinhold.okuneva@example.com\",
    \"c_name\": \"Tom Jerry\",
    \"city\": \"Shickshinny\",
    \"company\": \"Good2Go Software\",
    \"group\": \"abc-company\",
    \"identity\": \"acf093ed\",
    \"phone\": \"234-567-8901\",
    \"state\": \"PA\",
    \"zip_code\": \"12345\"
}"
Example response:
{
    "address": "3456, N Park Meadow Way",
    "alt_phone": "1234567890",
    "c_email": "test.good2go@gmail.com",
    "c_name": "Test Good2Go",
    "city": "New York",
    "company": "Good2Go",
    "created_at": "2020-10-23T16:53:35.000Z",
    "group": "Sales Team",
    "id": 2,
    "identity": "0123456789",
    "phone": "9876543210",
    "state": "NY",
    "updated_at": "2021-02-10T11:20:44.000Z",
    "valid_email": 1,
    "zip_code": "12345"
}
{
    "address": "3456, N Park Meadow Way",
    "alt_phone": "1234567890",
    "c_email": "test.good2go@gmail.com",
    "c_name": "Test Good2Go",
    "city": "New York",
    "company": "Good2Go",
    "created_at": "2020-10-23T16:53:35.000Z",
    "group": "Sales Team",
    "id": 2,
    "identity": "0123456789",
    "phone": "9876543210",
    "state": "NY",
    "updated_at": "2021-02-10T11:20:44.000Z",
    "valid_email": 1,
    "zip_code": "12345"
}

Unassign job's partner

DELETE
https://www.review.good2gosoftware.com
/api/v1/jobs/{job_guid}/partner
requires authentication

Remove job partner associated with given job.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}

URL Parameters

job_guid
string
required

The GUID of the job. This can be derived from the list of jobs returned from api api/v1/jobs (Get job information).

Example:
b507769f-f7ec-40d2-bd29-f3825adf83ca.
Example request:
curl --request DELETE \
    "https://www.review.good2gosoftware.com/api/v1/jobs/b507769f-f7ec-40d2-bd29-f3825adf83ca./partner" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response:
{}

File upload

APIs to upload a new document or update an existing document in a job.

Upload a file revision

POST
https://www.review.good2gosoftware.com
/api/v1/jobs/{job_guid}/revision
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
multipart/form-data

URL Parameters

job_guid
string
required

The guid of the job.

Example:
2dd7f609-d85c-4409-8c12-9fbb494bf549

Body Parameters

Response Fields

Example request:
curl --request POST \
    "https://www.review.good2gosoftware.com/api/v1/jobs/2dd7f609-d85c-4409-8c12-9fbb494bf549/revision" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: multipart/form-data" \
    --form "alt_text=MIS order: 09AB456X321."\
    --form "default[comments]=1"\
    --form "default[reviewers]="\
    --form "default[task]=1"\
    --form "file_url=http://cronin.com/pariatur-iure-aliquam-laudantium-officia-et-nihil"\
    --form "label=Ready for print"\
    --form "name=Test-File.pdf"\
    --form "parent=852215c9-2871-4a28-b9fc-b70b4c166e41"\
    --form "puid=acme-company-east-1"\
    --form "recipient=tom.jerry@tj.com"\
    --form "reviewers[][email]=evalyn.schmitt@example.com"\
    --form "reviewers[][group]=ab"\
    --form "schedule=now"\
    --form "size=789012"\
    --form "task[category]=assign-task"\
    --form "task[due_at]=2024-05-21T15:26:01.000Z"\
    --form "task[name]=Payment reminder"\
    --form "task[req_confirm]="\
    --form "task[status]=ut"\
    --form "type=application/pdf"\
    --form "filekey=@/tmp/phpdRRzKI" 
Example response:
{
    "ac": {
        "can_assign": true,
        "can_delete": true,
        "can_download": false,
        "can_edit": true,
        "can_view": true,
        "control_job": true,
        "delete_options": {
            "action": "trash"
        }
    },
    "asg_email": "tom.jerry@tj.com",
    "asg_name": "Tom",
    "c_email": "my.customer@domain.com",
    "c_name": "My Customer",
    "created_at": "2021-02-06T10:21:06.000Z",
    "cus_download": true,
    "deleted_at": null,
    "due_at": null,
    "guid": "b7926eb4-6726-4917-abfd-e6eed3476e56",
    "has_comment": false,
    "is_folder": false,
    "is_own": true,
    "is_portal": false,
    "is_watching": false,
    "locked": false,
    "more_info": {
        "annotations": {
            "annot_cnt": 0,
            "annot_cnt_plus": false
        },
        "pageCount": 1,
        "pages": [
            {
                "bits": 0,
                "color": "UNKNOWN",
                "height": 922,
                "mime": "image/png",
                "width": 1616
            }
        ]
    },
    "name": "A Test File.png",
    "newly_assigned": false,
    "parent_guid": "f1096786-687e-4e40-87c7-bdb90ef631e7",
    "p_email": "forward.partner@domain.com",
    "path_url": "https://www.good2gosoftware.com/review/file/b7926eb4-6726-4917-abfd-e6eed3476e56/document/A%20Test%20File.png?version=1",
    "p_name": "DEF Printer",
    "size": 582817,
    "source": "in-app",
    "status": "new",
    "type": "image/png",
    "updated_at": "2021-02-06T10:21:06.000Z",
    "version": 1
}

Upload and create a file

POST
https://www.review.good2gosoftware.com
/api/v1/upload
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
multipart/form-data

Body Parameters

Response Fields

Example request:
curl --request POST \
    "https://www.review.good2gosoftware.com/api/v1/upload" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: multipart/form-data" \
    --form "alt_text=File from example customer."\
    --form "default[comments]=1"\
    --form "default[reviewers]="\
    --form "default[task]="\
    --form "file_url=http://hill.com/modi-voluptas-pariatur-sed-veritatis-omnis"\
    --form "label=eum"\
    --form "name=Test-File.pdf"\
    --form "parent=852215c9-2871-4a28-b9fc-b70b4c166e41"\
    --form "puid=acme-company-east-1"\
    --form "recipient=tom.jerry@tj.com"\
    --form "reviewers[][email]=willie.simonis@example.net"\
    --form "reviewers[][group]=aut"\
    --form "schedule=now"\
    --form "size=13"\
    --form "task[category]=review-task"\
    --form "task[due_at]=2024-05-21T15:26:01.000Z"\
    --form "task[name]=Payment reminder"\
    --form "task[req_confirm]="\
    --form "task[status]=paused"\
    --form "type=application/img"\
    --form "filekey=@/tmp/phpXfxywi" 
Example response:
{
    "ac": {
        "can_assign": true,
        "can_delete": true,
        "can_download": false,
        "can_edit": true,
        "can_view": true,
        "control_job": true,
        "delete_options": {
            "action": "trash"
        }
    },
    "asg_email": "tom.jerry@tj.com",
    "asg_name": "Tom",
    "c_email": "my.customer@domain.com",
    "c_name": "My Customer",
    "created_at": "2021-02-06T10:21:06.000Z",
    "cus_download": true,
    "deleted_at": null,
    "due_at": null,
    "guid": "b7926eb4-6726-4917-abfd-e6eed3476e56",
    "has_comment": false,
    "is_folder": false,
    "is_own": true,
    "is_portal": false,
    "is_watching": false,
    "locked": false,
    "more_info": {
        "annotations": {
            "annot_cnt": 0,
            "annot_cnt_plus": false
        },
        "pageCount": 1,
        "pages": [
            {
                "bits": 0,
                "color": "UNKNOWN",
                "height": 922,
                "mime": "image/png",
                "width": 1616
            }
        ]
    },
    "name": "A Test File.png",
    "newly_assigned": false,
    "parent_guid": "f1096786-687e-4e40-87c7-bdb90ef631e7",
    "p_email": "forward.partner@domain.com",
    "path_url": "https://www.good2gosoftware.com/review/file/b7926eb4-6726-4917-abfd-e6eed3476e56/document/A%20Test%20File.png?version=1",
    "p_name": "DEF Printer",
    "size": 582817,
    "source": "in-app",
    "status": "new",
    "type": "image/png",
    "updated_at": "2021-02-06T10:21:06.000Z",
    "version": 1
}

File download

Download document thumbnail

GET
https://www.review.good2gosoftware.com
/review/file/{job_guid}/thumbnail

Return response with file stream or redirect path to download the thumbnail of the document. Only PDF and image type documents are supported.

Headers

Content-Type
Example:
application/json

URL Parameters

job_guid
string
required

The guid of the document.

Example:
6cb815b4-2d56-45bc-aaf5-f45bbc837bb5

Body Parameters

Example request:
curl --request GET \
    --get "https://www.review.good2gosoftware.com/review/file/6cb815b4-2d56-45bc-aaf5-f45bbc837bb5/thumbnail" \
    --header "Content-Type: application/json" \
    --data "{
    \"height\": 38,
    \"width\": 24
}"
Example response:
[Binary data] -  The document thumbnail.

Download document

GET
https://www.review.good2gosoftware.com
/review/download/{job_guid}/document/{name}

To download a document, you can use this method. For PDFs, you have the option to download either the original document or the version with the latest updated annotations by selecting the option with_update. For folders, if they were previously compressed and have not expired, you can download them as a compressed zip file using this method.

URL Parameters

job_guid
string
required

The guid of the document or folder.

Example:
b507769f-f7ec-40d2-bd29-f3825adf83ca.
name
string
required

The name of the document or folder.

Example:
Order Cover Page.pdf

Query Parameters

version
integer

The version fo the document to download.

Example:
18
with_update
boolean

Specifies whether to download the updated annotated PDF document or not. By default (false), the original document is downloaded.

Example:
true
email
string

If specified, the email will be used to log downloader information in job record upon download.

Example:
javier82@example.com
Example request:
curl --request GET \
    --get "https://www.review.good2gosoftware.com/review/download/b507769f-f7ec-40d2-bd29-f3825adf83ca./document/Order Cover Page.pdf?version=18&with_update=1&email=javier82%40example.com"
Example response:
[Binary data] -  The document content or compress folder content.

Job tasks

APIs to send, view, update or delete job related tasks and reminders.

There are several different kind of tasks:

  • anonymous-task (for general reminder)
  • assign-task (for internal colleague in a team)
  • forward-task (for external partner)
  • quote-review-task (for external print buyer)
  • review-task (for external print buyer)
  • revision-task (for external print buyer)
  • upload-task (for external print buyer)

Get default task

GET
https://www.review.good2gosoftware.com
/api/v1/jobs/tasks/default
requires authentication

Return a sample default task of given kind. This can be used to construct a task. If given task kind already exist for the job then existing task is returned.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}

Query Parameters

job_category
string

The job category. The supported values are [file, folder, and order]. Default value is file.

Example:
order
kind
string
required

The task category. The supported values are:

  • anonymous-task
  • assign-task
  • forward-task
  • quote-review-task
  • review-task
  • revision-task
  • upload-task
Example:
review-task

Response Fields

Example request:
curl --request GET \
    --get "https://www.review.good2gosoftware.com/api/v1/jobs/tasks/default?job_category=order&kind=review-task" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response:
{
    "assigned_to": "tom.jerry@abc.com",
    "category": "review-task",
    "created_at": "2021-01-21T06:21:19.000Z",
    "due_at": "2021-01-28T15:42:36.000Z",
    "executed_at": "2021-01-24T06:37:06.000Z",
    "id": 10,
    "job_status": "approved",
    "name": "Proof(s) Review Task",
    "req_confirm": true,
    "status": "done",
    "updated_at": "2021-01-25T09:45:10.000Z"
}

Get task list

GET
https://www.review.good2gosoftware.com
/api/v1/jobs/{job_guid}/tasks
requires authentication

Return all tasks associated with the given job.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}

URL Parameters

job_guid
string
required

The GUID of the job. This can be derived from the list of jobs returned from api api/v1/jobs (Get job information).

Example:
2dd7f609-d85c-4409-8c12-9fbb494bf549.

Query Parameters

kind
string

The task category. The supported values are [review-task, upload-task, revision-task, and assign-task]. May have multiple entries.

Example:
review-task
default
boolean

Get default for task category, if not found.

Example:
true

Response Fields

Example request:
curl --request GET \
    --get "https://www.review.good2gosoftware.com/api/v1/jobs/2dd7f609-d85c-4409-8c12-9fbb494bf549./tasks?kind=review-task&default=1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response:
[
    {
        "assigned_to": "tom.jerry@abc.com",
        "category": "review-task",
        "created_at": "2025-01-21T06:21:19.000Z",
        "due_at": "2025-01-28T15:42:36.000Z",
        "executed_at": "2025-01-24T06:37:06.000Z",
        "id": 10,
        "job_status": "pending",
        "name": "Proof(s) Review Task",
        "req_confirm": true,
        "status": "processing",
        "updated_at": "2025-01-25T09:45:10.000Z"
    },
    {
        "assigned_to": "abc.ijk@company.com",
        "category": "assign-task",
        "created_at": "2025-01-25T06:21:19.000Z",
        "due_at": "2025-01-28T15:42:36.000Z",
        "executed_at": "2025-01-24T06:37:06.000Z",
        "id": 21,
        "job_status": "pending",
        "name": "Assignment Task",
        "req_confirm": false,
        "status": "new",
        "updated_at": "2025-01-25T09:45:10.000Z"
    },
    {
        "assigned_to": "abc.ijk@company.com",
        "category": "upload-task",
        "created_at": "2025-01-25T06:21:19.000Z",
        "due_at": "2025-02-28T15:42:36.000Z",
        "executed_at": "2025-02-24T06:37:06.000Z",
        "id": 21,
        "job_status": "pending",
        "name": "Folder Upload Task",
        "req_confirm": false,
        "status": "paused",
        "updated_at": "2025-02-25T09:45:10.000Z"
    }
]

Get task information

GET
https://www.review.good2gosoftware.com
/api/v1/jobs/{job_guid}/tasks/{id}
requires authentication

Return the information associated with given task of a job.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}

URL Parameters

job_guid
string
required

The GUID of the job. This can be derived from the list of jobs returned from api api/v1/jobs (Get job information).

Example:
2dd7f609-d85c-4409-8c12-9fbb494bf549.
id
integer
required

The ID of the task.

Example:
290

Response Fields

Example request:
curl --request GET \
    --get "https://www.review.good2gosoftware.com/api/v1/jobs/2dd7f609-d85c-4409-8c12-9fbb494bf549./tasks/290" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response:
{
    "assigned_to": "tom.jerry@abc.com",
    "category": "review-task",
    "created_at": "2021-01-21T06:21:19.000Z",
    "due_at": "2021-01-28T15:42:36.000Z",
    "executed_at": "2021-01-24T06:37:06.000Z",
    "id": 10,
    "job_status": "approved",
    "name": "Proof(s) Review Task",
    "req_confirm": true,
    "status": "done",
    "updated_at": "2021-01-25T09:45:10.000Z"
}

Create a new task

POST
https://www.review.good2gosoftware.com
/api/v1/jobs/{job_guid}/tasks
requires authentication

Create a new task and also newly created task is executed immediately.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json

URL Parameters

job_guid
string
required

The GUID of the job. This can be derived from the list of jobs returned from api api/v1/jobs (Get job information).

Example:
2dd7f609-d85c-4409-8c12-9fbb494bf549.

Body Parameters

Response Fields

Example request:
curl --request POST \
    "https://www.review.good2gosoftware.com/api/v1/jobs/2dd7f609-d85c-4409-8c12-9fbb494bf549./tasks" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"assigned_to\": \"abc@xyz.com.\",
    \"category\": \"review-task.\",
    \"due_at\": \"2024-01-24T06:37:06.000Z\",
    \"job_status\": \"new\",
    \"name\": \"Shipping reminder.\",
    \"req_confirm\": false,
    \"status\": \"processing\"
}"
Example response:
{
    "assigned_to": "tom.jerry@abc.com",
    "category": "review-task",
    "created_at": "2021-01-21T06:21:19.000Z",
    "due_at": "2021-01-28T15:42:36.000Z",
    "executed_at": "2021-01-24T06:37:06.000Z",
    "id": 10,
    "job_status": "approved",
    "name": "Proof(s) Review Task",
    "req_confirm": true,
    "status": "done",
    "updated_at": "2021-01-25T09:45:10.000Z"
}

Update existing task

PUT
https://www.review.good2gosoftware.com
/api/v1/jobs/{job_guid}/tasks/{id}
requires authentication

Update an existing task with new information.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json

URL Parameters

job_guid
string
required

The GUID of the job. This can be derived from the list of jobs returned from api api/v1/jobs (Get job information).

Example:
2dd7f609-d85c-4409-8c12-9fbb494bf549.
id
integer
required

The ID of the task.

Example:
290

Body Parameters

Response Fields

Example request:
curl --request PUT \
    "https://www.review.good2gosoftware.com/api/v1/jobs/2dd7f609-d85c-4409-8c12-9fbb494bf549./tasks/290" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"due_at\": \"2024-01-24T06:37:06.000Z\",
    \"job_status\": \"new\",
    \"name\": \"Shipping reminder.\",
    \"req_confirm\": false,
    \"status\": \"paused\"
}"
Example response:
{
    "assigned_to": "tom.jerry@abc.com",
    "category": "review-task",
    "created_at": "2021-01-21T06:21:19.000Z",
    "due_at": "2021-01-28T15:42:36.000Z",
    "executed_at": "2021-01-24T06:37:06.000Z",
    "id": 10,
    "job_status": "approved",
    "name": "Proof(s) Review Task",
    "req_confirm": true,
    "status": "done",
    "updated_at": "2021-01-25T09:45:10.000Z"
}

Send notification email

PUT
https://www.review.good2gosoftware.com
/api/v1/jobs/{job_guid}/tasks/{task_id}/notify
requires authentication

Send an email to assignee of task.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json

URL Parameters

job_guid
string
required

The GUID of the job. This can be derived from the list of jobs returned from api api/v1/jobs (Get job information).

Example:
2dd7f609-d85c-4409-8c12-9fbb494bf549.
task_id
integer
required

The ID of the task.

Example:
290

Body Parameters

Response Fields

Example request:
curl --request PUT \
    "https://www.review.good2gosoftware.com/api/v1/jobs/2dd7f609-d85c-4409-8c12-9fbb494bf549./tasks/290/notify" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"comments\": \"tempora\",
    \"default\": {
        \"comments\": false,
        \"task\": true
    },
    \"reason\": \"nihil\",
    \"schedule\": \"voluptatem\",
    \"task\": {
        \"category\": \"review-task\",
        \"due_at\": \"2024-05-21T15:26:01.000Z\",
        \"name\": \"Payment reminder\",
        \"req_confirm\": false,
        \"status\": \"paused\"
    }
}"
Example response:
{
    "assigned_to": "tom.jerry@abc.com",
    "category": "review-task",
    "created_at": "2021-01-21T06:21:19.000Z",
    "due_at": "2021-01-28T15:42:36.000Z",
    "executed_at": "2021-01-24T06:37:06.000Z",
    "id": 10,
    "job_status": "approved",
    "name": "Proof(s) Review Task",
    "req_confirm": true,
    "status": "done",
    "updated_at": "2021-01-25T09:45:10.000Z"
}

Delete a job task

DELETE
https://www.review.good2gosoftware.com
/api/v1/jobs/{job_guid}/tasks/{task_id}
requires authentication

Delete given task related to a job.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}

URL Parameters

job_guid
string
required

The GUID of the job. This can be derived from the list of jobs returned from api api/v1/jobs (Get job information).

Example:
2dd7f609-d85c-4409-8c12-9fbb494bf549.
task_id
integer
required

The ID of the task.

Example:
290
Example request:
curl --request DELETE \
    "https://www.review.good2gosoftware.com/api/v1/jobs/2dd7f609-d85c-4409-8c12-9fbb494bf549./tasks/290" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response:
{}

Assign to team member

POST
https://www.review.good2gosoftware.com
/api/v1/jobs/{job_guid}/assign
requires authentication

Assign a job to a team member. Job can only be assigned to team members who are part same team. Visit account page got more information about team and team members.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json

URL Parameters

job_guid
string
required

The guid of the job. This can be derived from the list of jobs returned from api 'api/v1/jobs'.

Example:
b507769f-f7ec-40d2-bd29-f3825adf83ca

Body Parameters

Response Fields

Example request:
curl --request POST \
    "https://www.review.good2gosoftware.com/api/v1/jobs/b507769f-f7ec-40d2-bd29-f3825adf83ca/assign" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"assignee\": \"abc@mno.com\",
    \"comments\": \"minus\",
    \"default\": {
        \"comments\": false,
        \"task\": false
    },
    \"recipient\": \"abc@mno.com\",
    \"schedule\": \"now\",
    \"task\": {
        \"category\": \"labore\",
        \"due_at\": \"necessitatibus\",
        \"name\": \"Payment reminder\",
        \"req_confirm\": false,
        \"status\": \"asperiores\"
    }
}"
Example response:
{
    "assignee": "tom.jerry@disney.com",
    "comments": "Can you update the bleed?",
    "task": {
        "category": "assign-task",
        "created_at": "2021-08-25T08:30:59.000Z",
        "due_at": null,
        "executed_at": "2021-08-25T10:01:37.460Z",
        "id": 15,
        "status": "new"
    }
}
{
    "error": {
        "message": "User abc.pqr@xyz.com is not a team member.",
        "status_code": 422
    }
}

Job reminders

APIs to list, view, update or delete job specific reminder set. This set will be used by various tasks to send auto reminders based upon task due date.

Get list of reminders

GET
https://www.review.good2gosoftware.com
/api/v1/jobs/{job_guid}/reminders
requires authentication

This method list down reminders specifically assigned to given job.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}

URL Parameters

job_guid
string
required

The GUID of the job. This can be derived from the list of jobs returned from api api/v1/jobs (Get job information).

Example:
03a71fd0-cc06-4432-bfef-44baa7a1d7c6.

Response Fields

Example request:
curl --request GET \
    --get "https://www.review.good2gosoftware.com/api/v1/jobs/03a71fd0-cc06-4432-bfef-44baa7a1d7c6./reminders" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response:
[
    {
        "cancelled": true,
        "comparator": "before",
        "created_at": "2021-02-06T17:37:17.000Z",
        "date": "2021-12-01T14:54:22.000Z",
        "id": 1,
        "is_auto": true,
        "job_guid": "1ff38f4e-9c0d-4b1b-a665-3ef5aff896fb",
        "quantity": 2,
        "schedule": "later",
        "unit": "days",
        "updated_at": "2021-02-06T17:37:17.000Z"
    },
    {
        "cancelled": false,
        "comparator": "before",
        "created_at": "2020-08-19T17:11:11.000Z",
        "date": "2021-12-02T14:54:22.000Z",
        "id": 1,
        "is_auto": true,
        "job_guid": "1ff38f4e-9c0d-4b1b-a665-3ef5aff896fb",
        "quantity": 1,
        "schedule": "later",
        "unit": "days",
        "updated_at": "2021-01-07T10:17:33.000Z"
    },
    {
        "cancelled": false,
        "comparator": "none",
        "date": "2020-11-15T14:48:07.000Z",
        "id": -1,
        "is_auto": false,
        "job_guid": "1ff38f4e-9c0d-4b1b-a665-3ef5aff896fb",
        "quantity": 0,
        "schedule": "later",
        "unit": "none"
    },
    {
        "cancelled": false,
        "comparator": "none",
        "date": "2020-11-13T02:43:28.000Z",
        "id": -1,
        "is_auto": false,
        "job_guid": "1ff38f4e-9c0d-4b1b-a665-3ef5aff896fb",
        "quantity": 0,
        "schedule": "later",
        "unit": "none"
    },
    {
        "cancelled": false,
        "comparator": "none",
        "date": "2020-10-17T05:12:30.000Z",
        "id": -1,
        "is_auto": false,
        "job_guid": "1ff38f4e-9c0d-4b1b-a665-3ef5aff896fb",
        "quantity": 0,
        "schedule": "later",
        "unit": "none"
    }
]

Get job reminder information

GET
https://www.review.good2gosoftware.com
/api/v1/jobs/{job_guid}/reminders/{id}
requires authentication

Return the reminder associated with given job.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}

URL Parameters

job_guid
string
required

The GUID of the job. This can be derived from the list of jobs returned from api api/v1/jobs (Get job information).

Example:
03a71fd0-cc06-4432-bfef-44baa7a1d7c6.
id
integer
required

The ID of the reminder.

Example:
11
Example request:
curl --request GET \
    --get "https://www.review.good2gosoftware.com/api/v1/jobs/03a71fd0-cc06-4432-bfef-44baa7a1d7c6./reminders/11" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response:
{
    "cancelled": true,
    "comparator": "before",
    "created_at": "2021-02-06T17:37:17.000Z",
    "id": 123,
    "job_guid": "1ff38f4e-9c0d-4b1b-a665-3ef5aff896fb",
    "quantity": 5,
    "unit": "hours",
    "updated_at": "2021-02-06T17:37:17.000Z"
}

Create a new reminder

POST
https://www.review.good2gosoftware.com
/api/v1/jobs/{job_guid}/reminders
requires authentication

All the values are with reference to due date defined for the job. Let us say a reminder to be set 5 hours before due date then the parameters will be { 'quantity': 5, 'unit': 'hours', 'comparator': 'before' }

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json

URL Parameters

job_guid
string
required

The GUID of the job. This can be derived from the list of jobs returned from api api/v1/jobs (Get job information).

Example:
03a71fd0-cc06-4432-bfef-44baa7a1d7c6.

Body Parameters

Example request:
curl --request POST \
    "https://www.review.good2gosoftware.com/api/v1/jobs/03a71fd0-cc06-4432-bfef-44baa7a1d7c6./reminders" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"cancelled\": false,
    \"comparator\": \"et\",
    \"quantity\": 9,
    \"unit\": \"iste\"
}"
Example response:
{
    "cancelled": true,
    "comparator": "before",
    "created_at": "2021-02-06T17:37:17.000Z",
    "id": 123,
    "job_guid": "1ff38f4e-9c0d-4b1b-a665-3ef5aff896fb",
    "quantity": 5,
    "unit": "hours",
    "updated_at": "2021-02-06T17:37:17.000Z"
}

Update existing job reminder

PUT
https://www.review.good2gosoftware.com
/api/v1/jobs/{job_guid}/reminders/{id}
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json

URL Parameters

job_guid
string
required

The GUID of the job. This can be derived from the list of jobs returned from api api/v1/jobs (Get job information).

Example:
03a71fd0-cc06-4432-bfef-44baa7a1d7c6.
id
integer
required

The ID of the reminder.

Example:
8

Body Parameters

Example request:
curl --request PUT \
    "https://www.review.good2gosoftware.com/api/v1/jobs/03a71fd0-cc06-4432-bfef-44baa7a1d7c6./reminders/8" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"cancelled\": true,
    \"comparator\": \"facilis\",
    \"quantity\": 69,
    \"unit\": \"aut\"
}"
Example response:
{
    "cancelled": true,
    "comparator": "before",
    "created_at": "2021-02-06T17:37:17.000Z",
    "id": 123,
    "job_guid": "1ff38f4e-9c0d-4b1b-a665-3ef5aff896fb",
    "quantity": 5,
    "unit": "hours",
    "updated_at": "2021-02-06T17:37:17.000Z"
}

Delete a job reminder

DELETE
https://www.review.good2gosoftware.com
/api/v1/jobs/{job_guid}/reminders/{reminder_id}
requires authentication

Delete a reminder related to a job.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}

URL Parameters

job_guid
string
required

The GUID of the job. This can be derived from the list of jobs returned from api api/v1/jobs (Get job information).

Example:
03a71fd0-cc06-4432-bfef-44baa7a1d7c6.
reminder_id
integer
required

The ID of the reminder.

Example:
19
Example request:
curl --request DELETE \
    "https://www.review.good2gosoftware.com/api/v1/jobs/03a71fd0-cc06-4432-bfef-44baa7a1d7c6./reminders/19" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response:
{}

Job notifications

APIs to send job notifications for review and approve document, to upload a new document or to update a file revision or job assignment. There are six different kinds of task:

  • anonymous-task (for any anonymous email)
  • assign-task (for internal colleague in a team)
  • forward-task (for external partner)
  • quote-review-task (for external print buyer)
  • review-task (for external print buyer)
  • revision-task (for external print buyer)
  • upload-task (for external print buyer)

Get notification

GET
https://www.review.good2gosoftware.com
/api/v1/jobs/{job_guid}/notifications/{kind}
requires authentication

Get notification associated with the given task for a job.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}

URL Parameters

job_guid
string
required

The GUID of the job. This can be derived from the list of jobs returned from api 'api/v1/jobs'.

Example:
ullam
kind
string
required

The task category. The supported values are [assign-task, forward-task, quote-review-task, review-task, revision-task, and upload-task].

Example:
et

Response Fields

Example request:
curl --request GET \
    --get "https://www.review.good2gosoftware.com/api/v1/jobs/ullam/notifications/et" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response:
{
    "comments": "Review instructions",
    "recipient": "tom.jerry@xyz,com",
    "reviewer": [
        {
            "email": "reviewer1@design.com"
        },
        {
            "email": "reviewer2@design.com"
        },
        {
            "group": "External Review Group"
        }
    ],
    "task": {
        "category": "review-task",
        "due_at": "2021-01-28T15:42:36.000Z",
        "req_confirm": true,
        "status": "processing"
    }
}

Create a new manual notification

POST
https://www.review.good2gosoftware.com
/api/v1/jobs/{job_guid}/notifications
requires authentication

This method can be used to create task and send manual notification for a given task of the job. If the given task already exists then it updates the existing task with new information. Each reviewer has one to one map with task that is created in the background. A task is created or updated for each reviewers based upon reason value.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json

URL Parameters

job_guid
string

The GUID of the job

Example:
est

Body Parameters

Response Fields

Example request:
curl --request POST \
    "https://www.review.good2gosoftware.com/api/v1/jobs/est/notifications" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"comments\": \"et\",
    \"default\": {
        \"comments\": true,
        \"reviewers\": true,
        \"task\": true
    },
    \"reason\": \"occaecati\",
    \"recipient\": \"sapiente\",
    \"reviewers\": [
        {
            \"email\": \"ryan39@example.com\",
            \"group\": \"natus\"
        }
    ],
    \"schedule\": \"vero\",
    \"task\": {
        \"category\": \"libero\",
        \"due_at\": \"veritatis\",
        \"name\": \"Payment reminder\",
        \"req_confirm\": true,
        \"status\": \"velit\"
    }
}"
Example response:
{
    "comments": "Review instructions",
    "reason": "notify-task",
    "recipient": "tom.jerry@xyz,com",
    "reviewer": [
        {
            "email": "reviewer1@design.com"
        },
        {
            "email": "reviewer2@design.com"
        },
        {
            "group": "External Review Group"
        }
    ],
    "schedule": "now",
    "task": {
        "category": "review-task",
        "due_at": "2021-01-28T15:42:36.000Z",
        "req_confirm": true,
        "status": "paused"
    }
}

Get notifications event history for job

GET
https://www.review.good2gosoftware.com
/api/v1/jobs/{job_guid}/notify/tasks
requires authentication

Get list of all notification events (past, current and future) associated with the given job. This includes both manual notification sent in past, auto reminders associated with the job and cancelled reminders, etc.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}

URL Parameters

job_guid
string
required

The GUID of the job. This can be derived from the list of jobs returned from api 'api/v1/jobs'.

Example:
necessitatibus

Query Parameters

kind
string

The task category. The supported values are [anonymous-task, assign-task, forward-task, quote-review-task, review-task, revision-task and upload-task].

Example:
ut

Response Fields

Example request:
curl --request GET \
    --get "https://www.review.good2gosoftware.com/api/v1/jobs/necessitatibus/notify/tasks?kind=ut" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response:
[
    {
        "cancelled": true,
        "comparator": "before",
        "created_at": "2021-02-06T17:37:17.000Z",
        "date": "2021-12-01T14:54:22.000Z",
        "id": 1,
        "is_auto": true,
        "job_guid": "1ff38f4e-9c0d-4b1b-a665-3ef5aff896fb",
        "quantity": 2,
        "schedule": "later",
        "unit": "days",
        "updated_at": "2021-02-06T17:37:17.000Z"
    },
    {
        "cancelled": false,
        "comparator": "before",
        "created_at": "2020-08-19T17:11:11.000Z",
        "date": "2021-12-02T14:54:22.000Z",
        "id": 1,
        "is_auto": true,
        "job_guid": "1ff38f4e-9c0d-4b1b-a665-3ef5aff896fb",
        "quantity": 1,
        "schedule": "later",
        "unit": "days",
        "updated_at": "2021-01-07T10:17:33.000Z"
    },
    {
        "cancelled": false,
        "comparator": "none",
        "date": "2020-11-15T14:48:07.000Z",
        "id": -1,
        "is_auto": false,
        "job_guid": "1ff38f4e-9c0d-4b1b-a665-3ef5aff896fb",
        "quantity": 0,
        "schedule": "later",
        "unit": "none"
    },
    {
        "cancelled": false,
        "comparator": "none",
        "date": "2020-11-13T02:43:28.000Z",
        "id": -1,
        "is_auto": false,
        "job_guid": "1ff38f4e-9c0d-4b1b-a665-3ef5aff896fb",
        "quantity": 0,
        "schedule": "later",
        "unit": "none"
    },
    {
        "cancelled": false,
        "comparator": "none",
        "date": "2020-10-17T05:12:30.000Z",
        "id": -1,
        "is_auto": false,
        "job_guid": "1ff38f4e-9c0d-4b1b-a665-3ef5aff896fb",
        "quantity": 0,
        "schedule": "later",
        "unit": "none"
    }
]

Get notifications event history for task

GET
https://www.review.good2gosoftware.com
/api/v1/jobs/{job_guid}/notify/tasks/{task_id}
requires authentication

Get list of all notification events (past, current and future) associated with the given task. This includes both manual notification sent in past, auto reminders associated with the job and cancelled reminders, etc.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}

URL Parameters

job_guid
string
required
Example:
0002b711-35c7-41a5-8b30-4227967558fb
task_id
integer
required

The ID of the task.

Example:
290

Response Fields

Example request:
curl --request GET \
    --get "https://www.review.good2gosoftware.com/api/v1/jobs/0002b711-35c7-41a5-8b30-4227967558fb/notify/tasks/290" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response:
Headers
                                                            cache-control
                                                            : no-cache, private
                                                                                                                    content-type
                                                            : text/html; charset=UTF-8
                                                         
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <title>Service Unavailable</title>

        <style>
            /*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}a{background-color:transparent}code{font-family:monospace,monospace;font-size:1em}[hidden]{display:none}html{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}*,:after,:before{box-sizing:border-box;border:0 solid #e2e8f0}a{color:inherit;text-decoration:inherit}code{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}svg,video{display:block;vertical-align:middle}video{max-width:100%;height:auto}.bg-white{--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity))}.bg-gray-100{--bg-opacity:1;background-color:#f7fafc;background-color:rgba(247,250,252,var(--bg-opacity))}.border-gray-200{--border-opacity:1;border-color:#edf2f7;border-color:rgba(237,242,247,var(--border-opacity))}.border-gray-400{--border-opacity:1;border-color:#cbd5e0;border-color:rgba(203,213,224,var(--border-opacity))}.border-t{border-top-width:1px}.border-r{border-right-width:1px}.flex{display:flex}.grid{display:grid}.hidden{display:none}.items-center{align-items:center}.justify-center{justify-content:center}.font-semibold{font-weight:600}.h-5{height:1.25rem}.h-8{height:2rem}.h-16{height:4rem}.text-sm{font-size:.875rem}.text-lg{font-size:1.125rem}.leading-7{line-height:1.75rem}.mx-auto{margin-left:auto;margin-right:auto}.ml-1{margin-left:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.ml-2{margin-left:.5rem}.mt-4{margin-top:1rem}.ml-4{margin-left:1rem}.mt-8{margin-top:2rem}.ml-12{margin-left:3rem}.-mt-px{margin-top:-1px}.max-w-xl{max-width:36rem}.max-w-6xl{max-width:72rem}.min-h-screen{min-height:100vh}.overflow-hidden{overflow:hidden}.p-6{padding:1.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.pt-8{padding-top:2rem}.fixed{position:fixed}.relative{position:relative}.top-0{top:0}.right-0{right:0}.shadow{box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.text-center{text-align:center}.text-gray-200{--text-opacity:1;color:#edf2f7;color:rgba(237,242,247,var(--text-opacity))}.text-gray-300{--text-opacity:1;color:#e2e8f0;color:rgba(226,232,240,var(--text-opacity))}.text-gray-400{--text-opacity:1;color:#cbd5e0;color:rgba(203,213,224,var(--text-opacity))}.text-gray-500{--text-opacity:1;color:#a0aec0;color:rgba(160,174,192,var(--text-opacity))}.text-gray-600{--text-opacity:1;color:#718096;color:rgba(113,128,150,var(--text-opacity))}.text-gray-700{--text-opacity:1;color:#4a5568;color:rgba(74,85,104,var(--text-opacity))}.text-gray-900{--text-opacity:1;color:#1a202c;color:rgba(26,32,44,var(--text-opacity))}.uppercase{text-transform:uppercase}.underline{text-decoration:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tracking-wider{letter-spacing:.05em}.w-5{width:1.25rem}.w-8{width:2rem}.w-auto{width:auto}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}@-webkit-keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@-webkit-keyframes ping{0%{transform:scale(1);opacity:1}75%,to{transform:scale(2);opacity:0}}@keyframes ping{0%{transform:scale(1);opacity:1}75%,to{transform:scale(2);opacity:0}}@-webkit-keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@-webkit-keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:translateY(0);-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:translateY(0);-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@media (min-width:640px){.sm\:rounded-lg{border-radius:.5rem}.sm\:block{display:block}.sm\:items-center{align-items:center}.sm\:justify-start{justify-content:flex-start}.sm\:justify-between{justify-content:space-between}.sm\:h-20{height:5rem}.sm\:ml-0{margin-left:0}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:pt-0{padding-top:0}.sm\:text-left{text-align:left}.sm\:text-right{text-align:right}}@media (min-width:768px){.md\:border-t-0{border-top-width:0}.md\:border-l{border-left-width:1px}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){.lg\:px-8{padding-left:2rem;padding-right:2rem}}@media (prefers-color-scheme:dark){.dark\:bg-gray-800{--bg-opacity:1;background-color:#2d3748;background-color:rgba(45,55,72,var(--bg-opacity))}.dark\:bg-gray-900{--bg-opacity:1;background-color:#1a202c;background-color:rgba(26,32,44,var(--bg-opacity))}.dark\:border-gray-700{--border-opacity:1;border-color:#4a5568;border-color:rgba(74,85,104,var(--border-opacity))}.dark\:text-white{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.dark\:text-gray-400{--text-opacity:1;color:#cbd5e0;color:rgba(203,213,224,var(--text-opacity))}}
        </style>

        <style>
            body {
                font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
            }
        </style>
    </head>
    <body class="antialiased">
        <div class="relative flex items-top justify-center min-h-screen bg-gray-100 dark:bg-gray-900 sm:items-center sm:pt-0">
            <div class="max-w-xl mx-auto sm:px-6 lg:px-8">
                <div class="flex items-center pt-8 sm:justify-start sm:pt-0">
                    <div class="px-4 text-lg text-gray-500 border-r border-gray-400 tracking-wider">
                        503                    </div>

                    <div class="ml-4 text-lg text-gray-500 uppercase tracking-wider">
                        Service Unavailable                    </div>
                </div>
            </div>
        </div>
    </body>
</html>

Miscellaneous endpoints

Apply a job action

POST
https://www.review.good2gosoftware.com
/api/v1/jobs/{job_guid}/action/{action}
requires authentication

Three kind of actions are supported at this moment:

  • inherit: Make the children inherit parent folder properties, such as, customer, due date, allow download, partner, show job specification, show preflight report, etc.
  • renew: Renew the job (bring out of expire state).
  • send-to-mis: Send a order/quote to configured MIS system (deprecated).

If job is expired, by calling the renew action, it bring the job to previous state.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json

URL Parameters

job_guid
string
required

The guid of the job. This can be derived from the list of jobs returned from api 'api/v1/jobs'.

Example:
b507769f-f7ec-40d2-bd29-f3825adf83ca.
action
string
required

One of the value [ 'inherit', 'renew', 'send-to-mis' ].

Example:
inherit

Body Parameters

Example request:
curl --request POST \
    "https://www.review.good2gosoftware.com/api/v1/jobs/b507769f-f7ec-40d2-bd29-f3825adf83ca./action/inherit" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"ignore\": [
        \"aut\"
    ]
}"
Example response:
{
    "asg_email": "tom.jerry@tj.com",
    "asg_name": "Tom",
    "c_email": "my.customer@domain.com",
    "c_name": "My Customer",
    "created_at": "2021-02-06T10:21:06.000Z",
    "deleted_at": null,
    "due_at": null,
    "guid": "b7926eb4-6726-4917-abfd-e6eed3476e56",
    "has_comment": false,
    "is_folder": false,
    "is_own": true,
    "name": "A Test File.png",
    "newly_assigned": false,
    "parent_guid": "f1096786-687e-4e40-87c7-bdb90ef631e7",
    "path_url": "https://www.good2gosoftware.com/review/file/b7926eb4-6726-4917-abfd-e6eed3476e56/document/A%20Test%20File.png?version=1",
    "size": 582817,
    "status": "new",
    "type": "image/png",
    "updated_at": "2021-02-06T10:21:06.000Z",
    "version": 1
}
{
    "error": {
        "message": "User access not permitted.",
        "status_code": 403
    }
}
{
    "error": {
        "message": "Acceptable action ids are [ 'inherit', 'renew', 'send-to-mis' ].",
        "status_code": 406
    }
}
{
    "error": {
        "message": "Parent job is not a folder.",
        "status_code": 422
    }
}

Get lock state of a job

GET
https://www.review.good2gosoftware.com
/api/v1/jobs/{job_guid}/locking
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}

URL Parameters

job_guid
string
required

The guid of the job. This can be derived from the list of jobs returned from api 'api/v1/jobs'.

Example:
illo

Response Fields

Example request:
curl --request GET \
    --get "https://www.review.good2gosoftware.com/api/v1/jobs/illo/locking" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response:
{
    "guid": "f6ac15ca-e4fa-4e1f-bb94-088ec04d7dab",
    "locked": true
}
{
    "error": {
        "message": "Resource not found",
        "status_code": 404
    }
}

Lock or unlock a job

POST
https://www.review.good2gosoftware.com
/api/v1/jobs/{job_guid}/locking
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json

URL Parameters

job_guid
string
required

The guid of the job. This can be derived from the list of jobs returned from api 'api/v1/jobs'.

Example:
exercitationem

Body Parameters

Example request:
curl --request POST \
    "https://www.review.good2gosoftware.com/api/v1/jobs/exercitationem/locking" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"locked\": false
}"
Example response:
{
    "ac": {
        "can_assign": true,
        "can_delete": true,
        "can_download": false,
        "can_edit": true,
        "can_view": true,
        "control_job": true,
        "delete_options": {
            "action": "trash"
        }
    },
    "asg_email": "tom.jerry@tj.com",
    "asg_name": "Tom",
    "c_email": "my.customer@domain.com",
    "c_name": "My Customer",
    "created_at": "2021-02-06T10:21:06.000Z",
    "cus_download": true,
    "deleted_at": null,
    "due_at": null,
    "guid": "b7926eb4-6726-4917-abfd-e6eed3476e56",
    "has_comment": false,
    "is_folder": false,
    "is_own": true,
    "is_portal": false,
    "is_watching": false,
    "locked": false,
    "more_info": {
        "annotations": {
            "annot_cnt": 0,
            "annot_cnt_plus": false
        },
        "pageCount": 1,
        "pages": [
            {
                "bits": 0,
                "color": "UNKNOWN",
                "height": 922,
                "mime": "image/png",
                "width": 1616
            }
        ]
    },
    "name": "A Test File.png",
    "newly_assigned": false,
    "parent_guid": "f1096786-687e-4e40-87c7-bdb90ef631e7",
    "p_email": "forward.partner@domain.com",
    "path_url": "https://www.good2gosoftware.com/review/file/b7926eb4-6726-4917-abfd-e6eed3476e56/document/A%20Test%20File.png?version=1",
    "p_name": "DEF Printer",
    "size": 582817,
    "source": "in-app",
    "status": "new",
    "type": "image/png",
    "updated_at": "2021-02-06T10:21:06.000Z",
    "version": 1
}
{
    "error": {
        "message": "Resource not found",
        "status_code": 404
    }
}

Send status update

POST
https://www.review.good2gosoftware.com
/api/v1/jobs/{job_guid}/send/update
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json

URL Parameters

job_guid
string
required
Example:
0002b711-35c7-41a5-8b30-4227967558fb

Body Parameters

Example request:
curl --request POST \
    "https://www.review.good2gosoftware.com/api/v1/jobs/0002b711-35c7-41a5-8b30-4227967558fb/send/update" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"label\": \"Send for review\"
}"
Example response:
{
    "ac": {
        "can_assign": true,
        "can_delete": true,
        "can_download": false,
        "can_edit": true,
        "can_view": true,
        "control_job": true,
        "delete_options": {
            "action": "trash"
        }
    },
    "asg_email": "tom.jerry@tj.com",
    "asg_name": "Tom",
    "c_email": "my.customer@domain.com",
    "c_name": "My Customer",
    "created_at": "2021-02-06T10:21:06.000Z",
    "cus_download": true,
    "deleted_at": null,
    "due_at": null,
    "guid": "b7926eb4-6726-4917-abfd-e6eed3476e56",
    "has_comment": false,
    "is_folder": false,
    "is_own": true,
    "is_portal": false,
    "is_watching": false,
    "locked": false,
    "more_info": {
        "annotations": {
            "annot_cnt": 0,
            "annot_cnt_plus": false
        },
        "pageCount": 1,
        "pages": [
            {
                "bits": 0,
                "color": "UNKNOWN",
                "height": 922,
                "mime": "image/png",
                "width": 1616
            }
        ]
    },
    "name": "A Test File.png",
    "newly_assigned": false,
    "parent_guid": "f1096786-687e-4e40-87c7-bdb90ef631e7",
    "p_email": "forward.partner@domain.com",
    "path_url": "https://www.good2gosoftware.com/review/file/b7926eb4-6726-4917-abfd-e6eed3476e56/document/A%20Test%20File.png?version=1",
    "p_name": "DEF Printer",
    "size": 582817,
    "source": "in-app",
    "status": "new",
    "type": "image/png",
    "updated_at": "2021-02-06T10:21:06.000Z",
    "version": 1
}
{
    "error": {
        "message": "Resource not found",
        "status_code": 404
    }
}

Get analytical data

GET
https://www.review.good2gosoftware.com
/api/v1/analytics/jobs
requires authentication

Return consolidated data of user of all jobs.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}

Response Fields

Example request:
curl --request GET \
    --get "https://www.review.good2gosoftware.com/api/v1/analytics/jobs" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response:
{
    "approved": 1,
    "created_at": "2021-01-24T17:56:03.000Z",
    "data_size_mb": "6852489",
    "due_cnt": 0,
    "guid": "63c56c5e-3aa6-4768-bbd8-01c0b4e5ccaa",
    "id": 1,
    "live_files": 24,
    "locked_at": "2021-01-25T14:13:10.000Z",
    "name": "Large Files Test",
    "processed": 40,
    "rejected": 2,
    "signed_at": "2021-02-12T07:41:37.000Z",
    "updated_at": "2021-02-08T15:20:44.000Z"
}

Get analytical data for files in a folder

GET
https://www.review.good2gosoftware.com
/api/v1/analytics/jobs/{job_guid}
requires authentication

Return consolidated data of user for jobs in a given folder.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}

URL Parameters

job_guid
string

The guid of the folder. This can be derived from the list of jobs returned from api 'api/v1/jobs'.

Example:
qui

Response Fields

Example request:
curl --request GET \
    --get "https://www.review.good2gosoftware.com/api/v1/analytics/jobs/qui" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response:
{
    "approved": 1,
    "created_at": "2021-01-24T17:56:03.000Z",
    "data_size_mb": "6852489",
    "due_cnt": 0,
    "guid": "63c56c5e-3aa6-4768-bbd8-01c0b4e5ccaa",
    "id": 1,
    "live_files": 24,
    "locked_at": "2021-01-25T14:13:10.000Z",
    "name": "Large Files Test",
    "processed": 40,
    "rejected": 2,
    "signed_at": "2021-02-12T07:41:37.000Z",
    "updated_at": "2021-02-08T15:20:44.000Z"
}
{
    "error": {
        "message": "This job is not a folder.",
        "status_code": 422
    }
}

Return path to simply view the file.

GET
https://www.review.good2gosoftware.com
/review/file/{job_guid}/document/{name}

URL Parameters

job_guid
string
required
Example:
0002b711-35c7-41a5-8b30-4227967558fb
name
string
required
Example:
sequi
Example request:
curl --request GET \
    --get "https://www.review.good2gosoftware.com/review/file/0002b711-35c7-41a5-8b30-4227967558fb/document/sequi"
Example response:
Headers
                                                            cache-control
                                                            : no-cache, private
                                                                                                                    content-type
                                                            : text/html; charset=UTF-8
                                                         
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <title>Service Unavailable</title>

        <style>
            /*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}a{background-color:transparent}code{font-family:monospace,monospace;font-size:1em}[hidden]{display:none}html{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}*,:after,:before{box-sizing:border-box;border:0 solid #e2e8f0}a{color:inherit;text-decoration:inherit}code{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}svg,video{display:block;vertical-align:middle}video{max-width:100%;height:auto}.bg-white{--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity))}.bg-gray-100{--bg-opacity:1;background-color:#f7fafc;background-color:rgba(247,250,252,var(--bg-opacity))}.border-gray-200{--border-opacity:1;border-color:#edf2f7;border-color:rgba(237,242,247,var(--border-opacity))}.border-gray-400{--border-opacity:1;border-color:#cbd5e0;border-color:rgba(203,213,224,var(--border-opacity))}.border-t{border-top-width:1px}.border-r{border-right-width:1px}.flex{display:flex}.grid{display:grid}.hidden{display:none}.items-center{align-items:center}.justify-center{justify-content:center}.font-semibold{font-weight:600}.h-5{height:1.25rem}.h-8{height:2rem}.h-16{height:4rem}.text-sm{font-size:.875rem}.text-lg{font-size:1.125rem}.leading-7{line-height:1.75rem}.mx-auto{margin-left:auto;margin-right:auto}.ml-1{margin-left:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.ml-2{margin-left:.5rem}.mt-4{margin-top:1rem}.ml-4{margin-left:1rem}.mt-8{margin-top:2rem}.ml-12{margin-left:3rem}.-mt-px{margin-top:-1px}.max-w-xl{max-width:36rem}.max-w-6xl{max-width:72rem}.min-h-screen{min-height:100vh}.overflow-hidden{overflow:hidden}.p-6{padding:1.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.pt-8{padding-top:2rem}.fixed{position:fixed}.relative{position:relative}.top-0{top:0}.right-0{right:0}.shadow{box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.text-center{text-align:center}.text-gray-200{--text-opacity:1;color:#edf2f7;color:rgba(237,242,247,var(--text-opacity))}.text-gray-300{--text-opacity:1;color:#e2e8f0;color:rgba(226,232,240,var(--text-opacity))}.text-gray-400{--text-opacity:1;color:#cbd5e0;color:rgba(203,213,224,var(--text-opacity))}.text-gray-500{--text-opacity:1;color:#a0aec0;color:rgba(160,174,192,var(--text-opacity))}.text-gray-600{--text-opacity:1;color:#718096;color:rgba(113,128,150,var(--text-opacity))}.text-gray-700{--text-opacity:1;color:#4a5568;color:rgba(74,85,104,var(--text-opacity))}.text-gray-900{--text-opacity:1;color:#1a202c;color:rgba(26,32,44,var(--text-opacity))}.uppercase{text-transform:uppercase}.underline{text-decoration:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tracking-wider{letter-spacing:.05em}.w-5{width:1.25rem}.w-8{width:2rem}.w-auto{width:auto}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}@-webkit-keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@-webkit-keyframes ping{0%{transform:scale(1);opacity:1}75%,to{transform:scale(2);opacity:0}}@keyframes ping{0%{transform:scale(1);opacity:1}75%,to{transform:scale(2);opacity:0}}@-webkit-keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@-webkit-keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:translateY(0);-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:translateY(0);-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@media (min-width:640px){.sm\:rounded-lg{border-radius:.5rem}.sm\:block{display:block}.sm\:items-center{align-items:center}.sm\:justify-start{justify-content:flex-start}.sm\:justify-between{justify-content:space-between}.sm\:h-20{height:5rem}.sm\:ml-0{margin-left:0}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:pt-0{padding-top:0}.sm\:text-left{text-align:left}.sm\:text-right{text-align:right}}@media (min-width:768px){.md\:border-t-0{border-top-width:0}.md\:border-l{border-left-width:1px}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){.lg\:px-8{padding-left:2rem;padding-right:2rem}}@media (prefers-color-scheme:dark){.dark\:bg-gray-800{--bg-opacity:1;background-color:#2d3748;background-color:rgba(45,55,72,var(--bg-opacity))}.dark\:bg-gray-900{--bg-opacity:1;background-color:#1a202c;background-color:rgba(26,32,44,var(--bg-opacity))}.dark\:border-gray-700{--border-opacity:1;border-color:#4a5568;border-color:rgba(74,85,104,var(--border-opacity))}.dark\:text-white{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.dark\:text-gray-400{--text-opacity:1;color:#cbd5e0;color:rgba(203,213,224,var(--text-opacity))}}
        </style>

        <style>
            body {
                font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
            }
        </style>
    </head>
    <body class="antialiased">
        <div class="relative flex items-top justify-center min-h-screen bg-gray-100 dark:bg-gray-900 sm:items-center sm:pt-0">
            <div class="max-w-xl mx-auto sm:px-6 lg:px-8">
                <div class="flex items-center pt-8 sm:justify-start sm:pt-0">
                    <div class="px-4 text-lg text-gray-500 border-r border-gray-400 tracking-wider">
                        503                    </div>

                    <div class="ml-4 text-lg text-gray-500 uppercase tracking-wider">
                        Service Unavailable                    </div>
                </div>
            </div>
        </div>
    </body>
</html>

Comments


Get job history

GET
https://www.review.good2gosoftware.com
/api/v1/jobs/{job_guid}/changelogs
requires authentication

It returns array (list) of job history.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}

URL Parameters

job_guid
string
required

The guid of the job. This can be derived from the list of jobs returned from api 'api/v1/jobs'.

Example:
nesciunt

Response Fields

Example request:
curl --request GET \
    --get "https://www.review.good2gosoftware.com/api/v1/jobs/nesciunt/changelogs" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response:
[
    {
        "category": "comments",
        "comments": "Update email send to test.good2go@gmail.com",
        "created_at": "2021-02-08T16:46:56.000Z",
        "from_email": "test.good2go@yahoo.com",
        "id": 702,
        "job_guid": "d92430f7-ba9c-490c-a070-4eeff0da9d54"
    },
    {
        "category": "notification.manual",
        "comments": "Reminder email sent to test.good2go@gmail.com",
        "created_at": "2021-02-08T15:20:44.000Z",
        "from_email": "test.good2go@yahoo.com",
        "id": 699,
        "job_guid": "d92430f7-ba9c-490c-a070-4eeff0da9d54"
    },
    {
        "category": "comments.approval",
        "comments": "(Status: approved) Looks to be okay",
        "created_at": "2020-12-12T06:56:43.000Z",
        "from_email": "test.good2go@yahoo.com",
        "id": 481,
        "job_guid": "d92430f7-ba9c-490c-a070-4eeff0da9d54"
    },
    {
        "category": "comments.assigned",
        "comments": "(Assigned to: team.member@gmail.com) Please add bleed to this job.",
        "created_at": "2020-12-10T18:21:11.000Z",
        "from_email": "test.good2go@yahoo.com",
        "id": 478,
        "job_guid": "d92430f7-ba9c-490c-a070-4eeff0da9d54"
    },
    {
        "category": "image-info",
        "comments": "{\"width\":320,\"height\":215,\"mime\":\"image/png\",\"color\":\"UNKNOWN\",\"bits\":0}",
        "created_at": "2020-12-06T05:19:14.000Z",
        "from_email": "test.good2go@yahoo.com",
        "id": 448,
        "job_guid": "d92430f7-ba9c-490c-a070-4eeff0da9d54"
    },
    {
        "category": "comments",
        "comments": "A first version uploaded - 1",
        "created_at": "2020-12-06T05:19:14.000Z",
        "from_email": "test.good2go@yahoo.com",
        "id": 449,
        "job_guid": "d92430f7-ba9c-490c-a070-4eeff0da9d54"
    }
]

Log comments

POST
https://www.review.good2gosoftware.com
/api/v1/jobs/{job_guid}/changelogs
requires authentication

Log user defined comments.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json

URL Parameters

job_guid
string
required

The guid of the job. This can be derived from the list of jobs returned from api 'api/v1/jobs'.

Example:
est

Body Parameters

Response Fields

Example request:
curl --request POST \
    "https://www.review.good2gosoftware.com/api/v1/jobs/est/changelogs" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"comments\": \"Customer want 100 copies to be printed.\",
    \"recipients\": [
        \"abc@pqr.com\"
    ]
}"
Example response:
{
    "category": "comments.approval",
    "comments": "(Status: approved) Looks to be okay",
    "created_at": "2020-12-12T06:56:43.000Z",
    "from_email": "test.good2go@yahoo.com",
    "id": 481,
    "job_guid": "d92430f7-ba9c-490c-a070-4eeff0da9d54"
}

Get latest job comments

GET
https://www.review.good2gosoftware.com
/api/v1/jobs/{job_guid}/changelogs/latest
requires authentication

It returns latest job comment.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}

URL Parameters

job_guid
string
required

The guid of the job. This can be derived from the list of jobs returned from api 'api/v1/jobs'.

Example:
ut

Response Fields

Example request:
curl --request GET \
    --get "https://www.review.good2gosoftware.com/api/v1/jobs/ut/changelogs/latest" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
Example response:
{
    "category": "comments.approval",
    "comments": "(Status: approved) Looks to be okay",
    "created_at": "2020-12-12T06:56:43.000Z",
    "from_email": "test.good2go@yahoo.com",
    "id": 481,
    "job_guid": "d92430f7-ba9c-490c-a070-4eeff0da9d54"
}