---
title: "Structure DPP passports"
method: POST
path: "/v1/trust/passports/structure"
tags: ["Trust"]
---

# Structure DPP passports

`POST /v1/trust/passports/structure`

## Request

- Base URL: `https://api.prod.keyban.io`
- URL: `https://api.prod.keyban.io/v1/trust/passports/structure`
- Auth: API key in header `X-Api-Key`

Launch a structuration batch over the passports matching the filters (same filter format as the passport list): for each one, extract the product characteristics still missing from its free-text fields (name, description) into `product.characteristics`.

Existing characteristics are never overwritten (fill-only). Each passport is an independent child job: one failure does not stop the batch. The response carries the batch `jobId` — follow it via `GET /v1/trust/passports/structure/{jobId}` or the SSE progress stream.

## Query parameters

- `applicationId` string, uuid, required
- `filters` union[]
  - union
    - object
      - `operator` 'or' | 'and', required
      - `value` union[], required
        - union
          - object
            - `field` 'id', required
            - `operator` 'eq', required
            - `value` string, required
          - object
            - `field` 'createdAt', required
            - `operator` 'gt' | 'lt' | 'gte' | 'lte', required
            - `value` string, date-time, required
          - object
            - `field` 'updatedAt', required
            - `operator` 'gt' | 'lt' | 'gte' | 'lte', required
            - `value` string, date-time, required
          - object
            - `field` 'application.id', required
            - `operator` 'eq', required
            - `value` string, uuid, required
          - object
            - `field` 'status', required
            - `operator` 'eq' | 'ne', required
            - `value` 'draft' | 'published' | 'claimed' | 'archived', required
          - object
            - `field` 'product.idGranularity', required
            - `operator` 'eq', required
            - `value` 'model' | 'batch' | 'item', required
          - object
            - `field` 'product.modelNumber', required
            - `operator` 'eq', required
            - `value` string, required
          - object
            - `field` 'product.batchNumber', required
            - `operator` 'eq', required
            - `value` string, required
          - object
            - `field` 'product.itemNumber', required
            - `operator` 'eq', required
            - `value` string, required
          - object
            - `field` 'product.name', required
            - `operator` 'contains', required
            - `value` string, required
          - object
            - `field` 'mintedTo.id', required
            - `operator` 'eq', required
            - `value` string, uuid, required
          - object
            - `field` 'structureJob', required
            - `operator` 'null' | 'nnull', required
            - `value` unknown, required
          - object
            - `field` 'structureJob.status', required
            - `operator` 'eq', required
            - `value` 'pending' | 'completed' | 'failed', required
          - object
            - `field` 'certifyJob', required
            - `operator` 'null' | 'nnull', required
            - `value` unknown, required
          - object
            - `field` 'certifyJob.status', required
            - `operator` 'eq', required
            - `value` 'pending' | 'completed' | 'failed', required
    - object
      - `field` 'id', required
      - `operator` 'eq', required
      - `value` string, required
    - object
      - `field` 'createdAt', required
      - `operator` 'gt' | 'lt' | 'gte' | 'lte', required
      - `value` string, date-time, required
    - object
      - `field` 'updatedAt', required
      - `operator` 'gt' | 'lt' | 'gte' | 'lte', required
      - `value` string, date-time, required
    - object
      - `field` 'application.id', required
      - `operator` 'eq', required
      - `value` string, uuid, required
    - object
      - `field` 'status', required
      - `operator` 'eq' | 'ne', required
      - `value` 'draft' | 'published' | 'claimed' | 'archived', required
    - object
      - `field` 'product.idGranularity', required
      - `operator` 'eq', required
      - `value` 'model' | 'batch' | 'item', required
    - object
      - `field` 'product.modelNumber', required
      - `operator` 'eq', required
      - `value` string, required
    - object
      - `field` 'product.batchNumber', required
      - `operator` 'eq', required
      - `value` string, required
    - object
      - `field` 'product.itemNumber', required
      - `operator` 'eq', required
      - `value` string, required
    - object
      - `field` 'product.name', required
      - `operator` 'contains', required
      - `value` string, required
    - object
      - `field` 'mintedTo.id', required
      - `operator` 'eq', required
      - `value` string, uuid, required
    - object
      - `field` 'structureJob', required
      - `operator` 'null' | 'nnull', required
      - `value` unknown, required
    - object
      - `field` 'structureJob.status', required
      - `operator` 'eq', required
      - `value` 'pending' | 'completed' | 'failed', required
    - object
      - `field` 'certifyJob', required
      - `operator` 'null' | 'nnull', required
      - `value` unknown, required
    - object
      - `field` 'certifyJob.status', required
      - `operator` 'eq', required
      - `value` 'pending' | 'completed' | 'failed', required
- `sorters` object[]
  - `field` 'id' | 'createdAt' | 'updatedAt', required
  - `order` 'asc' | 'desc', required
- `currentPage` integer
- `pageSize` integer

## Response `201`

---

[API](https://skmtc.dev/keyban/apis/keyban-rest-apis.md) · [All operations](https://skmtc.dev/keyban/apis/keyban-rest-apis/llms.txt) · [OpenAPI document](https://skmtc.dev/keyban/apis/keyban-rest-apis/revisions/0bb79a1da961?raw)
