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. ![Upload Request Flow](../images/bf-upload-request-interactions.png) - 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: []