openapi: 3.0.3 info: title: iconik Assets API description: 'iconik is a hybrid cloud media asset management (MAM) platform. Its public API is API-first and organized as versioned REST microservices under https://app.iconik.io/API/{service}/v1/. This document models the core logical APIs an integrator uses most: Assets and Collections (assets microservice), Metadata, Search, Files, and Jobs. Every request is authenticated with two headers - App-ID (application identifier) and Auth-Token (auth token) - generated by an administrator in the iconik web UI under Settings / Application Tokens. Requests and responses are JSON. List responses are paginated and return page metadata (page, pages, total). Endpoints are grounded in iconik''s published API reference; request and response schemas are honestly modeled and simplified where the interactive reference is the authoritative source of the full object shapes.' version: '1.0' contact: name: iconik url: https://www.iconik.io servers: - url: https://app.iconik.io/API description: iconik (US / default region) - url: https://eu.iconik.io/API description: iconik (EU region) security: - appId: [] authToken: [] tags: - name: Assets description: Core media asset containers. paths: /assets/v1/assets/: get: operationId: listAssets tags: - Assets summary: List assets description: Lists assets in the account, paginated. parameters: - $ref: '#/components/parameters/Page' - $ref: '#/components/parameters/PerPage' responses: '200': description: A paginated list of assets. content: application/json: schema: $ref: '#/components/schemas/AssetList' '401': $ref: '#/components/responses/Unauthorized' post: operationId: createAsset tags: - Assets summary: Create an asset description: Creates a new asset container. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AssetCreate' responses: '201': description: The created asset. content: application/json: schema: $ref: '#/components/schemas/Asset' '401': $ref: '#/components/responses/Unauthorized' /assets/v1/assets/{asset_id}/: parameters: - $ref: '#/components/parameters/AssetId' get: operationId: getAsset tags: - Assets summary: Get an asset description: Retrieves a single asset by ID. Supports include_collections and include_users query flags. parameters: - name: include_collections in: query required: false schema: type: boolean - name: include_users in: query required: false schema: type: boolean responses: '200': description: The asset. content: application/json: schema: $ref: '#/components/schemas/Asset' '404': $ref: '#/components/responses/NotFound' patch: operationId: updateAsset tags: - Assets summary: Update an asset description: Partially updates an asset. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AssetCreate' responses: '200': description: The updated asset. content: application/json: schema: $ref: '#/components/schemas/Asset' put: operationId: replaceAsset tags: - Assets summary: Replace an asset description: Replaces an asset. In iconik, PUT and PATCH have the same update-or-replace behavior. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AssetCreate' responses: '200': description: The replaced asset. content: application/json: schema: $ref: '#/components/schemas/Asset' delete: operationId: deleteAsset tags: - Assets summary: Delete an asset description: Deletes an asset (moves it to the delete queue). responses: '204': description: The asset was deleted. components: parameters: Page: name: page in: query required: false description: The page number of results to return. schema: type: integer default: 1 AssetId: name: asset_id in: path required: true description: The unique ID of the asset. schema: type: string PerPage: name: per_page in: query required: false description: The number of results per page. schema: type: integer default: 10 responses: Unauthorized: description: Missing or invalid App-ID / Auth-Token credentials. content: application/json: schema: $ref: '#/components/schemas/Error' NotFound: description: The requested object was not found. content: application/json: schema: $ref: '#/components/schemas/Error' schemas: AssetCreate: type: object required: - title properties: title: type: string type: type: string AssetList: type: object properties: objects: type: array items: $ref: '#/components/schemas/Asset' page: type: integer pages: type: integer total: type: integer Asset: type: object properties: id: type: string title: type: string type: type: string description: The asset type, e.g. ASSET, SEQUENCE, or NLE_PROJECT. status: type: string date_created: type: string format: date-time date_modified: type: string format: date-time Error: type: object properties: error: type: string errors: type: array items: type: string securitySchemes: appId: type: apiKey in: header name: App-ID description: The iconik application ID generated in the web UI. authToken: type: apiKey in: header name: Auth-Token description: The iconik auth token paired with the application ID.