openapi: 3.0.3
servers:
- url: https://brandfolder.com/api/v4
info:
title: Brandfolder OpenAPI Reference
version: v4
description: >
Welcome to the OpenAPI reference documentation for Brandfolder by
Smartsheet!
tags:
- name: assets
x-displayName: Assets
description: >
Assets are the core resource of Brandfolder. They act like containers that
hold all of your digital resources and files, which we call Attachments.
They belong to a Section in a Brandfolder and can also exist within many
Collections.
- name: attachments
x-displayName: Attachments
description: >
Attachments are the representation of digital assets in Brandfolder.
Generally speaking, they are actual files but can also be colors, fonts,
links to embedded/external media, etc. They belong to an Asset and contain
extra metadata related to the files they represent.
> **Note:**
>
> If you need to list all of an organization's attachments, follow these
steps:
>
> 1. List all Brandfolders: `GET /brandfolders?include=organization`
> 2. List all sections for each Brandfolder within the target
organization: `GET /brandfolders/{brandfolder_id}/sections`
> 3. Iteratively list assets and their attachments for each Section: `GET
/sections/{section_id}/assets?include=attachments`
- name: binary_upload
x-displayName: Binary upload
description: >
Brandfolder's Binary Upload service allows for authenticated users to
upload locally stored files into Brandfolder via our API.
Binary Upload is a multi-step process:
1. [Get an upload
URL](/api/brandfolder/openapi/binary_upload/opidstorageserviceuploadrequestsget)
2. Upload the file to the storage bucket using one of the methods below
:
- [Upload a file](/api/brandfolder/openapi/binary_upload/opidstorageservicebfuploadrequestbucketput)
- [Resumable upload](/api/brandfolder/openapi/binary_upload/opidstorageservicebfuploadrequestpost)
3. [Create an
asset](/api/brandfolder/openapi/assets/opidapiv4collectionsassetsbybrandfolderidpost),
telling the Brandfolder API the attachment is at that URL.
The Brandfolder Upload Request endpoint will return a response body with a
signed `upload_url`, `resumable_upload_url`, storage `service_type` and
`object_url`.
Each Binary Upload `request_url` and `object_url` are designed to be used
one time for a singular Asset. Both the `upload_url` and
`resumable_upload_url` will expire 24 hours after they're issued. Assets
uploaded to the `object_url` will be stored for 7 days before being
purged. Should any of these URLs expire, you will simply need to restart
the workflow to obtain active URLs.
> **Tip:** We recommend that you use the Resumable Upload flow if you have
poor internet connection, you're uploading local files that are larger
than 200MB or if you're uploading files from a server that are larger than
500MB.

- name: brandfolders
x-displayName: Brandfolders
description: >
Brandfolders are nested directly underneath an Organization in the overall
heirarchy. They can have many Collections, Sections, and Assets.
- name: collections
x-displayName: Collections
description: >
Collections are nested under a Brandfolder and contain many Assets. They
are mainly used as an additional way to organize, manage, share, and
restrict access to a subset of Assets within your Brandfolder without
having to upload Assets to multiple places.
- name: custom_fields
x-displayName: Custom fields
description: >
Custom Fields can be assigned to Assets and are generally helpful for
organizing and searching Assets within a Brandfolder, as well as for
understanding more details about each Asset.
Each Custom Field is essentially a key/value pair associated with
**exactly one Asset**. Keys and values are always a string type, so use
`"123"` instead of `123`.
For example, if you have several Assets that represent products you sell
in different colors, you might create a Custom Field for each of those
Assets with a key of `"color"` and a value of `"blue"` or `"red"`, etc. If
you modify or delete a `"color":"blue"` Custom Field for any particular
Asset, it will not affect other Custom Fields on other Assets, even if
they have the same key and/or value.
> **IMPORTANT:** Think carefully about whether Tags or Custom Fields are
better suited to meet the needs of your particular use case.
- name: invitations
x-displayName: Invitations
description: >
Invitations are exactly what they sound like and can be created to invite
Users to join your Organization, Brandfolder, or Collection as a `guest`,
`collaborator`, `admin`, or (when inviting someone to an Organization)
`owner`.
Learn more about the permission levels you can grant Users in our
Knowledge Base article on User Permissions.
- name: labels
x-displayName: Labels
description: >
Brandfolder's Labels are an enhanced organization and findability feature
meant to provide the peace of mind that comes with an organization's
existing folder structure. Think of Labels like your music playlists--any
asset can be assigned to a label or multiple labels.
Labels are not turned on for every account. If you are unsure whether you
have or need Labels, please contact brandfoldersupport@smartsheet.com.
- name: organizations
x-displayName: Organizations
description: >
An Organization is the top level resource of all objects in Brandfolder.
It can have many Brandfolders nested beneath it.
- name: sections
x-displayName: Sections
description: >
Sections are nested under a Brandfolder and contain many Assets. They
exist to help keep Assets organized within a Brandfolder. They also
determine which type of digital assets can be uploaded within them (files,
external media, fonts, etc.).
- name: tags
x-displayName: Tags
description: >
Tags can be assigned to Assets and are generally helpful for organizing
and searching Assets within a Brandfolder.
Each Tag is essentially a keyword associated with exactly one Asset.
For example, if you have several Assets that represent products you sell,
you might create a "product" Tag for each one. If you modify or delete the
"product" Tag for any particular Asset, it will not affect other Tags with
the same value on other Assets.
Tags have a read-only attribute called `auto_generated` which indicates if
the Tag was created automatically by our smart analysis of the file
Attachment(s) (`true`) or if a User created the Tag (`false`).
> **IMPORTANT:** Think carefully about whether Tags or Custom Fields are
better suited to meet the needs of your particular use case.
- name: user_permissions
x-displayName: User permissions
description: >
User permissions describe relationships between Organizations,
Brandfolders, Collections, Portals or Brandguides and the users that have
access to them.
Learn more about permissioning in our Knowledge Base article on User Permissions.
- name: webhooks
x-displayName: Webhooks
description: >
The Brandfolder Webhooks service allows you to subscribe to event-based
notifications (callbacks) when a qualifying event is triggered within
Brandfolder. Asset data will then be sent to the user-provided
`callback_url` at the time the subscribed event occurs within the
specified Brandfolder.
> NOTE: The `callback_url` must be accessible from the public internet,
meaning any localhost, private network domains, or domains that require
authentication will all fail.
Authentication
Utilizing Webhooks requires authentication with the resource (Brandfolder)
being subscribed to. A user's unique API Key is required in a header for
actions on all endpoints related to the Webhooks service.
- Find your API key at https://brandfolder.com/profile#integrations.
- Click the icon to the right of your key to copy it to your clipboard.
There are two required headers in each request:
`Content-Type: application/json`
`Authorization: Bearer `
The provided API Key is checked against any provided resource (where
applicable) to confirm the appropriate permissions.
___
Service Details
The Brandfolder Webhooks service allows for subscriptions to events within
individual Brandfolders.
> NOTE: Asset data updates made at the Collection level will trigger a
Brandfolder Webhook subscription. Since assets live at the Brandfolder
level, any updates made at the Collection level would be reflected on the
Brandfolder level as well, thus triggering a Webhook.
Due to the way Brandfolder manages assets, you will see both an
`"asset.create"` event and an `"asset.update"` event upon creation of a
new asset. A `create` event is triggered when Brandfolder recognizes the
new asset and begins to process it for use. An `update` event is triggered
when the asset is ready for use.
The following event types trigger webhooks:
* `asset.create` - Asset creation. A new asset has been added to a
subscribed Brandfolder.
* `asset.update` - Asset update. Asset data has been updated within a
subscribed Brandfolder. One or more of the following asset attributes has
been updated:
* Name
* Description
* Section
* Approval status
* Expiration status
* Comments & Annotations
* Adding / Updating
* Deleting
* Tags
* Adding / Updating
* Deleting
* Custom Fields
* Adding / Updating
* Deleting
* `asset.delete` - Asset deletion. An asset has been removed from within a
subscribed Brandfolder.
> Once a Webhook subscription as been created, the payload that will be
sent to the user-provided `callback_url` after an event has been triggered
will have the following structure:
```json
{
"data": {
"attributes": {
"key": "",
"event_time": "",
"event_type": "",
"brandfolder_key": "",
"organization_key": ""
},
"webhook_id": ""
}
}
```
> NOTE: The callback payload is a "skinny" payload -- it indicates which
assets changed and the type of event that occurred, but does not contain
any data from the assets themselves.
The Brandfolder Webhook service requires your application to immediately
acknowledge receipt of any Webhooks by returning a `2xx` HTTP status code.
If Brandfolder does not receive an acknowledgement or any non `2xx` HTTP
status code is returned, Brandfolder will retry the Webhook up to 15 times
with exponentially increasing wait times in between.
**Any Webhook subscriptions that continue to fail without remedy will be
made inactive.**
Messages may be sent out of order to the `callback_url` associated with a
Webhook subscription. The `event_time` provided in the payload can be used
to order events.
If the API Key associated with a Webhook subscription loses access to the
associated resource, the subscription will be deactivated within 30
minutes.
paths:
/brandfolders:
parameters:
- in: header
name: Content-Type
required: true
schema:
type: string
enum:
- application/json
example: application/json
- in: header
name: Accept
required: true
schema:
type: string
enum:
- application/json
example: application/json
- $ref: '#/components/parameters/Authorization'
get:
operationId: list-brandfolders
summary: List Brandfolders
description: |
Lists all Brandfolders for a User. Unauthorized requests will return an
empty list.
You can use the returned `slug` attribute to form a link to the desired
Brandfolder like so:
````
https://brandfolder.com/{slug}
````
tags:
- brandfolders
parameters:
- in: query
name: fields
description: >
Set it to a comma-separated list (no spaces) of any of the following
attributes of the Brandfolders
to return as part of the Brandfolders' attributes in the response.
Allowed values:
- asset_count
- attachment_count
- storage
WARNING: This parameter can slow response times.
schema:
type: string
example: asset_count,attachment_count,storage
- in: query
name: include
description: >
Set it to a comma-separated list (no spaces) of any of the following
record names to return those records related to the Brandfolders
you're fetching. Related records are returned in an `included` array
in the response.
Allowed values:
- organization
- collections
- assets
WARNING: This parameter can slow response times.
schema:
type: string
example: organizations
- in: query
name: search
description: >
Set it to any URL-encoded query to fetch only Brandfolders that
match your criteria.
WARNING: This parameter can slow response times.
schema:
type: string
example: extension:png
responses:
'200':
description: |
References to all the user's Brandfolders.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Brandfolder'
meta:
$ref: '#/components/schemas/PaginationMetadataResponse'
required:
- data
- meta
default:
description: Generic error payload
content:
application/json:
schema:
type: string
/brandfolders/{brandfolder_id}:
parameters:
- name: brandfolder_id
in: path
schema:
type: string
required: true
description: Unique identifier for the resource instance.
example: oqgiju-21olts-ce9egi
- in: header
name: Content-Type
required: true
schema:
type: string
enum:
- application/json
example: application/json
- in: header
name: Accept
required: true
schema:
type: string
enum:
- application/json
example: application/json
- $ref: '#/components/parameters/Authorization'
get:
operationId: opIdApiV4BrandfoldersByIdGet
tags:
- brandfolders
summary: Fetch a Brandfolder
description: |
You can use the returned `slug` attribute to form a link to the desired
Brandfolder like so:
````
https://brandfolder.com/{slug}
````
parameters:
- in: query
name: fields
description: >
Set it to a comma-separated list (no spaces) of any of the following
attributes of the Brandfolder
to return as part of the Brandfolder's attributes in the response.
Allowed values:
- asset_count
- attachment_count
- section_count
WARNING: This parameter can slow response times.
schema:
type: string
example: asset_count,attachment_count,section_count
- in: query
name: include
description: >
Set it to a comma-separated list (no spaces) of any of the following
record names to return those records related to the Brandfolder
you're fetching. Related records are returned in an `included` array
in the response.
Allowed values:
- organization
- collections
- search_filters
- sections
WARNING: This parameter can slow response times.
schema:
type: string
example: organizations
responses:
'200':
description: |
A reference to the Brandfolder.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/Brandfolder'
required:
- data
put:
operationId: opIdApiV4BrandfoldersByIdPut
summary: Update a Brandfolder
description: Updates the matching Brandfolder.
tags:
- brandfolders
parameters:
- in: header
name: Accept
required: true
schema:
type: string
enum:
- application/json
example: application/json
requestBody:
description: |
Attribute updates for the Brandfolder.
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
attributes:
type: object
properties:
name:
type: string
description: A new name for the Brandfolder.
example: Updated Brandfolder
privacy:
type: string
description: A new privacy setting for the Brandfolder.
example: public
slug:
type: string
description: A new URL-friendly slug for the Brandfolder.
example: updated-brandfolder
tagline:
type: string
description: A new tagline for the brandfolder.
example: Updated Brandfolder tagline!
required:
- attributes
required:
- data
responses:
'200':
description: |
The updated Brandfolder.
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
id:
type: string
description: Unique identifier for the resource instance.
example: oqgkkd-fr5iv4-hh142d
type:
type: string
description: The type of the resource.
enum:
- brandfolders
attributes:
type: object
properties:
name:
type: string
description: The name of the Brandfolder.
example: Updated Brandfolder
privacy:
type: string
description: The privacy setting of the Brandfolder.
example: public
slug:
type: string
description: The URL-friendly slug of the Brandfolder.
example: updated-brandfolder
tagline:
type: string
description: The tagline for the brandfolder.
example: Updated Brandfolder tagline!
required:
- name
- privacy
- slug
- tagline
required:
- attributes
required:
- data
default:
description: Generic error payload
content:
application/json:
schema:
type: string
/brandfolders/{brandfolder_id}/collections:
parameters:
- name: brandfolder_id
in: path
schema:
type: string
required: true
description: Unique identifier for the resource instance.
example: oqgiju-21olts-ce9egi
- in: header
name: Content-Type
required: true
schema:
type: string
enum:
- application/json
example: application/json
- in: header
name: Accept
required: true
schema:
type: string
enum:
- application/json
example: application/json
- $ref: '#/components/parameters/Authorization'
get:
operationId: opIdApiV4BrandfoldersCollectionsByBrandfolderIdGet
summary: List collections in a Brandfolder
description: >
List all collections in the Brandfolder.
You can use the returned `slug` parameter (in conjunction with the slug
of
the parent Brandfolder) to form a link to the desired Collection like
so:
```
https://brandfolder.com/{brandfolder_slug}/{collection_slug
```
tags:
- collections
responses:
'200':
description: |
All the collections in the Brandfolder.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Collection'
meta:
$ref: '#/components/schemas/PaginationMetadataResponse'
required:
- data
- meta
default:
description: Generic error payload
content:
application/json:
schema:
type: string
post:
operationId: opIdApiV4BrandfoldersCollectionsByBrandfolderIdPost
summary: Create a collection
description: Creates a collection in the matching Brandfolder.
tags:
- collections
requestBody:
description: |
Attribute values for the collection.
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
attributes:
type: object
properties:
name:
type: string
description: A name.
example: My collection
slug:
type: string
description: >
A URL-friendly slug. Use only letters, numbers,
hyphens, and
underscores.
NOTE: We recommend **not** to invent your own slug.
If it is
not unique and valid, the request fails with a `422`
error.
Default is to automatically assign a slug based on
`name` (a
name of \"My Collection\" would make a slug of
\"my-collection\").
example: my-collection
tagline:
type: string
description: A tag line.
example: My collection tag line
required:
- name
required:
- attributes
required:
- data
responses:
'200':
description: |
The new collection.
content:
application/json:
schema:
$ref: '#/components/schemas/Collection'
default:
description: Generic error payload
content:
application/json:
schema:
type: string
/brandfolders/{brandfolder_id}/custom_field_keys:
parameters:
- name: brandfolder_id
in: path
schema:
type: string
required: true
description: Unique identifier for the resource instance.
example: oqgiju-21olts-ce9egi
- in: header
name: Content-Type
required: true
schema:
type: string
enum:
- application/json
example: application/json
- in: header
name: Accept
required: true
schema:
type: string
enum:
- application/json
example: application/json
- $ref: '#/components/parameters/Authorization'
get:
operationId: opIdApiV4BrandfoldersCustomFieldKeysByBrandfolderIdGet
summary: List custom field keys
description: |
Lists custom field keys for the matching Brandfolder.
tags:
- custom_fields
parameters:
- in: query
name: fields
description: >
Set it to `value` to return it as part of the asset's attributes in
the
response.
Allowed value: `value`
WARNING: This parameter can slow response times.
schema:
type: string
example: value
- in: query
name: include
description: >
Set it to `custom_field_values` to return those records related to
the
asset you're fetching. Related records are returned in an `included`
array in the response.
Allowed value: `custom_field_values`
WARNING: This parameter can slow response times.
schema:
type: string
example: custom_field_values
responses:
'200':
description: |
All custom field keys for the matching Brandfolder.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/CustomFieldKey'
meta:
$ref: '#/components/schemas/PaginationMetadataResponse'
required:
- data
- meta
default:
description: Generic error payload
content:
application/json:
schema:
type: string
post:
operationId: opIdApiV4BrandfoldersCustomFieldKeysByBrandfolderIdPost
summary: Create custom field keys
description: >
Creates custom field keys for the matching brandfolder.
This endpoint is **only** needed for setting up controlled Custom
Fields. If
this is enabled for your Brandfolder, you can set the allowed keys and
optionally restrict their allowed values for Custom Fields using this
endpoint.
tags:
- custom_fields
requestBody:
description: Custom field keys for the matching brandfolder.
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
attributes:
type: array
items:
type: object
properties:
name:
type: string
description: The key name.
example: color
allowed_values:
type: array
description: >-
The `value` that can be used with this `key` when
creating or updating any Custom Field on an Asset
must be one of these strings. If not included or
empty array `[]`, the `values` are unrestricted.
items:
type: string
example:
- red
- white
- blue
position:
type: integer
format: int32
description: >-
Sets the location of the custom field among other
custom fields in the Brandfolder UI.
minimum: 0
example: 0
prioritized:
type: boolean
description: >-
Set to `true` to display the custom field in asset
previews. A Brandfolder can have up to five
prioritized custom fields.
example: false
required:
type: boolean
description: >-
If set to `true`, users uploading an asset must
input the custom field before uploading the asset.
Children of dependent custom fields can also be
marked as required.
example: false
restricted:
type: boolean
description: >-
If set to `true`, the field value is restricted to
a set of allowed values (see `allowed_values`);
otherwise, the field value is unrestricted.
example: true
required:
- name
required:
- attributes
required:
- data
responses:
'200':
description: |
The new custom field keys.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/CustomFieldKey'
meta:
$ref: '#/components/schemas/PaginationMetadataResponse'
required:
- data
- meta
default:
description: Generic error payload
content:
application/json:
schema:
type: string
/organizations:
parameters:
- in: header
name: Content-Type
required: true
schema:
type: string
enum:
- application/json
example: application/json
- in: header
name: Accept
required: true
schema:
type: string
enum:
- application/json
example: application/json
- $ref: '#/components/parameters/Authorization'
get:
operationId: opIdApiV4OrganizationsGet
summary: List organizations
description: >
Lists all Organizations for a User. Unauthorized requests will return an
empty list.
You can use the returned `slug` attribute to form a link to the desired
Organization like so:
````
https://brandfolder.com/organizations/{slug}
````
tags:
- organizations
parameters:
- in: query
name: fields
description: >
Set it to `asset_count` to return each organization's asset count as
part of each organization's attributes in the response.
WARNING: This parameter can slow response times.
schema:
type: string
enum:
- asset_count
example: asset_count
- in: query
name: include
description: >
Set it to a comma-separated list (no spaces) of any of the following
record names to return those records related to the organizations
you're fetching. Related records are returned in an `included` array
in the response.
Allowed values:
- brandfolders
- brandguides
- collections
- portals
WARNING: This parameter can slow response times.
schema:
type: string
example: brandfolders
responses:
'200':
description: |
All the user's organizations.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Organization'
meta:
$ref: '#/components/schemas/PaginationMetadataResponse'
required:
- data
- meta
default:
description: Generic error payload.
content:
application/json:
schema:
type: string
/organizations/{organization_id}:
parameters:
- name: organization_id
in: path
schema:
type: string
required: true
description: Unique identifier for the resource instance.
example: oqgkkd-fr5iv4-cocc75
- in: header
name: Content-Type
required: true
schema:
type: string
enum:
- application/json
example: application/json
- in: header
name: Accept
required: true
schema:
type: string
enum:
- application/json
example: application/json
- $ref: '#/components/parameters/Authorization'
get:
operationId: opIdApiV4OrganizationsByIdGet
summary: Get an organization
description: >
You can use the returned `slug` attribute to form a link to the desired
Organization like so:
````
https://brandfolder.com/organizations/{slug}
````
tags:
- organizations
parameters:
- in: query
name: fields
description: >
Set it to a comma-separated list (no spaces) of any of the following
attributes of the organization to return as part of the
organization's attributes in the response.
Allowed values:
- `asset_count` returns the organization's asset count.
- `cname` returns the organization's Canonical Name (CNAME), or
`null` if the organization doesn't have one.
WARNING: This parameter can slow response times.
schema:
type: string
enum:
- asset_count
- cname
example: asset_count
- in: query
name: include
description: >
Set it to a comma-separated list (no spaces) of any of the following
record names to return those records related to the organization
you're fetching. Related records are returned in an `included` array
in the response.
Allowed values:
- assets
- brandfolders
- brandguides
- collections
WARNING: This parameter can slow response times.
schema:
type: string
example: collections
responses:
'200':
description: |
The matching organization.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/Organization'
required:
- data
default:
description: Generic error payload.
content:
application/json:
schema:
type: string
/organizations/{organization_id}/brandfolders:
parameters:
- name: organization_id
in: path
schema:
type: string
required: true
description: Unique identifier for the resource instance.
example: oqgkkd-fr5iv4-cocc75
- in: header
name: Content-Type
required: true
schema:
type: string
enum:
- application/json
example: application/json
- in: header
name: Accept
required: true
schema:
type: string
enum:
- application/json
example: application/json
- $ref: '#/components/parameters/Authorization'
post:
operationId: opIdApiV4OganizationsBrandfoldersByOrganizationIdPost
summary: Create a Brandfolder
description: |
Creates a Brandfolder in the specified organization.
tags:
- brandfolders
parameters:
- name: Content-Type
in: header
schema:
type: string
default: application/json
example: application/json
requestBody:
description: |
Attributes for the new Brandfolder.
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
attributes:
type: object
properties:
name:
type: string
description: The name of the brandfolder.
example: Brandfolder
privacy:
type: string
description: The privacy setting of the brandfolder.
example: private
slug:
type: string
description: The URL-friendly slug of the brandfolder.
example: brandfolder
tagline:
type: string
description: The tagline of the brandfolder.
example: You expected this - Brandfolder's Brandfolder!
default: ''
required:
- name
required:
- attributes
required:
- data
responses:
'200':
description: |
The new Brandfolder.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/Brandfolder'
required:
- data
default:
description: Generic error payload.
content:
application/json:
schema:
type: string
/collections:
parameters:
- in: header
name: Content-Type
required: true
schema:
type: string
enum:
- application/json
example: application/json
- in: header
name: Accept
required: true
schema:
type: string
enum:
- application/json
example: application/json
- $ref: '#/components/parameters/Authorization'
get:
operationId: opIdApiV4CollectionsGet
summary: List collections
description: >
List the collections accessible to the user.
Unauthorized requests return an empty list.
You can use the returned `slug` parameter (in conjunction with the slug
of
the parent Brandfolder) to form a link to the desired Collection like
so:
```
https://brandfolder.com/{brandfolder_slug}/{collection_slug}
```
tags:
- collections
parameters:
- in: header
name: Accept
required: true
schema:
type: string
enum:
- application/json
example: application/json
security:
- APIToken: []
responses:
'200':
description: |
A list of collections accessible to the user.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Collection'
meta:
$ref: '#/components/schemas/PaginationMetadataResponse'
required:
- data
- meta
default:
description: Generic error payload
content:
application/json:
schema:
type: string
/collections/{collection_id}:
parameters:
- name: collection_id
in: path
schema:
type: string
required: true
description: Unique identifier for the resource instance.
example: oqgiju-21olts-ce9egi
- in: header
name: Content-Type
required: true
schema:
type: string
enum:
- application/json
example: application/json
- $ref: '#/components/parameters/Authorization'
get:
operationId: opIdApiV4CollectionsByIdGet
summary: Fetch a collection
description: |
Returns the matching collection.
tags:
- collections
parameters:
- in: query
name: fields
description: >
Set it to `asset_count` to return the collection's asset count as
part
of the collection's attributes in the response.
WARNING: This parameter can slow response times.
schema:
type: string
enum:
- asset_count
example: asset_count
- in: query
name: include
description: >
Set it to a comma-separated list (no spaces) of any of the following
record names to return those records related to the collection
you're
fetching. Related records are returned in an `included` array in the
response.
Allowed values:
- brandfolder
- assets
- search_filters
WARNING: This parameter can slow response times.
schema:
type: string
example: brandfolder
- in: header
name: Accept
required: true
schema:
type: string
enum:
- application/json
example: application/json
responses:
'200':
description: |
The matching collection.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/Collection'
required:
- data
default:
description: Generic error payload
content:
application/json:
schema:
type: string
put:
operationId: opIdApiV4CollectionsByIdPut
summary: Update a collection
description: Updates the matching collection.
tags:
- collections
parameters:
- in: header
name: Accept
required: true
schema:
type: string
enum:
- application/json
example: application/json
requestBody:
description: |
Attribute updates for the collection.
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
attributes:
type: object
properties:
name:
type: string
description: A new name.
example: New name
slug:
type: string
description: >
A new URL-friendly slug. Use only letters, numbers,
hyphens,
and underscores.
NOTE: We recommend **not** to invent your own slug.
If it is
not unique and valid, the request fails with a `422`
error.
Default is to automatically assign a slug based on
`name` (a
name of \"My Collection\" would make a slug of
\"my-collection\").
example: new-name
tagline:
type: string
description: A new tag line.
example: New tag line
required:
- attibutes
required:
- data
responses:
'200':
description: |
The updated collection.
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
id:
type: string
description: Unique identifier for the resource instance.
example: oqgkkd-fr5iv4-hh142d
type:
type: string
description: The type of the resource.
enum:
- collections
attributes:
type: object
properties:
name:
type: string
description: A new name.
example: New name
slug:
type: string
description: |
A new URL-friendly slug.
example: new-name
tagline:
type: string
description: A new tag line.
example: New tag line
public:
type: boolean
description: >-
Set to `true` for hassle-free sharing, allowing
search engines to index your brand assets.
Otherwise, set to `false` to share only with the
users you specify.
example: false
stealth:
type: boolean
description: >-
Set to `true` to remove the collection from
appearing in web searches.
example: false
is_workspace:
type: boolean
description: >-
Set to `true` if the collection is a Brandfolder
workspace.
example: false
required:
- data
default:
description: Generic error payload
content:
application/json:
schema:
type: string
delete:
operationId: opIdApiV4CollectionsByIdDelete
summary: Delete a collection
description: Removes the matching collection.
tags:
- collections
responses:
'200':
description: |
Successful response (always an empty object)
content:
application/json:
schema:
type: object
properties: {}
default:
description: Generic error payload
content:
application/json:
schema:
type: string
/collections/{collection_id}/assets:
parameters:
- name: collection_id
in: path
schema:
type: string
required: true
description: Unique identifier for the resource instance.
example: oqgkkd-fr5iv4-443db
- in: header
name: Content-Type
required: true
schema:
type: string
enum:
- application/json
example: application/json
- in: header
name: Accept
required: true
schema:
type: string
enum:
- application/json
example: application/json
- $ref: '#/components/parameters/Authorization'
get:
operationId: opIdApiV4CollectionsAssetsByCollectionIdGet
summary: List assets in a collection
description: Lists assets in a collection.
tags:
- assets
- collections
parameters:
- in: query
name: page
description: >
Set this to a positive, non-zero integer representing the page
number of
the results you want.
schema:
type: integer
format: int32
minimum: 1
- in: query
name: per
description: >
Set this pagination parameter to the maximum number of results you
want
to receive back from your request. More records may exist (as
denoted by
the `meta.total_count` value).
schema:
type: integer
format: int32
minimum: 1
maximum: 3000
default: 100
- in: query
name: search
description: |
Set it to any URL-encoded query to fetch only assets that match your
criteria.
WARNING: This parameter can slow response times.
schema:
type: string
example: extension:png
- in: query
name: fields
description: >
Set it to a comma-separated list (no spaces) of any of the following
attributes of the asset to return as part of the asset's attributes
in
the response.
Allowed values:
- `created_at`
- `updated_at`
- `cdn_url`
- `availability`
WARNING: This parameter can slow response times.
schema:
type: string
example: cdn_url
- in: query
name: include
description: |
Set it to a comma-separated list (no spaces) of any of the following
record names to return those records related to the asset you're
fetching. Related records are returned in an `included` array in the
response.
Allowed values:
- `attachments`
- `brandfolder`
- `collections`
- `custom_fields`
- `section`
- `tags`
WARNING: This parameter can slow response times.
schema:
type: string
example: tags
responses:
'200':
description: |
The matching collection assets.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Asset'
meta:
$ref: '#/components/schemas/PaginationMetadataResponse'
required:
- data
- meta
'404':
description: |
This occurs for CDN URLs of assets that are pending approval or
unpublished.
default:
description: Generic error payload
content:
application/json:
schema:
type: string
post:
operationId: opIdApiV4CollectionsAssetsByCollectionIdPost
summary: Create assets in a collection
description: >
Creates assets in the matching collection.
Any files you wish to use as an Attachment in Brandfolder must be hosted
at
a publicly available URL (until they have been successfully imported).
If
you need to upload file contents directly to a server, you can use do a
binary file upload to our temporary storage bucket and then use that URL
when creating Assets/Attachments.
tags:
- assets
- collections
requestBody:
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
attributes:
type: array
items:
$ref: '#/components/schemas/AssetAttributesRequest'
required:
- attributes
section_key:
type: string
description: >
ID of the Section in which you want the newly created
Asset(s)
to live.
example: oqgol8-dslwxs-58b2z3
required:
- data
- section_key
responses:
'200':
description: |
The new assets.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Asset'
meta:
$ref: '#/components/schemas/PaginationMetadataResponse'
required:
- data
- meta
default:
description: Generic error payload
content:
application/json:
schema:
type: string
/collections/{collection_id}/tags:
parameters:
- name: collection_id
in: path
schema:
type: string
required: true
description: Unique identifier for the resource instance.
example: oqgkkd-fr5iv4-443db
- in: header
name: Content-Type
required: true
schema:
type: string
enum:
- application/json
example: application/json
- in: header
name: Accept
required: true
schema:
type: string
enum:
- application/json
example: application/json
- $ref: '#/components/parameters/Authorization'
get:
operationId: opIdApiV4CollectionsTagsByCollectionIdGet
summary: List tags in a collection
description: |
Lists tags in the matching collection.
tags:
- collections
- tags
responses:
'200':
description: |
Tags in the matching collection.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Tag'
meta:
$ref: '#/components/schemas/PaginationMetadataResponse'
required:
- data
- meta
default:
description: Generic error payload
content:
application/json:
schema:
type: string
/brandfolders/{brandfolder_id}/sections:
parameters:
- name: brandfolder_id
in: path
schema:
type: string
required: true
description: Unique identifier for the resource instance.
example: oqgiju-21olts-ce9egi
- in: header
name: Content-Type
required: true
schema:
type: string
enum:
- application/json
example: application/json
- in: header
name: Accept
required: true
schema:
type: string
enum:
- application/json
example: application/json
- $ref: '#/components/parameters/Authorization'
get:
operationId: opIdApiV4SectionsGet
summary: List sections
description: Returns the Brandfolder's sections.
tags:
- sections
parameters:
- in: query
name: include
schema:
type: string
description: >
Set it to a comma-separated list (no spaces) of any of the following
record names, to return those records related to the sections.
Related
records are returned in an `included` array in the response.
Allowed values:
- brandfolder
- assets
WARNING: This parameter can slow response times.
example: brandfolder
responses:
'200':
description: |
The sections in the matching Brandfolder.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Section'
meta:
$ref: '#/components/schemas/PaginationMetadataResponse'
required:
- data
- meta
default:
description: Generic error payload
content:
application/json:
schema:
type: string
post:
operationId: opIdApiV4BrandfoldersSectionsByBrandfolderIdPost
summary: Create a section
description: Creates a section in the matching Brandfolder.
tags:
- sections
requestBody:
description: |
Attribute values for the section.
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
attributes:
type: object
properties:
name:
type: string
description: A name.
example: My section
default_asset_type:
type: string
description: >
Set this to the type of asset to put in the section.
IMPORTANT: If you're using the API to add assets to
the
section, we strongly recommend setting this to
`GenericFile`.
enum:
- GenericFile
- Color
- Font
- ExternalMedium
- Person
- Press
- Text
example: GenericFile
position:
type: integer
minimum: 0
description: >
Set this to a non-negative integer that represents
where to
display the section relative to other sections. The
first
position is `0`. The new position defaults to the
next
available position.
example: 0
required:
- name
- default_asset_type
required:
- attributes
required:
- data
responses:
'200':
description: |
The new section.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/Section'
required:
- data
default:
description: Generic error payload
content:
application/json:
schema:
type: string
/sections/{section_id}:
parameters:
- name: section_id
in: path
schema:
type: string
required: true
description: Unique identifier for the resource instance.
example: oqgol8-dslwxs-58b2z3
- in: header
name: Content-Type
required: true
schema:
type: string
enum:
- application/json
example: application/json
- in: header
name: Accept
required: true
schema:
type: string
enum:
- application/json
example: application/json
- $ref: '#/components/parameters/Authorization'
get:
operationId: opIdApiV4SectionsByIdGet
summary: Fetch a section.
description: Fetches the matching section.
tags:
- sections
parameters:
- in: query
name: include
schema:
type: string
description: >
Set it to a comma-separated list (no spaces) of any of the following
record names, to return those records related to the sections.
Related
records are returned in an `included` array in the response.
Allowed values:
- brandfolder
- assets
WARNING: This parameter can slow response times.
example: brandfolder
responses:
'200':
description: |
The matching section.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/Section'
required:
- data
default:
description: Generic error payload
content:
application/json:
schema:
type: string
/sections/{section_id}/assets:
parameters:
- name: section_id
in: path
schema:
type: string
required: true
description: Unique identifier for the resource instance.
example: oqgol8-dslwxs-58b2z3
- in: header
name: Content-Type
required: true
schema:
type: string
enum:
- application/json
example: application/json
- in: header
name: Accept
required: true
schema:
type: string
enum:
- application/json
example: application/json
- $ref: '#/components/parameters/Authorization'
get:
operationId: opIdApiV4SectionsAssetsBySectionIdGet
summary: List assets in a section
description: Lists assets in the matching section.
tags:
- assets
- sections
parameters:
- in: query
name: page
description: >
Set this to a positive, non-zero integer representing the page
number of
the results you want.
schema:
type: integer
format: int32
minimum: 1
- in: query
name: per
description: >
Set this pagination parameter to the maximum number of results you
want
to receive back from your request. More records may exist (as
denoted by
the `meta.total_count` value).
schema:
type: integer
format: int32
minimum: 1
maximum: 3000
default: 100
- in: query
name: search
description: |
Set it to any URL-encoded query to fetch only assets that match your
criteria.
WARNING: This parameter can slow response times.
schema:
type: string
example: extension:png
- in: query
name: fields
description: >
Set it to a comma-separated list (no spaces) of any of the following
attributes of the asset to return as part of the asset's attributes
in
the response.
Allowed values:
- `created_at`
- `updated_at`
- `cdn_url`
- `availability`
WARNING: This parameter can slow response times.
schema:
type: string
example: cdn_url
responses:
'200':
description: |
The matching section assets.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Asset'
meta:
$ref: '#/components/schemas/PaginationMetadataResponse'
required:
- data
- meta
'404':
description: |
This occurs for CDN URLs of assets that are pending approval or
unpublished.
default:
description: Generic error payload
content:
application/json:
schema:
type: string
/brandfolders/{brandfolder_id}/assets:
parameters:
- name: brandfolder_id
in: path
schema:
type: string
required: true
description: Unique identifier for the resource instance.
example: oqgiju-21olts-ce9egi
- in: header
name: Content-Type
required: true
schema:
type: string
enum:
- application/json
example: application/json
- in: header
name: Accept
required: true
schema:
type: string
enum:
- application/json
example: application/json
- $ref: '#/components/parameters/Authorization'
get:
operationId: opIdApiV4BrandfoldersAssetsByBrandfolderIdGet
summary: List assets in a Brandfolder
description: Lists assets in a Brandfolder.
tags:
- assets
- brandfolders
parameters:
- in: query
name: page
description: >
Set this to a positive, non-zero integer representing the page
number of
the results you want.
schema:
type: integer
format: int32
minimum: 1
- in: query
name: per
description: >
Set this pagination parameter to the maximum number of results you
want
to receive back from your request. More records may exist (as
denoted by
the `meta.total_count` value).
schema:
type: integer
format: int32
minimum: 1
maximum: 3000
default: 100
- in: query
name: search
description: |
Set it to any URL-encoded query to fetch only assets that match your
criteria.
WARNING: This parameter can slow response times.
schema:
type: string
example: extension:png
- in: query
name: fields
description: >
Set it to a comma-separated list (no spaces) of any of the following
attributes of the asset to return as part of the asset's attributes
in
the response.
Allowed values:
- `created_at`
- `updated_at`
- `cdn_url`
- `availability`
WARNING: This parameter can slow response times.
schema:
type: string
example: cdn_url
- in: query
name: include
description: |
Set it to a comma-separated list (no spaces) of any of the following
record names to return those records related to the asset you're
fetching. Related records are returned in an `included` array in the
response.
Allowed values:
- `attachments`
- `brandfolder`
- `collections`
- `custom_fields`
- `section`
- `tags`
WARNING: This parameter can slow response times.
schema:
type: string
example: tags
responses:
'200':
description: |
The matching Brandfolder assets.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Asset'
meta:
$ref: '#/components/schemas/PaginationMetadataResponse'
required:
- data
- meta
'404':
description: |
This occurs for CDN URLs of assets that are pending approval or
unpublished.
default:
description: Generic error payload
content:
application/json:
schema:
type: string
post:
operationId: opIdApiV4CollectionsAssetsByBrandfolderIdPost
summary: Create assets in a Brandfolder
description: >
Creates assets in the matching Brandfolder.
Any files you wish to use as an Attachment in Brandfolder must be hosted
at
a publicly available URL (until they have been successfully imported).
If
you need to upload file contents directly to a server, you can use do a
binary file upload to our temporary storage bucket and then use that URL
when creating Assets/Attachments.
> **NOTE:** To create an asset from a binary upload, copy the
`object_url`
value from the [Get an upload
URL](/api/brandfolder/openapi/binary_upload/opidstorageserviceuploadrequestsget)
response into your request body's `attachments.url` property.
tags:
- assets
- brandfolders
requestBody:
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
attributes:
type: array
items:
$ref: '#/components/schemas/AssetAttributesRequest'
required:
- attributes
section_key:
type: string
description: >
ID of the Section in which you want the newly created
Asset(s)
to live.
example: oqgol8-dslwxs-58b2z3
required:
- data
- section_key
responses:
'200':
description: |
The new assets.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Asset'
meta:
$ref: '#/components/schemas/PaginationMetadataResponse'
required:
- data
- meta
default:
description: Generic error payload
content:
application/json:
schema:
type: string
/assets/{asset_id}:
parameters:
- name: asset_id
in: path
schema:
type: string
required: true
description: Unique identifier for the resource instance.
example: oqgkkd-fr5iv4-443db
- in: header
name: Content-Type
required: true
schema:
type: string
enum:
- application/json
example: application/json
- $ref: '#/components/parameters/Authorization'
get:
operationId: opIdApiV4AssetsByIdGet
summary: Fetch an asset
description: Fetches the matching asset.
tags:
- assets
parameters:
- in: query
name: fields
description: >
Set it to a comma-separated list (no spaces) of any of the following
attributes of the asset to return as part of the asset's attributes
in
the response.
Allowed values:
- `created_at`
- `updated_at`
- `cdn_url`
- `availability`
- `availability_start`
- `availability_end`
WARNING: This parameter can slow response times.
schema:
type: string
example: cdn_url
- in: query
name: include
description: |
Set it to a comma-separated list (no spaces) of any of the following
record names to return those records related to the asset you're
fetching. Related records are returned in an `included` array in the
response.
Allowed values:
- `attachments`
- `brandfolder`
- `collections`
- `custom_fields`
- `section`
- `tags`
WARNING: This parameter can slow response times.
schema:
type: string
example: tags
- in: header
name: Accept
required: true
schema:
type: string
enum:
- application/json
example: application/json
responses:
'200':
description: |
The matching asset.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/Asset'
required:
- data
'403':
description: |
This occurs for CDN URLs of assets that are pending approval or
unpublished.
default:
description: Generic error payload
content:
application/json:
schema:
type: string
put:
operationId: opIdApiV4AssetsByIdPut
summary: Update an asset
description: >
Updates the matching asset.
> **Note:** All attributes are optional when updating. Only include the
ones
you want to change.
Any files you wish to use as an Attachment in Brandfolder must be hosted
at
a publicly available URL (until they have been successfully imported).
If
you need to upload file contents directly to a server, you can use do a
binary file upload to our temporary storage bucket and then use that URL
when creating Assets/Attachments.
tags:
- assets
requestBody:
description: |
Attribute updates for an asset.
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
attributes:
$ref: '#/components/schemas/AssetAttributesRequest'
required:
- attributes
required:
- data
responses:
'200':
description: |
The updated asset.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/Asset'
required:
- data
default:
description: Generic error payload
content:
application/json:
schema:
type: string
delete:
operationId: opIdApiV4AssetsByIdDelete
summary: Delete an asset
description: Removes the matching asset.
tags:
- assets
responses:
'200':
description: |
Successful response (always an empty object)
content:
application/json:
schema:
type: object
properties: {}
default:
description: Generic error payload
content:
application/json:
schema:
type: string
/assets/{asset_id}/tags:
parameters:
- name: asset_id
in: path
schema:
type: string
required: true
description: Unique identifier for the resource instance.
example: oqgkkd-fr5iv4-443db
- in: header
name: Content-Type
required: true
schema:
type: string
enum:
- application/json
example: application/json
- in: header
name: Accept
required: true
schema:
type: string
enum:
- application/json
example: application/json
- $ref: '#/components/parameters/Authorization'
get:
operationId: opIdApiV4AssetsTagsByAssetIdGet
summary: List tags for an asset
description: |
Lists tags for the matching asset.
tags:
- assets
- tags
parameters:
- in: query
name: include
description: >
Set it to `asset` to return those asset records related to the tag
you're fetching. Related records are returned in an `included` array
in
the response.
Allowed value: `asset`
WARNING: This parameter can slow response times.
schema:
type: string
example: asset
responses:
'200':
description: |
Tags for the matching asset.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Tag'
meta:
$ref: '#/components/schemas/PaginationMetadataResponse'
required:
- data
- meta
default:
description: Generic error payload
content:
application/json:
schema:
type: string
post:
operationId: opIdApiV4AssetsTagsByAssetIdPost
summary: Create tags for an asset
description: |
Creates tags for the matching asset.
> **Note:** You can add multiple tags to the `attributes` array in the
request body.
tags:
- tags
requestBody:
description: New tag names for the asset.
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
attributes:
type: array
description: A list of tag names for the matching asset.
items:
type: object
properties:
name:
type: string
description: A tag name.
example: product
required:
- attributes
required:
- data
responses:
'200':
description: |
All tags for the matching asset.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Tag'
meta:
$ref: '#/components/schemas/PaginationMetadataResponse'
required:
- data
- meta
default:
description: Generic error payload
content:
application/json:
schema:
type: string
/assets/{asset_id}/custom_field_values:
parameters:
- name: asset_id
in: path
schema:
type: string
required: true
description: Unique identifier for the resource instance.
example: oqgkkd-fr5iv4-443db
- in: header
name: Content-Type
required: true
schema:
type: string
enum:
- application/json
example: application/json
- in: header
name: Accept
required: true
schema:
type: string
enum:
- application/json
example: application/json
- $ref: '#/components/parameters/Authorization'
get:
operationId: opIdApiV4AssetsCustomFieldValuesByAssetIdGet
summary: List custom fields
description: |
Lists custom fields for the matching asset.
parameters:
- in: query
name: include
schema:
type: string
description: >
Set it to `custom_field_key` to return those custom field keys
related
to the asset you're fetching. Related records are returned in an
`included` array in the response.
Allowed value: `custom_field_key`
WARNING: This parameter can slow response times.
tags:
- custom_fields
responses:
'200':
description: |
The custom fields for the asset.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/CustomFieldValue'
meta:
$ref: '#/components/schemas/PaginationMetadataResponse'
required:
- data
- meta
default:
description: Generic error payload
content:
application/json:
schema:
type: string
/custom_field_keys/{custom_field_key_id}/custom_field_values:
parameters:
- name: custom_field_key_id
in: path
schema:
type: string
required: true
description: Unique identifier for the resource instance.
example: oqgkkd-fr5iv4-443db
- in: header
name: Content-Type
required: true
schema:
type: string
enum:
- application/json
example: application/json
- in: header
name: Accept
required: true
schema:
type: string
enum:
- application/json
example: application/json
- $ref: '#/components/parameters/Authorization'
post:
operationId: opIdApiV4CustomFieldKeysCustomFieldValuesByCustomFieldKeyIdPost
summary: Create custom field values for an asset
description: >
Creates custom fields for the matching asset.
In order to use this endpoint, you will need to have the Custom Field
Key ID
for the Custom Field you wish to create. Please see [List Custom Field
Keys
for a
Brandfolder](/api/brandfolder/openapi/custom_fields/opidapiv4brandfolderscustomfieldkeysbybrandfolderidget)
to get a list of the Custom Field Key IDs.
Want to learn more about Custom Fields? Check out out our Knowledge Base
article on Custom
Fields.
tags:
- custom_fields
requestBody:
content:
application/json:
schema:
type: object
properties:
data:
type: array
description: A list of custom field associations.
items:
type: object
properties:
attributes:
type: object
properties:
value:
type: string
description: Custom field key value.
example: red
required:
- value
relationships:
type: object
description: Specifies the object receiving the custom field.
properties:
asset:
type: object
properties:
data:
type: object
properties:
type:
type: string
description: The type of target object.
enum:
- assets
id:
type: string
description: The ID of the asset.
example: k5nj2bf5mc36j3ssm63359h
required:
- type
- id
required:
- data
required:
- asset
required:
- attributes
- relationships
required:
- data
responses:
'200':
description: |
The new custom fields.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
type: object
properties:
id:
type: string
description: Unique identifier for the resource instance.
example: r79p3j4gbcgtv33gbsqrxb
type:
type: string
description: The type of the resource.
enum:
- custom_field_values
attributes:
type: object
properties:
key:
type: string
description: A key name.
example: team
value:
type: string
description: The value for the key.
example: product
required:
- id
- type
- attributes
required:
- data
default:
description: Generic error payload
content:
application/json:
schema:
type: string
/attachments/{attachment_id}:
parameters:
- name: attachment_id
in: path
schema:
type: string
required: true
description: Unique identifier for the resource instance.
example: oqgkkd-fr5iv4-443db
- in: header
name: Content-Type
required: true
schema:
type: string
enum:
- application/json
example: application/json
- $ref: '#/components/parameters/Authorization'
get:
operationId: opIdApiV4AttachmentsByIdGet
summary: Fetch an attachment
description: Gets the matching attachment.
tags:
- attachments
parameters:
- in: header
name: Accept
required: true
schema:
type: string
enum:
- application/json
example: application/json
- in: query
name: fields
description: |
Set it to a comma-separated list (no spaces) of any of the following
attributes of the attachment to return as part of the attachment's
attributes in the response.
Allowed values:
- `metadata`
- `thumbnail_url`
- `view_thumbnail_retina`
- `extension`
- `version_count`
- `tag_names`
- `label_names`
WARNING: This parameter can slow response times.
schema:
type: string
example: metadata
- in: query
name: include
description: >
Set it to a comma-separated list (no spaces) of any of the following
record names to return those records related to the attachment
you're
fetching. Related records are returned in an `included` array in the
response.
Allowed values:
- `asset`
- `section`
- `brandfolder`
- `collections`
- `tags`
- `labels`
WARNING: This parameter can slow response times.
schema:
type: string
example: brandfolder
responses:
'200':
description: |
The matching attachment.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/Attachment'
required:
- data
default:
description: Generic error payload
content:
application/json:
schema:
type: string
put:
operationId: opIdApiV4AttachmentsByIdPut
summary: Update an attachment
description: |
Updates a matching attachment.
tags:
- attachments
requestBody:
description: Updates for the matching attachment.
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
attributes:
type: object
properties:
filename:
type: string
example: brandfolder_logo.png
url:
type: string
example: >
https://example.com/brandfolder_logo.png?expiry=1625260667
required:
- attributes
required:
- data
responses:
'200':
description: |
The updated attachment.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/Attachment'
required:
- data
default:
description: Generic error payload
content:
application/json:
schema:
type: string
delete:
operationId: opIdApiV4AttachmentsByIdDelete
summary: Delete an attachment
description: Removes the matching attachment.
tags:
- attachments
responses:
'200':
description: |
Successful response (always an empty object)
content:
application/json:
schema:
type: object
properties: {}
default:
description: Generic error payload
content:
application/json:
schema:
type: string
/brandfolders/{brandfolder_id}/tags:
parameters:
- name: brandfolder_id
in: path
schema:
type: string
required: true
description: Unique identifier for the resource instance.
example: oqgiju-21olts-ce9egi
- in: header
name: Content-Type
required: true
schema:
type: string
enum:
- application/json
example: application/json
- in: header
name: Accept
required: true
schema:
type: string
enum:
- application/json
example: application/json
- $ref: '#/components/parameters/Authorization'
get:
operationId: opIdApiV4BrandfoldersTagsByBrandfolderIdGet
summary: List tags in a Brandfolder
description: |
Lists tags in the matching Brandfolder.
tags:
- brandfolders
- tags
responses:
'200':
description: |
Tags in the matching Brandfolder.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Tag'
meta:
$ref: '#/components/schemas/PaginationMetadataResponse'
required:
- data
- meta
default:
description: Generic error payload
content:
application/json:
schema:
type: string
/tags/{tag_id}:
parameters:
- name: tag_id
in: path
schema:
type: string
required: true
description: Unique identifier for the resource instance.
example: oqgkkd-fr5iv4-443db
- in: header
name: Content-Type
required: true
schema:
type: string
enum:
- application/json
example: application/json
- in: header
name: Accept
required: true
schema:
type: string
enum:
- application/json
example: application/json
- $ref: '#/components/parameters/Authorization'
put:
operationId: opIdApiV4TagsByIdPut
summary: Update a tag
description: |
Updates the matching tag.
tags:
- tags
requestBody:
description: New tag names for the asset.
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
attributes:
type: object
properties:
name:
type: string
example: product
required:
- name
required:
- attributes
required:
- data
responses:
'200':
description: |
The updated tag.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/Tag'
required:
- data
default:
description: Generic error payload
content:
application/json:
schema:
type: string
/async/tags/assets/{asset_key}:
parameters:
- name: asset_key
in: path
schema:
type: string
required: true
description: Unique identifier for the resource instance.
example: 123456-22mpg8-dfmfi7
- in: header
name: Content-Type
required: true
schema:
type: string
enum:
- application/json
example: application/json
- $ref: '#/components/parameters/Authorization'
delete:
operationId: opIdApiV4AsyncTagsAssetsByAssetKeyDelete
summary: Delete tags
description: |
Removes the matching tag(s) of the matching asset.
Example Request Body:
{ "tags": ["A", "B"], "locale": "en" }
> **Important:** This endpoint is asynchronous
tags:
- tags
requestBody:
description: |
Example: { "tags": ["A", "B"], "locale": "en" }
content:
application/json:
schema:
type: object
properties:
tags:
type: array
items:
type: string
example:
- A
- B
locale:
type: string
example: en
required:
- tags
responses:
'200':
description: |
Successful response (always an empty object)
content:
application/json:
schema:
type: object
properties: {}
default:
description: Generic error payload
content:
application/json:
schema:
type: string
/custom_field_keys/{custom_field_key_id}:
parameters:
- name: custom_field_key_id
in: path
schema:
type: string
required: true
description: Unique identifier for the resource instance.
example: plqlkk-22rw6g-3dqgx0
- in: header
name: Content-Type
required: true
schema:
type: string
enum:
- application/json
example: application/json
- $ref: '#/components/parameters/Authorization'
put:
operationId: opIdApiV4CustomFieldKeysByIdPut
summary: Update a custom field key
description: >
Update the matching custom field key.
> **Warning:** It is NOT recommended to update keys that are currently
in
use. Changing allowed values or whether they are restricted after other
values have already been used can lead to undesirable results.
tags:
- custom_fields
parameters:
- in: header
name: Accept
required: true
schema:
type: string
enum:
- application/json
example: application/json
requestBody:
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
attributes:
type: object
properties:
name:
type: string
description: The key name.
example: color
allowed_values:
type: array
description: >-
The `value` that can be used with this `key` when
creating or updating any Custom Field on an Asset
must be one of these strings. If not included or
empty array `[]`, the `values` are unrestricted.
items:
type: string
example:
- orange
- gray
- green
required:
- attributes
required:
- data
responses:
'200':
description: |
The updated custom field key.
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
id:
type: string
description: Unique identifier for the resource instance.
example: plqlkk-22rw6g-3dqgx0
type:
type: string
description: The type of the resource.
enum:
- custom_field_keys
attributes:
type: object
properties:
name:
type: string
description: The key name.
example: color
allowed_values:
type: array
description: >-
The `value` that can be used with this `key` when
creating or updating any Custom Field on an Asset
must be one of these strings. If not included or
empty array `[]`, the `values` are unrestricted.
items:
type: string
example:
- orange
- gray
- green
position:
type: integer
format: int32
description: >-
Sets the location of the custom field among other
custom fields in the Brandfolder UI.
minimum: 0
example: 0
prioritized:
type: boolean
description: >-
Set to `true` to display the custom field in asset
previews. A Brandfolder can have up to five
prioritized custom fields.
example: false
required:
type: boolean
description: >-
If set to `true`, users uploading an asset must
input the custom field before uploading the asset.
Children of dependent custom fields can also be
marked as required.
example: false
restricted:
type: boolean
description: >-
If set to `true`, the field value is restricted to
a set of allowed values (see `allowed_values`);
otherwise, the field value is unrestricted.
example: true
required:
- id
- type
- attributes
required:
- data
default:
description: Generic error payload
content:
application/json:
schema:
type: string
delete:
operationId: opIdApiV4CustomFieldKeysByIdDelete
summary: Delete a custom field key
description: >
Deletes the matching custom field key.
> **Warning:** Be very careful when using this endpoint as it also
deletes
all associated values for that key.
tags:
- custom_fields
parameters:
- in: header
name: Content-Type
required: true
schema:
type: string
enum:
- application/json
example: application/json
responses:
'200':
description: |
Successful response (always an empty object)
content:
application/json:
schema:
type: object
properties: {}
default:
description: Generic error payload
content:
application/json:
schema:
type: string
/custom_field_values/{custom_field_value_id}:
parameters:
- name: custom_field_value_id
in: path
schema:
type: string
required: true
description: Unique identifier for the resource instance.
example: 123456-22mpg8-dfmfi7
- in: header
name: Content-Type
required: true
schema:
type: string
enum:
- application/json
example: application/json
- $ref: '#/components/parameters/Authorization'
put:
operationId: opIdApiV4CustomFieldValuesByIdPut
summary: Update a custom field
description: |
Update the matching custom field.
tags:
- custom_fields
parameters:
- in: header
name: Accept
required: true
schema:
type: string
enum:
- application/json
example: application/json
requestBody:
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
attributes:
type: object
properties:
value:
type: string
example: Fall
required:
- attributes
required:
- data
responses:
'200':
description: |
The updated custom field.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/CustomFieldValue'
required:
- data
default:
description: Generic error payload
content:
application/json:
schema:
type: string
delete:
operationId: opIdApiV4CustomFieldValuesByIdDelete
summary: Delete a custom field
description: |
Deletes the matching custom field.
tags:
- custom_fields
parameters:
- in: header
name: Content-Type
required: true
schema:
type: string
enum:
- application/json
example: application/json
responses:
'200':
description: |
Successful response (always an empty object)
content:
application/json:
schema:
type: object
properties: {}
default:
description: Generic error payload
content:
application/json:
schema:
type: string
/brandfolders/{brandfolder_id}/labels:
parameters:
- name: brandfolder_id
in: path
schema:
type: string
required: true
description: Unique identifier for the resource instance.
example: oqgiju-21olts-ce9egi
- in: header
name: Content-Type
required: true
schema:
type: string
enum:
- application/json
example: application/json
- in: header
name: Accept
required: true
schema:
type: string
enum:
- application/json
example: application/json
- $ref: '#/components/parameters/Authorization'
get:
operationId: opIdApiV4OrganizationsLabelsByBrandfolderIdGet
summary: List labels
description: Lists the labels in the matching Brandfolder.
tags:
- labels
responses:
'200':
description: |
The labels in the matching Brandfolder.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Label'
meta:
$ref: '#/components/schemas/PaginationMetadataResponse'
required:
- data
- meta
default:
description: Generic error payload
content:
application/json:
schema:
type: string
post:
operationId: opIdApiV4CollectionsLabelsByBrandfolderIdPost
summary: Create a label
description: Creates a label in the matching Brandfolder.
tags:
- labels
requestBody:
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
attributes:
type: object
properties:
name:
type: string
description: Sets a name for the label.
example: onboarding
parent_key:
type: string
description: >
Set this to the ID of the label's parent label, if
any.
If you're creating a root-level label, don't specify
this property.
example: abc123
required:
- name
required:
- attributes
required:
- data
responses:
'200':
description: |
The new label.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/Label'
required:
- data
default:
description: Generic error payload
content:
application/json:
schema:
type: string
/labels/{label_id}:
parameters:
- name: label_id
in: path
schema:
type: string
required: true
description: Unique identifier for the resource instance.
example: 123456-22mpg8-dfmfi7
- in: header
name: Content-Type
required: true
schema:
type: string
enum:
- application/json
example: application/json
- $ref: '#/components/parameters/Authorization'
get:
operationId: opIdApiV4LabelsByIdGet
summary: Fetch a label
description: Fetches the label.
parameters:
- in: header
name: Accept
required: true
schema:
type: string
enum:
- application/json
example: application/json
tags:
- labels
responses:
'200':
description: |
The matching label.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/Label'
required:
- data
default:
description: Generic error payload
content:
application/json:
schema:
type: string
put:
operationId: opIdApiV4UpdateLabelPut
summary: Update a label
description: Updates the name of the matching label.
tags:
- labels
requestBody:
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
attributes:
type: object
properties:
name:
type: string
description: A new name for the label.
example: onboarding
required:
- name
required:
- attributes
required:
- data
responses:
'200':
description: |
The updated label.
content:
application/json:
schema:
type: object
properties:
default_asset_type:
$ref: '#/components/schemas/Label'
default:
description: Generic error payload
content:
application/json:
schema:
type: string
delete:
operationId: opIdApiV4LabelsByIdDelete
summary: Delete a label
description: Deletes the matching label.
tags:
- labels
responses:
'200':
description: |
Successful response (always an empty object)
content:
application/json:
schema:
type: object
properties: {}
default:
description: Generic error payload
content:
application/json:
schema:
type: string
/labels/{label_id}/assets:
parameters:
- name: label_id
in: path
schema:
type: string
required: true
description: Unique identifier for the resource instance.
example: oqgkkd-fr5iv4-443db
- in: header
name: Content-Type
required: true
schema:
type: string
enum:
- application/json
example: application/json
- in: header
name: Accept
required: true
schema:
type: string
enum:
- application/json
example: application/json
- $ref: '#/components/parameters/Authorization'
get:
operationId: opIdApiV4LabelsAssetsByLabelIdGet
summary: List assets in a label
description: Lists assets in a label.
tags:
- assets
- labels
parameters:
- in: query
name: page
description: >
Set this to a positive, non-zero integer representing the page
number of
the results you want.
schema:
type: integer
format: int32
minimum: 1
- in: query
name: per
description: >
Set this pagination parameter to the maximum number of results you
want
to receive back from your request. More records may exist (as
denoted by
the `meta.total_count` value).
schema:
type: integer
format: int32
minimum: 1
maximum: 3000
default: 100
- in: query
name: search
description: |
Set it to any URL-encoded query to fetch only assets that match your
criteria.
WARNING: This parameter can slow response times.
schema:
type: string
example: extension:png
- in: query
name: fields
description: >
Set it to a comma-separated list (no spaces) of any of the following
attributes of the asset to return as part of the asset's attributes
in
the response.
Allowed values:
- `created_at`
- `updated_at`
- `cdn_url`
- `availability`
WARNING: This parameter can slow response times.
schema:
type: string
example: cdn_url
- in: query
name: include
description: |
Set it to a comma-separated list (no spaces) of any of the following
record names to return those records related to the asset you're
fetching. Related records are returned in an `included` array in the
response.
Allowed values:
- `attachments`
- `brandfolder`
- `collections`
- `custom_fields`
- `section`
- `tags`
WARNING: This parameter can slow response times.
schema:
type: string
example: tags
responses:
'200':
description: |
The matching label assets.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Asset'
meta:
$ref: '#/components/schemas/PaginationMetadataResponse'
required:
- data
- meta
'404':
description: |
This occurs for CDN URLs of assets that are pending approval or
unpublished.
default:
description: Generic error payload
content:
application/json:
schema:
type: string
/labels/{label_id}/move:
parameters:
- name: label_id
in: path
schema:
type: string
required: true
description: Unique identifier for the resource instance.
example: oqgkkd-fr5iv4-443db
- in: header
name: Content-Type
required: true
schema:
type: string
enum:
- application/json
example: application/json
- in: header
name: Accept
required: true
schema:
type: string
enum:
- application/json
example: application/json
- $ref: '#/components/parameters/Authorization'
put:
operationId: opIdApiV4MoveLabelPut
summary: Move the label
description: Assigns the label a new parent label.
tags:
- labels
requestBody:
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
attributes:
type: object
properties:
parent_key:
type: string
description: Set this to the ID of the label's new parent label.
example: abc123
required:
- parent_key
required:
- attributes
required:
- data
responses:
'200':
description: |
The updated label.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/Label'
required:
- data
default:
description: Generic error payload
content:
application/json:
schema:
type: string
/brandfolders/{brandfolder_id}/invitations:
parameters:
- name: brandfolder_id
in: path
schema:
type: string
required: true
description: Unique identifier for the resource instance.
example: oqgiju-21olts-ce9egi
- in: header
name: Content-Type
required: true
schema:
type: string
enum:
- application/json
example: application/json
- in: header
name: Accept
required: true
schema:
type: string
enum:
- application/json
example: application/json
- $ref: '#/components/parameters/Authorization'
get:
operationId: opIdApiV4BrandfoldersInvitationsByBrandfolderIdGet
summary: List invitations to a Brandfolder
description: |
Lists invitations to the matching Brandfolder.
tags:
- invitations
parameters:
- in: query
name: fields
description: |
Set it to `created_at` to return it as part of the invitation's
attributes in the response.
Allowed value: `created_at`
WARNING: This parameter can slow response times.
schema:
type: string
example: created_at
- in: query
name: include
description: >
Set it to a comma-separated list (no spaces) of any of the following
record names to return those records related to the invitations
you're
fetching. Related records are returned in an `included` array in the
response.
Allowed values:
- `inviter`
- `inviteable`
WARNING: This parameter can slow response times.
schema:
type: string
example: inviter
responses:
'200':
description: |
Invitations to the matching Brandfolder.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Invitation'
meta:
$ref: '#/components/schemas/PaginationMetadataResponse'
required:
- data
- meta
default:
description: Generic error payload
content:
application/json:
schema:
type: string
post:
operationId: opIdApiV4BrandfoldersInvitationsByBrandfolderIdPost
summary: Create an invitation to a Brandfolder
description: |
Creates an invitation to the matching Brandfolder.
tags:
- invitations
requestBody:
description: An invitation to the Brandfolder.
content:
application/json:
schema:
$ref: '#/components/schemas/InvitationCreationRequest'
responses:
'200':
description: |
The new invitation.
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
attributes:
$ref: '#/components/schemas/Invitation'
meta:
type: object
properties:
auto_accepted:
type: boolean
example: false
required:
- data
- meta
default:
description: Generic error payload
content:
application/json:
schema:
type: string
/organizations/{organization_id}/invitations:
parameters:
- name: organization_id
in: path
schema:
type: string
required: true
description: Unique identifier for the resource instance.
example: oqgkkd-fr5iv4-cocc75
- in: header
name: Content-Type
required: true
schema:
type: string
enum:
- application/json
example: application/json
- in: header
name: Accept
required: true
schema:
type: string
enum:
- application/json
example: application/json
- $ref: '#/components/parameters/Authorization'
get:
operationId: opIdApiV4OrganizationsInvitationsByOrganizationIdGet
summary: List invitations to an organization
description: |
Lists invitations to the matching organization.
tags:
- invitations
parameters:
- in: query
name: fields
description: |
Set it to `created_at` to return it as part of the invitation's
attributes in the response.
Allowed value: `created_at`
WARNING: This parameter can slow response times.
schema:
type: string
example: created_at
- in: query
name: include
description: >
Set it to a comma-separated list (no spaces) of any of the following
record names to return those records related to the invitations
you're
fetching. Related records are returned in an `included` array in the
response.
Allowed values:
- `inviter`
- `inviteable`
WARNING: This parameter can slow response times.
schema:
type: string
example: inviter
responses:
'200':
description: |
Invitations to the matching organization.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Invitation'
meta:
$ref: '#/components/schemas/PaginationMetadataResponse'
required:
- data
- meta
default:
description: Generic error payload
content:
application/json:
schema:
type: string
post:
operationId: opIdApiV4OrganizationsInvitationsByOrganizationIdPost
summary: Create an invitation to an organization
description: |
Creates an invitation to the matching organization.
tags:
- invitations
requestBody:
description: An invitation to the organization.
content:
application/json:
schema:
$ref: '#/components/schemas/InvitationCreationRequest'
responses:
'200':
description: |
The new invitation.
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
attributes:
$ref: '#/components/schemas/Invitation'
meta:
type: object
properties:
auto_accepted:
type: boolean
example: false
required:
- data
- meta
default:
description: Generic error payload
content:
application/json:
schema:
type: string
/collections/{collection_id}/invitations:
parameters:
- name: collection_id
in: path
schema:
type: string
required: true
description: Unique identifier for the resource instance.
example: oqgiju-21olts-ce9egi
- in: header
name: Content-Type
required: true
schema:
type: string
enum:
- application/json
example: application/json
- $ref: '#/components/parameters/Authorization'
get:
operationId: opIdApiV4CollectionsInvitationsByCollectionIdGet
summary: List invitations to a collection
description: |
Lists invitations to the matching collection.
tags:
- invitations
parameters:
- in: query
name: fields
description: |
Set it to `created_at` to return it as part of the invitation's
attributes in the response.
Allowed value: `created_at`
WARNING: This parameter can slow response times.
schema:
type: string
example: created_at
- in: query
name: include
description: >
Set it to a comma-separated list (no spaces) of any of the following
record names to return those records related to the invitations
you're
fetching. Related records are returned in an `included` array in the
response.
Allowed values:
- `inviter`
- `inviteable`
WARNING: This parameter can slow response times.
schema:
type: string
example: inviter
responses:
'200':
description: |
Invitations to the matching collection.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Invitation'
meta:
$ref: '#/components/schemas/PaginationMetadataResponse'
required:
- data
- meta
default:
description: Generic error payload
content:
application/json:
schema:
type: string
post:
operationId: opIdApiV4CollectionsInvitationsByCollectionIdPost
summary: Create an invitation to a collection
description: |
Creates an invitation to the matching collection.
tags:
- invitations
requestBody:
description: An invitation to the collection.
content:
application/json:
schema:
$ref: '#/components/schemas/InvitationCreationRequest'
responses:
'200':
description: |
The new invitation.
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
attributes:
$ref: '#/components/schemas/Invitation'
meta:
type: object
properties:
auto_accepted:
type: boolean
example: false
required:
- data
- meta
default:
description: Generic error payload
content:
application/json:
schema:
type: string
/portals/{portal_id}/invitations:
parameters:
- name: portal_id
in: path
schema:
type: string
required: true
description: Unique identifier for the resource instance.
example: oqgiju-21olts-ce9egi
- in: header
name: Content-Type
required: true
schema:
type: string
enum:
- application/json
example: application/json
- $ref: '#/components/parameters/Authorization'
get:
operationId: opIdApiV4PortalsInvitationsByPortalIdGet
summary: List invitations to a portal
description: >
Lists invitations to the matching portal.
> **Important:** You can get the portal ID in the response from **Fetch
an
organization**.
tags:
- invitations
parameters:
- in: query
name: fields
description: |
Set it to `created_at` to return it as part of the invitation's
attributes in the response.
Allowed value: `created_at`
WARNING: This parameter can slow response times.
schema:
type: string
example: created_at
- in: query
name: include
description: >
Set it to a comma-separated list (no spaces) of any of the following
record names to return those records related to the invitations
you're
fetching. Related records are returned in an `included` array in the
response.
Allowed values:
- `inviter`
- `inviteable`
WARNING: This parameter can slow response times.
schema:
type: string
example: inviter
responses:
'200':
description: |
Invitations to the matching portal.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Invitation'
meta:
$ref: '#/components/schemas/PaginationMetadataResponse'
required:
- data
- meta
default:
description: Generic error payload
content:
application/json:
schema:
type: string
post:
operationId: opIdApiV4PortalsInvitationsByPortalIdPost
summary: Create an invitation to a portal
description: |
Creates an invitation to the matching portal.
tags:
- invitations
requestBody:
description: An invitation to the portal.
content:
application/json:
schema:
$ref: '#/components/schemas/InvitationCreationRequest'
responses:
'200':
description: |
The new invitation.
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
attributes:
$ref: '#/components/schemas/Invitation'
meta:
type: object
properties:
auto_accepted:
type: boolean
example: false
required:
- data
- meta
default:
description: Generic error payload
content:
application/json:
schema:
type: string
/brandguides/{brandguide_id}/invitations:
parameters:
- name: brandguide_id
in: path
schema:
type: string
required: true
description: Unique identifier for the resource instance.
example: oqgiju-21olts-ce9egi
- in: header
name: Content-Type
required: true
schema:
type: string
enum:
- application/json
example: application/json
- $ref: '#/components/parameters/Authorization'
get:
operationId: opIdApiV4BrandguidesInvitationsByBrandguideIdGet
summary: List invitations to a Brandguide
description: >
Lists invitations to the matching Brandguide.
> **Important:** You can get the Brandguide ID in the response from
**Fetch
an organization**.
tags:
- invitations
parameters:
- in: query
name: fields
description: |
Set it to `created_at` to return it as part of the invitation's
attributes in the response.
Allowed value: `created_at`
WARNING: This parameter can slow response times.
schema:
type: string
example: created_at
- in: query
name: include
description: >
Set it to a comma-separated list (no spaces) of any of the following
record names to return those records related to the invitations
you're
fetching. Related records are returned in an `included` array in the
response.
Allowed values:
- `inviter`
- `inviteable`
WARNING: This parameter can slow response times.
schema:
type: string
example: inviter
responses:
'200':
description: |
Invitations to the matching Brandguide.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Invitation'
meta:
$ref: '#/components/schemas/PaginationMetadataResponse'
required:
- data
- meta
default:
description: Generic error payload
content:
application/json:
schema:
type: string
post:
operationId: opIdApiV4BrandguidesInvitationsByBrandguideIdPost
summary: Create an invitation to a Brandguide
description: |
Creates an invitation to the matching Brandguide.
tags:
- invitations
requestBody:
description: An invitation to the Brandguide.
content:
application/json:
schema:
$ref: '#/components/schemas/InvitationCreationRequest'
responses:
'200':
description: |
The new invitation.
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
attributes:
$ref: '#/components/schemas/Invitation'
meta:
type: object
properties:
auto_accepted:
type: boolean
example: false
required:
- data
- meta
default:
description: Generic error payload
content:
application/json:
schema:
type: string
/invitations/{invitation_id}:
parameters:
- name: invitation_id
in: path
schema:
type: string
required: true
description: Unique identifier for the resource instance.
example: a3dlao-hd6so4-7d91d2
- in: header
name: Content-Type
required: true
schema:
type: string
enum:
- application/json
example: application/json
- $ref: '#/components/parameters/Authorization'
get:
operationId: opIdApiV4InvitationsByIdGet
summary: Fetch an invitation
description: |
Gets a matching invitation.
tags:
- invitations
parameters:
- in: header
name: Accept
required: true
schema:
type: string
enum:
- application/json
example: application/json
- in: query
name: fields
description: |
Set it to `created_at` to return it as part of the invitation's
attributes in the response.
Allowed value: `created_at`
WARNING: This parameter can slow response times.
schema:
type: string
example: created_at
- in: query
name: include
description: |
Set it to `inviteable` to include the Brandfolder, Collection, or
Organization that this Invitation is for.
Allowed value: `inviteable`
WARNING: This parameter can slow response times.
schema:
type: string
example: inviteable
responses:
'200':
description: |
The matching invitation.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/Invitation'
required:
- data
default:
description: Generic error payload
content:
application/json:
schema:
type: string
delete:
operationId: opIdApiV4InvitationsByIdDelete
summary: Delete an invitation
description: |
Deletes the matching invitation.
tags:
- invitations
responses:
'200':
description: |
Successful response (always an empty object)
content:
application/json:
schema:
type: object
properties: {}
default:
description: Generic error payload
content:
application/json:
schema:
type: string
/organizations/{organization_id}/user_permissions:
parameters:
- name: organization_id
in: path
schema:
type: string
required: true
description: Unique identifier for the resource instance.
example: oqgkkd-fr5iv4-cocc75
- in: header
name: Content-Type
required: true
schema:
type: string
enum:
- application/json
example: application/json
- in: header
name: Accept
required: true
schema:
type: string
enum:
- application/json
example: application/json
- $ref: '#/components/parameters/Authorization'
get:
operationId: opIdApiV4OrganizationsUserPermissionsByOrganizationIdGet
summary: List user permissions for an organization
description: |
Lists user permissions for the matching organization.
tags:
- user_permissions
parameters:
- in: query
name: page
description: >
Set this to a positive, non-zero integer representing the page
number of
the results you want.
schema:
type: integer
format: int32
minimum: 1
- in: query
name: per
description: >
Set this pagination parameter to the maximum number of results you
want
to receive back from your request.
schema:
type: integer
format: int32
minimum: 1
maximum: 3000
default: 100
responses:
'200':
description: |
User permissions for the matching organization.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/UserPermissionToOrganization'
included:
type: array
description: An array listing the organization and its users.
items:
anyOf:
- $ref: '#/components/schemas/User'
- $ref: '#/components/schemas/Organization'
meta:
$ref: '#/components/schemas/PaginationMetadataResponse'
required:
- data
- meta
default:
description: Generic error payload
content:
application/json:
schema:
type: string
/brandfolders/{brandfolder_id}/user_permissions:
parameters:
- name: brandfolder_id
in: path
schema:
type: string
required: true
description: Unique identifier for the resource instance.
example: oqgiju-21olts-ce9egi
- in: header
name: Content-Type
required: true
schema:
type: string
enum:
- application/json
example: application/json
- in: header
name: Accept
required: true
schema:
type: string
enum:
- application/json
example: application/json
- $ref: '#/components/parameters/Authorization'
get:
operationId: opIdApiV4BrandfoldersUserPermissionsByBrandfolderIdGet
summary: List user permissions for a Brandfolder
description: |
Lists user permissions for the matching Brandfolder.
tags:
- user_permissions
parameters:
- in: query
name: page
description: >
Set this to a positive, non-zero integer representing the page
number of
the results you want.
schema:
type: integer
format: int32
minimum: 1
- in: query
name: per
description: >
Set this pagination parameter to the maximum number of results you
want
to receive back from your request.
schema:
type: integer
format: int32
minimum: 1
maximum: 3000
default: 100
responses:
'200':
description: |
User permissions for the matching Brandfolder.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/UserPermissionToBrandfolder'
included:
type: array
description: An array listing the Brandfolder and its users.
items:
anyOf:
- $ref: '#/components/schemas/User'
- $ref: '#/components/schemas/Brandfolder'
meta:
$ref: '#/components/schemas/PaginationMetadataResponse'
required:
- data
- meta
default:
description: Generic error payload
content:
application/json:
schema:
type: string
/collections/{collection_id}/user_permissions:
parameters:
- name: collection_id
in: path
schema:
type: string
required: true
description: Unique identifier for the resource instance.
example: oqgkkd-fr5iv4-hh142d
- in: header
name: Content-Type
required: true
schema:
type: string
enum:
- application/json
example: application/json
- in: header
name: Accept
required: true
schema:
type: string
enum:
- application/json
example: application/json
- $ref: '#/components/parameters/Authorization'
get:
operationId: opIdApiV4CollectionsUserPermissionsByCollectionIdGet
summary: List user permissions for a collection
description: |
Lists user permissions for the matching collection.
tags:
- user_permissions
parameters:
- in: query
name: page
description: >
Set this to a positive, non-zero integer representing the page
number of
the results you want.
schema:
type: integer
format: int32
minimum: 1
- in: query
name: per
description: >
Set this pagination parameter to the maximum number of results you
want
to receive back from your request.
schema:
type: integer
format: int32
minimum: 1
maximum: 3000
default: 100
responses:
'200':
description: |
User permissions for the matching collection.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/UserPermissionToCollection'
included:
type: array
description: An array listing the collection and its users.
items:
anyOf:
- $ref: '#/components/schemas/User'
- $ref: '#/components/schemas/Collection'
meta:
$ref: '#/components/schemas/PaginationMetadataResponse'
required:
- data
- meta
default:
description: Generic error payload
content:
application/json:
schema:
type: string
/user_permissions/{user_permission_id}:
parameters:
- name: user_permission_id
in: path
schema:
type: string
required: true
description: Unique identifier for the resource instance.
example: p2f0ou-3geb4w-123456
- in: header
name: Content-Type
required: true
schema:
type: string
enum:
- application/json
example: application/json
- $ref: '#/components/parameters/Authorization'
get:
operationId: opIdApiV4UserPermissionsByIdGet
summary: Fetch a user permission
description: |
Returns the matching user permission.
tags:
- user_permissions
parameters:
- in: header
name: Accept
required: true
schema:
type: string
enum:
- application/json
example: application/json
responses:
'200':
description: |
The matching user permission.
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
id:
type: string
description: Unique identifier for the resource instance.
example: p2f0ou-3geb4w-123456
type:
type: string
description: The type of the resource.
enum:
- user_permissions
attributes:
type: object
properties:
permission_level:
type: string
description: >
Access level to the object.
Learn more about the permission levels you can
grant Users in our Knowledge Base article on User Permissions.
enum:
- guest
- collaborator
- admin
- owner
relationships:
type: object
properties:
user:
type: object
properties:
id:
type: string
description: Unique identifier for the resource instance.
example: p0v24p-g7jy9k-123456
type:
type: string
description: The type of the resource.
enum:
- users
permissible:
type: object
properties:
id:
type: string
description: Unique identifier for the resource instance.
example: oqgiju-21olts-ce9egi
type:
type: string
description: The type of the resource.
enum:
- organizations
- brandfolders
- collections
required:
- id
- type
- attributes
- relationships
required:
- data
default:
description: Generic error payload
content:
application/json:
schema:
type: string
delete:
operationId: opIdApiV4UserPermissionsByIdDelete
summary: Delete a user permission
description: |
Deletes the matching user permission, revoking the user's access to that
object.
tags:
- user_permissions
responses:
'200':
description: |
Successful response (always an empty object)
content:
application/json:
schema:
type: object
properties: {}
default:
description: Generic error payload
content:
application/json:
schema:
type: string
/webhooks/send:
parameters:
- in: header
name: Content-Type
required: true
schema:
type: string
enum:
- application/json
example: application/json
- $ref: '#/components/parameters/Authorization'
post:
servers:
- url: https://brandfolder.com/api/v1
operationId: opIdApiV4WebhooksSendPost
summary: Generate a test webhook
description: >
Generates a test Webhook.
> **Important:** This operation uses server
`https://brandfolder.com/api/v1` (notice the version is `v1`).
> **Important:** Ensure that your code is able to receive a Brandfolder
Webhook using this endpoint before creating a production Webhook
subscription.
If you receive a `202` response at this endpoint, then a fake Webhook
notification will POST to your `callback_url`. If you don't receive
anything
at your `callback_url` within a few minutes, it is likely that
`callback_url` is invalid. Please ensure the URL begins with `https://`
and
that it is a public domain (not `localhost`, behind a firewall, or any
other
domain requiring authentication) which can receive HTTP `POST` requests
and
respond with a `2xx` HTTP status code.
tags:
- webhooks
requestBody:
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
attributes:
type: object
properties:
event_type:
type: string
description: Event type.
enum:
- asset.create
- asset.update
- asset.delete
example: asset.create
resource_key:
type: string
description: Brandfolder ID.
example: oqgiju-21olts-ce9egi
resource_type:
type: string
description: >-
The type of resource the event acts on. Currently,
`brandfolder` is the only supported type.
example: brandfolder
enum:
- brandfolder
callback_url:
type: string
description: >
An HTTPS URL where webhook data will be posted.
Please ensure the URL begins with `https://` and
that it is a public domain (not `localhost`, behind
a firewall, or any other domain requiring
authentication) which can receive HTTP `POST`
requests and respond with a `2xx` HTTP status code.
example: https://your_company.com/your_callback_url
asset_key:
type: string
description: Asset ID override
example: oqgkkd-fr5iv4-443db
organization_key:
type: string
description: organization ID override.
example: oqgkkd-fr5iv4-cocc75
required:
- event_type
- resource_key
- resource_type
- callback_url
required:
- attributes
required:
- data
responses:
'202':
description: |
The webhook was successfully created.
content:
application/json:
schema:
type: object
properties:
message:
type: string
default: Added demo webhook to queue
status:
type: string
default: ok
'400':
description: |
Invalid Payload Provided
'403':
description: |
Permission Denied for Provided Resource
'404':
description: |
Provided Resource Does Not Exist
'409':
description: |
Subscription Already Exists
default:
description: Generic error payload
content:
application/json:
schema:
type: string
/webhooks:
servers:
- url: https://brandfolder.com/api/v1
parameters:
- in: header
name: Content-Type
required: true
schema:
type: string
enum:
- application/json
example: application/json
- $ref: '#/components/parameters/Authorization'
get:
operationId: opIdApiV4WebhooksGet
summary: List active webhooks
description: >
List all active webhooks.
> **Important:** This operation uses server
`https://brandfolder.com/api/v1` (notice the version is `v1`).
tags:
- webhooks
responses:
'200':
description: |
The active webhooks.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Webhook'
required:
- data
'400':
description: |
Invalid header provided
default:
description: Generic error payload
content:
application/json:
schema:
type: string
post:
operationId: opIdApiV4WebhooksPost
summary: Create a webhook subscription
description: >
Subscribes to get Webhook notifications for the specified asset event
type
within the specified Brandfolder.
> **Important:** This operation uses server
`https://brandfolder.com/api/v1` (notice the version is `v1`).
tags:
- webhooks
requestBody:
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
attributes:
type: object
properties:
event_type:
type: string
description: >
An event type. Here are the currently supported
event types:
- `asset.create`: A new asset has been created
within the subscribed Brandfolder
- `asset.update`: Asset data has been updated within
the subscribed Brandfolder
- `asset.delete`: An asset has been removed from
within the subscribed Brandfolder
example: asset.create
enum:
- asset.create
- asset.update
- asset.delete
resource_key:
type: string
description: The ID of the resource being acted on.
example: oqgiju-21olts-ce9egi
resource_type:
type: string
description: >-
The type of resource the event acts on. Currently,
`brandfolder` is the only supported type.
example: brandfolder
callback_url:
type: string
description: >
An HTTPS URL where webhook data will be posted.
Please ensure the URL begins with `https://` and
that it is a public domain (not `localhost`, behind
a firewall, or any other domain requiring
authentication) which can receive HTTP `POST`
requests and respond with a `2xx` HTTP status code.
example: https://your_company.com/your_callback_url
required:
- event_type
- resource_key
- resource_type
- callback_url
required:
- attributes
required:
- data
responses:
'200':
description: |
The webhook was successfully created.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/Webhook'
required:
- data
'400':
description: |
Invalid Payload Provided
'403':
description: |
Permission Denied for Provided Resource
'404':
description: |
Provided Resource Does Not Exist
'409':
description: |
Subscription Already Exists
default:
description: Generic error payload
content:
application/json:
schema:
type: string
/webhooks/{webhook_id}:
servers:
- url: https://brandfolder.com/api/v1
parameters:
- name: webhook_id
in: path
schema:
type: string
required: true
description: Unique identifier for the resource instance.
example: oqgkkd-fr5iv4-hh142d
- in: header
name: Content-Type
required: true
schema:
type: string
enum:
- application/json
example: application/json
- $ref: '#/components/parameters/Authorization'
get:
operationId: opIdApiV4WebhooksByIdGet
summary: Fetch an active webhook
description: >
Gets an active matching webhook.
> **Important:** This operation uses server
`https://brandfolder.com/api/v1` (notice the version is `v1`).
tags:
- webhooks
responses:
'200':
description: |
The webhook details.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/Webhook'
required:
- data
'400':
description: |
Invalid Header Provided
'404':
description: |
The Requested Webhook Does Not Exist
default:
description: Generic error payload
content:
application/json:
schema:
type: string
delete:
operationId: opIdApiV4WebhooksByIdDelete
summary: Delete a webhook
description: >
Deletes the matching webhook, so that data is no longer sent by it to
its
associated callback URL.
> **Important:** This operation uses server
`https://brandfolder.com/api/v1` (notice the version is `v1`).
tags:
- webhooks
responses:
'200':
description: |
Successful response (always an empty object)
content:
application/json:
schema:
type: object
properties: {}
'400':
description: |
Invalid Header Provided
'404':
description: >
Could Not Determine This Webhook Exists or the Requester Does Not
Own
the Webhook.
default:
description: Generic error payload
content:
application/json:
schema:
type: string
/upload_requests:
parameters:
- $ref: '#/components/parameters/Authorization'
get:
operationId: opIdStorageserviceUploadRequestsGet
summary: Get an upload URL
description: >
Gets an upload URL.
> **NOTE:** After uploading a file, you can add it as Brandfolder asset
by
copying the `object_url` value from the response into your request
body's
`attachments.url` property. See [Create assets in a
Brandfolder](/api/brandfolder/openapi/assets/opidapiv4collectionsassetsbybrandfolderidpost)
for details.
tags:
- binary_upload
responses:
'200':
description: |
The request URL(s).
content:
application/json:
schema:
type: object
properties:
upload_url:
type: string
description: A signed upload_url that allows a user to PUT a file.
resumable_upload_url:
type: string
description: >
A signed URL that allows a user to resume PUT operations
for a
file.
service:
type: string
description: The storage service type.
object_url:
type: string
description: >
An attachment URL to provide to the Brandfolder create
assets
API call.
default:
description: Generic error payload
content:
application/json:
schema:
type: string
/upload_url:
put:
servers:
- url: upload_url
security: []
operationId: opIdStorageserviceBfUploadRequestBucketPut
summary: Upload a file
description: >
To upload file data to the storage bucket, copy the `upload_url`
provided
from the `upload_request` response body. Create a PUT request with a
path to
the file binary.
> **NOTE:** Non-Resumable Uploads use the PUT method on initial
creation.
> **NOTE:** After uploading the file, you can add it as Brandfolder
asset by
copying the `object_url` value from the [Get an upload
URL](/api/brandfolder/openapi/binary_upload/opidstorageserviceuploadrequestsget)
response into your request body's `attachments.url` property. See
[Create
assets in a
Brandfolder](/api/brandfolder/openapi/assets/opidapiv4collectionsassetsbybrandfolderidpost)
for details.
tags:
- binary_upload
requestBody:
required: true
content:
image/png:
schema:
type: string
format: binary
description: Path to the file you're uploading.
example: '@/path/to/file'
responses:
'200':
description: |
Successful response (always an empty object)
content:
application/json:
schema:
type: object
properties: {}
default:
description: Generic error payload
content:
application/json:
schema:
type: string
x-codeSamples:
- lang: cURL
label: cURL
source: |
curl -X PUT \
--data-binary @/path/to/file \
"upload_url"
- lang: C#
label: C#
source: No example currently available.
- lang: Java
label: Java
source: No example currently available.
- lang: JavaScript
label: JavaScript
source: No example currently available.
- lang: Node.js
label: Node.js
source: No example currently available.
- lang: Python
label: Python
source: No example currently available.
- lang: PHP
label: PHP
source: No example currently available.
- lang: Go
label: Go
source: No example currently available.
/resumable_upload_url:
post:
servers:
- url: resumable_upload_url
security: []
operationId: opIdStorageserviceBfUploadRequestPost
summary: Resumable upload
description: >
Users uploading larger files and/or with poor connectivity can initiate
a
resumable upload session with the `resumable_upload_url` from the
`upload_request` body.
Google provides some great
documentation
on resumable uploads (as the content will be uploaded to Google Cloud
Storage).
> **NOTE:** Resumable Uploads use the POST method on initialization and
the
PUT method after to resume upload.
> **NOTE:** After uploading a file, you can add it as Brandfolder asset
by
copying the `object_url` value from the [Get an upload
URL](/api/brandfolder/openapi/binary_upload/opidstorageserviceuploadrequestsget)
response into your request body's `attachments.url` property. See
[Create
assets in a
Brandfolder](/api/brandfolder/openapi/assets/opidapiv4collectionsassetsbybrandfolderidpost)
for details.
tags:
- binary_upload
parameters:
- in: header
name: x-goog-resumable
required: true
schema:
type: string
enum:
- start
example: start
requestBody:
required: true
content:
image/png:
schema:
type: string
format: binary
description: Path to the file you're uploading.
example: '@/path/to/file'
responses:
'200':
description: |
Successful response.
content:
application/json:
schema:
type: object
properties: {}
'201':
description: |
Upload was interrupted. Resume uploading at this URL.
content:
application/json:
schema:
type: object
properties:
location:
type: string
example: >
https://storageservice.com/bf-upload-request/signed-resumable-upload-url
default:
description: Generic error payload
content:
application/json:
schema:
type: string
x-codeSamples:
- lang: cURL
label: cURL
source: |
curl -v -X POST \
-H 'x-goog-resumable: start' \
-H 'Content-Type: image/png' \
--data-binary @/path/to/file \
"resumable_upload_url"
- lang: C#
label: C#
source: No example currently available.
- lang: Java
label: Java
source: No example currently available.
- lang: JavaScript
label: JavaScript
source: No example currently available.
- lang: Node.js
label: Node.js
source: No example currently available.
- lang: Python
label: Python
source: No example currently available.
- lang: PHP
label: PHP
source: No example currently available.
- lang: Go
label: Go
source: No example currently available.
put:
servers:
- url: resumable_upload_url
security: []
operationId: opIdStorageserviceBfUploadRequestPut
summary: Resume upload
description: >
Resumes uploading a file to the same location.
> **NOTE:** After uploading the file, you can add it as Brandfolder
asset by
copying the `object_url` value from the [Get an upload
URL](/api/brandfolder/openapi/binary_upload/opidstorageserviceuploadrequestsget)
response into your request body's `attachments.url` property. See
[Create
assets in a
Brandfolder](/api/brandfolder/openapi/assets/opidapiv4collectionsassetsbybrandfolderidpost)
for details.
tags:
- binary_upload
requestBody:
required: true
content:
image/png:
schema:
type: string
format: binary
description: Path to the file you're uploading.
example: '@/path/to/your-file'
responses:
'200':
description: |
Successful response.
content:
application/json:
schema:
type: object
properties: {}
'201':
description: |
Upload was interrupted. Resume uploading at this URL.
content:
application/json:
schema:
type: object
properties:
location:
type: string
example: >
https://storageservice.com/bf-upload-request/signed-resumable-upload-url
default:
description: Generic error payload
content:
application/json:
schema:
type: string
x-codeSamples:
- lang: cURL
label: cURL
source: |
curl -X PUT \
-H 'Content-Type: image/png' \
--data-binary @/path/to/file \
"resumable_upload_url"
- lang: C#
label: C#
source: No example currently available.
- lang: Java
label: Java
source: No example currently available.
- lang: JavaScript
label: JavaScript
source: No example currently available.
- lang: Node.js
label: Node.js
source: No example currently available.
- lang: Python
label: Python
source: No example currently available.
- lang: PHP
label: PHP
source: No example currently available.
- lang: Go
label: Go
source: No example currently available.
components:
securitySchemes:
APIToken:
scheme: bearer
type: http
description: API Token.
parameters:
Authorization:
in: header
name: Authorization
required: true
schema:
type: string
description: Bearer token for authentication
schemas:
BrandfolderAttributes:
title: Brandfolder attributes
type: object
properties:
name:
type: string
description: The name of the brandfolder.
example: Brandfolder
privacy:
type: string
description: The privacy setting of the brandfolder.
example: private
slug:
type: string
description: The URL-friendly slug of the brandfolder.
example: brandfolder
tagline:
type: string
description: The tagline of the brandfolder.
example: You expected this - Brandfolder's Brandfolder!
default: ''
required:
- name
- privacy
- slug
- tagline
Brandfolder:
title: Brandfolder
type: object
properties:
id:
type: string
description: Unique identifier for the resource instance.
example: oqgiju-21olts-ce9egi
type:
type: string
description: The type of the resource.
enum:
- brandfolders
attributes:
$ref: '#/components/schemas/BrandfolderAttributes'
required:
- id
- type
- attributes
PaginationMetadataResponse:
title: Pagination metadata
description: Page context information.
type: object
properties:
current_page:
type: integer
format: int32
example: 1
minimum: 1
default: 1
next_page:
type: object
nullable: true
example: null
default: null
prev_page:
type: object
nullable: true
example: null
default: null
total_pages:
example: 1
minimum: 1
default: 1
total_count:
example: 1
minimum: 0
default: 0
required:
- current_page
- next_page
- prev_page
- total_pages
- total_count
CollectionAttributes:
title: Collection attributes
type: object
properties:
name:
type: string
description: The name of the collection.
example: My collection
tagline:
type: string
description: The tagline of the collection.
example: My collection tag line
slug:
type: string
description: The URL-friendly slug of the collection.
example: my-collection
public:
type: boolean
description: >-
Set to `true` for hassle-free sharing, allowing search engines to
index your brand assets. Otherwise, set to `false` to share only
with the users you specify.
example: false
default: false
stealth:
type: boolean
description: >-
Set to `true` to remove the collection from appearing in web
searches.
example: false
default: false
is_workspace:
type: boolean
description: Set to `true` if the collection is a Brandfolder workspace.
example: false
default: false
Collection:
title: Collection
type: object
properties:
id:
type: string
description: Unique identifier for the resource instance.
example: oqgkkd-fr5iv4-hh142d
type:
type: string
description: The type of the resource.
enum:
- collections
attributes:
$ref: '#/components/schemas/CollectionAttributes'
required:
- id
- type
- attributes
CustomFieldKeyAttributes:
title: Custom field key attributes
type: object
properties:
name:
type: string
description: The key name.
example: color
allowed_values:
type: array
description: >-
The `value` that can be used with this `key` when creating or
updating any Custom Field on an Asset must be one of these strings.
If not included or empty array `[]`, the `values` are unrestricted.
items:
type: string
example:
- red
- white
- blue
position:
type: integer
format: int32
description: >-
Sets the location of the custom field among other custom fields in
the Brandfolder UI.
minimum: 0
example: 0
prioritized:
type: boolean
description: >-
Set to `true` to display the custom field in asset previews. A
Brandfolder can have up to five prioritized custom fields.
example: false
required:
type: boolean
description: >-
If set to `true`, users uploading an asset must input the custom
field before uploading the asset. Children of dependent custom
fields can also be marked as required.
example: false
restricted:
type: boolean
description: >-
If set to `true`, the field value is restricted to a set of allowed
values (see `allowed_values`); otherwise, the field value is
unrestricted.
example: true
required:
- name
CustomFieldKey:
title: Custom field key
type: object
properties:
id:
type: string
description: Unique identifier for the resource instance.
example: plqlkk-22rw6g-3dqgx0
type:
type: string
description: The type of the resource.
enum:
- custom_field_keys
attributes:
$ref: '#/components/schemas/CustomFieldKeyAttributes'
required:
- id
- type
- attributes
OrganizationAttributes:
title: Organization attributes
type: object
properties:
name:
type: string
description: The name of the brandfolder.
example: Brandfolder's Organization
tagline:
type: string
description: The tagline of the brandfolder.
example: An example tagline for the Organization
slug:
type: string
description: The URL-friendly slug of the brandfolder.
example: brandfolder-organization
Organization:
title: Organization
type: object
properties:
id:
type: string
description: Unique identifier for the resource instance.
example: oqgkkd-fr5iv4-cocc75
type:
type: string
description: The type of the resource.
enum:
- organizations
attributes:
$ref: '#/components/schemas/OrganizationAttributes'
required:
- id
- type
- attributes
AssetAttributes:
title: Asset attributes
type: object
properties:
name:
type: string
description: The name of the asset.
example: Brandfolder Logo
description:
type: string
description: The description of the asset.
example: Brandfolder's logo in print ready format
thumbnail_url:
type: string
description: The online location of the asset.
example: https://example.com/example.jpg?Expires=1624742369
approved:
type: boolean
description: If `true`, this asset is approved; otherwise, it's not.
example: true
Asset:
title: Asset
type: object
properties:
id:
type: string
description: Unique identifier for the resource instance.
example: oqgkkd-fr5iv4-443db
type:
type: string
description: The type of the resource.
enum:
- generic_files
attributes:
$ref: '#/components/schemas/AssetAttributes'
required:
- id
- type
- attributes
AssetAttributesRequest:
title: Asset attributes request body
type: object
properties:
name:
type: string
description: The name of the asset.
example: Brandfolder Logo
description:
type: string
description: The description of the asset.
example: Brandfolder's logo in print ready format
thumbnail_url:
type: string
description: The online location of the asset.
example: https://example.com/example.jpg?Expires=1624742369
approved:
type: boolean
description: If `true`, this asset is approved; otherwise, it's not.
example: true
availability_start:
type: string
format: date-time
description: >
This represents the publish/availability date in Brandfolder, the
label `draft` will show.
example: '2024-02-23T18:22:49.771Z'
availability_end:
type: string
format: date-time
description: >
This represents the expiration date in brandfolder, the label
`expired` will show.
example: '2025-02-23T18:22:49.771Z'
attachments:
description: >
An array of Attachment objects to add to the Asset (these do not
overwrite exisiting Attachments).
type: array
items:
type: object
properties:
url:
type: string
description: >
A fully-formed URL of the file to upload (required for each
new Attachment).
example: https://example.com/new-attachment.jpg
filename:
type: string
description: A complete file name, with extension.
example: new-attachment.jpg
required:
- url
required:
- name
TagAttributes:
title: Tag attributes
type: object
properties:
name:
type: string
description: >
A keyword associated with exactly one asset.
For example, if you have several assets that represent products you
sell, you might create a "product" tag for each one. If you modify
or delete the "product" tag for any particular Asset, it doesn't
affect other tags with the same value on other assets.
example: product
auto_generated:
type: boolean
description: >-
If `true`, this tag was generated automatically by our smart
analysis of file attachments; otherwise, a user created it.
example: true
source:
type: string
nullable: true
description: The tag author.
example: google_vision
default: null
required:
- name
Tag:
title: Tag
type: object
properties:
id:
type: string
description: Unique identifier for the resource instance.
example: a3dlao-hd6so4-7d91d2
type:
type: string
description: The type of the resource.
enum:
- tags
attributes:
$ref: '#/components/schemas/TagAttributes'
required:
- id
- type
- attributes
SectionAttributes:
title: Section attributes
type: object
properties:
name:
type: string
description: The name of the section.
example: My section
default_asset_type:
type: string
description: |
The type of asset the section contains.
enum:
- GenericFile
- Color
- Font
- ExternalMedium
- Person
- Press
- Text
example: GenericFile
position:
type: integer
minimum: 0
description: >
A non-negative integer that represents where the section displays
relative to other sections. The first position is `0`.
example: 0
Section:
title: Section
type: object
properties:
id:
type: string
description: Unique identifier for the resource instance.
example: oqgkkd-fr5iv4-hh142d
type:
type: string
description: The type of the resource.
enum:
- sections
attributes:
$ref: '#/components/schemas/SectionAttributes'
required:
- id
- type
- attributes
CustomFieldValueAttributes:
title: Custom field value attributes
type: object
properties:
key:
type: string
description: A key name.
example: Campaign
value:
type: string
description: The value for the key.
example: Fall
CustomFieldValue:
title: Custom field value
type: object
properties:
id:
type: string
description: Unique identifier for the resource instance.
example: r79p3j4gbcgtv33gbsqrxb
type:
type: string
description: The type of the resource.
enum:
- custom_field_values
attributes:
$ref: '#/components/schemas/CustomFieldValueAttributes'
required:
- id
- type
- attributes
AttachmentAttributes:
title: Attachment attributes
type: object
properties:
mimetype:
type: string
description: The MIME type of the file.
example: image/png
extension:
type: string
description: The file suffix.
example: png
filename:
type: string
description: The complete file name, including its suffix (if any).
example: brandfolder_logo.png
size:
type: integer
format: int32
description: The file size in bytes.
minimum: 0
example: 123456
width:
type: integer
format: int32
description: The image width in pixels.
minimum: 0
example: 1920
height:
type: integer
format: int32
description: The image height in pixels.
minimum: 0
example: 1080
url:
type: string
description: The file URL.
example: https://some_domain.com/brandfolder_logo.png?expiry=1625260667
position:
type: integer
format: int32
description: The attachment ranking position in the Brandfolder UI.
minimum: 0
example: 0
thumbnail_url:
type: string
description: The URL of the the attachment's thumbnail image.
example: https://some_domain.com/some_thumbnail.png
required:
- filename
- mimetype
- url
Attachment:
title: Attachment
type: object
properties:
id:
type: string
description: Unique identifier for the resource instance.
example: oqgkkd-fr3j84-33j7db
type:
type: string
description: The type of the resource.
enum:
- attachments
attributes:
$ref: '#/components/schemas/AttachmentAttributes'
required:
- id
- type
- attributes
LabelAttributes:
title: Label attributes
type: object
properties:
name:
type: string
description: The name of the label.
example: onboarding
path:
type: array
items:
schema:
type: string
example:
- oqgkkd-fr5iv4-443db
- abc123
description: Hierarchy of label IDs, starting with this label's ID.
position:
type: integer
format: int32
minimum: 0
description: >-
Label location represented by a positive integer; `0` is the first
position.
example: 0
depth:
type: integer
description: >
The depth of the label hierarchy. A root level label's depth is `1`,
a label with one parent has depth of `2`, and so on.
example: 2
Label:
title: Label
type: object
properties:
id:
type: string
description: Unique identifier for the resource instance.
example: oqgkkd-fr5iv4-443db
type:
type: string
description: The type of the resource.
enum:
- labels
attributes:
$ref: '#/components/schemas/LabelAttributes'
required:
- id
- type
- attributes
InvitationAttributes:
title: Invitation attributes
type: object
properties:
email:
type: string
description: Email address of the recipient.
example: test@example.com
permission_level:
type: string
description: Access to grant the recipient.
example: guest
personal_message:
type: string
description: A message for the recipient.
example: Welcome to my Brandfolder!
invitation_url:
type: string
description: The invitation's URL.
example: https://brandfolder.com/invitations/abc123
required:
- email
Invitation:
title: Invitation
type: object
properties:
id:
type: string
description: Unique identifier for the resource instance.
example: a3dlao-hd6so4-7d91d2
type:
type: string
description: The type of the resource.
enum:
- invitations
attributes:
$ref: '#/components/schemas/InvitationAttributes'
required:
- id
- type
- attributes
InvitationCreationRequest:
title: Invitation creation request
type: object
properties:
data:
type: object
properties:
attributes:
type: object
properties:
email:
type: string
description: Email address of invitee.
example: test@example.com
permission_level:
type: string
description: >
Access to grant invitee.
> **Note:** `owner` is only valid when inviting someone to
an Organization.
Learn more about the permission levels you can grant Users
in our Knowledge Base article on User Permissions.
enum:
- guest
- collaborator
- admin
- owner
example: guest
personal_message:
type: string
description: A message for invitee.
example: Welcome to my Brandfolder!
prevent_email:
type: boolean
description: >-
Set this to `true` to skip sending an invitation email to
the invitee.
default: false
required:
- email
- permission_level
required:
- attributes
required:
- data
UserPermissionToOrganization:
title: User permission to an organization
type: object
properties:
id:
type: string
description: Unique identifier for the resource instance.
example: p2f0ou-3geb4w-123456
type:
type: string
description: The type of the resource.
enum:
- user_permissions
attributes:
type: object
properties:
permission_level:
type: string
description: >
Access level to the object.
Learn more about the permission levels you can grant Users in
our Knowledge Base article on User Permissions.
enum:
- guest
- collaborator
- admin
- owner
relationships:
type: object
properties:
user:
type: object
properties:
id:
type: string
description: Unique identifier for the resource instance.
example: p0v24p-g7jy9k-123456
type:
type: string
description: The type of the resource.
enum:
- users
permissible:
type: object
properties:
id:
type: string
description: Unique identifier for the resource instance.
example: obte6d-45b4mo-123456
type:
type: string
description: The type of the resource.
enum:
- organizations
required:
- id
- type
- attributes
- relationships
UserAttributes:
title: User attributes
type: object
properties:
email:
type: string
description: The user's email address.
example: jane.doe@smartsheet.com
first_name:
type: string
description: The user's first name.
example: Jane
last_name:
type: string
description: The user's last name.
example: Doe
required:
- email
- first_name
- last_name
User:
title: User
type: object
properties:
id:
type: string
description: Unique identifier for the resource instance.
example: p0v24p-g7jy9k-123456
type:
type: string
description: The type of the resource.
enum:
- users
attributes:
$ref: '#/components/schemas/UserAttributes'
required:
- id
- type
- attributes
UserPermissionToBrandfolder:
title: User permission to a Brandfolder
type: object
properties:
id:
type: string
description: Unique identifier for the resource instance.
example: p2f0ou-3geb4w-123456
type:
type: string
description: The type of the resource.
enum:
- user_permissions
attributes:
type: object
properties:
permission_level:
type: string
description: >
Access level to the object.
Learn more about the permission levels you can grant Users in
our Knowledge Base article on User Permissions.
enum:
- guest
- collaborator
- admin
- owner
relationships:
type: object
properties:
user:
type: object
properties:
id:
type: string
description: Unique identifier for the resource instance.
example: p0v24p-g7jy9k-123456
type:
type: string
description: The type of the resource.
enum:
- users
permissible:
type: object
properties:
id:
type: string
description: Unique identifier for the resource instance.
example: oqgiju-21olts-ce9egi
type:
type: string
description: The type of the resource.
enum:
- brandfolders
required:
- id
- type
- attributes
- relationships
UserPermissionToCollection:
title: User permission to a collection
type: object
properties:
id:
type: string
description: Unique identifier for the resource instance.
example: p2f0ou-3geb4w-123456
type:
type: string
description: The type of the resource.
enum:
- user_permissions
attributes:
type: object
properties:
permission_level:
type: string
description: >
Access level to the object.
Learn more about the permission levels you can grant Users in
our Knowledge Base article on User Permissions.
enum:
- guest
- collaborator
- admin
- owner
relationships:
type: object
properties:
user:
type: object
properties:
id:
type: string
description: Unique identifier for the resource instance.
example: p0v24p-g7jy9k-123456
type:
type: string
description: The type of the resource.
enum:
- users
permissible:
type: object
properties:
id:
type: string
description: Unique identifier for the resource instance.
example: oqgkkd-fr5iv4-hh142d
type:
type: string
description: The type of the resource.
enum:
- collections
required:
- id
- type
- attributes
- relationships
WebhookAttributes:
type: object
title: Webhook subscription attributes
properties:
event_type:
type: string
description: >
An event type. Here are the currently supported event types:
- `asset.create`: A new asset has been created within the subscribed
Brandfolder
- `asset.update`: Asset data has been updated within the subscribed
Brandfolder
- `asset.delete`: An asset has been removed from within the
subscribed Brandfolder
example: asset.create
enum:
- asset.create
- asset.update
- asset.delete
resource_key:
type: string
description: brandfolder_id
example: oqgiju-21olts-ce9egi
resource_type:
type: string
example: brandfolder
callback_url:
type: string
example: https://your_company.com/your_callback_url
required:
- event_type
- resource_key
- resource_type
- callback_url
Webhook:
title: Webhook
type: object
properties:
id:
type: string
description: Unique identifier for the resource instance.
example: oqgkkd-fr5iv4-hh142d
attributes:
$ref: '#/components/schemas/WebhookAttributes'
required:
- id
- attributes
security:
- APIToken: []