Phraseanet Records API

Individual media records (assets) within a databox.

Documentation

Specifications

Other Resources

OpenAPI Specification

phraseanet-records-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Phraseanet API (v1) Account Records API
  description: Phraseanet is an open-source (GPL-v3) Digital Asset Management (DAM) platform by Alchemy. This document models the documented Phraseanet REST API v1, which is secured with OAuth2 and covers records, databoxes and collections, metadata, search, stories, baskets, and feeds. Phraseanet is self-hosted, so the API is served from each organization's own instance - there is no single public shared endpoint. Replace the server host with your Phraseanet instance. All responses are wrapped in an object with `meta` and `response` fields and are JSON by default. A newer API v3 is published on SwaggerHub (alchemy-fr/phraseanet.api.v3). Endpoints here are grounded in the public v1 route documentation; request and response bodies are honestly modeled and should be confirmed against your Phraseanet version.
  version: 1.5.0
  contact:
    name: Alchemy - Phraseanet
    url: https://www.phraseanet.com/
  license:
    name: GPL-3.0
    url: https://github.com/alchemy-fr/Phraseanet/blob/4.1/LICENSE
servers:
- url: https://{host}/api/v1
  description: Phraseanet instance (self-hosted)
  variables:
    host:
      default: your-phraseanet-instance
      description: Hostname of your Phraseanet installation.
security:
- oauth2: []
- oauthTokenParam: []
tags:
- name: Records
  description: Individual media records (assets) within a databox.
paths:
  /records/add:
    post:
      operationId: addRecord
      tags:
      - Records
      summary: Add a record
      description: Uploads a new media file into a collection, creating a record (or placing it in quarantine when validation is required).
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                base_id:
                  type: integer
                  description: Destination collection base_id.
                file:
                  type: string
                  format: binary
                  description: The media file to upload.
      responses:
        '200':
          description: The created record or quarantine item.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Envelope'
  /records/{databox_id}/{record_id}:
    get:
      operationId: getRecord
      tags:
      - Records
      summary: Get a record
      description: Returns a single record identified by its databox and record id.
      parameters:
      - $ref: '#/components/parameters/DataboxId'
      - $ref: '#/components/parameters/RecordId'
      responses:
        '200':
          description: The record.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Envelope'
        '404':
          $ref: '#/components/responses/NotFound'
  /records/{databox_id}/{record_id}/embed:
    get:
      operationId: getRecordEmbed
      tags:
      - Records
      summary: Get record sub-definitions
      description: Returns the embedded sub-definitions (thumbnail, preview, document, and other resolutions) generated for a record.
      parameters:
      - $ref: '#/components/parameters/DataboxId'
      - $ref: '#/components/parameters/RecordId'
      responses:
        '200':
          description: The record sub-definitions.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Envelope'
  /records/{databox_id}/{record_id}/related:
    get:
      operationId: getRecordRelated
      tags:
      - Records
      summary: Get related records
      description: Returns baskets and stories that reference this record.
      parameters:
      - $ref: '#/components/parameters/DataboxId'
      - $ref: '#/components/parameters/RecordId'
      responses:
        '200':
          description: Related baskets and stories.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Envelope'
  /records/{databox_id}/{record_id}/setcollection:
    post:
      operationId: setRecordCollection
      tags:
      - Records
      summary: Move a record to another collection
      description: Moves a record to a different collection within reach of the user.
      parameters:
      - $ref: '#/components/parameters/DataboxId'
      - $ref: '#/components/parameters/RecordId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                base_id:
                  type: integer
                  description: Destination collection base_id.
      responses:
        '200':
          description: The updated record.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Envelope'
  /records/{databox_id}/{record_id}/delete:
    post:
      operationId: deleteRecord
      tags:
      - Records
      summary: Delete a record
      description: Permanently deletes a record from its databox.
      parameters:
      - $ref: '#/components/parameters/DataboxId'
      - $ref: '#/components/parameters/RecordId'
      responses:
        '200':
          description: Deletion result.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Envelope'
components:
  parameters:
    DataboxId:
      name: databox_id
      in: path
      required: true
      description: The databox identifier.
      schema:
        type: integer
    RecordId:
      name: record_id
      in: path
      required: true
      description: The record identifier within the databox.
      schema:
        type: integer
  schemas:
    Envelope:
      type: object
      description: Standard Phraseanet response wrapper. Every response contains a meta object and a response payload.
      properties:
        meta:
          $ref: '#/components/schemas/Meta'
        response:
          type: object
          description: The endpoint-specific payload.
    Meta:
      type: object
      description: Response envelope metadata.
      properties:
        api_version:
          type: string
        request:
          type: string
        response_time:
          type: string
        http_code:
          type: integer
        error_type:
          type: string
          nullable: true
        error_message:
          type: string
          nullable: true
  responses:
    NotFound:
      description: The requested resource was not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Envelope'
  securitySchemes:
    oauth2:
      type: oauth2
      description: OAuth2. Register an application in Phraseanet to obtain a client id and secret.
      flows:
        authorizationCode:
          authorizationUrl: https://your-phraseanet-instance/api/oauthv2/authorize
          tokenUrl: https://your-phraseanet-instance/api/oauthv2/token
          scopes: {}
    oauthTokenParam:
      type: apiKey
      in: query
      name: oauth_token
      description: OAuth2 access token passed as the oauth_token query parameter.