Contents

Other

There are a handful of things you can do through the ShootProof API that don’t fit in with any of the other categories, so we’ve listed them here.

List the authenticated user’s notifications

get
/studio/brand/{brandId}/notification

Example Request

Path Parameters

Property Description
brandId required

The brand identifier.

Query Parameters

Property Description
filterDismissed

If the value is truthy, the response will list only dismissed notifications. If the value is falsy (default), then the response contains only non-dismissed notifications.

Header Parameters

Property Description
Authentication required

The bearer token used to make authenticated requests to the ShootProof Studio API. See the authorization guide for more information on how to obtain and use bearer tokens.

200 OK

A collection of notifications.

Response Body

When the Content-Type of the response is application/vnd.shootproof+json, the following properties will be available in the response body.

Properties
Property Description
items

A collection of resources returned in the current result set.

Property Description
attributes nullable read-only deprecated

Attributes are key-value pairs of data related to the notification.

WARNING! This is a free-form bag of unstructured data. The properties and values should not be relied upon by implementations; they are subject to change.

created read-only

The date on which the entity was created.

descriptor read-only

The value of the descriptor varies among notification types. In general, the descriptor may be used as a label for the entity described in the notification. For orders and invoices, the descriptor is often the total currency amount related to the notification. For contracts and events, the descriptor is the name of the contract or event.

dismissed

If the notification is dismissed, this will be true. Otherwise, it will be false. Set dismissed to true to dismiss the notification.

id

An entity identifier. It may be either an integer or a universally unique identifier (UUID) represented as a string.

links required read-only

Each property defines a hypertext link relationship as indicated by a link object or array of link objects. The target URL of each hypertext link relationship is related to the current resource according to the defined semantics of the link relationship property name.

message read-only

The message may be used as the notification text. For example, if the notificationType is order-placed, the message might be “Jane Doe placed a new order.”

notificationGroup read-only

The notification group refers to the type of entity this notification relates to. For example, if the notificationType is event-photo-favorited-by-event-contact, the notificationGroup will be event since the notification is related to an event.

notificationType read-only

A string identifier to indicate the type of notification described by this entity. This identifier may be one of the following strings

ShootProof Identifier Description
contract-canceled The contract indicated by the contract link relation has been canceled.
contract-signed-by-client The contract indicated by the contract link relation was signed by the client.
event-favorites-list-finalized-by-event-contact The contact indicated by the contact link relation has asked the studio to review favorited photos for the event indicated by the event link relation.
event-photo-downloaded-by-event-contact The contact indicated by the contact link relation downloaded a photo for the event indicated by the event link relation.
event-photo-favorited-by-event-contact The contact indicated by the contact link relation favorited a photo for the event indicated by the event link relation.
event-photo-hidden-by-event-contact The contact indicated by the contact link relation marked a photo as “hidden” for the event indicated by the event link relation.
event-photo-tagged-by-event-contact The contact indicated by the contact link relation tagged a photo for the event indicated by the event link relation.
invoice-past-due The invoice indicated by the invoice link relation is past due.
invoice-payment-received The brand received a payment for the invoice indicated by the invoice link relation.
order-approval-prolonged The order indicated by the order link relation has been awaiting approval for a long period of time.
order-needs-approval The order indicated by the order link relation is awaiting approval.
order-placed The order indicated by the order link relation was just placed.
order-shipped-from-lab The order indicated by the order link relation was shipped from the lab.
studio-granted-archiving-space The studio was granted more archiving space.
studio-money-balance-increased The studio’s money balance increased.
studio-photo-plan-next-bill-date-increased The studio’s next billing date changed, often due to more free time added to their plan.
studio-profit-released The studio’s money was released to their bank account.
type

The type of resource represented.

links required read-only

Each property defines a hypertext link relationship as indicated by a link object or array of link objects. The target URL of each hypertext link relationship is related to the current resource according to the defined semantics of the link relationship property name.

meta read-only

Metadata describing the current result set.

Property Description
currentPage

The current page of results returned.

rows

The number of rows returned per page for the current result set.

totalActiveNotifications

The total number of active (not dismissed) notifications for the authenticated user.

totalItems

The total number of items in the result set. This may be affected by active search/filter parameters.

totalPages

The total number of pages in the result set. This is affected by the rows parameter (totalItems / rows == totalPages).

type

The type of resource represented.

OpenAPI Schema

The following schema is based on OpenAPI 3.0 and is provided in our downloadable OpenAPI document.

{
  "200": {
    "content": {
      "application/vnd.shootproof+json": {
        "schema": {
          "$ref": "#/components/schemas/NotificationCollection"
        }
      }
    },
    "description": "A collection of notifications."
  }
}

Get a notification

get
/studio/brand/{brandId}/notification/{notificationId}

Example Request

Path Parameters

Property Description
brandId required

The brand identifier.

notificationId required

A notification identifier.

Header Parameters

Property Description
Authentication required

The bearer token used to make authenticated requests to the ShootProof Studio API. See the authorization guide for more information on how to obtain and use bearer tokens.

200 OK

A notification.

Response Body

When the Content-Type of the response is application/vnd.shootproof+json, the following properties will be available in the response body.

Properties
Property Description
attributes nullable read-only deprecated

Attributes are key-value pairs of data related to the notification.

WARNING! This is a free-form bag of unstructured data. The properties and values should not be relied upon by implementations; they are subject to change.

created read-only

The date on which the entity was created.

descriptor read-only

The value of the descriptor varies among notification types. In general, the descriptor may be used as a label for the entity described in the notification. For orders and invoices, the descriptor is often the total currency amount related to the notification. For contracts and events, the descriptor is the name of the contract or event.

dismissed

If the notification is dismissed, this will be true. Otherwise, it will be false. Set dismissed to true to dismiss the notification.

id

An entity identifier. It may be either an integer or a universally unique identifier (UUID) represented as a string.

links required read-only

Each property defines a hypertext link relationship as indicated by a link object or array of link objects. The target URL of each hypertext link relationship is related to the current resource according to the defined semantics of the link relationship property name.

message read-only

The message may be used as the notification text. For example, if the notificationType is order-placed, the message might be “Jane Doe placed a new order.”

notificationGroup read-only

The notification group refers to the type of entity this notification relates to. For example, if the notificationType is event-photo-favorited-by-event-contact, the notificationGroup will be event since the notification is related to an event.

notificationType read-only

A string identifier to indicate the type of notification described by this entity. This identifier may be one of the following strings

ShootProof Identifier Description
contract-canceled The contract indicated by the contract link relation has been canceled.
contract-signed-by-client The contract indicated by the contract link relation was signed by the client.
event-favorites-list-finalized-by-event-contact The contact indicated by the contact link relation has asked the studio to review favorited photos for the event indicated by the event link relation.
event-photo-downloaded-by-event-contact The contact indicated by the contact link relation downloaded a photo for the event indicated by the event link relation.
event-photo-favorited-by-event-contact The contact indicated by the contact link relation favorited a photo for the event indicated by the event link relation.
event-photo-hidden-by-event-contact The contact indicated by the contact link relation marked a photo as “hidden” for the event indicated by the event link relation.
event-photo-tagged-by-event-contact The contact indicated by the contact link relation tagged a photo for the event indicated by the event link relation.
invoice-past-due The invoice indicated by the invoice link relation is past due.
invoice-payment-received The brand received a payment for the invoice indicated by the invoice link relation.
order-approval-prolonged The order indicated by the order link relation has been awaiting approval for a long period of time.
order-needs-approval The order indicated by the order link relation is awaiting approval.
order-placed The order indicated by the order link relation was just placed.
order-shipped-from-lab The order indicated by the order link relation was shipped from the lab.
studio-granted-archiving-space The studio was granted more archiving space.
studio-money-balance-increased The studio’s money balance increased.
studio-photo-plan-next-bill-date-increased The studio’s next billing date changed, often due to more free time added to their plan.
studio-profit-released The studio’s money was released to their bank account.
type

The type of resource represented.

Error Response

API errors come in two kinds of varieties: 400s and 500s.

Any error with a status code of 400 to 499 is considered a client error. This means it’s usually an error you can handle in your app, and then resend a modified request to the ShootProof API to get a successful response.

An error in the range of 500 to 599, on the other hand, is a different story. These errors usually mean that a problem occured on the server and resending the request with modifications will not fix the issue.

Pay careful attention to the status codes. We try to stick as close as possible to their defined semantics. For a complete list of HTTP status codes, take a look at the official HTTP Status Code Registry.

Check out our errors guide for more information.

Response Body

When the Content-Type of the response is application/problem+json, the following properties will be available in the response body.

Properties
Property Description
detail

A longer description of of the error encountered.

info

Additional information that may be provided to aid in error resolution.

Property Description
reason

An optional reason for the error response.

In some cases, more information is required to convey information about the error to the client. In these cases, one of the following reason slugs may be used.

Reason Slug Description
contract-not-ready-to-countersign The contract is in a state that does not allow countersigning. Its status must be ready-to-countersign to perform this action.
event-photo-count-limit The event has reached the maximum number of photos allowed.
plan-does-not-allow-uploads The studio is in a plan that does not allow uploads or they have reached the limit of photos the plan allows.
status

The HTTP status code associated with this error.

title

A short description of the error encountered.

type

A namespace URI uniquely identifying the error type.

Validation Error Example
{
  "detail": "There was a problem with your request. Please see `info` for more information.",
  "info": {
    "errors": {
      "type": {
        "isEmpty": "Value is required and can't be empty"
      }
    }
  },
  "status": 400,
  "title": "Bad Request",
  "type": "https://developer.shootproof.com/errors#error-bad-request"
}
Forbidden Error Example
{
  "detail": "You do not have permission to access the requested resource.",
  "status": 403,
  "title": "Forbidden",
  "type": "https://developer.shootproof.com/errors#error-forbidden"
}
Not Found Error Example
{
  "detail": "The requested resource could not be found.",
  "status": 404,
  "title": "Not Found",
  "type": "https://developer.shootproof.com/errors#error-not-found"
}
Server Error Example
{
  "detail": "An error occurred on the server. If this error continues to occur, please contact support.",
  "status": 500,
  "title": "Internal Server Error",
  "type": "https://developer.shootproof.com/errors#error-server-error"
}
Unauthorized Error Example
{
  "detail": "No authorization credentials provided. You must provide an authorization token for this request.",
  "status": 401,
  "title": "Unauthorized",
  "type": "https://developer.shootproof.com/errors#error-unauthorized"
}

OpenAPI Schema

The following schema is based on OpenAPI 3.0 and is provided in our downloadable OpenAPI document.

{
  "200": {
    "content": {
      "application/vnd.shootproof+json": {
        "schema": {
          "$ref": "#/components/schemas/Notification"
        }
      }
    },
    "description": "A notification."
  },
  "default": {
    "$ref": "#/components/responses/defaultError"
  }
}

Partially update a notification

Only provide those properties that you wish to update. All other properties will remain unchanged.

patch
/studio/brand/{brandId}/notification/{notificationId}

Example Request

Path Parameters

Property Description
brandId required

The brand identifier.

notificationId required

A notification identifier.

Header Parameters

Property Description
Authentication required

The bearer token used to make authenticated requests to the ShootProof Studio API. See the authorization guide for more information on how to obtain and use bearer tokens.

Request Body

The notification object to update. Only provide those properties that need updating.

application/vnd.shootproof+json
Property Description
dismissed

If the notification is dismissed, this will be true. Otherwise, it will be false. Set dismissed to true to dismiss the notification.

id

An entity identifier. It may be either an integer or a universally unique identifier (UUID) represented as a string.

type

The type of resource represented.

OpenAPI Schema

The following schema is based on OpenAPI 3.0 and is provided in our downloadable OpenAPI document.

{
  "content": {
    "application/vnd.shootproof+json": {
      "schema": {
        "$ref": "#/components/schemas/Notification"
      }
    }
  },
  "description": "The notification object to update. Only provide those properties that need\nupdating.",
  "required": true
}

200 OK

The updated notification.

Response Body

When the Content-Type of the response is application/vnd.shootproof+json, the following properties will be available in the response body.

Properties
Property Description
attributes nullable read-only deprecated

Attributes are key-value pairs of data related to the notification.

WARNING! This is a free-form bag of unstructured data. The properties and values should not be relied upon by implementations; they are subject to change.

created read-only

The date on which the entity was created.

descriptor read-only

The value of the descriptor varies among notification types. In general, the descriptor may be used as a label for the entity described in the notification. For orders and invoices, the descriptor is often the total currency amount related to the notification. For contracts and events, the descriptor is the name of the contract or event.

dismissed

If the notification is dismissed, this will be true. Otherwise, it will be false. Set dismissed to true to dismiss the notification.

id

An entity identifier. It may be either an integer or a universally unique identifier (UUID) represented as a string.

links required read-only

Each property defines a hypertext link relationship as indicated by a link object or array of link objects. The target URL of each hypertext link relationship is related to the current resource according to the defined semantics of the link relationship property name.

message read-only

The message may be used as the notification text. For example, if the notificationType is order-placed, the message might be “Jane Doe placed a new order.”

notificationGroup read-only

The notification group refers to the type of entity this notification relates to. For example, if the notificationType is event-photo-favorited-by-event-contact, the notificationGroup will be event since the notification is related to an event.

notificationType read-only

A string identifier to indicate the type of notification described by this entity. This identifier may be one of the following strings

ShootProof Identifier Description
contract-canceled The contract indicated by the contract link relation has been canceled.
contract-signed-by-client The contract indicated by the contract link relation was signed by the client.
event-favorites-list-finalized-by-event-contact The contact indicated by the contact link relation has asked the studio to review favorited photos for the event indicated by the event link relation.
event-photo-downloaded-by-event-contact The contact indicated by the contact link relation downloaded a photo for the event indicated by the event link relation.
event-photo-favorited-by-event-contact The contact indicated by the contact link relation favorited a photo for the event indicated by the event link relation.
event-photo-hidden-by-event-contact The contact indicated by the contact link relation marked a photo as “hidden” for the event indicated by the event link relation.
event-photo-tagged-by-event-contact The contact indicated by the contact link relation tagged a photo for the event indicated by the event link relation.
invoice-past-due The invoice indicated by the invoice link relation is past due.
invoice-payment-received The brand received a payment for the invoice indicated by the invoice link relation.
order-approval-prolonged The order indicated by the order link relation has been awaiting approval for a long period of time.
order-needs-approval The order indicated by the order link relation is awaiting approval.
order-placed The order indicated by the order link relation was just placed.
order-shipped-from-lab The order indicated by the order link relation was shipped from the lab.
studio-granted-archiving-space The studio was granted more archiving space.
studio-money-balance-increased The studio’s money balance increased.
studio-photo-plan-next-bill-date-increased The studio’s next billing date changed, often due to more free time added to their plan.
studio-profit-released The studio’s money was released to their bank account.
type

The type of resource represented.

400 Bad Request

Validation error response. Check the info.errors property in the response for more details.

Response Body

When the Content-Type of the response is application/problem+json, the following properties will be available in the response body.

Properties
Property Description
detail

A longer description of of the error encountered.

info

Additional information that may be provided to aid in error resolution.

Property Description
errors

If the error response is a result of validation errors, it will most likely be a 400 Bad Request response and contain this info.errors property. Each property name in the errors object is a property that failed validation. These properties contain objects with property names in the form of internal validation error message slugs paired with human-readable string values describing the validation failure. Each property may have multiple validation failure messages.

reason

An optional reason for the error response.

In some cases, more information is required to convey information about the error to the client. In these cases, one of the following reason slugs may be used.

Reason Slug Description
contract-not-ready-to-countersign The contract is in a state that does not allow countersigning. Its status must be ready-to-countersign to perform this action.
event-photo-count-limit The event has reached the maximum number of photos allowed.
plan-does-not-allow-uploads The studio is in a plan that does not allow uploads or they have reached the limit of photos the plan allows.
status

The HTTP status code associated with this error.

title

A short description of the error encountered.

type

A namespace URI uniquely identifying the error type.

OpenAPI Schema

The following schema is based on OpenAPI 3.0 and is provided in our downloadable OpenAPI document.

{
  "200": {
    "content": {
      "application/vnd.shootproof+json": {
        "schema": {
          "$ref": "#/components/schemas/Notification"
        }
      }
    },
    "description": "The updated notification."
  },
  "400": {
    "$ref": "#/components/responses/validationError"
  }
}

Update a notification

put
/studio/brand/{brandId}/notification/{notificationId}

Example Request

Path Parameters

Property Description
brandId required

The brand identifier.

notificationId required

A notification identifier.

Header Parameters

Property Description
Authentication required

The bearer token used to make authenticated requests to the ShootProof Studio API. See the authorization guide for more information on how to obtain and use bearer tokens.

Request Body

A notification.

application/vnd.shootproof+json
Property Description
dismissed

If the notification is dismissed, this will be true. Otherwise, it will be false. Set dismissed to true to dismiss the notification.

id

An entity identifier. It may be either an integer or a universally unique identifier (UUID) represented as a string.

type

The type of resource represented.

OpenAPI Schema

The following schema is based on OpenAPI 3.0 and is provided in our downloadable OpenAPI document.

{
  "content": {
    "application/vnd.shootproof+json": {
      "schema": {
        "$ref": "#/components/schemas/Notification"
      }
    }
  },
  "description": "A notification.",
  "required": true
}

200 OK

The updated notification.

Response Body

When the Content-Type of the response is application/vnd.shootproof+json, the following properties will be available in the response body.

Properties
Property Description
attributes nullable read-only deprecated

Attributes are key-value pairs of data related to the notification.

WARNING! This is a free-form bag of unstructured data. The properties and values should not be relied upon by implementations; they are subject to change.

created read-only

The date on which the entity was created.

descriptor read-only

The value of the descriptor varies among notification types. In general, the descriptor may be used as a label for the entity described in the notification. For orders and invoices, the descriptor is often the total currency amount related to the notification. For contracts and events, the descriptor is the name of the contract or event.

dismissed

If the notification is dismissed, this will be true. Otherwise, it will be false. Set dismissed to true to dismiss the notification.

id

An entity identifier. It may be either an integer or a universally unique identifier (UUID) represented as a string.

links required read-only

Each property defines a hypertext link relationship as indicated by a link object or array of link objects. The target URL of each hypertext link relationship is related to the current resource according to the defined semantics of the link relationship property name.

message read-only

The message may be used as the notification text. For example, if the notificationType is order-placed, the message might be “Jane Doe placed a new order.”

notificationGroup read-only

The notification group refers to the type of entity this notification relates to. For example, if the notificationType is event-photo-favorited-by-event-contact, the notificationGroup will be event since the notification is related to an event.

notificationType read-only

A string identifier to indicate the type of notification described by this entity. This identifier may be one of the following strings

ShootProof Identifier Description
contract-canceled The contract indicated by the contract link relation has been canceled.
contract-signed-by-client The contract indicated by the contract link relation was signed by the client.
event-favorites-list-finalized-by-event-contact The contact indicated by the contact link relation has asked the studio to review favorited photos for the event indicated by the event link relation.
event-photo-downloaded-by-event-contact The contact indicated by the contact link relation downloaded a photo for the event indicated by the event link relation.
event-photo-favorited-by-event-contact The contact indicated by the contact link relation favorited a photo for the event indicated by the event link relation.
event-photo-hidden-by-event-contact The contact indicated by the contact link relation marked a photo as “hidden” for the event indicated by the event link relation.
event-photo-tagged-by-event-contact The contact indicated by the contact link relation tagged a photo for the event indicated by the event link relation.
invoice-past-due The invoice indicated by the invoice link relation is past due.
invoice-payment-received The brand received a payment for the invoice indicated by the invoice link relation.
order-approval-prolonged The order indicated by the order link relation has been awaiting approval for a long period of time.
order-needs-approval The order indicated by the order link relation is awaiting approval.
order-placed The order indicated by the order link relation was just placed.
order-shipped-from-lab The order indicated by the order link relation was shipped from the lab.
studio-granted-archiving-space The studio was granted more archiving space.
studio-money-balance-increased The studio’s money balance increased.
studio-photo-plan-next-bill-date-increased The studio’s next billing date changed, often due to more free time added to their plan.
studio-profit-released The studio’s money was released to their bank account.
type

The type of resource represented.

400 Bad Request

Validation error response. Check the info.errors property in the response for more details.

Response Body

When the Content-Type of the response is application/problem+json, the following properties will be available in the response body.

Properties
Property Description
detail

A longer description of of the error encountered.

info

Additional information that may be provided to aid in error resolution.

Property Description
errors

If the error response is a result of validation errors, it will most likely be a 400 Bad Request response and contain this info.errors property. Each property name in the errors object is a property that failed validation. These properties contain objects with property names in the form of internal validation error message slugs paired with human-readable string values describing the validation failure. Each property may have multiple validation failure messages.

reason

An optional reason for the error response.

In some cases, more information is required to convey information about the error to the client. In these cases, one of the following reason slugs may be used.

Reason Slug Description
contract-not-ready-to-countersign The contract is in a state that does not allow countersigning. Its status must be ready-to-countersign to perform this action.
event-photo-count-limit The event has reached the maximum number of photos allowed.
plan-does-not-allow-uploads The studio is in a plan that does not allow uploads or they have reached the limit of photos the plan allows.
status

The HTTP status code associated with this error.

title

A short description of the error encountered.

type

A namespace URI uniquely identifying the error type.

Error Response

API errors come in two kinds of varieties: 400s and 500s.

Any error with a status code of 400 to 499 is considered a client error. This means it’s usually an error you can handle in your app, and then resend a modified request to the ShootProof API to get a successful response.

An error in the range of 500 to 599, on the other hand, is a different story. These errors usually mean that a problem occured on the server and resending the request with modifications will not fix the issue.

Pay careful attention to the status codes. We try to stick as close as possible to their defined semantics. For a complete list of HTTP status codes, take a look at the official HTTP Status Code Registry.

Check out our errors guide for more information.

Response Body

When the Content-Type of the response is application/problem+json, the following properties will be available in the response body.

Properties
Property Description
detail

A longer description of of the error encountered.

info

Additional information that may be provided to aid in error resolution.

Property Description
reason

An optional reason for the error response.

In some cases, more information is required to convey information about the error to the client. In these cases, one of the following reason slugs may be used.

Reason Slug Description
contract-not-ready-to-countersign The contract is in a state that does not allow countersigning. Its status must be ready-to-countersign to perform this action.
event-photo-count-limit The event has reached the maximum number of photos allowed.
plan-does-not-allow-uploads The studio is in a plan that does not allow uploads or they have reached the limit of photos the plan allows.
status

The HTTP status code associated with this error.

title

A short description of the error encountered.

type

A namespace URI uniquely identifying the error type.

Validation Error Example
{
  "detail": "There was a problem with your request. Please see `info` for more information.",
  "info": {
    "errors": {
      "type": {
        "isEmpty": "Value is required and can't be empty"
      }
    }
  },
  "status": 400,
  "title": "Bad Request",
  "type": "https://developer.shootproof.com/errors#error-bad-request"
}
Forbidden Error Example
{
  "detail": "You do not have permission to access the requested resource.",
  "status": 403,
  "title": "Forbidden",
  "type": "https://developer.shootproof.com/errors#error-forbidden"
}
Not Found Error Example
{
  "detail": "The requested resource could not be found.",
  "status": 404,
  "title": "Not Found",
  "type": "https://developer.shootproof.com/errors#error-not-found"
}
Server Error Example
{
  "detail": "An error occurred on the server. If this error continues to occur, please contact support.",
  "status": 500,
  "title": "Internal Server Error",
  "type": "https://developer.shootproof.com/errors#error-server-error"
}
Unauthorized Error Example
{
  "detail": "No authorization credentials provided. You must provide an authorization token for this request.",
  "status": 401,
  "title": "Unauthorized",
  "type": "https://developer.shootproof.com/errors#error-unauthorized"
}

OpenAPI Schema

The following schema is based on OpenAPI 3.0 and is provided in our downloadable OpenAPI document.

{
  "200": {
    "content": {
      "application/vnd.shootproof+json": {
        "schema": {
          "$ref": "#/components/schemas/Notification"
        }
      }
    },
    "description": "The updated notification."
  },
  "400": {
    "$ref": "#/components/responses/validationError"
  },
  "default": {
    "$ref": "#/components/responses/defaultError"
  }
}

Returns dashboard messages.

Returns messages intended to display on the main interface. Dashboard messages are short indications of recent events (orders placed, contracts signed, lab orders shipped), suggestions to the user, etc. They are more "tweet" sized and not "email" sized messages.

get
/studio/dashboard-message

Example Request

Header Parameters

Property Description
Authentication required

The bearer token used to make authenticated requests to the ShootProof Studio API. See the authorization guide for more information on how to obtain and use bearer tokens.

200 OK

List of current dashboard messages.

Response Body

When the Content-Type of the response is application/vnd.shootproof+json, the following properties will be available in the response body.

Properties
Property Description
items

A collection of resources returned in the current result set.

Property Description
active

Indication of whether the message is active or not. Should only be displayed if true.

backgroundImageUrl

URL of a background image intended to cover the entire display of the message

callToActionLabel

Text to display on the call-to-action button/icon/method.

callToActionUrl

The URL the user should be transferred to on activating the call-to-action button/icon/method.

country

ISO country code where the message applies

created

Creation date/time

description

Main body text of the message

displayOrder

A numeric indicator of how to sort messages for display. Display smaller numbers before larger numbers. Weights may not be continious (5, 10, 20, 30, 50, 100, 250, 500, 600, 1000, etc.)

id

An entity identifier. It may be either an integer or a universally unique identifier (UUID) represented as a string.

imageUrl

URL of an icon for display with message

lastUpdated

Last update date/time

learnMoreLabel

Text to display on a link/icon for users to get more information about the notification. Activating it should transfer the user to the learnMoreUrl.

learnMoreUrl

URL where a user can find more information about the notification without triggering an action.

required

Indicates if displaying this message is mandatory

title

Headline, masthead, or title of message

type

The type of resource represented.

weight

A numeric indicator of how important a message is compared to other messages. Useful to determine which messages to not display if insufficient space is available to display all messages.

links required read-only

Each property defines a hypertext link relationship as indicated by a link object or array of link objects. The target URL of each hypertext link relationship is related to the current resource according to the defined semantics of the link relationship property name.

meta read-only

Metadata describing the current result set.

Property Description
currentPage

The current page of results returned.

rows

The number of rows returned per page for the current result set.

totalItems

The total number of items in the result set. This may be affected by active search/filter parameters.

totalPages

The total number of pages in the result set. This is affected by the rows parameter (totalItems / rows == totalPages).

type

The type of resource represented.

400 Bad Request

Validation error response. Check the info.errors property in the response for more details.

Response Body

When the Content-Type of the response is application/problem+json, the following properties will be available in the response body.

Properties
Property Description
detail

A longer description of of the error encountered.

info

Additional information that may be provided to aid in error resolution.

Property Description
errors

If the error response is a result of validation errors, it will most likely be a 400 Bad Request response and contain this info.errors property. Each property name in the errors object is a property that failed validation. These properties contain objects with property names in the form of internal validation error message slugs paired with human-readable string values describing the validation failure. Each property may have multiple validation failure messages.

reason

An optional reason for the error response.

In some cases, more information is required to convey information about the error to the client. In these cases, one of the following reason slugs may be used.

Reason Slug Description
contract-not-ready-to-countersign The contract is in a state that does not allow countersigning. Its status must be ready-to-countersign to perform this action.
event-photo-count-limit The event has reached the maximum number of photos allowed.
plan-does-not-allow-uploads The studio is in a plan that does not allow uploads or they have reached the limit of photos the plan allows.
status

The HTTP status code associated with this error.

title

A short description of the error encountered.

type

A namespace URI uniquely identifying the error type.

OpenAPI Schema

The following schema is based on OpenAPI 3.0 and is provided in our downloadable OpenAPI document.

{
  "200": {
    "content": {
      "application/vnd.shootproof+json": {
        "schema": {
          "allOf": [
            {
              "$ref": "#/components/schemas/List"
            },
            {
              "properties": {
                "items": {
                  "items": {
                    "properties": {
                      "active": {
                        "description": "Indication of whether the message is active or not.\nShould only be displayed if true.",
                        "example": true,
                        "type": "boolean"
                      },
                      "backgroundImageUrl": {
                        "description": "URL of a background image intended to cover the\nentire display of the message",
                        "example": null,
                        "type": "string"
                      },
                      "callToActionLabel": {
                        "description": "Text to display on the call-to-action\nbutton/icon/method.",
                        "example": "Click to go to the Thing",
                        "type": "string"
                      },
                      "callToActionUrl": {
                        "description": "The URL the user should be transferred to on\nactivating the call-to-action button/icon/method.",
                        "example": "https://www.shootproof.com/",
                        "type": "string"
                      },
                      "country": {
                        "description": "ISO country code where the message applies",
                        "example": "US",
                        "type": "string"
                      },
                      "created": {
                        "description": "Creation date/time",
                        "example": "2019-05-23T17:42:00.000Z",
                        "format": "date-time",
                        "type": "string"
                      },
                      "description": {
                        "description": "Main body text of the message",
                        "example": "An important thing has happened that you should be\naware of. Since you might not be aware of it, we\nmade you this message to call your attention to it.",
                        "type": "string"
                      },
                      "displayOrder": {
                        "description": "A numeric indicator of how to sort messages for\ndisplay. Display smaller numbers before larger\nnumbers. Weights may not be continious (5, 10, 20,\n30, 50, 100, 250, 500, 600, 1000, etc.)",
                        "example": 10,
                        "type": "string"
                      },
                      "id": {
                        "allOf": [
                          {
                            "$ref": "#/components/schemas/Id"
                          }
                        ]
                      },
                      "imageUrl": {
                        "description": "URL of an icon for display with message",
                        "example": null,
                        "type": "string"
                      },
                      "lastUpdated": {
                        "description": "Last update date/time",
                        "example": "2019-05-23T17:42:00.000Z",
                        "format": "date-time",
                        "type": "string"
                      },
                      "learnMoreLabel": {
                        "description": "Text to display on a link/icon for users to get\nmore information about the notification.\nActivating it should transfer the user to the\nlearnMoreUrl.",
                        "example": "Learn About Things",
                        "type": "string"
                      },
                      "learnMoreUrl": {
                        "description": "URL where a user can find more information about\nthe notification without triggering an action.",
                        "example": "https://www.shootproof.com/help",
                        "type": "string"
                      },
                      "required": {
                        "description": "Indicates if displaying this message is mandatory",
                        "example": true,
                        "type": "boolean"
                      },
                      "title": {
                        "description": "Headline, masthead, or title of message",
                        "example": "A Thing To Be Aware Of",
                        "type": "string"
                      },
                      "type": {
                        "allOf": [
                          {
                            "$ref": "#/components/schemas/Type"
                          },
                          {
                            "enum": [
                              "dashboard-message"
                            ]
                          }
                        ]
                      },
                      "weight": {
                        "description": "A numeric indicator of how important a message\nis compared to other messages. Useful to determine\nwhich messages to not display if insufficient\nspace is available to display all messages.",
                        "example": 10,
                        "type": "integer"
                      }
                    },
                    "required": [
                      "type",
                      "id",
                      "title",
                      "description",
                      "country",
                      "required",
                      "active",
                      "weight",
                      "displayOrder",
                      "callToActionUrl",
                      "callToActionLabel",
                      "learnMoreUrl",
                      "learnMoreLabel",
                      "imageUrl",
                      "backgroundImageUrl",
                      "created",
                      "lastUpdated"
                    ],
                    "type": "object"
                  },
                  "title": "Language",
                  "type": "array"
                },
                "type": {
                  "enum": [
                    "dashboard-message-collection"
                  ],
                  "example": "dashboard-message-collection"
                }
              }
            }
          ]
        }
      }
    },
    "description": "List of current dashboard messages."
  },
  "400": {
    "$ref": "#/components/responses/validationError"
  }
}

Get a list of ShootProof supported languages

get
/studio/language

Example Request

Header Parameters

Property Description
Authentication required

The bearer token used to make authenticated requests to the ShootProof Studio API. See the authorization guide for more information on how to obtain and use bearer tokens.

200 OK

Supported languages.

Response Body

When the Content-Type of the response is application/vnd.shootproof+json, the following properties will be available in the response body.

Properties
Property Description
items

A collection of resources returned in the current result set.

Property Description
code

The language code.

name

The language name.

type

The type of resource represented.

links required read-only

Each property defines a hypertext link relationship as indicated by a link object or array of link objects. The target URL of each hypertext link relationship is related to the current resource according to the defined semantics of the link relationship property name.

meta read-only

Metadata describing the current result set.

Property Description
currentPage

The current page of results returned.

rows

The number of rows returned per page for the current result set.

totalItems

The total number of items in the result set. This may be affected by active search/filter parameters.

totalPages

The total number of pages in the result set. This is affected by the rows parameter (totalItems / rows == totalPages).

type

The type of resource represented.

OpenAPI Schema

The following schema is based on OpenAPI 3.0 and is provided in our downloadable OpenAPI document.

{
  "200": {
    "content": {
      "application/vnd.shootproof+json": {
        "schema": {
          "allOf": [
            {
              "$ref": "#/components/schemas/List"
            },
            {
              "properties": {
                "items": {
                  "items": {
                    "properties": {
                      "code": {
                        "description": "The language code.",
                        "example": "en_US",
                        "type": "string"
                      },
                      "name": {
                        "description": "The language name.",
                        "example": "English (US)",
                        "type": "string"
                      },
                      "type": {
                        "allOf": [
                          {
                            "$ref": "#/components/schemas/Type"
                          },
                          {
                            "enum": [
                              "language"
                            ]
                          }
                        ]
                      }
                    },
                    "required": [
                      "type",
                      "code",
                      "name"
                    ],
                    "type": "object"
                  },
                  "title": "Language",
                  "type": "array"
                },
                "type": {
                  "enum": [
                    "language-collection"
                  ],
                  "example": "language-collection"
                }
              }
            }
          ]
        }
      }
    },
    "description": "Supported languages."
  }
}

Shorten a URL for social sharing

post
/studio/shorturl

Example Request

Header Parameters

Property Description
Authentication required

The bearer token used to make authenticated requests to the ShootProof Studio API. See the authorization guide for more information on how to obtain and use bearer tokens.

Request Body

The URL to shorten.

application/vnd.shootproof+json
Property Description
type

The type of resource represented.

url

The URL to shorten.

OpenAPI Schema

The following schema is based on OpenAPI 3.0 and is provided in our downloadable OpenAPI document.

{
  "content": {
    "application/vnd.shootproof+json": {
      "schema": {
        "$ref": "#/components/schemas/Shorturl"
      }
    }
  },
  "description": "The URL to shorten.",
  "required": true
}

200 OK

The shortened URL.

Response Body

When the Content-Type of the response is application/vnd.shootproof+json, the following properties will be available in the response body.

Properties
Property Description
links required read-only

Each property defines a hypertext link relationship as indicated by a link object or array of link objects. The target URL of each hypertext link relationship is related to the current resource according to the defined semantics of the link relationship property name.

shorturl read-only

The shortened form of url. This URL will redirect to url.

type

The type of resource represented.

url

The URL to shorten.

400 Bad Request

Validation error response. Check the info.errors property in the response for more details.

Response Body

When the Content-Type of the response is application/problem+json, the following properties will be available in the response body.

Properties
Property Description
detail

A longer description of of the error encountered.

info

Additional information that may be provided to aid in error resolution.

Property Description
errors

If the error response is a result of validation errors, it will most likely be a 400 Bad Request response and contain this info.errors property. Each property name in the errors object is a property that failed validation. These properties contain objects with property names in the form of internal validation error message slugs paired with human-readable string values describing the validation failure. Each property may have multiple validation failure messages.

reason

An optional reason for the error response.

In some cases, more information is required to convey information about the error to the client. In these cases, one of the following reason slugs may be used.

Reason Slug Description
contract-not-ready-to-countersign The contract is in a state that does not allow countersigning. Its status must be ready-to-countersign to perform this action.
event-photo-count-limit The event has reached the maximum number of photos allowed.
plan-does-not-allow-uploads The studio is in a plan that does not allow uploads or they have reached the limit of photos the plan allows.
status

The HTTP status code associated with this error.

title

A short description of the error encountered.

type

A namespace URI uniquely identifying the error type.

OpenAPI Schema

The following schema is based on OpenAPI 3.0 and is provided in our downloadable OpenAPI document.

{
  "200": {
    "content": {
      "application/vnd.shootproof+json": {
        "schema": {
          "$ref": "#/components/schemas/Shorturl"
        }
      }
    },
    "description": "The shortened URL."
  },
  "400": {
    "$ref": "#/components/responses/validationError"
  }
}

Create a signature

post
/studio/signature

Example Request

Header Parameters

Property Description
Authentication required

The bearer token used to make authenticated requests to the ShootProof Studio API. See the authorization guide for more information on how to obtain and use bearer tokens.

Request Body

The signature to create.

application/vnd.shootproof+json
Property Description
signaturePaths

The SVG paths that define this signature.

svgViewbox

The SVG viewbox that defines the dimensions of this signature.

type

The type of resource represented.

OpenAPI Schema

The following schema is based on OpenAPI 3.0 and is provided in our downloadable OpenAPI document.

{
  "content": {
    "application/vnd.shootproof+json": {
      "schema": {
        "$ref": "#/components/schemas/Signature"
      }
    }
  },
  "description": "The signature to create.",
  "required": true
}

201 Created

The newly-created signature.

Headers
Header Description
Location

The URL to the newly-created signature.

Response Body

When the Content-Type of the response is application/vnd.shootproof+json, the following properties will be available in the response body.

Properties
Property Description
created read-only

The date on which the entity was created.

id read-only

An entity identifier. It may be either an integer or a universally unique identifier (UUID) represented as a string.

links required read-only

Each property defines a hypertext link relationship as indicated by a link object or array of link objects. The target URL of each hypertext link relationship is related to the current resource according to the defined semantics of the link relationship property name.

publicId read-only

The public identifier for this signature (may be used in the portal website).

signaturePaths

The SVG paths that define this signature.

svgViewbox

The SVG viewbox that defines the dimensions of this signature.

type

The type of resource represented.

400 Bad Request

Validation error response. Check the info.errors property in the response for more details.

Response Body

When the Content-Type of the response is application/problem+json, the following properties will be available in the response body.

Properties
Property Description
detail

A longer description of of the error encountered.

info

Additional information that may be provided to aid in error resolution.

Property Description
errors

If the error response is a result of validation errors, it will most likely be a 400 Bad Request response and contain this info.errors property. Each property name in the errors object is a property that failed validation. These properties contain objects with property names in the form of internal validation error message slugs paired with human-readable string values describing the validation failure. Each property may have multiple validation failure messages.

reason

An optional reason for the error response.

In some cases, more information is required to convey information about the error to the client. In these cases, one of the following reason slugs may be used.

Reason Slug Description
contract-not-ready-to-countersign The contract is in a state that does not allow countersigning. Its status must be ready-to-countersign to perform this action.
event-photo-count-limit The event has reached the maximum number of photos allowed.
plan-does-not-allow-uploads The studio is in a plan that does not allow uploads or they have reached the limit of photos the plan allows.
status

The HTTP status code associated with this error.

title

A short description of the error encountered.

type

A namespace URI uniquely identifying the error type.

OpenAPI Schema

The following schema is based on OpenAPI 3.0 and is provided in our downloadable OpenAPI document.

{
  "201": {
    "content": {
      "application/vnd.shootproof+json": {
        "schema": {
          "$ref": "#/components/schemas/Signature"
        }
      }
    },
    "description": "The newly-created signature.",
    "headers": {
      "Location": {
        "description": "The URL to the newly-created signature.",
        "schema": {
          "format": "uri",
          "type": "string"
        }
      }
    }
  },
  "400": {
    "$ref": "#/components/responses/validationError"
  }
}

Get a signature

get
/studio/signature/{signatureId}

Example Request

Header Parameters

Property Description
Accept

Optionally, you may provide an Accept header with a value of image/svg+xml to be redirected to an SVG representation of the signature.

Authentication required

The bearer token used to make authenticated requests to the ShootProof Studio API. See the authorization guide for more information on how to obtain and use bearer tokens.

200 OK

The signature.

Response Body

When the Content-Type of the response is application/vnd.shootproof+json, the following properties will be available in the response body.

Properties
Property Description
created read-only

The date on which the entity was created.

id read-only

An entity identifier. It may be either an integer or a universally unique identifier (UUID) represented as a string.

links required read-only

Each property defines a hypertext link relationship as indicated by a link object or array of link objects. The target URL of each hypertext link relationship is related to the current resource according to the defined semantics of the link relationship property name.

publicId read-only

The public identifier for this signature (may be used in the portal website).

signaturePaths

The SVG paths that define this signature.

svgViewbox

The SVG viewbox that defines the dimensions of this signature.

type

The type of resource represented.

Alternate Response Body

When the Content-Type of the response is image/svg+xml, the following properties will be available in the response body.

Properties
A signature represented as an SVG image.
"<svg viewBox=\"0 0 430 150\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">\n  <path stroke=\"black\" stroke-width=\"2\" fill=\"none\" shape-rendering=\"auto\" stroke-linejoin=\"round\" d=\"M125.5,66 L125.5,66 L126.5,66 L127.5,66 L127.5,66 L128.5,66 L129.5,66 L129.5,66 L129.5,66 L130.5,66 L130.5,66 L130.5,66 L131.5,66 L131.5,66 L132.5,65 L132.5,65 L132.5,65 L132.5,65\"></path>\n</svg>"

Error Response

API errors come in two kinds of varieties: 400s and 500s.

Any error with a status code of 400 to 499 is considered a client error. This means it’s usually an error you can handle in your app, and then resend a modified request to the ShootProof API to get a successful response.

An error in the range of 500 to 599, on the other hand, is a different story. These errors usually mean that a problem occured on the server and resending the request with modifications will not fix the issue.

Pay careful attention to the status codes. We try to stick as close as possible to their defined semantics. For a complete list of HTTP status codes, take a look at the official HTTP Status Code Registry.

Check out our errors guide for more information.

Response Body

When the Content-Type of the response is application/problem+json, the following properties will be available in the response body.

Properties
Property Description
detail

A longer description of of the error encountered.

info

Additional information that may be provided to aid in error resolution.

Property Description
reason

An optional reason for the error response.

In some cases, more information is required to convey information about the error to the client. In these cases, one of the following reason slugs may be used.

Reason Slug Description
contract-not-ready-to-countersign The contract is in a state that does not allow countersigning. Its status must be ready-to-countersign to perform this action.
event-photo-count-limit The event has reached the maximum number of photos allowed.
plan-does-not-allow-uploads The studio is in a plan that does not allow uploads or they have reached the limit of photos the plan allows.
status

The HTTP status code associated with this error.

title

A short description of the error encountered.

type

A namespace URI uniquely identifying the error type.

Validation Error Example
{
  "detail": "There was a problem with your request. Please see `info` for more information.",
  "info": {
    "errors": {
      "type": {
        "isEmpty": "Value is required and can't be empty"
      }
    }
  },
  "status": 400,
  "title": "Bad Request",
  "type": "https://developer.shootproof.com/errors#error-bad-request"
}
Forbidden Error Example
{
  "detail": "You do not have permission to access the requested resource.",
  "status": 403,
  "title": "Forbidden",
  "type": "https://developer.shootproof.com/errors#error-forbidden"
}
Not Found Error Example
{
  "detail": "The requested resource could not be found.",
  "status": 404,
  "title": "Not Found",
  "type": "https://developer.shootproof.com/errors#error-not-found"
}
Server Error Example
{
  "detail": "An error occurred on the server. If this error continues to occur, please contact support.",
  "status": 500,
  "title": "Internal Server Error",
  "type": "https://developer.shootproof.com/errors#error-server-error"
}
Unauthorized Error Example
{
  "detail": "No authorization credentials provided. You must provide an authorization token for this request.",
  "status": 401,
  "title": "Unauthorized",
  "type": "https://developer.shootproof.com/errors#error-unauthorized"
}

OpenAPI Schema

The following schema is based on OpenAPI 3.0 and is provided in our downloadable OpenAPI document.

{
  "200": {
    "content": {
      "application/vnd.shootproof+json": {
        "schema": {
          "$ref": "#/components/schemas/Signature"
        }
      },
      "image/svg+xml": {
        "examples": {
          "svg": {
            "summary": "A signature represented as an SVG image.",
            "value": "<svg viewBox=\"0 0 430 150\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">\n  <path stroke=\"black\" stroke-width=\"2\" fill=\"none\" shape-rendering=\"auto\" stroke-linejoin=\"round\" d=\"M125.5,66 L125.5,66 L126.5,66 L127.5,66 L127.5,66 L128.5,66 L129.5,66 L129.5,66 L129.5,66 L130.5,66 L130.5,66 L130.5,66 L131.5,66 L131.5,66 L132.5,65 L132.5,65 L132.5,65 L132.5,65\"></path>\n</svg>"
          }
        },
        "schema": {
          "title": "A signature represented as an SVG image.",
          "type": "string"
        }
      }
    },
    "description": "The signature."
  },
  "default": {
    "$ref": "#/components/responses/defaultError"
  }
}