Introduction
This documentation aims to provide all the information you need to work with the Upfocus API.
If you're reading this, you're one of the first people to use it!
Feel free to email support if you have any questions, would like to request additional endpoints, etc.
Base URL
https://app.upfocus.io
Authenticating requests
This API is authenticated by sending an Authorization
header with the value "Bearer {YOUR_AUTH_KEY}"
.
All authenticated endpoints are marked with a requires authentication
badge in the documentation below.
You can create and manage your API tokens from your profile.
Customers
API endpoints for managing the customers of a product.
List all customers
requires authentication
Lists all existing customers of a product.
Example request:
curl -X GET \
-G "https://app.upfocus.io/api/products/slack/customers" \
-H "Authorization: Bearer {YOUR_AUTH_KEY}" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"email":"[email protected]","direction":"asc","search":"similique","sort":"first_name","status":"not"}'
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://app.upfocus.io/api/products/slack/customers',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'email' => '[email protected]',
'direction' => 'asc',
'search' => 'similique',
'sort' => 'first_name',
'status' => 'not',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://app.upfocus.io/api/products/slack/customers"
);
let headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"email": "[email protected]",
"direction": "asc",
"search": "similique",
"sort": "first_name",
"status": "not"
}
fetch(url, {
method: "GET",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
Example response (200):
[
{
"created_at": "2019-08-01T00:00:00.000000Z",
"updated_at": "2021-05-04T11:02:52.000000Z",
"uuid": "0c2b7650-c110-4e56-96d5-a65adba4d0a4",
"first_name": "First Name",
"last_name": "Last Name",
"email": "[email protected]",
"avatar_url": null,
"product_survey_status": "open",
"attributes": {
"ltv": "",
"plan": "Business"
},
"urls": {
"api": "https:\/\/upfocus.io\/api\/products\/slack\/customers\/0c2b7650-c110-4e56-96d5-a65adba4d0a4",
"audits_api": "https:\/\/upfocus.io\/api\/products\/slack\/customers\/0c2b7650-c110-4e56-96d5-a65adba4d0a4\/audits",
"html": "https:\/\/upfocus.io\/products\/slack\/customers\/0c2b7650-c110-4e56-96d5-a65adba4d0a4",
"product_survey": "https:\/\/upfocus.io\/product-survey\/0c2b7650-c110-4e56-96d5-a65adba4d0a4"
}
}
]
Received response:
Request failed with error:
Create a customer
requires authentication
Create a new customer for a product.
Example request:
curl -X POST \
"https://app.upfocus.io/api/products/slack/customers" \
-H "Authorization: Bearer {YOUR_AUTH_KEY}" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"email":"[email protected]","first_name":"cupiditate","last_name":"ut","avatar_url":"http:\/\/gleason.net\/","attributes":["repellat"]}'
$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://app.upfocus.io/api/products/slack/customers',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'email' => '[email protected]',
'first_name' => 'cupiditate',
'last_name' => 'ut',
'avatar_url' => 'http://gleason.net/',
'attributes' => [
'repellat',
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://app.upfocus.io/api/products/slack/customers"
);
let headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"email": "[email protected]",
"first_name": "cupiditate",
"last_name": "ut",
"avatar_url": "http:\/\/gleason.net\/",
"attributes": [
"repellat"
]
}
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
Example response (200):
{
"created_at": "2019-08-01T00:00:00.000000Z",
"updated_at": "2021-05-04T11:02:52.000000Z",
"uuid": "0c2b7650-c110-4e56-96d5-a65adba4d0a4",
"first_name": "First Name",
"last_name": "Last Name",
"email": "[email protected]",
"avatar_url": null,
"product_survey_status": "open",
"attributes": {
"ltv": "",
"plan": "Business"
},
"urls": {
"api": "https:\/\/upfocus.io\/api\/products\/slack\/customers\/0c2b7650-c110-4e56-96d5-a65adba4d0a4",
"audits_api": "https:\/\/upfocus.io\/api\/products\/slack\/customers\/0c2b7650-c110-4e56-96d5-a65adba4d0a4\/audits",
"html": "https:\/\/upfocus.io\/products\/slack\/customers\/0c2b7650-c110-4e56-96d5-a65adba4d0a4",
"product_survey": "https:\/\/upfocus.io\/product-survey\/0c2b7650-c110-4e56-96d5-a65adba4d0a4"
}
}
Received response:
Request failed with error:
Response
Response Fields
created_at
string
The date the customer was created.
updated_at
string
The date the customer was last updated.
uuid
string
The UUID for the customer.
email
string
The customer's email address.
first_name
string
The customer's first name.
last_name
string
The customer's last name.
avatar_url
string
An optional custom source URL for the customer's avatar.
product_survey_status
string
The status of the customer's most recent product survey response.
attributes
object
The customer's attributes as key-value pairs.
attributes.plan
string
If the product had a 'Plan' custom attribute, this would be the key.
urls
object
All URLs representing the customer.
urls.api
string
The API URL for the customer.
urls.audits_api
string
The API URL for the customer's audit log.
urls.html
string
The URL for the customer's detail view.
urls.product_survey
string
The customer's product survey URL.
Retrieve a customer
requires authentication
Get an existing customer of a product.
Example request:
curl -X GET \
-G "https://app.upfocus.io/api/products/slack/customers/0c2b7650-c110-4e56-96d5-a65adba4d0a4" \
-H "Authorization: Bearer {YOUR_AUTH_KEY}" \
-H "Content-Type: application/json" \
-H "Accept: application/json"
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://app.upfocus.io/api/products/slack/customers/0c2b7650-c110-4e56-96d5-a65adba4d0a4',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://app.upfocus.io/api/products/slack/customers/0c2b7650-c110-4e56-96d5-a65adba4d0a4"
);
let headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (200):
{
"created_at": "2019-08-01T00:00:00.000000Z",
"updated_at": "2021-05-04T11:02:52.000000Z",
"uuid": "0c2b7650-c110-4e56-96d5-a65adba4d0a4",
"first_name": "First Name",
"last_name": "Last Name",
"email": "[email protected]",
"avatar_url": null,
"product_survey_status": "open",
"attributes": {
"ltv": "",
"plan": "Business"
},
"urls": {
"api": "https:\/\/upfocus.io\/api\/products\/slack\/customers\/0c2b7650-c110-4e56-96d5-a65adba4d0a4",
"audits_api": "https:\/\/upfocus.io\/api\/products\/slack\/customers\/0c2b7650-c110-4e56-96d5-a65adba4d0a4\/audits",
"html": "https:\/\/upfocus.io\/products\/slack\/customers\/0c2b7650-c110-4e56-96d5-a65adba4d0a4",
"product_survey": "https:\/\/upfocus.io\/product-survey\/0c2b7650-c110-4e56-96d5-a65adba4d0a4"
}
}
Received response:
Request failed with error:
Response
Response Fields
created_at
string
The date the customer was created.
updated_at
string
The date the customer was last updated.
uuid
string
The UUID for the customer.
email
string
The customer's email address.
first_name
string
The customer's first name.
last_name
string
The customer's last name.
avatar_url
string
An optional custom source URL for the customer's avatar.
attributes
object
The customer's attributes as key-value pairs.
attributes.plan
string
If the product had a 'Plan' custom attribute, this would be the key.
urls
object
All URLs representing the customer.
urls.api
string
The API URL for the customer.
urls.audits_api
string
The API URL for the customer's audit log.
urls.html
string
The URL for the customer's detail view.
urls.product_survey
string
The customer's product survey URL.
Update a customer
requires authentication
Update an existing customer of a product.
Example request:
curl -X PUT \
"https://app.upfocus.io/api/products/slack/customers/0c2b7650-c110-4e56-96d5-a65adba4d0a4" \
-H "Authorization: Bearer {YOUR_AUTH_KEY}" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"email":"[email protected]","first_name":"et","last_name":"qui","avatar_url":"http:\/\/www.oconner.biz\/maxime-aspernatur-corporis-enim.html","attributes":["ut"]}'
$client = new \GuzzleHttp\Client();
$response = $client->put(
'https://app.upfocus.io/api/products/slack/customers/0c2b7650-c110-4e56-96d5-a65adba4d0a4',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'email' => '[email protected]',
'first_name' => 'et',
'last_name' => 'qui',
'avatar_url' => 'http://www.oconner.biz/maxime-aspernatur-corporis-enim.html',
'attributes' => [
'ut',
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://app.upfocus.io/api/products/slack/customers/0c2b7650-c110-4e56-96d5-a65adba4d0a4"
);
let headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"email": "[email protected]",
"first_name": "et",
"last_name": "qui",
"avatar_url": "http:\/\/www.oconner.biz\/maxime-aspernatur-corporis-enim.html",
"attributes": [
"ut"
]
}
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
Example response (200):
{
"created_at": "2019-08-01T00:00:00.000000Z",
"updated_at": "2021-05-04T11:02:52.000000Z",
"uuid": "0c2b7650-c110-4e56-96d5-a65adba4d0a4",
"first_name": "First Name",
"last_name": "Last Name",
"email": "[email protected]",
"avatar_url": null,
"product_survey_status": "open",
"attributes": {
"ltv": "",
"plan": "Business"
},
"urls": {
"api": "https:\/\/upfocus.io\/api\/products\/slack\/customers\/0c2b7650-c110-4e56-96d5-a65adba4d0a4",
"audits_api": "https:\/\/upfocus.io\/api\/products\/slack\/customers\/0c2b7650-c110-4e56-96d5-a65adba4d0a4\/audits",
"html": "https:\/\/upfocus.io\/products\/slack\/customers\/0c2b7650-c110-4e56-96d5-a65adba4d0a4",
"product_survey": "https:\/\/upfocus.io\/product-survey\/0c2b7650-c110-4e56-96d5-a65adba4d0a4"
}
}
Received response:
Request failed with error:
Response
Response Fields
created_at
string
The date the customer was created.
updated_at
string
The date the customer was last updated.
uuid
string
The UUID for the customer.
email
string
The customer's email address.
first_name
string
The customer's first name.
last_name
string
The customer's last name.
avatar_url
string
An optional custom source URL for the customer's avatar.
attributes
object
The customer's attributes as key-value pairs.
attributes.plan
string
If the product had a 'Plan' custom attribute, this would be the key.
urls
object
All URLs representing the customer.
urls.api
string
The API URL for the customer.
urls.audits_api
string
The API URL for the customer's audit log.
urls.html
string
The URL for the customer's detail view.
urls.product_survey
string
The customer's product survey URL.
Delete a customer
requires authentication
Delete an existing customer of a product.
Example request:
curl -X DELETE \
"https://app.upfocus.io/api/products/slack/customers/0c2b7650-c110-4e56-96d5-a65adba4d0a4" \
-H "Authorization: Bearer {YOUR_AUTH_KEY}" \
-H "Content-Type: application/json" \
-H "Accept: application/json"
$client = new \GuzzleHttp\Client();
$response = $client->delete(
'https://app.upfocus.io/api/products/slack/customers/0c2b7650-c110-4e56-96d5-a65adba4d0a4',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://app.upfocus.io/api/products/slack/customers/0c2b7650-c110-4e56-96d5-a65adba4d0a4"
);
let headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());
Received response:
Request failed with error:
List customer audit log
requires authentication
Get all audit log entries for a customer of a product.
Example request:
curl -X GET \
-G "https://app.upfocus.io/api/products/slack/customers/0c2b7650-c110-4e56-96d5-a65adba4d0a4/audits" \
-H "Authorization: Bearer {YOUR_AUTH_KEY}" \
-H "Content-Type: application/json" \
-H "Accept: application/json"
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://app.upfocus.io/api/products/slack/customers/0c2b7650-c110-4e56-96d5-a65adba4d0a4/audits',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://app.upfocus.io/api/products/slack/customers/0c2b7650-c110-4e56-96d5-a65adba4d0a4/audits"
);
let headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (401):
{
"message": "Unauthenticated."
}
Received response:
Request failed with error:
Suggestions
API endpoints for managing the suggestions of a product.
List all suggestions
requires authentication
Lists all existing suggestions of a product.
Example request:
curl -X GET \
-G "https://app.upfocus.io/api/products/slack/suggestions" \
-H "Authorization: Bearer {YOUR_AUTH_KEY}" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"customer":"est","search":"aliquid","limit":10,"theme":"quidem","time":"culpa","user":"[email protected]"}'
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://app.upfocus.io/api/products/slack/suggestions',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'customer' => 'est',
'search' => 'aliquid',
'limit' => 10,
'theme' => 'quidem',
'time' => 'culpa',
'user' => '[email protected]',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://app.upfocus.io/api/products/slack/suggestions"
);
let headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"customer": "est",
"search": "aliquid",
"limit": 10,
"theme": "quidem",
"time": "culpa",
"user": "[email protected]"
}
fetch(url, {
method: "GET",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
Example response (200):
[
{
"created_at": "2019-08-01T00:00:00.000000Z",
"updated_at": "2021-05-04T11:02:52.000000Z",
"tagged_at": "2021-05-04 11:02:52",
"uuid": "da29df2c-7f1d-4ca2-a2c4-27267be07134",
"content": "I really wish Slack was less distracting.",
"source": "https:\/\/slack.com\/",
"importance": "important",
"urgency": "",
"no_themes": null,
"themes": [
{
"created_at": "2021-05-04T11:02:52.000000Z",
"updated_at": "2021-05-04T11:02:52.000000Z",
"uuid": "f247185a-950d-4496-9477-afa585fb50c3",
"name": "Less Distracting",
"status": "research",
"description": null,
"count": 1,
"importance_score": 2,
"urgency_score": 0,
"stakeholders": [
{
"first_name": "First Name",
"last_name": "Last Name",
"email": "[email protected]",
"avatar_url": null,
"type": "customer",
"uuid": "0c2b7650-c110-4e56-96d5-a65adba4d0a4"
}
],
"dev_idea_blurbs": null,
"urls": {
"api": "https:\/\/upfocus.io\/api\/products\/slack\/suggestion-themes\/f247185a-950d-4496-9477-afa585fb50c3",
"audits_api": "https:\/\/upfocus.io\/api\/products\/slack\/suggestion-themes\/f247185a-950d-4496-9477-afa585fb50c3\/audits",
"html": "https:\/\/upfocus.io\/products\/slack\/suggestion-themes\/f247185a-950d-4496-9477-afa585fb50c3"
},
"customer_need": null,
"importance_counts": {
"blocker": 0,
"important": 1,
"nice": 0,
"": 0
},
"urgency_counts": {
"now": 0,
"soon": 0,
"eventually": 0,
"": 1
},
"theme_value": "less distracting"
}
],
"urls": {
"api": "https:\/\/upfocus.io\/api\/products\/slack\/suggestions\/da29df2c-7f1d-4ca2-a2c4-27267be07134",
"audits_api": "https:\/\/upfocus.io\/api\/products\/slack\/suggestions\/da29df2c-7f1d-4ca2-a2c4-27267be07134\/audits",
"html": "https:\/\/upfocus.io\/products\/slack\/suggestions\/da29df2c-7f1d-4ca2-a2c4-27267be07134"
},
"customer": {
"created_at": "2019-08-01T00:00:00.000000Z",
"updated_at": "2021-05-04T11:02:52.000000Z",
"uuid": "0c2b7650-c110-4e56-96d5-a65adba4d0a4",
"first_name": "First Name",
"last_name": "Last Name",
"email": "[email protected]",
"avatar_url": null,
"product_survey_status": "open",
"attributes": {
"ltv": "",
"plan": "Business"
},
"urls": {
"api": "https:\/\/upfocus.io\/api\/products\/slack\/customers\/0c2b7650-c110-4e56-96d5-a65adba4d0a4",
"audits_api": "https:\/\/upfocus.io\/api\/products\/slack\/customers\/0c2b7650-c110-4e56-96d5-a65adba4d0a4\/audits",
"html": "https:\/\/upfocus.io\/products\/slack\/customers\/0c2b7650-c110-4e56-96d5-a65adba4d0a4",
"product_survey": "https:\/\/upfocus.io\/product-survey\/0c2b7650-c110-4e56-96d5-a65adba4d0a4"
}
},
"user": {
"email": "[email protected]",
"first_name": "Slack",
"last_name": "User"
}
}
]
Received response:
Request failed with error:
Create a suggestion
requires authentication
Create a new suggestion for a product.
The content
is a required parameter and supports Markdown. To capture where
the suggestion came from, the optional source
parameter can be a URL or
string of text.
A suggestion can be associated with a customer via the customer.uuid
or
customer.email
parameter. The customer must already exist in the system.
The importance
and urgency
attributes are only permitted when a suggestion
is assigned to a customer.
If the suggestion came from a teammate, associate it with a user via user.email
.
Example request:
curl -X POST \
"https://app.upfocus.io/api/products/slack/suggestions" \
-H "Authorization: Bearer {YOUR_AUTH_KEY}" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"created_at":"2021-05-04T11:03:02+0000","content":"explicabo","source":"possimus","customer":{"uuid":"quo","email":"[email protected]"},"user":{"email":"odio"},"importance":"nice","urgency":"soon"}'
$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://app.upfocus.io/api/products/slack/suggestions',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'created_at' => '2021-05-04T11:03:02+0000',
'content' => 'explicabo',
'source' => 'possimus',
'customer' => [
'uuid' => 'quo',
'email' => '[email protected]',
],
'user' => [
'email' => 'odio',
],
'importance' => 'nice',
'urgency' => 'soon',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://app.upfocus.io/api/products/slack/suggestions"
);
let headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"created_at": "2021-05-04T11:03:02+0000",
"content": "explicabo",
"source": "possimus",
"customer": {
"uuid": "quo",
"email": "[email protected]"
},
"user": {
"email": "odio"
},
"importance": "nice",
"urgency": "soon"
}
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
Example response (200):
{
"created_at": "2019-08-01T00:00:00.000000Z",
"updated_at": "2021-05-04T11:02:52.000000Z",
"tagged_at": "2021-05-04 11:02:52",
"uuid": "da29df2c-7f1d-4ca2-a2c4-27267be07134",
"content": "I really wish Slack was less distracting.",
"source": "https:\/\/slack.com\/",
"importance": "important",
"urgency": "",
"no_themes": null,
"themes": [
{
"created_at": "2021-05-04T11:02:52.000000Z",
"updated_at": "2021-05-04T11:02:52.000000Z",
"uuid": "f247185a-950d-4496-9477-afa585fb50c3",
"name": "Less Distracting",
"status": "research",
"description": null,
"count": 1,
"importance_score": 2,
"urgency_score": 0,
"stakeholders": [
{
"first_name": "First Name",
"last_name": "Last Name",
"email": "[email protected]",
"avatar_url": null,
"type": "customer",
"uuid": "0c2b7650-c110-4e56-96d5-a65adba4d0a4"
}
],
"dev_idea_blurbs": null,
"urls": {
"api": "https:\/\/upfocus.io\/api\/products\/slack\/suggestion-themes\/f247185a-950d-4496-9477-afa585fb50c3",
"audits_api": "https:\/\/upfocus.io\/api\/products\/slack\/suggestion-themes\/f247185a-950d-4496-9477-afa585fb50c3\/audits",
"html": "https:\/\/upfocus.io\/products\/slack\/suggestion-themes\/f247185a-950d-4496-9477-afa585fb50c3"
},
"customer_need": null,
"importance_counts": {
"blocker": 0,
"important": 1,
"nice": 0,
"": 0
},
"urgency_counts": {
"now": 0,
"soon": 0,
"eventually": 0,
"": 1
},
"theme_value": "less distracting"
}
],
"urls": {
"api": "https:\/\/upfocus.io\/api\/products\/slack\/suggestions\/da29df2c-7f1d-4ca2-a2c4-27267be07134",
"audits_api": "https:\/\/upfocus.io\/api\/products\/slack\/suggestions\/da29df2c-7f1d-4ca2-a2c4-27267be07134\/audits",
"html": "https:\/\/upfocus.io\/products\/slack\/suggestions\/da29df2c-7f1d-4ca2-a2c4-27267be07134"
},
"customer": {
"created_at": "2019-08-01T00:00:00.000000Z",
"updated_at": "2021-05-04T11:02:52.000000Z",
"uuid": "0c2b7650-c110-4e56-96d5-a65adba4d0a4",
"first_name": "First Name",
"last_name": "Last Name",
"email": "[email protected]",
"avatar_url": null,
"product_survey_status": "open",
"attributes": {
"ltv": "",
"plan": "Business"
},
"urls": {
"api": "https:\/\/upfocus.io\/api\/products\/slack\/customers\/0c2b7650-c110-4e56-96d5-a65adba4d0a4",
"audits_api": "https:\/\/upfocus.io\/api\/products\/slack\/customers\/0c2b7650-c110-4e56-96d5-a65adba4d0a4\/audits",
"html": "https:\/\/upfocus.io\/products\/slack\/customers\/0c2b7650-c110-4e56-96d5-a65adba4d0a4",
"product_survey": "https:\/\/upfocus.io\/product-survey\/0c2b7650-c110-4e56-96d5-a65adba4d0a4"
}
},
"user": {
"email": "[email protected]",
"first_name": "Slack",
"last_name": "User"
}
}
Received response:
Request failed with error:
Response
Response Fields
created_at
string
The date the suggestion was created.
updated_at
string
The date the suggestion was last updated.
uuid
string
The UUID for the suggestion.
content
string
The content of the suggestion.
source
string
Where the suggestion originated.
customer
object
The customer associated with the suggestion (if it came from a customer).
customer.uuid
string
The UUID for the associated customer.
user
object
The user associated with the suggestion (if it was reported by a user).
importance
string
If the suggestion came from a customer, its importance.
urgency
string
If the suggestion came from a customer, its urgency.
themes
object[]
Any themes attached to the suggestion.
themes[].uuid
string
The UUID for the attached theme.
urls
object
All URLs representing the suggestion.
urls.api
string
The API URL for the suggestion.
urls.audits_api
string
The API URL for the suggestion's audit log.
urls.html
string
The URL for the suggestion's detail view.
Retrieve a suggestion
requires authentication
Get an existing suggestion of a product.
Example request:
curl -X GET \
-G "https://app.upfocus.io/api/products/slack/suggestions/da29df2c-7f1d-4ca2-a2c4-27267be07134" \
-H "Authorization: Bearer {YOUR_AUTH_KEY}" \
-H "Content-Type: application/json" \
-H "Accept: application/json"
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://app.upfocus.io/api/products/slack/suggestions/da29df2c-7f1d-4ca2-a2c4-27267be07134',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://app.upfocus.io/api/products/slack/suggestions/da29df2c-7f1d-4ca2-a2c4-27267be07134"
);
let headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (200):
{
"created_at": "2019-08-01T00:00:00.000000Z",
"updated_at": "2021-05-04T11:02:52.000000Z",
"tagged_at": "2021-05-04 11:02:52",
"uuid": "da29df2c-7f1d-4ca2-a2c4-27267be07134",
"content": "I really wish Slack was less distracting.",
"source": "https:\/\/slack.com\/",
"importance": "important",
"urgency": "",
"no_themes": null,
"themes": [
{
"created_at": "2021-05-04T11:02:52.000000Z",
"updated_at": "2021-05-04T11:02:52.000000Z",
"uuid": "f247185a-950d-4496-9477-afa585fb50c3",
"name": "Less Distracting",
"status": "research",
"description": null,
"count": 1,
"importance_score": 2,
"urgency_score": 0,
"stakeholders": [
{
"first_name": "First Name",
"last_name": "Last Name",
"email": "[email protected]",
"avatar_url": null,
"type": "customer",
"uuid": "0c2b7650-c110-4e56-96d5-a65adba4d0a4"
}
],
"dev_idea_blurbs": null,
"urls": {
"api": "https:\/\/upfocus.io\/api\/products\/slack\/suggestion-themes\/f247185a-950d-4496-9477-afa585fb50c3",
"audits_api": "https:\/\/upfocus.io\/api\/products\/slack\/suggestion-themes\/f247185a-950d-4496-9477-afa585fb50c3\/audits",
"html": "https:\/\/upfocus.io\/products\/slack\/suggestion-themes\/f247185a-950d-4496-9477-afa585fb50c3"
},
"customer_need": null,
"importance_counts": {
"blocker": 0,
"important": 1,
"nice": 0,
"": 0
},
"urgency_counts": {
"now": 0,
"soon": 0,
"eventually": 0,
"": 1
},
"theme_value": "less distracting"
}
],
"urls": {
"api": "https:\/\/upfocus.io\/api\/products\/slack\/suggestions\/da29df2c-7f1d-4ca2-a2c4-27267be07134",
"audits_api": "https:\/\/upfocus.io\/api\/products\/slack\/suggestions\/da29df2c-7f1d-4ca2-a2c4-27267be07134\/audits",
"html": "https:\/\/upfocus.io\/products\/slack\/suggestions\/da29df2c-7f1d-4ca2-a2c4-27267be07134"
},
"customer": {
"created_at": "2019-08-01T00:00:00.000000Z",
"updated_at": "2021-05-04T11:02:52.000000Z",
"uuid": "0c2b7650-c110-4e56-96d5-a65adba4d0a4",
"first_name": "First Name",
"last_name": "Last Name",
"email": "[email protected]",
"avatar_url": null,
"product_survey_status": "open",
"attributes": {
"ltv": "",
"plan": "Business"
},
"urls": {
"api": "https:\/\/upfocus.io\/api\/products\/slack\/customers\/0c2b7650-c110-4e56-96d5-a65adba4d0a4",
"audits_api": "https:\/\/upfocus.io\/api\/products\/slack\/customers\/0c2b7650-c110-4e56-96d5-a65adba4d0a4\/audits",
"html": "https:\/\/upfocus.io\/products\/slack\/customers\/0c2b7650-c110-4e56-96d5-a65adba4d0a4",
"product_survey": "https:\/\/upfocus.io\/product-survey\/0c2b7650-c110-4e56-96d5-a65adba4d0a4"
}
},
"user": {
"email": "[email protected]",
"first_name": "Slack",
"last_name": "User"
}
}
Received response:
Request failed with error:
Response
Response Fields
created_at
string
The date the suggestion was created.
updated_at
string
The date the suggestion was last updated.
uuid
string
The UUID for the suggestion.
content
string
The content of the suggestion.
source
string
Where the suggestion originated.
customer
object
The customer associated with the suggestion (if it came from a customer).
customer.uuid
string
The UUID for the associated customer.
user
object
The user associated with the suggestion (if it was reported by a user).
importance
string
If the suggestion came from a customer, its importance.
urgency
string
If the suggestion came from a customer, its urgency.
themes
object[]
Any themes attached to the suggestion.
themes[].uuid
string
The UUID for the attached theme.
urls
object
All URLs representing the suggestion.
urls.api
string
The API URL for the suggestion.
urls.audits_api
string
The API URL for the suggestion's audit log.
urls.html
string
The URL for the suggestion's detail view.
Update a suggestion
requires authentication
Update an existing suggestion of a product.
The content
is a required parameter and supports Markdown. To capture where
the suggestion came from, the optional source
parameter can be a URL or
string of text.
A suggestion can be associated with a customer via the customer.uuid
or
customer.email
parameter. The customer must already exist in the system.
The importance
and urgency
attributes are only permitted when a suggestion
is assigned to a customer.
If the suggestion came from a teammate, associate it with a user via user.email
.
Example request:
curl -X PUT \
"https://app.upfocus.io/api/products/slack/suggestions/da29df2c-7f1d-4ca2-a2c4-27267be07134" \
-H "Authorization: Bearer {YOUR_AUTH_KEY}" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"created_at":"2021-05-04T11:03:02+0000","content":"ab","source":"consequatur","customer":{"uuid":"dolore","email":"[email protected]"},"user":{"email":"iste"},"importance":"blocker","urgency":"now"}'
$client = new \GuzzleHttp\Client();
$response = $client->put(
'https://app.upfocus.io/api/products/slack/suggestions/da29df2c-7f1d-4ca2-a2c4-27267be07134',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'created_at' => '2021-05-04T11:03:02+0000',
'content' => 'ab',
'source' => 'consequatur',
'customer' => [
'uuid' => 'dolore',
'email' => '[email protected]',
],
'user' => [
'email' => 'iste',
],
'importance' => 'blocker',
'urgency' => 'now',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://app.upfocus.io/api/products/slack/suggestions/da29df2c-7f1d-4ca2-a2c4-27267be07134"
);
let headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"created_at": "2021-05-04T11:03:02+0000",
"content": "ab",
"source": "consequatur",
"customer": {
"uuid": "dolore",
"email": "[email protected]"
},
"user": {
"email": "iste"
},
"importance": "blocker",
"urgency": "now"
}
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
Example response (200):
{
"created_at": "2019-08-01T00:00:00.000000Z",
"updated_at": "2021-05-04T11:02:52.000000Z",
"tagged_at": "2021-05-04 11:02:52",
"uuid": "da29df2c-7f1d-4ca2-a2c4-27267be07134",
"content": "I really wish Slack was less distracting.",
"source": "https:\/\/slack.com\/",
"importance": "important",
"urgency": "",
"no_themes": null,
"themes": [
{
"created_at": "2021-05-04T11:02:52.000000Z",
"updated_at": "2021-05-04T11:02:52.000000Z",
"uuid": "f247185a-950d-4496-9477-afa585fb50c3",
"name": "Less Distracting",
"status": "research",
"description": null,
"count": 1,
"importance_score": 2,
"urgency_score": 0,
"stakeholders": [
{
"first_name": "First Name",
"last_name": "Last Name",
"email": "[email protected]",
"avatar_url": null,
"type": "customer",
"uuid": "0c2b7650-c110-4e56-96d5-a65adba4d0a4"
}
],
"dev_idea_blurbs": null,
"urls": {
"api": "https:\/\/upfocus.io\/api\/products\/slack\/suggestion-themes\/f247185a-950d-4496-9477-afa585fb50c3",
"audits_api": "https:\/\/upfocus.io\/api\/products\/slack\/suggestion-themes\/f247185a-950d-4496-9477-afa585fb50c3\/audits",
"html": "https:\/\/upfocus.io\/products\/slack\/suggestion-themes\/f247185a-950d-4496-9477-afa585fb50c3"
},
"customer_need": null,
"importance_counts": {
"blocker": 0,
"important": 1,
"nice": 0,
"": 0
},
"urgency_counts": {
"now": 0,
"soon": 0,
"eventually": 0,
"": 1
},
"theme_value": "less distracting"
}
],
"urls": {
"api": "https:\/\/upfocus.io\/api\/products\/slack\/suggestions\/da29df2c-7f1d-4ca2-a2c4-27267be07134",
"audits_api": "https:\/\/upfocus.io\/api\/products\/slack\/suggestions\/da29df2c-7f1d-4ca2-a2c4-27267be07134\/audits",
"html": "https:\/\/upfocus.io\/products\/slack\/suggestions\/da29df2c-7f1d-4ca2-a2c4-27267be07134"
},
"customer": {
"created_at": "2019-08-01T00:00:00.000000Z",
"updated_at": "2021-05-04T11:02:52.000000Z",
"uuid": "0c2b7650-c110-4e56-96d5-a65adba4d0a4",
"first_name": "First Name",
"last_name": "Last Name",
"email": "[email protected]",
"avatar_url": null,
"product_survey_status": "open",
"attributes": {
"ltv": "",
"plan": "Business"
},
"urls": {
"api": "https:\/\/upfocus.io\/api\/products\/slack\/customers\/0c2b7650-c110-4e56-96d5-a65adba4d0a4",
"audits_api": "https:\/\/upfocus.io\/api\/products\/slack\/customers\/0c2b7650-c110-4e56-96d5-a65adba4d0a4\/audits",
"html": "https:\/\/upfocus.io\/products\/slack\/customers\/0c2b7650-c110-4e56-96d5-a65adba4d0a4",
"product_survey": "https:\/\/upfocus.io\/product-survey\/0c2b7650-c110-4e56-96d5-a65adba4d0a4"
}
},
"user": {
"email": "[email protected]",
"first_name": "Slack",
"last_name": "User"
}
}
Received response:
Request failed with error:
Response
Response Fields
created_at
string
The date the suggestion was created.
updated_at
string
The date the suggestion was last updated.
uuid
string
The UUID for the suggestion.
content
string
The content of the suggestion.
source
string
Where the suggestion originated.
customer
object
The customer associated with the suggestion (if it came from a customer).
customer.uuid
string
The UUID for the associated customer.
user
object
The user associated with the suggestion (if it was reported by a user).
importance
string
If the suggestion came from a customer, its importance.
urgency
string
If the suggestion came from a customer, its urgency.
themes
object[]
Any themes attached to the suggestion.
themes[].uuid
string
The UUID for the attached theme.
urls
object
All URLs representing the suggestion.
urls.api
string
The API URL for the suggestion.
urls.audits_api
string
The API URL for the suggestion's audit log.
urls.html
string
The URL for the suggestion's detail view.
Delete a suggestion
requires authentication
Delete an existing suggestion of a product.
Example request:
curl -X DELETE \
"https://app.upfocus.io/api/products/slack/suggestions/da29df2c-7f1d-4ca2-a2c4-27267be07134" \
-H "Authorization: Bearer {YOUR_AUTH_KEY}" \
-H "Content-Type: application/json" \
-H "Accept: application/json"
$client = new \GuzzleHttp\Client();
$response = $client->delete(
'https://app.upfocus.io/api/products/slack/suggestions/da29df2c-7f1d-4ca2-a2c4-27267be07134',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://app.upfocus.io/api/products/slack/suggestions/da29df2c-7f1d-4ca2-a2c4-27267be07134"
);
let headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());
Received response:
Request failed with error:
List suggestion audit log
requires authentication
Get all audit log entries for a suggestion of a product.
Example request:
curl -X GET \
-G "https://app.upfocus.io/api/products/slack/suggestions/da29df2c-7f1d-4ca2-a2c4-27267be07134/audits" \
-H "Authorization: Bearer {YOUR_AUTH_KEY}" \
-H "Content-Type: application/json" \
-H "Accept: application/json"
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://app.upfocus.io/api/products/slack/suggestions/da29df2c-7f1d-4ca2-a2c4-27267be07134/audits',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://app.upfocus.io/api/products/slack/suggestions/da29df2c-7f1d-4ca2-a2c4-27267be07134/audits"
);
let headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (401):
{
"message": "Unauthenticated."
}
Received response:
Request failed with error:
Survey Responses
API endpoints for managing the survey responses of a product.
List all survey responses
requires authentication
Lists all existing survey responses of a product.
Example request:
curl -X GET \
-G "https://app.upfocus.io/api/products/slack/product-survey-responses" \
-H "Authorization: Bearer {YOUR_AUTH_KEY}" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"direction":"desc","disappointed":"somewhat","limit":5,"sort":"email"}'
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://app.upfocus.io/api/products/slack/product-survey-responses',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'direction' => 'desc',
'disappointed' => 'somewhat',
'limit' => 5,
'sort' => 'email',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://app.upfocus.io/api/products/slack/product-survey-responses"
);
let headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"direction": "desc",
"disappointed": "somewhat",
"limit": 5,
"sort": "email"
}
fetch(url, {
method: "GET",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
Example response (200):
[
{
"created_at": "2019-08-01T00:00:00.000000Z",
"tagged_at": null,
"uuid": "a8e3389f-ed62-41ee-af5a-bc486c829fc5",
"status": "complete",
"disappointed": "very",
"benefit": "We get to learn exactly why people find us valuable and where we can improve for others.",
"refine": "Test refinement answer",
"improve": null,
"who": "Online product\/business owners looking for customer-based insights to guide their decisions.",
"no_benefit_themes": null,
"no_refine_themes": null,
"no_improve_themes": null,
"no_who_themes": null,
"urls": {
"api": "https:\/\/upfocus.io\/api\/products\/slack\/product-survey-responses\/a8e3389f-ed62-41ee-af5a-bc486c829fc5",
"html": "https:\/\/upfocus.io\/products\/slack\/product-survey-responses\/a8e3389f-ed62-41ee-af5a-bc486c829fc5"
},
"customer": {
"created_at": "2019-08-01T00:00:00.000000Z",
"updated_at": "2021-05-04T11:02:52.000000Z",
"uuid": "0c2b7650-c110-4e56-96d5-a65adba4d0a4",
"first_name": "First Name",
"last_name": "Last Name",
"email": "[email protected]",
"avatar_url": null,
"product_survey_status": "open",
"attributes": {
"ltv": "",
"plan": "Business"
},
"urls": {
"api": "https:\/\/upfocus.io\/api\/products\/slack\/customers\/0c2b7650-c110-4e56-96d5-a65adba4d0a4",
"audits_api": "https:\/\/upfocus.io\/api\/products\/slack\/customers\/0c2b7650-c110-4e56-96d5-a65adba4d0a4\/audits",
"html": "https:\/\/upfocus.io\/products\/slack\/customers\/0c2b7650-c110-4e56-96d5-a65adba4d0a4",
"product_survey": "https:\/\/upfocus.io\/product-survey\/0c2b7650-c110-4e56-96d5-a65adba4d0a4"
}
},
"themes": [],
"benefit_themes": [],
"refine_themes": [],
"improve_themes": [],
"who_themes": []
},
{
"created_at": "2019-08-01T00:00:00.000000Z",
"tagged_at": "2021-05-04 11:02:52",
"uuid": "8fcd3c97-f767-4871-aa50-343e6e2aaeeb",
"status": "complete",
"disappointed": "somewhat",
"benefit": null,
"refine": null,
"improve": "Make it less distracting",
"who": null,
"no_benefit_themes": null,
"no_refine_themes": null,
"no_improve_themes": null,
"no_who_themes": null,
"urls": {
"api": "https:\/\/upfocus.io\/api\/products\/slack\/product-survey-responses\/8fcd3c97-f767-4871-aa50-343e6e2aaeeb",
"html": "https:\/\/upfocus.io\/products\/slack\/product-survey-responses\/8fcd3c97-f767-4871-aa50-343e6e2aaeeb"
},
"customer": {
"created_at": "2019-08-01T00:00:00.000000Z",
"updated_at": "2021-05-04T11:02:52.000000Z",
"uuid": "cfafe9e4-d029-44b5-8389-b8b3adba6e4b",
"first_name": "Customer Four",
"last_name": "Last Name",
"email": "[email protected]",
"avatar_url": null,
"product_survey_status": "somewhat",
"attributes": {
"ltv": "",
"plan": ""
},
"urls": {
"api": "https:\/\/upfocus.io\/api\/products\/slack\/customers\/cfafe9e4-d029-44b5-8389-b8b3adba6e4b",
"audits_api": "https:\/\/upfocus.io\/api\/products\/slack\/customers\/cfafe9e4-d029-44b5-8389-b8b3adba6e4b\/audits",
"html": "https:\/\/upfocus.io\/products\/slack\/customers\/cfafe9e4-d029-44b5-8389-b8b3adba6e4b",
"product_survey": "https:\/\/upfocus.io\/product-survey\/cfafe9e4-d029-44b5-8389-b8b3adba6e4b"
}
},
"themes": [
{
"created_at": "2021-05-04T11:02:52.000000Z",
"updated_at": "2021-05-04T11:02:52.000000Z",
"uuid": "7ba023d7-f27a-44af-b533-178c6f37a368",
"name": "Less Noise",
"status": "evaluate",
"description": null,
"type": "improve",
"count": 1,
"stakeholders": [
{
"first_name": "Customer Four",
"last_name": "Last Name",
"email": "[email protected]",
"avatar_url": null,
"type": "customer",
"uuid": "cfafe9e4-d029-44b5-8389-b8b3adba6e4b"
}
],
"dev_idea_blurbs": null,
"urls": {
"api": "https:\/\/upfocus.io\/api\/products\/slack\/product-survey-themes\/7ba023d7-f27a-44af-b533-178c6f37a368",
"audits_api": "https:\/\/upfocus.io\/api\/products\/slack\/product-survey-themes\/7ba023d7-f27a-44af-b533-178c6f37a368\/audits",
"html": "https:\/\/upfocus.io\/products\/slack\/product-survey-themes\/7ba023d7-f27a-44af-b533-178c6f37a368"
},
"theme_value": "less distracting"
}
],
"benefit_themes": [],
"refine_themes": [],
"improve_themes": [
{
"created_at": "2021-05-04T11:02:52.000000Z",
"updated_at": "2021-05-04T11:02:52.000000Z",
"uuid": "7ba023d7-f27a-44af-b533-178c6f37a368",
"name": "Less Noise",
"status": "evaluate",
"description": null,
"type": "improve",
"count": 1,
"stakeholders": [
{
"first_name": "Customer Four",
"last_name": "Last Name",
"email": "[email protected]",
"avatar_url": null,
"type": "customer",
"uuid": "cfafe9e4-d029-44b5-8389-b8b3adba6e4b"
}
],
"dev_idea_blurbs": null,
"urls": {
"api": "https:\/\/upfocus.io\/api\/products\/slack\/product-survey-themes\/7ba023d7-f27a-44af-b533-178c6f37a368",
"audits_api": "https:\/\/upfocus.io\/api\/products\/slack\/product-survey-themes\/7ba023d7-f27a-44af-b533-178c6f37a368\/audits",
"html": "https:\/\/upfocus.io\/products\/slack\/product-survey-themes\/7ba023d7-f27a-44af-b533-178c6f37a368"
},
"theme_value": "less distracting"
}
],
"who_themes": []
}
]
Received response:
Request failed with error:
Retrieve a survey response
requires authentication
Get an existing survey response of a product.
Example request:
curl -X GET \
-G "https://app.upfocus.io/api/products/slack/product-survey-responses/da29df2c-7f1d-4ca2-a2c4-27267be07134" \
-H "Authorization: Bearer {YOUR_AUTH_KEY}" \
-H "Content-Type: application/json" \
-H "Accept: application/json"
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://app.upfocus.io/api/products/slack/product-survey-responses/da29df2c-7f1d-4ca2-a2c4-27267be07134',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://app.upfocus.io/api/products/slack/product-survey-responses/da29df2c-7f1d-4ca2-a2c4-27267be07134"
);
let headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (200):
{
"created_at": "2019-08-01T00:00:00.000000Z",
"tagged_at": "2021-05-04 11:02:52",
"uuid": "8fcd3c97-f767-4871-aa50-343e6e2aaeeb",
"status": "complete",
"disappointed": "somewhat",
"benefit": null,
"refine": null,
"improve": "Make it less distracting",
"who": null,
"no_benefit_themes": null,
"no_refine_themes": null,
"no_improve_themes": null,
"no_who_themes": null,
"urls": {
"api": "https:\/\/upfocus.io\/api\/products\/slack\/product-survey-responses\/8fcd3c97-f767-4871-aa50-343e6e2aaeeb",
"html": "https:\/\/upfocus.io\/products\/slack\/product-survey-responses\/8fcd3c97-f767-4871-aa50-343e6e2aaeeb"
},
"customer": {
"created_at": "2019-08-01T00:00:00.000000Z",
"updated_at": "2021-05-04T11:02:52.000000Z",
"uuid": "cfafe9e4-d029-44b5-8389-b8b3adba6e4b",
"first_name": "Customer Four",
"last_name": "Last Name",
"email": "sl[email protected]",
"avatar_url": null,
"product_survey_status": "somewhat",
"attributes": {
"ltv": "",
"plan": ""
},
"urls": {
"api": "https:\/\/upfocus.io\/api\/products\/slack\/customers\/cfafe9e4-d029-44b5-8389-b8b3adba6e4b",
"audits_api": "https:\/\/upfocus.io\/api\/products\/slack\/customers\/cfafe9e4-d029-44b5-8389-b8b3adba6e4b\/audits",
"html": "https:\/\/upfocus.io\/products\/slack\/customers\/cfafe9e4-d029-44b5-8389-b8b3adba6e4b",
"product_survey": "https:\/\/upfocus.io\/product-survey\/cfafe9e4-d029-44b5-8389-b8b3adba6e4b"
}
},
"themes": [
{
"created_at": "2021-05-04T11:02:52.000000Z",
"updated_at": "2021-05-04T11:02:52.000000Z",
"uuid": "7ba023d7-f27a-44af-b533-178c6f37a368",
"name": "Less Noise",
"status": "evaluate",
"description": null,
"type": "improve",
"count": 1,
"stakeholders": [
{
"first_name": "Customer Four",
"last_name": "Last Name",
"email": "[email protected]",
"avatar_url": null,
"type": "customer",
"uuid": "cfafe9e4-d029-44b5-8389-b8b3adba6e4b"
}
],
"dev_idea_blurbs": null,
"urls": {
"api": "https:\/\/upfocus.io\/api\/products\/slack\/product-survey-themes\/7ba023d7-f27a-44af-b533-178c6f37a368",
"audits_api": "https:\/\/upfocus.io\/api\/products\/slack\/product-survey-themes\/7ba023d7-f27a-44af-b533-178c6f37a368\/audits",
"html": "https:\/\/upfocus.io\/products\/slack\/product-survey-themes\/7ba023d7-f27a-44af-b533-178c6f37a368"
},
"theme_value": "less distracting"
}
],
"benefit_themes": [],
"refine_themes": [],
"improve_themes": [
{
"created_at": "2021-05-04T11:02:52.000000Z",
"updated_at": "2021-05-04T11:02:52.000000Z",
"uuid": "7ba023d7-f27a-44af-b533-178c6f37a368",
"name": "Less Noise",
"status": "evaluate",
"description": null,
"type": "improve",
"count": 1,
"stakeholders": [
{
"first_name": "Customer Four",
"last_name": "Last Name",
"email": "[email protected]",
"avatar_url": null,
"type": "customer",
"uuid": "cfafe9e4-d029-44b5-8389-b8b3adba6e4b"
}
],
"dev_idea_blurbs": null,
"urls": {
"api": "https:\/\/upfocus.io\/api\/products\/slack\/product-survey-themes\/7ba023d7-f27a-44af-b533-178c6f37a368",
"audits_api": "https:\/\/upfocus.io\/api\/products\/slack\/product-survey-themes\/7ba023d7-f27a-44af-b533-178c6f37a368\/audits",
"html": "https:\/\/upfocus.io\/products\/slack\/product-survey-themes\/7ba023d7-f27a-44af-b533-178c6f37a368"
},
"theme_value": "less distracting"
}
],
"who_themes": []
}
Received response:
Request failed with error:
Response
Response Fields
created_at
string
The date the survey response was created.
updated_at
string
The date the survey response was last updated.
uuid
string
The UUID for the survey response.
status
string
The status of the survey response.
disappointed
string
The disappointed value of the survey response.
benefit
string
The benefit entered by the customer (if relevant).
refine
string
The refinement entered by the customer (if relevant).
improve
string
The improvement entered by the customer (if relevant).
who
string
The persona entered by the customer (if relevant).
customer
object
The customer associated with the survey response.
customer.uuid
string
The UUID for the associated customer.
themes
object[]
Any themes attached to the survey response.
themes[].uuid
string
The UUID for the attached theme.
urls
object
All URLs representing the survey response.
urls.api
string
The API URL for the survey response.
urls.audits_api
string
The API URL for the survey response's audit log.
urls.html
string
The URL for the survey response's detail view.
Update a survey response
requires authentication
Update an existing survey response of a product.
The themes are the only fields that can be updated through the API.
Example request:
curl -X PUT \
"https://app.upfocus.io/api/products/slack/product-survey-responses/da29df2c-7f1d-4ca2-a2c4-27267be07134" \
-H "Authorization: Bearer {YOUR_AUTH_KEY}" \
-H "Content-Type: application/json" \
-H "Accept: application/json"
$client = new \GuzzleHttp\Client();
$response = $client->put(
'https://app.upfocus.io/api/products/slack/product-survey-responses/da29df2c-7f1d-4ca2-a2c4-27267be07134',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://app.upfocus.io/api/products/slack/product-survey-responses/da29df2c-7f1d-4ca2-a2c4-27267be07134"
);
let headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "PUT",
headers,
}).then(response => response.json());
Example response (200):
{
"created_at": "2019-08-01T00:00:00.000000Z",
"tagged_at": "2021-05-04 11:02:52",
"uuid": "8fcd3c97-f767-4871-aa50-343e6e2aaeeb",
"status": "complete",
"disappointed": "somewhat",
"benefit": null,
"refine": null,
"improve": "Make it less distracting",
"who": null,
"no_benefit_themes": null,
"no_refine_themes": null,
"no_improve_themes": null,
"no_who_themes": null,
"urls": {
"api": "https:\/\/upfocus.io\/api\/products\/slack\/product-survey-responses\/8fcd3c97-f767-4871-aa50-343e6e2aaeeb",
"html": "https:\/\/upfocus.io\/products\/slack\/product-survey-responses\/8fcd3c97-f767-4871-aa50-343e6e2aaeeb"
},
"customer": {
"created_at": "2019-08-01T00:00:00.000000Z",
"updated_at": "2021-05-04T11:02:52.000000Z",
"uuid": "cfafe9e4-d029-44b5-8389-b8b3adba6e4b",
"first_name": "Customer Four",
"last_name": "Last Name",
"email": "sl[email protected]",
"avatar_url": null,
"product_survey_status": "somewhat",
"attributes": {
"ltv": "",
"plan": ""
},
"urls": {
"api": "https:\/\/upfocus.io\/api\/products\/slack\/customers\/cfafe9e4-d029-44b5-8389-b8b3adba6e4b",
"audits_api": "https:\/\/upfocus.io\/api\/products\/slack\/customers\/cfafe9e4-d029-44b5-8389-b8b3adba6e4b\/audits",
"html": "https:\/\/upfocus.io\/products\/slack\/customers\/cfafe9e4-d029-44b5-8389-b8b3adba6e4b",
"product_survey": "https:\/\/upfocus.io\/product-survey\/cfafe9e4-d029-44b5-8389-b8b3adba6e4b"
}
},
"themes": [
{
"created_at": "2021-05-04T11:02:52.000000Z",
"updated_at": "2021-05-04T11:02:52.000000Z",
"uuid": "7ba023d7-f27a-44af-b533-178c6f37a368",
"name": "Less Noise",
"status": "evaluate",
"description": null,
"type": "improve",
"count": 1,
"stakeholders": [
{
"first_name": "Customer Four",
"last_name": "Last Name",
"email": "[email protected]",
"avatar_url": null,
"type": "customer",
"uuid": "cfafe9e4-d029-44b5-8389-b8b3adba6e4b"
}
],
"dev_idea_blurbs": null,
"urls": {
"api": "https:\/\/upfocus.io\/api\/products\/slack\/product-survey-themes\/7ba023d7-f27a-44af-b533-178c6f37a368",
"audits_api": "https:\/\/upfocus.io\/api\/products\/slack\/product-survey-themes\/7ba023d7-f27a-44af-b533-178c6f37a368\/audits",
"html": "https:\/\/upfocus.io\/products\/slack\/product-survey-themes\/7ba023d7-f27a-44af-b533-178c6f37a368"
},
"theme_value": "less distracting"
}
],
"benefit_themes": [],
"refine_themes": [],
"improve_themes": [
{
"created_at": "2021-05-04T11:02:52.000000Z",
"updated_at": "2021-05-04T11:02:52.000000Z",
"uuid": "7ba023d7-f27a-44af-b533-178c6f37a368",
"name": "Less Noise",
"status": "evaluate",
"description": null,
"type": "improve",
"count": 1,
"stakeholders": [
{
"first_name": "Customer Four",
"last_name": "Last Name",
"email": "[email protected]",
"avatar_url": null,
"type": "customer",
"uuid": "cfafe9e4-d029-44b5-8389-b8b3adba6e4b"
}
],
"dev_idea_blurbs": null,
"urls": {
"api": "https:\/\/upfocus.io\/api\/products\/slack\/product-survey-themes\/7ba023d7-f27a-44af-b533-178c6f37a368",
"audits_api": "https:\/\/upfocus.io\/api\/products\/slack\/product-survey-themes\/7ba023d7-f27a-44af-b533-178c6f37a368\/audits",
"html": "https:\/\/upfocus.io\/products\/slack\/product-survey-themes\/7ba023d7-f27a-44af-b533-178c6f37a368"
},
"theme_value": "less distracting"
}
],
"who_themes": []
}
Received response:
Request failed with error:
Response
Response Fields
created_at
string
The date the survey response was created.
updated_at
string
The date the survey response was last updated.
uuid
string
The UUID for the survey response.
status
string
The status of the survey response.
disappointed
string
The disappointed value of the survey response.
benefit
string
The benefit entered by the customer (if relevant).
refine
string
The refinement entered by the customer (if relevant).
improve
string
The improvement entered by the customer (if relevant).
who
string
The persona entered by the customer (if relevant).
customer
object
The customer associated with the survey response.
customer.uuid
string
The UUID for the associated customer.
themes
object[]
Any themes attached to the survey response.
themes[].uuid
string
The UUID for the attached theme.
urls
object
All URLs representing the survey response.
urls.api
string
The API URL for the survey response.
urls.audits_api
string
The API URL for the survey response's audit log.
urls.html
string
The URL for the survey response's detail view.
Delete a survey response
requires authentication
Delete an existing survey response of a product.
Example request:
curl -X DELETE \
"https://app.upfocus.io/api/products/slack/product-survey-responses/da29df2c-7f1d-4ca2-a2c4-27267be07134" \
-H "Authorization: Bearer {YOUR_AUTH_KEY}" \
-H "Content-Type: application/json" \
-H "Accept: application/json"
$client = new \GuzzleHttp\Client();
$response = $client->delete(
'https://app.upfocus.io/api/products/slack/product-survey-responses/da29df2c-7f1d-4ca2-a2c4-27267be07134',
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://app.upfocus.io/api/products/slack/product-survey-responses/da29df2c-7f1d-4ca2-a2c4-27267be07134"
);
let headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());
Received response:
Request failed with error: