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 revolve around job, job properties and job actions. The first point
for a consumer of API is to learn four basic tasks:
- How to create a job, especially a file?
- How to get list of available jobs?
- How to get intrinsic properties of job?
- How to create task associated with a job?
Two most frequently use APIs are - (1) getting list of available jobs and (2) getting intrinsic
properties of job. To get list of the jobs, simply use the API: api/v1/jobs
.
This returns list of jobs already available on the Good2Go for the given user. Each job
in the list has a unique GUID.
If the GUID of the job is known then intrinsic properties of job can be retrieve using
API: api/v1/jobs/{job}
. Where in {job} 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.
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.
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.
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
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 two more time after 30
and 300
seconds 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.created
jobs.label.changed
jobs.preflighted
jobs.review.notify
jobs.review.reply
jobs.status.changed
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
requires authentication
The jobs are filtered by query parameters as defined below.
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" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://www.review.good2gosoftware.com/api/v1/jobs"
);
const params = {
"date_for": "reviewed_at.",
"sort_column": "created_at",
"sort_direction": "ASC",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.review.good2gosoftware.com/api/v1/jobs';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'date_for' => 'reviewed_at.',
'sort_column' => 'created_at',
'sort_direction' => 'ASC',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
Example response (200):
{
"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": "http://localhost:8000/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": "http://www.good2gosoftware.com/api/v1/jobs?page=1",
"last": "http://www.good2gosoftware.com/api/v1/jobs?page=2",
"prev": null,
"next": "http://www.good2gosoftware.com/api/v1/jobs?page=2"
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 2,
"path": "http://www.good2gosoftware.com/api/v1/jobs",
"per_page": 10,
"to": 10,
"total": 12
},
"name": "Customer Folder",
"parent_guid": "",
"p_email": null
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Response
Response Fields
ac
object
Hint about access control, if any, on this returned data.
data
string[][]
An array of jobs which match the url query
guid
string
The GUID of the folder. This is same as parent GUID passed on the url query. It could be empty which mean the root folder.
meta
object
The pagination information about current query
name
string
The name of folder. It could be empty which mean the root folder.
parent_guid
string
The GUID of the parent folder, if any.
Get job information
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:
- Status of the job,
- To whom the job being assigned,
- The customer of the job,
- Any comments added to the job by print buyer,
- The size of the job,
- File mime type,
- The current job version,
- Also it provides some more information about given job type (pdf, image etc.).
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}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://www.review.good2gosoftware.com/api/v1/jobs/b507769f-f7ec-40d2-bd29-f3825adf83ca."
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.review.good2gosoftware.com/api/v1/jobs/b507769f-f7ec-40d2-bd29-f3825adf83ca.';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
Example response (200):
{
"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": "http://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
}
Example response (404):
{
"error": {
"message": "Resource not found.",
"status_code": 404
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Response
Response Fields
ac
object
Hint about access control, if any, on this returned data.
asg_email
string
The email of user to whom this job has been assigned.
assigned_at
Job assigned/unassigned date.
c_email
string
Customer email address.
created_at
string
Job creation date.
cus_download
boolean
Whether print buyer will be allowed to download the file or not. Default value is 'false'.
deleted_at
string
When the job was moved to trash. Default value is 'null'.
due_at
Due date of the job to complete. Default value is 'null'.
guid
string
GUID of this job.
has_comment
boolean
If a comment has been made on the job by print buyer or partner or assignee. Default value is 'false'.
is_folder
boolean
If this job is a file or folder.
is_own
boolean
If the current user own this job or not. Default value is 'true'.
is_portal
boolean
If this folder is used for job portal.
locked
boolean
If this job (applicable for file only) is locked or not.
more_info
object
Extra info about this job. This is job specific (type or source or metadata).
name
string
The name of the job.
newly_assigned
boolean
If the job is recently assigned to a user and no update found after assignment.
parent_guid
string
The GUID of the parent folder, if any. Default value is 'null'.
p_email
string
The partner email for job forward.
path_url
string
The url path to view the file. Return null in case of folder.
reviewed_at
Job reviewed date (approved/rejected/change-requested).
size
integer
The size of the original file associated with the job. Default value is 0 (zero). Especially in case folder it is always 0 (zero).
status
string
The status of the job. Valid values are [ new, approved, rejected, pending, processing, expired ]. Default value is 'new'.
type
string
The mime-type of the document associated with the job. For folder it value is null.
updated_at
string
The last updated date and time.
version
integer
The current version of the document. Each time a new document is uploaded the version is incremented. Default value is 1 (one).
Create a new job
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'.
Example request:
curl --request POST \
"https://www.review.good2gosoftware.com/api/v1/jobs" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"parent_guid\": \"2e52307f-c06e-34ff-9dd7-8422c0f8e589\",
\"alt_text\": \"This is test job. MIS order #12345.\",
\"c_email\": \"michael.tillman@example.com\",
\"cus_download\": false,
\"due_at\": \"2024-11-30T08:37:46.000Z\",
\"is_folder\": false,
\"is_portal\": true,
\"label\": \"Send for review\",
\"name\": \"10 Pack Art Side Label - 10mg proof.pdf\",
\"p_email\": \"qjerde@example.org\",
\"show_job_spec\": true,
\"show_preflight\": false,
\"status\": \"processing\",
\"type\": \"application\\/pdf\"
}"
const url = new URL(
"https://www.review.good2gosoftware.com/api/v1/jobs"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"parent_guid": "2e52307f-c06e-34ff-9dd7-8422c0f8e589",
"alt_text": "This is test job. MIS order #12345.",
"c_email": "michael.tillman@example.com",
"cus_download": false,
"due_at": "2024-11-30T08:37:46.000Z",
"is_folder": false,
"is_portal": true,
"label": "Send for review",
"name": "10 Pack Art Side Label - 10mg proof.pdf",
"p_email": "qjerde@example.org",
"show_job_spec": true,
"show_preflight": false,
"status": "processing",
"type": "application\/pdf"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.review.good2gosoftware.com/api/v1/jobs';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'parent_guid' => '2e52307f-c06e-34ff-9dd7-8422c0f8e589',
'alt_text' => 'This is test job. MIS order #12345.',
'c_email' => 'michael.tillman@example.com',
'cus_download' => false,
'due_at' => '2024-11-30T08:37:46.000Z',
'is_folder' => false,
'is_portal' => true,
'label' => 'Send for review',
'name' => '10 Pack Art Side Label - 10mg proof.pdf',
'p_email' => 'qjerde@example.org',
'show_job_spec' => true,
'show_preflight' => false,
'status' => 'processing',
'type' => 'application/pdf',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
Example response (200):
{
"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": "http://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
}
Example response (404):
{
"error": {
"message": "Resource not found",
"status_code": 404
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update an existing job
requires authentication
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" \
--header "Accept: application/json" \
--data "{
\"parent_guid\": \"d0e17d60-98d1-3e72-b4fa-0687fbd1cd70\",
\"alt_text\": \"This is test job. MIS order #12345.\",
\"c_email\": \"bergnaum.elisha@example.net\",
\"cus_download\": false,
\"due_at\": \"2024-11-30T08:37:46.000Z\",
\"is_folder\": false,
\"is_portal\": false,
\"label\": \"Send for review\",
\"name\": \"10 Pack Art Side Label - 10mg proof.pdf\",
\"p_email\": \"xfranecki@example.com\",
\"show_job_spec\": true,
\"show_preflight\": false,
\"status\": \"processing\",
\"type\": \"application\\/pdf\"
}"
const url = new URL(
"https://www.review.good2gosoftware.com/api/v1/jobs/b507769f-f7ec-40d2-bd29-f3825adf83ca."
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"parent_guid": "d0e17d60-98d1-3e72-b4fa-0687fbd1cd70",
"alt_text": "This is test job. MIS order #12345.",
"c_email": "bergnaum.elisha@example.net",
"cus_download": false,
"due_at": "2024-11-30T08:37:46.000Z",
"is_folder": false,
"is_portal": false,
"label": "Send for review",
"name": "10 Pack Art Side Label - 10mg proof.pdf",
"p_email": "xfranecki@example.com",
"show_job_spec": true,
"show_preflight": false,
"status": "processing",
"type": "application\/pdf"
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.review.good2gosoftware.com/api/v1/jobs/b507769f-f7ec-40d2-bd29-f3825adf83ca.';
$response = $client->put(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'parent_guid' => 'd0e17d60-98d1-3e72-b4fa-0687fbd1cd70',
'alt_text' => 'This is test job. MIS order #12345.',
'c_email' => 'bergnaum.elisha@example.net',
'cus_download' => false,
'due_at' => '2024-11-30T08:37:46.000Z',
'is_folder' => false,
'is_portal' => false,
'label' => 'Send for review',
'name' => '10 Pack Art Side Label - 10mg proof.pdf',
'p_email' => 'xfranecki@example.com',
'show_job_spec' => true,
'show_preflight' => false,
'status' => 'processing',
'type' => 'application/pdf',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
Example response (200):
{
"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": "http://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
}
Example response (404):
{
"error": {
"message": "Resource not found",
"status_code": 404
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete an existing job
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.
Example request:
curl --request DELETE \
"https://www.review.good2gosoftware.com/api/v1/jobs/b507769f-f7ec-40d2-bd29-f3825adf83ca." \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://www.review.good2gosoftware.com/api/v1/jobs/b507769f-f7ec-40d2-bd29-f3825adf83ca."
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.review.good2gosoftware.com/api/v1/jobs/b507769f-f7ec-40d2-bd29-f3825adf83ca.';
$response = $client->delete(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
Example response (200):
{}
Example response (404):
{
"error": {
"message": "Resource not found",
"status_code": 404
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Duplicate document
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).
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" \
--header "Accept: application/json" \
--data "{
\"c_email\": \"vsteuber@example.net\"
}"
const url = new URL(
"https://www.review.good2gosoftware.com/api/v1/jobs/b507769f-f7ec-40d2-bd29-f3825adf83ca/duplicate"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"c_email": "vsteuber@example.net"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.review.good2gosoftware.com/api/v1/jobs/b507769f-f7ec-40d2-bd29-f3825adf83ca/duplicate';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'c_email' => 'vsteuber@example.net',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
Example response (200):
{
"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": "http://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
}
Example response (404):
{
"error": {
"message": "Resource not found",
"status_code": 404
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Customer
Get job's customer information
requires authentication
This returns information available about the customer associated with this job.
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}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://www.review.good2gosoftware.com/api/v1/jobs/b507769f-f7ec-40d2-bd29-f3825adf83ca./customer"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.review.good2gosoftware.com/api/v1/jobs/b507769f-f7ec-40d2-bd29-f3825adf83ca./customer';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
Example response (200):
{
"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"
}
Example response (404):
{
"error": {
"message": "Customer email not defined.",
"status_code": 404
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Response
Response Fields
address
string
Customer's address.
alt_phone
string
Customer's alternative phone number.
c_email
string
Customer's email address.
c_name
string
Customer's name.
city
string
Customer's city in the address.
company
string
Customer's company name.
group
string
Specific group assigned to customer.
identity
string
Identity of the customer (reference to other database/record), if any.
phone
string
Customer's phone number.
state
string
Customer's city in the address.
zip_code
string
Customer's zip code in the address.
Update job's customer
requires authentication
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" \
--header "Accept: application/json" \
--data "{
\"address\": \"40 North Canal Street, Shickshinny, PA 12345, United States\",
\"alt_phone\": \"123-456-7890\",
\"c_email\": \"citlalli.kautzer@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\"
}"
const url = new URL(
"https://www.review.good2gosoftware.com/api/v1/jobs/b507769f-f7ec-40d2-bd29-f3825adf83ca./customer"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"address": "40 North Canal Street, Shickshinny, PA 12345, United States",
"alt_phone": "123-456-7890",
"c_email": "citlalli.kautzer@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"
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.review.good2gosoftware.com/api/v1/jobs/b507769f-f7ec-40d2-bd29-f3825adf83ca./customer';
$response = $client->put(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'address' => '40 North Canal Street, Shickshinny, PA 12345, United States',
'alt_phone' => '123-456-7890',
'c_email' => 'citlalli.kautzer@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',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
Example response (200):
{
"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"
}
Example response (200):
{
"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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Response
Response Fields
address
string
Partner's address.
alt_phone
string
Partner's alternative phone number.
c_email
string
Partner's email address.
c_name
string
Partner's name.
city
string
Partner's city in the address.
company
string
Partner's company name.
group
string
Specific group assigned to customer.
identity
string
Identity of the customer (reference to other database/record), if any.
phone
string
Partner's phone number.
state
string
Partner's city in the address.
zip_code
string
Partner's zip code in the address.
Unassign job's customer
requires authentication
Remove job customer associated with given job.
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}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://www.review.good2gosoftware.com/api/v1/jobs/b507769f-f7ec-40d2-bd29-f3825adf83ca./customer"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.review.good2gosoftware.com/api/v1/jobs/b507769f-f7ec-40d2-bd29-f3825adf83ca./customer';
$response = $client->delete(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
Example response (200):
{}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Ownership
Get job owner information
requires authentication
Example request:
curl --request GET \
--get "https://www.review.good2gosoftware.com/api/v1/jobs/03a71fd0-cc06-4432-bfef-44baa7a1d7c6./ownership" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://www.review.good2gosoftware.com/api/v1/jobs/03a71fd0-cc06-4432-bfef-44baa7a1d7c6./ownership"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.review.good2gosoftware.com/api/v1/jobs/03a71fd0-cc06-4432-bfef-44baa7a1d7c6./ownership';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
Example response (200):
{
"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"
}
Example response (404):
{
"error": {
"message": "Resource not found",
"status_code": 404
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Response
Response Fields
guid
string
The GUID of the job.
owner
object
The information about job owner.
parent
object
The complete information about parent folder.
parent_guid
string
The GUID of parent folder.
Update job owner and parent folder.
requires authentication
This API is especially useful for moving a job either from one folder to another or from one user to another, or both.
Example request:
curl --request POST \
"https://www.review.good2gosoftware.com/api/v1/jobs/03a71fd0-cc06-4432-bfef-44baa7a1d7c6./ownership" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"parent_guid\": \"velit\"
}"
const url = new URL(
"https://www.review.good2gosoftware.com/api/v1/jobs/03a71fd0-cc06-4432-bfef-44baa7a1d7c6./ownership"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"parent_guid": "velit"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.review.good2gosoftware.com/api/v1/jobs/03a71fd0-cc06-4432-bfef-44baa7a1d7c6./ownership';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'parent_guid' => 'velit',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
Example response (200):
{
"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": "http://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
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Partner
Get job's partner information
requires authentication
This returns information available about the partner associated with this job.
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}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://www.review.good2gosoftware.com/api/v1/jobs/b507769f-f7ec-40d2-bd29-f3825adf83ca./partner"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.review.good2gosoftware.com/api/v1/jobs/b507769f-f7ec-40d2-bd29-f3825adf83ca./partner';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
Example response (200):
{
"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"
}
Example response (404):
{
"error": {
"message": "Partner email not defined.",
"status_code": 404
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Response
Response Fields
address
string
Partner's address.
alt_phone
string
Partner's alternative phone number.
c_email
string
Partner's email address.
c_name
string
Partner's name.
city
string
Partner's city in the address.
company
string
Partner's company name.
group
string
Specific group assigned to customer.
identity
string
Identity of the customer (reference to other database/record), if any.
phone
string
Partner's phone number.
state
string
Partner's city in the address.
zip_code
string
Partner's zip code in the address.
Update job's partner
requires authentication
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" \
--header "Accept: application/json" \
--data "{
\"address\": \"40 North Canal Street, Shickshinny, PA 12345, United States\",
\"alt_phone\": \"123-456-7890\",
\"c_email\": \"goodwin.savanah@example.org\",
\"c_name\": \"Tom Jerry\",
\"city\": \"Shickshinny\",
\"company\": \"Good2Go Software\",
\"group\": \"abc-company\",
\"identity\": \"acf093ed\",
\"phone\": \"234-567-8901\",
\"state\": \"PA\",
\"zip_code\": \"12345\"
}"
const url = new URL(
"https://www.review.good2gosoftware.com/api/v1/jobs/b507769f-f7ec-40d2-bd29-f3825adf83ca./partner"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"address": "40 North Canal Street, Shickshinny, PA 12345, United States",
"alt_phone": "123-456-7890",
"c_email": "goodwin.savanah@example.org",
"c_name": "Tom Jerry",
"city": "Shickshinny",
"company": "Good2Go Software",
"group": "abc-company",
"identity": "acf093ed",
"phone": "234-567-8901",
"state": "PA",
"zip_code": "12345"
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.review.good2gosoftware.com/api/v1/jobs/b507769f-f7ec-40d2-bd29-f3825adf83ca./partner';
$response = $client->put(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'address' => '40 North Canal Street, Shickshinny, PA 12345, United States',
'alt_phone' => '123-456-7890',
'c_email' => 'goodwin.savanah@example.org',
'c_name' => 'Tom Jerry',
'city' => 'Shickshinny',
'company' => 'Good2Go Software',
'group' => 'abc-company',
'identity' => 'acf093ed',
'phone' => '234-567-8901',
'state' => 'PA',
'zip_code' => '12345',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
Example response (200):
{
"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"
}
Example response (200):
{
"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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Response
Response Fields
address
string
Partner's address.
alt_phone
string
Partner's alternative phone number.
c_email
string
Partner's email address.
c_name
string
Partner's name.
city
string
Partner's city in the address.
company
string
Partner's company name.
group
string
Specific group assigned to customer.
identity
string
Identity of the customer (reference to other database/record), if any.
phone
string
Partner's phone number.
state
string
Partner's city in the address.
zip_code
string
Partner's zip code in the address.
Unassign job's partner
requires authentication
Remove job partner associated with given job.
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}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://www.review.good2gosoftware.com/api/v1/jobs/b507769f-f7ec-40d2-bd29-f3825adf83ca./partner"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.review.good2gosoftware.com/api/v1/jobs/b507769f-f7ec-40d2-bd29-f3825adf83ca./partner';
$response = $client->delete(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
Example response (200):
{}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
File upload
APIs to upload a new document or update an existing document in a job.
Upload a file revision
requires authentication
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" \
--header "Accept: application/json" \
--form "comments=File from
example customer."\
--form "default[comments]=1"\
--form "default[task]="\
--form "default[reviewers]="\
--form "schedule=now"\
--form "task[category]=assign-task"\
--form "task[due_at]=2024-05-21T15:26:01.000Z"\
--form "task[req_confirm]="\
--form "task[status]=architecto"\
--form "reason=reset-task"\
--form "recipient=tom.jerry@tj.com"\
--form "reviewers[]=et"\
--form "alt_text=File from example customer."\
--form "label=ysbgdghvsmvwsbpx"\
--form "name=Test-File.pdf"\
--form "parent=852215c9-2871-4a28-b9fc-b70b4c166e41"\
--form "puid=iymzpwvrqw"\
--form "file_url=https://www.bergnaum.org/dolores-voluptatum-aut-quod-neque-voluptas"\
--form "size=789012"\
--form "type=application/pdf"\
--form "filekey=@/tmp/php4Fua0k"
const url = new URL(
"https://www.review.good2gosoftware.com/api/v1/jobs/2dd7f609-d85c-4409-8c12-9fbb494bf549/revision"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "multipart/form-data",
"Accept": "application/json",
};
const body = new FormData();
body.append('comments', 'File from
example customer.');
body.append('default[comments]', '1');
body.append('default[task]', '');
body.append('default[reviewers]', '');
body.append('schedule', 'now');
body.append('task[category]', 'assign-task');
body.append('task[due_at]', '2024-05-21T15:26:01.000Z');
body.append('task[req_confirm]', '');
body.append('task[status]', 'architecto');
body.append('reason', 'reset-task');
body.append('recipient', 'tom.jerry@tj.com');
body.append('reviewers[]', 'et');
body.append('alt_text', 'File from example customer.');
body.append('label', 'ysbgdghvsmvwsbpx');
body.append('name', 'Test-File.pdf');
body.append('parent', '852215c9-2871-4a28-b9fc-b70b4c166e41');
body.append('puid', 'iymzpwvrqw');
body.append('file_url', 'https://www.bergnaum.org/dolores-voluptatum-aut-quod-neque-voluptas');
body.append('size', '789012');
body.append('type', 'application/pdf');
body.append('filekey', document.querySelector('input[name="filekey"]').files[0]);
fetch(url, {
method: "POST",
headers,
body,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.review.good2gosoftware.com/api/v1/jobs/2dd7f609-d85c-4409-8c12-9fbb494bf549/revision';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'multipart/form-data',
'Accept' => 'application/json',
],
'multipart' => [
[
'name' => 'comments',
'contents' => 'File from
example customer.'
],
[
'name' => 'default[comments]',
'contents' => '1'
],
[
'name' => 'default[task]',
'contents' => ''
],
[
'name' => 'default[reviewers]',
'contents' => ''
],
[
'name' => 'schedule',
'contents' => 'now'
],
[
'name' => 'task[category]',
'contents' => 'assign-task'
],
[
'name' => 'task[due_at]',
'contents' => '2024-05-21T15:26:01.000Z'
],
[
'name' => 'task[req_confirm]',
'contents' => ''
],
[
'name' => 'task[status]',
'contents' => 'architecto'
],
[
'name' => 'reason',
'contents' => 'reset-task'
],
[
'name' => 'recipient',
'contents' => 'tom.jerry@tj.com'
],
[
'name' => 'reviewers[]',
'contents' => 'et'
],
[
'name' => 'alt_text',
'contents' => 'File from example customer.'
],
[
'name' => 'label',
'contents' => 'ysbgdghvsmvwsbpx'
],
[
'name' => 'name',
'contents' => 'Test-File.pdf'
],
[
'name' => 'parent',
'contents' => '852215c9-2871-4a28-b9fc-b70b4c166e41'
],
[
'name' => 'puid',
'contents' => 'iymzpwvrqw'
],
[
'name' => 'file_url',
'contents' => 'https://www.bergnaum.org/dolores-voluptatum-aut-quod-neque-voluptas'
],
[
'name' => 'size',
'contents' => '789012'
],
[
'name' => 'type',
'contents' => 'application/pdf'
],
[
'name' => 'filekey',
'contents' => fopen('/tmp/php4Fua0k', 'r')
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
Example response (200):
{
"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": "http://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
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Response
Response Fields
ac
object
Hint about access control, if any, on this returned data.
c_email
string
Customer email address.
guid
string
required The unique GUID of the job.
parent_guid
string
The GUID of the parent folder, if any.
Upload and create a file
requires authentication
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" \
--header "Accept: application/json" \
--form "comments=Please
review this file."\
--form "default[comments]="\
--form "default[task]="\
--form "default[reviewers]="\
--form "schedule=now"\
--form "task[category]=review-task"\
--form "task[due_at]=2024-05-21T15:26:01.000Z"\
--form "task[req_confirm]=1"\
--form "task[status]=paused"\
--form "reason=update-task"\
--form "recipient=tom.jerry@tj.com"\
--form "reviewers[]=rerum"\
--form "alt_text=File from example customer."\
--form "label=iure"\
--form "name=Test-File.pdf"\
--form "parent=852215c9-2871-4a28-b9fc-b70b4c166e41"\
--form "puid=syxoigeivq"\
--form "file_url=http://hintz.com/placeat-voluptatem-itaque-distinctio-sint-et-aut"\
--form "size=15"\
--form "type=application/img"\
--form "filekey=@/tmp/phpVhFSHw"
const url = new URL(
"https://www.review.good2gosoftware.com/api/v1/upload"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "multipart/form-data",
"Accept": "application/json",
};
const body = new FormData();
body.append('comments', 'Please
review this file.');
body.append('default[comments]', '');
body.append('default[task]', '');
body.append('default[reviewers]', '');
body.append('schedule', 'now');
body.append('task[category]', 'review-task');
body.append('task[due_at]', '2024-05-21T15:26:01.000Z');
body.append('task[req_confirm]', '1');
body.append('task[status]', 'paused');
body.append('reason', 'update-task');
body.append('recipient', 'tom.jerry@tj.com');
body.append('reviewers[]', 'rerum');
body.append('alt_text', 'File from example customer.');
body.append('label', 'iure');
body.append('name', 'Test-File.pdf');
body.append('parent', '852215c9-2871-4a28-b9fc-b70b4c166e41');
body.append('puid', 'syxoigeivq');
body.append('file_url', 'http://hintz.com/placeat-voluptatem-itaque-distinctio-sint-et-aut');
body.append('size', '15');
body.append('type', 'application/img');
body.append('filekey', document.querySelector('input[name="filekey"]').files[0]);
fetch(url, {
method: "POST",
headers,
body,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.review.good2gosoftware.com/api/v1/upload';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'multipart/form-data',
'Accept' => 'application/json',
],
'multipart' => [
[
'name' => 'comments',
'contents' => 'Please
review this file.'
],
[
'name' => 'default[comments]',
'contents' => ''
],
[
'name' => 'default[task]',
'contents' => ''
],
[
'name' => 'default[reviewers]',
'contents' => ''
],
[
'name' => 'schedule',
'contents' => 'now'
],
[
'name' => 'task[category]',
'contents' => 'review-task'
],
[
'name' => 'task[due_at]',
'contents' => '2024-05-21T15:26:01.000Z'
],
[
'name' => 'task[req_confirm]',
'contents' => '1'
],
[
'name' => 'task[status]',
'contents' => 'paused'
],
[
'name' => 'reason',
'contents' => 'update-task'
],
[
'name' => 'recipient',
'contents' => 'tom.jerry@tj.com'
],
[
'name' => 'reviewers[]',
'contents' => 'rerum'
],
[
'name' => 'alt_text',
'contents' => 'File from example customer.'
],
[
'name' => 'label',
'contents' => 'iure'
],
[
'name' => 'name',
'contents' => 'Test-File.pdf'
],
[
'name' => 'parent',
'contents' => '852215c9-2871-4a28-b9fc-b70b4c166e41'
],
[
'name' => 'puid',
'contents' => 'syxoigeivq'
],
[
'name' => 'file_url',
'contents' => 'http://hintz.com/placeat-voluptatem-itaque-distinctio-sint-et-aut'
],
[
'name' => 'size',
'contents' => '15'
],
[
'name' => 'type',
'contents' => 'application/img'
],
[
'name' => 'filekey',
'contents' => fopen('/tmp/phpVhFSHw', 'r')
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
Example response (200):
{
"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": "http://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
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Response
Response Fields
ac
object
Hint about access control, if any, on this returned data.
c_email
string
Customer email address.
guid
string
required The unique GUID of the job.
parent_guid
string
The GUID of the parent folder, if any.
File download
Download document
This method does not need authentication. If you have the job GUID and name, then file can be downloaded.
Example request:
curl --request GET \
--get "https://www.review.good2gosoftware.com/review/download/minima/document/accusamus" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://www.review.good2gosoftware.com/review/download/minima/document/accusamus"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.review.good2gosoftware.com/review/download/minima/document/accusamus';
$response = $client->get(
$url,
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
Example response (503):
Show headers
cache-control: no-cache, private
content-type: application/json
{
"message": "Service Unavailable"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Job tasks
APIs to send, view, update or delete job related tasks and reminders.
There are several different kind of tasks:
- 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
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.
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}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://www.review.good2gosoftware.com/api/v1/jobs/tasks/default"
);
const params = {
"job_category": "order",
"kind": "review-task",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.review.good2gosoftware.com/api/v1/jobs/tasks/default';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'job_category' => 'order',
'kind' => 'review-task',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
Example response (200):
{
"assigned_to": "tom.jerry@abc.com",
"category": "review-reminders",
"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",
"req_confirm": true,
"status": "done",
"updated_at": "2021-01-25T09:45:10.000Z"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Response
Response Fields
assigned_to
string
The assignee of the task.
category
string
The task category. The expected values are [assign-task, forward-task, quote-review-task, review-task, revision-task and upload-task].
created_at
string
Task creation date.
due_at
string
Due date of the task to complete. Default value is 'null'.
executed_at
string
Last task execution date. Default value is 'null'.
id
string
The id of this task. Id is especially useful for updating a given task.
job_status
string
The job status selected by the assignee.
req_confirm
boolean
Whether required confirmation is enabled or not.
status
string
The status of the job. Valid values are [new, paused, processing, and done]. Default value is 'new'.
updated_at
string
Task update date.
Get task list
requires authentication
Return all tasks associated with the given job.
Example request:
curl --request GET \
--get "https://www.review.good2gosoftware.com/api/v1/jobs/2dd7f609-d85c-4409-8c12-9fbb494bf549./tasks?kind=review-task&default=" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://www.review.good2gosoftware.com/api/v1/jobs/2dd7f609-d85c-4409-8c12-9fbb494bf549./tasks"
);
const params = {
"kind": "review-task",
"default": "0",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.review.good2gosoftware.com/api/v1/jobs/2dd7f609-d85c-4409-8c12-9fbb494bf549./tasks';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'kind' => 'review-task',
'default' => '0',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
Example response (200):
[
{
"assigned_to": "tom.jerry@abc.com",
"category": "review-reminders",
"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": "pending",
"req_confirm": false,
"status": "paused",
"updated_at": "2021-01-25T09:45:10.000Z"
}
]
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Response
Response Fields
assigned_to
string
The assignee of the task.
category
string
The task category. The expected values are [assign-task, forward-task, quote-review-task, review-task, revision-task and upload-task].
created_at
string
Task creation date.
due_at
string
Due date of the task to complete. Default value is 'null'.
executed_at
string
Last task execution date. Default value is 'null'.
id
string
The id of this task. Id is especially useful for updating a given task.
job_status
string
The job status selected by the assignee.
req_confirm
boolean
Whether required confirmation is enabled or not.
status
string
The status of the job. Valid values are [new, paused, processing, and done]. Default value is 'new'.
updated_at
string
Task last update date.
Get task information
requires authentication
Return the information associated with given task of a job.
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}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://www.review.good2gosoftware.com/api/v1/jobs/2dd7f609-d85c-4409-8c12-9fbb494bf549./tasks/290"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.review.good2gosoftware.com/api/v1/jobs/2dd7f609-d85c-4409-8c12-9fbb494bf549./tasks/290';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
Example response (200):
{
"assigned_to": "tom.jerry@abc.com",
"category": "review-reminders",
"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",
"req_confirm": true,
"status": "done",
"updated_at": "2021-01-25T09:45:10.000Z"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Response
Response Fields
assigned_to
string
The assignee of the task.
category
string
The task category. The expected values are [assign-task, forward-task, quote-review-task, review-task, revision-task and upload-task].
created_at
string
Task creation date.
due_at
string
Due date of the task to complete. Default value is 'null'.
executed_at
string
Last task execution date. Default value is 'null'.
id
string
The id of this task. Id is especially useful for updating a given task.
job_status
string
The job status selected by the assignee.
req_confirm
boolean
Whether required confirmation is enabled or not.
status
string
The status of the job. Valid values are [new, paused, processing, and done]. Default value is 'new'.
updated_at
string
Task last update date.
Create a new task
requires authentication
Create a new task and also newly created task is executed immediately.
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" \
--header "Accept: application/json" \
--data "{
\"assigned_to\": \"abc@xyz.com.\",
\"category\": \"review-task.\",
\"due_at\": \"2024-01-24T06:37:06.000Z.\",
\"job_status\": \"Pending.\",
\"req_confirm\": true,
\"status\": \"new.\"
}"
const url = new URL(
"https://www.review.good2gosoftware.com/api/v1/jobs/2dd7f609-d85c-4409-8c12-9fbb494bf549./tasks"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"assigned_to": "abc@xyz.com.",
"category": "review-task.",
"due_at": "2024-01-24T06:37:06.000Z.",
"job_status": "Pending.",
"req_confirm": true,
"status": "new."
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.review.good2gosoftware.com/api/v1/jobs/2dd7f609-d85c-4409-8c12-9fbb494bf549./tasks';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'assigned_to' => 'abc@xyz.com.',
'category' => 'review-task.',
'due_at' => '2024-01-24T06:37:06.000Z.',
'job_status' => 'Pending.',
'req_confirm' => true,
'status' => 'new.',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
Example response (200):
{
"assigned_to": "tom.jerry@abc.com",
"category": "review-reminders",
"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",
"req_confirm": true,
"status": "done",
"updated_at": "2021-01-25T09:45:10.000Z"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Response
Response Fields
assigned_to
string
The assignee of the task.
category
string
The task category. The expected values are [assign-task, forward-task, quote-review-task, review-task, revision-task and upload-task].
created_at
string
Task creation date.
due_at
string
Due date of the task to complete. Default value is 'null'.
executed_at
string
Last task execution date. Default value is 'null'.
id
string
The id of this task. Id is especially useful for updating a given task.
job_status
string
The job status selected by the assignee.
req_confirm
boolean
Whether required confirmation is enabled or not.
status
string
The status of the job. Valid values are [new, paused, processing, and done]. Default value is 'new'.
updated_at
string
Task last update date.
Update existing task
requires authentication
Update an existing task with new information.
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" \
--header "Accept: application/json" \
--data "{
\"category\": \"review-task\",
\"due_at\": \"2024-11-30T08:37:46.000Z\",
\"job_status\": \"expired\",
\"req_confirm\": false,
\"status\": \"closed\"
}"
const url = new URL(
"https://www.review.good2gosoftware.com/api/v1/jobs/2dd7f609-d85c-4409-8c12-9fbb494bf549./tasks/290"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"category": "review-task",
"due_at": "2024-11-30T08:37:46.000Z",
"job_status": "expired",
"req_confirm": false,
"status": "closed"
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.review.good2gosoftware.com/api/v1/jobs/2dd7f609-d85c-4409-8c12-9fbb494bf549./tasks/290';
$response = $client->put(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'category' => 'review-task',
'due_at' => '2024-11-30T08:37:46.000Z',
'job_status' => 'expired',
'req_confirm' => false,
'status' => 'closed',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
Example response (200):
{
"assigned_to": "tom.jerry@abc.com",
"category": "review-reminders",
"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",
"req_confirm": true,
"status": "done",
"updated_at": "2021-01-25T09:45:10.000Z"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Response
Response Fields
assigned_to
string
The assignee of the task. Example: abc@xyz.com.
category
string
The task category. The expected values are [assign-task, forward-task, quote-review-task, review-task, revision-task and upload-task]. Example: review-task.
created_at
string
Task creation date.
due_at
string
Due date of the task to complete. Default value is 'null'.
executed_at
string
Last task execution date. Default value is 'null'.
id
string
The id of this task. Id is especially useful for updating a given task.
job_status
string
The job status selected by the assignee.
req_confirm
boolean
Whether required confirmation is enabled or not. Example: false.
status
string
The status of the job. Valid values are [new, paused, processing, and done]. Default value is 'new'.
updated_at
string
Task last update date.
Send notification email
requires authentication
Send an email to assignee of task.
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" \
--header "Accept: application/json" \
--data "{
\"comments\": \"eaque\",
\"default\": {
\"comments\": false,
\"task\": false
},
\"schedule\": \"totam\",
\"task\": {
\"category\": \"review-task\",
\"due_at\": \"2024-05-21T15:26:01.000Z\",
\"req_confirm\": false,
\"status\": \"paused\"
},
\"reason\": \"est\"
}"
const url = new URL(
"https://www.review.good2gosoftware.com/api/v1/jobs/2dd7f609-d85c-4409-8c12-9fbb494bf549./tasks/290/notify"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"comments": "eaque",
"default": {
"comments": false,
"task": false
},
"schedule": "totam",
"task": {
"category": "review-task",
"due_at": "2024-05-21T15:26:01.000Z",
"req_confirm": false,
"status": "paused"
},
"reason": "est"
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.review.good2gosoftware.com/api/v1/jobs/2dd7f609-d85c-4409-8c12-9fbb494bf549./tasks/290/notify';
$response = $client->put(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'comments' => 'eaque',
'default' => [
'comments' => false,
'task' => false,
],
'schedule' => 'totam',
'task' => [
'category' => 'review-task',
'due_at' => '2024-05-21T15:26:01.000Z',
'req_confirm' => false,
'status' => 'paused',
],
'reason' => 'est',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
Example response (200):
{
"assigned_to": "tom.jerry@abc.com",
"category": "review-reminders",
"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",
"req_confirm": true,
"status": "done",
"updated_at": "2021-01-25T09:45:10.000Z"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Response
Response Fields
assigned_to
string
The assignee of the task.
category
string
The task category. The expected values are [assign-task, forward-task, quote-review-task, review-task, revision-task and upload-task].
created_at
string
Task creation date.
due_at
string
Due date of the task to complete. Default value is 'null'.
executed_at
string
Last task execution date. Default value is 'null'.
id
string
The id of this task. Id is especially useful for updating a given task.
job_status
string
The job status selected by the assignee.
req_confirm
boolean
Whether required confirmation is enabled or not.
status
string
The status of the job. Valid values are [new, paused, processing, and done]. Default value is 'new'.
updated_at
string
Task last update date.
Delete a job task
requires authentication
Delete given task related to a job.
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}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://www.review.good2gosoftware.com/api/v1/jobs/2dd7f609-d85c-4409-8c12-9fbb494bf549./tasks/290"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.review.good2gosoftware.com/api/v1/jobs/2dd7f609-d85c-4409-8c12-9fbb494bf549./tasks/290';
$response = $client->delete(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
Example response (200):
{}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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
requires authentication
This method list down reminders specifically assigned to given job.
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}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://www.review.good2gosoftware.com/api/v1/jobs/03a71fd0-cc06-4432-bfef-44baa7a1d7c6./reminders"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.review.good2gosoftware.com/api/v1/jobs/03a71fd0-cc06-4432-bfef-44baa7a1d7c6./reminders';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
Example response (200):
[
{
"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"
}
]
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Response
Response Fields
cancelled
boolean
[Optional] If the reminder was cancelled in past. It is only available for job associated reminders.
comparator
string
The comparator with reference to due date and time. The valid value are [equal, before, after, now].
created_at
string
Reminder creation date.
id
string
The id of this reminder.
job_guid
string
[Optional] The GUID of the job. It is only available for job associated reminders.
quantity
number
The quantity part of auto reminder (see also unit)
unit
string
The unit part of auto reminder. The supported values are [none, minutes, hours, days].
updated_at
string
The last updated date and time.
Get job reminder information
requires authentication
Return the reminder associated with given job.
Example request:
curl --request GET \
--get "https://www.review.good2gosoftware.com/api/v1/jobs/03a71fd0-cc06-4432-bfef-44baa7a1d7c6./reminders/5" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://www.review.good2gosoftware.com/api/v1/jobs/03a71fd0-cc06-4432-bfef-44baa7a1d7c6./reminders/5"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.review.good2gosoftware.com/api/v1/jobs/03a71fd0-cc06-4432-bfef-44baa7a1d7c6./reminders/5';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
Example response (200):
{
"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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Create a new reminder
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' }
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" \
--header "Accept: application/json" \
--data "{
\"quantity\": 82,
\"unit\": \"none\",
\"comparator\": \"now\",
\"job_guid\": \"e3cac0b1-b092-3fe3-a6b8-09f390820c5d\",
\"cancelled\": true
}"
const url = new URL(
"https://www.review.good2gosoftware.com/api/v1/jobs/03a71fd0-cc06-4432-bfef-44baa7a1d7c6./reminders"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"quantity": 82,
"unit": "none",
"comparator": "now",
"job_guid": "e3cac0b1-b092-3fe3-a6b8-09f390820c5d",
"cancelled": true
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.review.good2gosoftware.com/api/v1/jobs/03a71fd0-cc06-4432-bfef-44baa7a1d7c6./reminders';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'quantity' => 82,
'unit' => 'none',
'comparator' => 'now',
'job_guid' => 'e3cac0b1-b092-3fe3-a6b8-09f390820c5d',
'cancelled' => true,
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
Example response (200):
{
"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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update existing job reminder
requires authentication
Example request:
curl --request PUT \
"https://www.review.good2gosoftware.com/api/v1/jobs/03a71fd0-cc06-4432-bfef-44baa7a1d7c6./reminders/17" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"quantity\": 59,
\"unit\": \"hours\",
\"comparator\": \"after\",
\"job_guid\": \"63400704-1f51-395a-b79d-343fe267d4d2\",
\"cancelled\": true
}"
const url = new URL(
"https://www.review.good2gosoftware.com/api/v1/jobs/03a71fd0-cc06-4432-bfef-44baa7a1d7c6./reminders/17"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"quantity": 59,
"unit": "hours",
"comparator": "after",
"job_guid": "63400704-1f51-395a-b79d-343fe267d4d2",
"cancelled": true
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.review.good2gosoftware.com/api/v1/jobs/03a71fd0-cc06-4432-bfef-44baa7a1d7c6./reminders/17';
$response = $client->put(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'quantity' => 59,
'unit' => 'hours',
'comparator' => 'after',
'job_guid' => '63400704-1f51-395a-b79d-343fe267d4d2',
'cancelled' => true,
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
Example response (200):
{
"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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete a job reminder
requires authentication
Delete a reminder related to a job.
Example request:
curl --request DELETE \
"https://www.review.good2gosoftware.com/api/v1/jobs/03a71fd0-cc06-4432-bfef-44baa7a1d7c6./reminders/6" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://www.review.good2gosoftware.com/api/v1/jobs/03a71fd0-cc06-4432-bfef-44baa7a1d7c6./reminders/6"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.review.good2gosoftware.com/api/v1/jobs/03a71fd0-cc06-4432-bfef-44baa7a1d7c6./reminders/6';
$response = $client->delete(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
Example response (200):
{}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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:
- 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 notifications history log
requires authentication
Get list of all notification associated with the given job. This includes both manual notification sent in past, auto reminders associated with the job and cancelled reminders, etc.
Example request:
curl --request GET \
--get "https://www.review.good2gosoftware.com/api/v1/jobs/et/notifications/history?kind=optio" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://www.review.good2gosoftware.com/api/v1/jobs/et/notifications/history"
);
const params = {
"kind": "optio",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.review.good2gosoftware.com/api/v1/jobs/et/notifications/history';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'kind' => 'optio',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
Example response (200):
[
{
"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"
}
]
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Response
Response Fields
cancelled
boolean
If the reminder was cancelled in past.
comparator
string
The comparator with reference to due date and time. The valid value are [equal, before, after, now].
created_at
string
Reminder creation date.
date
string
The date and time of last reminder was sent or will be send in future.
id
string
The id of this reminder. Its value is undefined for manual reminder.
is_auto
boolean
If the reminder is part of auto reminder or manual reminder.
job_guid
string
The GUID of the job.
quantity
number
The quantity part of auto reminder (see also unit)
schedule
string
Whether to schedule the reminder now or later. Default value is now.
unit
string
The unit part of auto reminder. The supported values are [none, minutes, hours, days].
updated_at
string
The last updated date and time.
Get notification
requires authentication
Get notification associated with the given task for a job.
Example request:
curl --request GET \
--get "https://www.review.good2gosoftware.com/api/v1/jobs/ex/notifications/consequuntur" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://www.review.good2gosoftware.com/api/v1/jobs/ex/notifications/consequuntur"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.review.good2gosoftware.com/api/v1/jobs/ex/notifications/consequuntur';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
Example response (200):
{
"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"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Response
Response Fields
comments
string
Past comment, if any, associated with this notification.
recipient
string
This represent responsible customer or partner assigned to the job. Customer are associated with job review and partner are associated with job forward.
task
object
The task object associated with given task kind
requested in query parameter.
category
string
The task category. The supported values are [assign-task, forward-task, quote-review-task, review-task, revision-task, and upload-task]. This is same as query parameters passed to call this API.
due_at
string
Due date of the task to complete. Default value is 'null'.
req_confirm
boolean
Whether required confirmation is enabled or not.
status
string
The status of the task. Valid values are [new, paused, processing, and done]. Default value is 'new'.
Create a new manual notification
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.
Example request:
curl --request POST \
"https://www.review.good2gosoftware.com/api/v1/jobs/culpa/notifications" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"comments\": \"exercitationem\",
\"default\": {
\"comments\": true,
\"task\": false,
\"reviewers\": true
},
\"schedule\": \"vero\",
\"task\": {
\"category\": \"dolor\",
\"due_at\": \"accusantium\",
\"req_confirm\": false,
\"status\": \"quae\"
},
\"reason\": \"nihil\",
\"recipient\": \"ab\",
\"reviewers\": [
\"ducimus\"
]
}"
const url = new URL(
"https://www.review.good2gosoftware.com/api/v1/jobs/culpa/notifications"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"comments": "exercitationem",
"default": {
"comments": true,
"task": false,
"reviewers": true
},
"schedule": "vero",
"task": {
"category": "dolor",
"due_at": "accusantium",
"req_confirm": false,
"status": "quae"
},
"reason": "nihil",
"recipient": "ab",
"reviewers": [
"ducimus"
]
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.review.good2gosoftware.com/api/v1/jobs/culpa/notifications';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'comments' => 'exercitationem',
'default' => [
'comments' => true,
'task' => false,
'reviewers' => true,
],
'schedule' => 'vero',
'task' => [
'category' => 'dolor',
'due_at' => 'accusantium',
'req_confirm' => false,
'status' => 'quae',
],
'reason' => 'nihil',
'recipient' => 'ab',
'reviewers' => [
'ducimus',
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
Example response (200):
{
"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"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Response
Response Fields
comments
string
The comment sent through this notification.
reason
string
The notification reason. Refer to body parameters.
recipient
string
This represent responsible customer or partner assigned to the job. Customer are associated with job review and partner are associated with job forward.
schedule
string
required When to schedule this reminder. The valid values are [now, later].
task
object
required The task associated with this job.
category
string
The task category. The supported values are [assign-task, forward-task, quote-review-task, review-task, revision-task, and upload-task]. This is same as query parameters passed to call this API.
due_at
string
Due date of the task to complete. Default value is 'null'.
req_confirm
boolean
Whether required confirmation is enabled or not.
status
string
The status of the task. Valid values are [new, paused, processing, and done]. Default value is 'new'.
Miscellaneous endpoints
Apply a job 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.
Example request:
curl --request POST \
"https://www.review.good2gosoftware.com/api/v1/jobs/atque/action/adipisci" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"ignore\": [
\"quos\"
]
}"
const url = new URL(
"https://www.review.good2gosoftware.com/api/v1/jobs/atque/action/adipisci"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"ignore": [
"quos"
]
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.review.good2gosoftware.com/api/v1/jobs/atque/action/adipisci';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'ignore' => [
'quos',
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
Example response (200):
{
"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": "http://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
}
Example response (403):
{
"error": {
"message": "User access not permitted.",
"status_code": 403
}
}
Example response (406):
{
"error": {
"message": "Acceptable action ids are [ 'inherit', 'renew', 'send-to-mis' ].",
"status_code": 406
}
}
Example response (422):
{
"error": {
"message": "Parent job is not a folder.",
"status_code": 422
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Assign to team member
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.
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" \
--header "Accept: application/json" \
--data "{
\"comments\": \"ipsa\",
\"default\": {
\"comments\": false,
\"task\": true
},
\"schedule\": \"now\",
\"task\": {
\"category\": \"ut\",
\"due_at\": \"fugiat\",
\"req_confirm\": false,
\"status\": \"in\"
},
\"reason\": \"send-message\",
\"recipient\": \"abc@mno.com\",
\"assignee\": \"abc@mno.com\"
}"
const url = new URL(
"https://www.review.good2gosoftware.com/api/v1/jobs/b507769f-f7ec-40d2-bd29-f3825adf83ca/assign"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"comments": "ipsa",
"default": {
"comments": false,
"task": true
},
"schedule": "now",
"task": {
"category": "ut",
"due_at": "fugiat",
"req_confirm": false,
"status": "in"
},
"reason": "send-message",
"recipient": "abc@mno.com",
"assignee": "abc@mno.com"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.review.good2gosoftware.com/api/v1/jobs/b507769f-f7ec-40d2-bd29-f3825adf83ca/assign';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'comments' => 'ipsa',
'default' => [
'comments' => false,
'task' => true,
],
'schedule' => 'now',
'task' => [
'category' => 'ut',
'due_at' => 'fugiat',
'req_confirm' => false,
'status' => 'in',
],
'reason' => 'send-message',
'recipient' => 'abc@mno.com',
'assignee' => 'abc@mno.com',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
Example response (200):
{
"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"
}
}
Example response (422):
{
"error": {
"message": "User abc.pqr@xyz.com is not a team member.",
"status_code": 422
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Response
Response Fields
assignee
string
required Email address of team member.
comments
string
The comment sent through this notification.
task
object
required The task associated with this job
category
string
required The task category. The supported values are [review-task, upload-task, revision-task, and assign-task].
due_at
string
Due date of the task to complete. Default value is 'null'.
status
string
The status of the job. Valid values are [new, paused, processing, and done]. Default value is 'new'.
Get job history
requires authentication
It returns array (list) of job history.
Example request:
curl --request GET \
--get "https://www.review.good2gosoftware.com/api/v1/jobs/id/changelogs" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://www.review.good2gosoftware.com/api/v1/jobs/id/changelogs"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.review.good2gosoftware.com/api/v1/jobs/id/changelogs';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
Example response (200):
[
{
"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"
}
]
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Response
Response Fields
category
string
The record category. This is used for internal purpose and can change in future.
comments
string
The comments added to the job.
created_at
string
When this record was made in ISO UTC datetime format.
from_email
string
The email ID of Goo2Go user or customer who created this record.
Get latest job comments
requires authentication
It returns latest job comment.
Example request:
curl --request GET \
--get "https://www.review.good2gosoftware.com/api/v1/jobs/doloribus/changelogs/latest" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://www.review.good2gosoftware.com/api/v1/jobs/doloribus/changelogs/latest"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.review.good2gosoftware.com/api/v1/jobs/doloribus/changelogs/latest';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
Example response (200):
{
"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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Response
Response Fields
category
string
The record category. This is used for internal purpose and can change in future.
comments
string
The comments added to the job.
created_at
string
When this record was made in ISO UTC datetime format.
from_email
string
The email ID of Goo2Go user or customer who created this record.
Get lock state of a job
requires authentication
Example request:
curl --request GET \
--get "https://www.review.good2gosoftware.com/api/v1/jobs/rem/locking" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://www.review.good2gosoftware.com/api/v1/jobs/rem/locking"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.review.good2gosoftware.com/api/v1/jobs/rem/locking';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
Example response (200):
{
"guid": "f6ac15ca-e4fa-4e1f-bb94-088ec04d7dab",
"locked": true
}
Example response (404):
{
"error": {
"message": "Resource not found",
"status_code": 404
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Response
Response Fields
locked
boolean
If this file is locked or not.
Lock or unlock a job
requires authentication
Example request:
curl --request POST \
"https://www.review.good2gosoftware.com/api/v1/jobs/voluptatem/locking" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"locked\": true
}"
const url = new URL(
"https://www.review.good2gosoftware.com/api/v1/jobs/voluptatem/locking"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"locked": true
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.review.good2gosoftware.com/api/v1/jobs/voluptatem/locking';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'locked' => true,
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
Example response (200):
{
"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": "http://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
}
Example response (404):
{
"error": {
"message": "Resource not found",
"status_code": 404
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Send status update
requires authentication
Example request:
curl --request POST \
"https://www.review.good2gosoftware.com/api/v1/jobs/000054ea-adb6-4d1a-aba5-f27b6fbdcf80/send/update" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"label\": \"Send for review\"
}"
const url = new URL(
"https://www.review.good2gosoftware.com/api/v1/jobs/000054ea-adb6-4d1a-aba5-f27b6fbdcf80/send/update"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"label": "Send for review"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.review.good2gosoftware.com/api/v1/jobs/000054ea-adb6-4d1a-aba5-f27b6fbdcf80/send/update';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'label' => 'Send for review',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
Example response (200):
{
"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": "http://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
}
Example response (404):
{
"error": {
"message": "Resource not found",
"status_code": 404
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get analytical data
requires authentication
Return consolidated data of user of all jobs.
Example request:
curl --request GET \
--get "https://www.review.good2gosoftware.com/api/v1/analytics/jobs" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://www.review.good2gosoftware.com/api/v1/analytics/jobs"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.review.good2gosoftware.com/api/v1/analytics/jobs';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
Example response (200):
{
"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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Response
Response Fields
approved
integer
Number of files or folders approved.
data_size_mb
integer
Size of memory usage in mega bytes (MB).
due_cnt
integer
Number of files due today.
live_files
integer
Total number of live files at this moment.
locked_at
string
The last time when user account was locked.
name
string
The name of the parent folder (root).
processed
integer
Number of files processed by user so far.
rejected
integer
Number of files or folders rejected so far.
signed_at
string
Last date on which user has successfully login to Good2Go review application (in ISO UTC datetime format).
Get analytical data for files in a folder
requires authentication
Return consolidated data of user for jobs in a given folder.
Example request:
curl --request GET \
--get "https://www.review.good2gosoftware.com/api/v1/analytics/jobs/error" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://www.review.good2gosoftware.com/api/v1/analytics/jobs/error"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://www.review.good2gosoftware.com/api/v1/analytics/jobs/error';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
Example response (200):
{
"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"
}
Example response (422):
{
"error": {
"message": "This job is not a folder.",
"status_code": 422
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Response
Response Fields
approved
integer
Number of files or folders approved.
data_size_mb
integer
Size of memory usage in mega bytes (MB).
due_cnt
integer
Number of files due today.
guid
string
The guid of parent folder. Null in case of root folder.
live_files
integer
Total number of live files at this moment.
locked_at
string
The last time when user account was locked.
name
string
The name of the parent folder.
processed
integer
Number of files processed by user so far.
rejected
integer
Number of files or folders rejected so far.
signed_at
string
Last date on which user has successfully login to Good2Go review application (in ISO UTC datetime format).