Skip to content

Rename, reorder or delete vendor files

Open .md

POST/v1/api/store/{team_slug}/vendor/{hash_id}/media/{media_reference}

v1Operation ID v1_public_vendor_media_sync

Changes several of the vendor's files in one request and returns all its files. The last path segment must be the word sync.

Each item names a file and an action: update sets its name and position, delete removes it. Items run in order, all or nothing.

Permission

Any member of the team.

Path parameters

  • team_slugstringrequired

    Your team slug, shown as Team ID next to your API key in Profile.

    • Example your-team
  • hash_idstringrequired

    The vendor's id (id from List vendors). A hash id from an earlier answer; unique keys and document numbers (such as PO0042) don't work here.

    • Example EDhVUaC6jbLbed
  • media_referencestringrequired

    Always the word sync. The route only matches sync: any other value answers 405 (an HTML page unless you send Accept: application/json).

    • One of: "sync"
    • Example sync

Request body

application/json, required.

  • dataarray of objectsrequired
    • At least 1 item
    Fields of each item (4)
    • actionstringrequired
      • One of: "update", "delete"
    • idstringrequired

      The file id.

    • namestring

      update: the new display name.

    • positioninteger

      update: where the file sorts, a whole number from 0.

      • Minimum 0

Response

200Successful response.

  • dataarray of objectsrequired

    All the vendor's files after the changes.

    Fields of each item (18)
    • collectionstringrequired

      Customer files: tax_exemption, internal_file or external_file. Vendor files: default, mockup or production_file.

    • created_atstring (date-time)required
    • file_namestringrequired
    • idstringrequired
    • mime_typestring | nullrequired
    • namestring | nullrequired

      The display name.

    • sizeintegerrequired

      Bytes.

    • custom_propertiesobject | array
    • Customer files only.

    • dimensionsobject | null

      Pixel size of an image, read from its header; null for other files and for images uploaded before the size was recorded.

      Child fields (2)
    • is_imageboolean
    • positioninteger | null

      Where the file sorts.

    • previewobject | null

      Preview image links small, medium and large (250, 800 and 1200 px), or null when there is no preview.

    • ready: the preview links work. processing: an image over 10 MB whose stored preview a worker is still making (seconds); read the file again, or in the web app wait for media.preview_state_changed on the team channel. too_large: an image over 120 megapixels; it never gets a preview. failed: the worker gave up. none: not an image.

      • One of: "ready", "processing", "too_large", "failed", "none"
    • show_in_pdfboolean | null
    • source_media_idstring | null
    • urlstring | null

      Where to download the file.

    • view_urlstring | null

      A signed link to view the file. It expires: read it fresh, and don't store it.

  • statusintegerrequired
  • successbooleanrequired

Errors

  • 401The API key is missing or wrong (unauthenticated).

  • 403You are not allowed to do this. api_access_not_in_plan: your team's plan doesn't include API access (Pro and above, with an active subscription or trial), so every request answers this until the team upgrades. When your role lacks the permission the operation needs, the body is only {"message": "Insufficient Permission"}. Other refusals use the error envelope, with unauthorized or user_is_not_authorized.

  • 404Not found. page_not_found: the team slug is unknown, you are not a member of the team, or an id in the path is not one of this team's. code: null, with a message that starts "No query results for": there is no record with that id.

    When
    An id is not a file of this vendor. Nothing is changed. error.code is null and error.message names the record type.
    Fix
    List the vendor's files first.
  • 405

    When
    The last path segment is not sync.
    Fix
    End the path with /media/sync.
  • 422The request was refused and changed nothing. validation_failed lists what to fix in error.fields; other codes name a business rule, explained in error.message. A few checks answer with only {"message": "..."}. An operation that calls another service (a payment provider, a carrier, an accounting app) can answer connect_timeout ("Please retry again") when that service does not answer in time: the change may or may not have happened there, so read the record back before you retry.

    When
    data is empty, or an item has no id or an action other than update and delete. error.code is validation_failed.
    Fix
    Fix each field named in error.fields; its keys are field paths such as contact.0.phone.