Brandfolder · OpenAPI Overlay 1.0.0

API Evangelist enhancements for the Brandfolder API

7 actions 7 updates update extends openapi/brandfolder-openapi-original.yml
Generated by API Evangelist Written by API Evangelist tooling for Brandfolder's API. It is a proposal applied on top of the contract, not a document Brandfolder publishes.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-apievangelist-enrichedx-apievangelist-repocontactx-parent-companyx-operation-countx-path-countx-agent-notesx-artifacts

Targets 5

$.info
$.tags[?(@.name=='binary_upload')]
$.tags[?(@.name=='webhooks')]
$.components.securitySchemes.APIToken
$.paths./brandfolders/{brandfolder_id}/assets.get

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: API Evangelist enhancements for the Brandfolder API
  version: 1.0.0
extends: openapi/brandfolder-openapi-original.yml
x-generated: '2026-08-13'
x-method: generated
x-source: >
  Enhancements derived from the provider's own published documentation
  (developers.smartsheet.com/api/brandfolder) and from live probes recorded in
  this repo. The harvested spec is never mutated; everything here is additive.
actions:
  - target: $.info
    update:
      x-apievangelist-enriched: '2026-08-13'
      x-apievangelist-repo: https://github.com/api-evangelist/brandfolder
      contact:
        name: Brandfolder Developer Documentation
        url: https://developers.smartsheet.com/api/brandfolder
      x-parent-company: Smartsheet (acquired Brandfolder, August 2020)
      x-operation-count: 73
      x-path-count: 45

  - target: $.info
    update:
      x-agent-notes:
        idempotency: >
          Not supported. No Idempotency-Key parameter exists on any of the 30
          write operations and none is documented. Retrying a POST creates a
          duplicate resource.
        errors: >
          Not RFC 9457. The `default` response schema is `type: string` on 72 of
          73 operations. Branch on HTTP status, not on the error body.
          403 (not 404) is returned for deleted resources.
        rate_limits: >
          None published. 429 is documented on the error-codes page but declares
          no threshold, and the API returns no RateLimit-*/Retry-After headers.
        pagination: >
          page/per with meta.total_count. Default per=100, maximum per=3000.
          No cursor and no next-page link.
        version_split: >
          The three webhook operations run on https://brandfolder.com/api/v1
          while everything else is v4. Path-level servers[] overrides carry this.

  - target: $.info
    update:
      x-artifacts:
        conventions: conventions/brandfolder-conventions.yml
        errors: errors/brandfolder-problem-types.yml
        authentication: authentication/brandfolder-authentication.yml
        data_model: data-model/brandfolder-data-model.yml
        lifecycle: lifecycle/brandfolder-lifecycle.yml
        rate_limits: rate-limits/brandfolder-rate-limits.yml
        webhooks: asyncapi/brandfolder-webhooks.yml
        packages: packages/brandfolder-packages.yml
        mcp: mcp/brandfolder-mcp.yml
        skills: skills/_index.yml

  - target: $.tags[?(@.name=='binary_upload')]
    update:
      x-flow-order:
        - opIdStorageserviceUploadRequestsGet
        - opIdStorageserviceBfUploadRequestBucketPut
        - create asset/attachment referencing the returned URL
      x-note: >
        Files must be reachable at a public URL before they can be imported as
        an Attachment. The upload_requests/upload_url pair provides Brandfolder's
        temporary storage bucket for that purpose.

  - target: $.tags[?(@.name=='webhooks')]
    update:
      x-server-override: https://brandfolder.com/api/v1
      x-event-types:
        - asset.create
        - asset.update
        - asset.delete
      x-subscription-scope: brandfolder
      x-signing: >
        None published. Brandfolder documents no webhook payload signature or
        shared secret, so a receiver cannot verify delivery origin.
      x-test-endpoint: opIdApiV4WebhooksSendPost

  - target: $.components.securitySchemes.APIToken
    update:
      x-key-source: https://brandfolder.com/profile#integrations
      x-scopes: none
      x-authorization-model: >
        The key inherits the issuing user's permissions verbatim. Least privilege
        is achieved by creating a restricted user, not by restricting the token.

  - target: $.paths./brandfolders/{brandfolder_id}/assets.get
    update:
      x-common-query-parameters:
        fields: comma-separated non-default attributes, e.g. cdn_url,updated_at
        include: comma-separated related types, e.g. brandfolder,section,attachments
        search: Brandfolder UI search syntax, URL-encoded, e.g. extension:png
        sort_by: name | score | position | updated_at | created_at
        order: ASC | DESC (must accompany sort_by)
        page: 1-based
        per: default 100, maximum 3000