03
認証
セッションはPayloadのものです。POST /api/usuarios/login に email と password を送ると、ユーザー、JWT、その期限(exp)を返し、HttpOnlyの payload-token クッキーを設定します。どちらの経路でも使えます:クッキー(ブラウザ、credentials: include。CSRF保護により自サイトのオリジンからのみ受け付け)または Authorization: JWT <token> ヘッダー(サーバー、スクリプト、アプリ:ブラウザ外では必須)。トークンは2時間で期限切れ。/api/usuarios/refresh-token でパスワードを再入力せずに更新できます。
GET /api/usuarios/me はセッションのユーザーを返します(なければ user: null)。GET /api/access は現在のセッションで各コレクションのどの操作・どのフィールドが許されるかを要約します。ロールに応じたUIを作るための推奨手段です。
# ログイン:ユーザーとJWTを返し、payload-token クッキー(HttpOnly)を設定
curl -H "Content-Type: application/json" \
-d '{"email":"media@dwfw.test","password":"dwfw-demo-2026"}' \
"https://dwfw.trabemflex.com/api/usuarios/login"
# → { "user": { … }, "token": "<jwt>", "exp": 1790000000 } (+ cookie payload-token)
# Authorization: JWT ヘッダーで(スクリプト、サーバー、アプリ)
curl -H "Authorization: JWT <token>" "https://dwfw.trabemflex.com/api/usuarios/me"
# ブラウザではクッキーで十分(同一オリジン。csrf有効時は、正しいOriginヘッダーがないとクッキーは無視される)
fetch('/api/usuarios/me', { credentials: 'include' })
# 期限切れ前にトークンを更新(既定2時間)
curl -H "Authorization: JWT <token>" -X POST "https://dwfw.trabemflex.com/api/usuarios/refresh-token"
# このセッションが各コレクション・各フィールドでできること
curl -H "Authorization: JWT <token>" "https://dwfw.trabemflex.com/api/access"
# ログアウト
curl -H "Authorization: JWT <token>" -X POST "https://dwfw.trabemflex.com/api/usuarios/logout"05
クエリ:パラメータ、フィルター、ページネーション
すべての一覧は同じパラメータを受け付けます。一覧レスポンスはメタデータ付きでページ分割されます(totalDocs、totalPages、nextPage…)。
| パラメータ | 用途 |
|---|
locale | コンテンツの言語:es(既定)、en、zh、ja。読み書き両方に適用。`all` はすべての翻訳を返す。 |
fallback-locale | 翻訳がないときのフォールバック言語(既定 es)。`none` でフォールバックなし。 |
depth | 解決するリレーションの階層数(0 = idのみ)。既定 2。小さいほど速い。 |
limit · page | ページネーション:ページサイズ(既定10)とページ番号(1から)。`pagination=false` で全件(注意して使用)。 |
sort | ソート項目。先頭のハイフンで降順(sort=-createdAt)。複数はカンマ区切り。 |
where[campo][op]=valor | フィルター。where[and][n][項目][op] / where[or][n][項目][op] で入れ子に。リレーションの項目はドット区切り:autor.nombre、origen.value。 |
select[campo]=true | 返すフィールドを絞る。populate[コレクション][項目]=true でリレーション側の解決項目を選ぶ。 |
draft · joins | このスキーマでは該当なし(下書きもjoinもない)。/api/access のレスポンスで戸惑わないよう記載。 |
演算子
| 演算子 | 意味 |
|---|
equals | 等しい。select、リレーションid、真偽値、ISO日付に使える。 |
not_equals | 等しくない。 |
in · not_in | カンマ区切りリストに含まれる / 含まれない。 |
contains · like | テキスト:含む(大文字小文字を区別しない)/ 全語を含むパターン。 |
greater_than · greater_than_equal | より大きい / 以上:数値と日付。 |
less_than · less_than_equal | より小さい / 以下。 |
exists | exists=true / false:値があるかどうか。 |
near · within · intersects | point型のみ(このスキーマにはない)。 |
# ページ付き・ソート済み一覧、日本語コンテンツ、リレーションを2階層解決
curl "https://dwfw.trabemflex.com/api/obras?locale=ja&depth=2&limit=10&page=1&sort=-updatedAt"
# 単純なフィルター:アーカイブの作品(工程7)
curl -g "https://dwfw.trabemflex.com/api/obras?where[estadoCuratorial][equals]=movimiento_7"
# 複合フィルター:and / in / exists
curl -g "https://dwfw.trabemflex.com/api/obras?where[and][0][tipo][in]=modelo_3d,avatar&where[and][1][edicion][exists]=true"
# ポリモーフィックなリレーション:value と relationTo の両方で絞る(idはコレクション間で重複する)
curl -g "https://dwfw.trabemflex.com/api/conexiones?where[or][0][origen.value][equals]=1&where[or][0][origen.relationTo][equals]=obras"
# 一部のフィールドのみ(軽いレスポンス)
curl -g "https://dwfw.trabemflex.com/api/obras?select[titulo]=true&select[estadoCuratorial]=true&depth=0"
# ドキュメントを取得せずに件数のみ
curl -g "https://dwfw.trabemflex.com/api/obras/count?where[estadoCuratorial][equals]=movimiento_7"
{
"docs": [ { "id": 3, "titulo": "Metsä · Micelio v3", "estadoCuratorial": "movimiento_7", "…": "…" } ],
"totalDocs": 1,
"limit": 10,
"totalPages": 1,
"page": 1,
"pagingCounter": 1,
"hasPrevPage": false,
"hasNextPage": false,
"prevPage": null,
"nextPage": null
}07
書き込み
POSTは作成、PATCHは部分更新(送ったものだけ)、DELETEは削除。リレーションはidで送り、ポリモーフィックなものは { relationTo, value }。ファイルは multipart/form-data でMediaへ。
- バリデーション:必須項目とselectの値はサーバーで検査。400は項目と理由を返す。
- 原則のフック:Significadosでは procedencia=humano を強制。estadoCuratorial は movimiento:avanzar でのみ変更。作者は他人の作品を自分のものにできない。
- 冪等性:PATCHとDELETEは冪等。POSTは違う(呼ぶたびにドキュメントを作る)。
# 作成(obra:crear が必要)。指定したlocaleに保存。リレーションはid
curl -H "Authorization: JWT $TOKEN" -H "Content-Type: application/json" -X POST \
-d '{"titulo":"Nueva obra","tipo":"modelo_3d","autor":1,"nodoOrigen":"laboratorio_ia"}' \
"https://dwfw.trabemflex.com/api/obras?locale=es"
# → 201 { "message": "…", "doc": { "id": 4, … } }
# 別のlocaleでの部分更新:ローカライズ対象フィールドのみ。他は変わらない
curl -H "Authorization: JWT $TOKEN" -H "Content-Type: application/json" -X PATCH \
-d '{"titulo":"New work","descripcionFormal":{"silueta":"…"}}' \
"https://dwfw.trabemflex.com/api/obras/4?locale=en"
# 書き込み時のポリモーフィックなリレーション:{ relationTo, value }
curl -H "Authorization: JWT $TOKEN" -H "Content-Type: application/json" -X POST \
-d '{"origen":{"relationTo":"obras","value":4},"destino":{"relationTo":"nodos","value":2},"tipoRelacion":"dialoga_con","procedencia":"humano","estado":"propuesta"}' \
"https://dwfw.trabemflex.com/api/conexiones"
# 接続を確認(conexion:confirmar が必要。なければ明示的なメッセージ付きの403)
curl -H "Authorization: JWT $TOKEN" -X PATCH -H "Content-Type: application/json" \
-d '{"estado":"confirmada","procedencia":"humano"}' "https://dwfw.trabemflex.com/api/conexiones/1"
# Mediaにファイルをアップロード:multipart で `file` と `_payload`(他フィールドのJSON)
curl -H "Authorization: JWT $TOKEN" -F "file=@look-03.png" -F '_payload={"alt":"Look 03"}' "https://dwfw.trabemflex.com/api/media"
# 削除(obra:borrar が必要)
curl -H "Authorization: JWT $TOKEN" -X DELETE "https://dwfw.trabemflex.com/api/obras/4"08
リソースリファレンス
コレクションごとに1ブロック:パス、誰が読み誰が書くか、型とローカライズ付きのフィールド、そしてこのページ描画時に公開APIから取得した実例。
| リソース | パス | 読み取り | 書き込み(権限) |
|---|
| 作品 | /api/obras | アーカイブ(工程7)のみ公開。それ以外は権限による | obra:crear · obra:editar / obra:editar_propia · obra:borrar · movimiento:avanzar (estadoCuratorial) |
| 作者 | /api/autores | 公開 | autor:gestionar |
| ノード | /api/nodos | 公開 | nodo:gestionar |
| 接続 | /api/conexiones | 公開 | conexion:proponer · conexion:confirmar |
| 意味 | /api/significados | 公開 | significado:asignar |
| キュレーション工程 | /api/movimientos | 公開 | movimiento:avanzar |
| エディション | /api/ediciones | 公開 | edicion:gestionar |
| ブランドチャプター | /api/capitulos | 公開 | capitulo:gestionar |
| 映像作品 | /api/piezas | 公開 | pieza:gestionar |
| 技術アセット | /api/media | アーカイブ(工程7)のみ公開。それ以外は権限による | obra:crear (subir) · propio: editar / borrar si no publicado · obra:editar: todo y publicar |
| ユーザー | /api/usuarios | ログイン必須(各ユーザーは自分のみ。usuario:gestionar は全員を閲覧可) | usuario:gestionar |
第1層。文化資料としての作品:種別、作者、起源ノード、キュレーション状態(7工程)、形式的記述、技術アセット。
- 読み取り
- アーカイブ(工程7)のみ公開。それ以外は権限による
- 書き込み(権限)
obra:crear · obra:editar / obra:editar_propia · obra:borrar · movimiento:avanzar (estadoCuratorial)- 操作
GET /api/obras GET /api/obras/count GET /api/obras/:id POST /api/obras PATCH /api/obras/:id DELETE /api/obras/:id
フィールド
| フィールド | 型 | 必須 | ローカライズ | 値 / 参照先 |
|---|
titulo タイトル | text | はい | はい | — |
tipo 種別 | select | はい | — | modelo_3davatarcoleccion_digitalprenda_fisicaexperiencia_inmersivacodigo_generativo |
autor 作者 | relationship | はい | — | 参照先 autores |
nodoOrigen 起源ノード(出所) | select | はい | — | academico_investigadorcomunidad_digital_emergentelaboratorio_iainstitucion_archivo |
estadoCuratorial キュレーション状態 | select | はい | — | movimiento_1movimiento_2movimiento_3movimiento_4movimiento_5movimiento_6movimiento_7 |
descripcionFormal.silueta シルエット | textarea | — | はい | — |
descripcionFormal.material 素材 | textarea | — | はい | — |
descripcionFormal.sintaxisVisual 視覚的シンタックス | textarea | — | はい | — |
activosTecnicos 技術アセット(頂点、テクスチャ、映像) | join | — | — | — |
edicion エディション | relationship | — | — | 参照先 ediciones |
実例(GET、depth=0、公開ビュー)
GET https://dwfw.trabemflex.com/api/obras?depth=0&locale=ja&limit=1
{
"id": 3,
"titulo": "Metsä · 菌糸体 v3",
"tipo": "codigo_generativo",
"autor": 3,
"nodoOrigen": "laboratorio_ia",
"estadoCuratorial": "movimiento_7",
"descripcionFormal": {
"silueta": null,
"material": "シミュレートされた菌糸の成長をパターン生成器として。",
"sintaxisVisual": "形は描かれるのではなく、育てられる。"
},
"activosTecnicos": {
"docs": [],
"hasNextPage": false
},
"edicion": null,
"updatedAt": "2026-08-22T18:29:49.582Z",
"createdAt": "2026-08-21T07:12:39.411Z"
}第2層。デザイナー、コレクティブ、ラボ、機関。文化的出自は記述であり、順位の基準にはならない。
- 読み取り
- 公開
- 書き込み(権限)
autor:gestionar- 操作
GET /api/autores GET /api/autores/count GET /api/autores/:id POST /api/autores PATCH /api/autores/:id DELETE /api/autores/:id
フィールド
| フィールド | 型 | 必須 | ローカライズ | 値 / 参照先 |
|---|
nombre 名前 | text | はい | — | — |
tipo 種別 | select | はい | — | diseñadorinvestigadorartistacolectivolaboratorioinstitucion |
origenCultural 文化的出自 | text | — | はい | — |
bio 略歴 | textarea | — | はい | — |
trayectoria 経歴 | textarea | — | はい | — |
nodos ノード | relationship[] | — | — | 参照先 nodos |
taller.capacidad アトリエの規模 | textarea | — | はい | — |
taller.materiales 扱う素材 | select[] | — | — | algodonlanalinosedacueropuntodenimfibras_sinteticasmateriales_biobasadostextil_tecnicosin_material_fisico |
taller.tecnologias 技術 | select[] | — | — | patronaje_digitalmodelado_3dsimulacion_textildiseno_generativoimpresion_3dcorte_laserbordado_digitalestampacion_digitaltejido_punto_industrialconfeccion_artesanaltenido_natural |
taller.usaFibrasRecicladas 再生繊維を使う? | checkbox | — | — | — |
taller.fibrasRecicladasDetalle 再生繊維・詳細 | textarea | — | はい | — |
taller.notasSostenibilidad サステナビリティ・メモ | textarea | — | はい | — |
実例(GET、depth=0、公開ビュー)
GET https://dwfw.trabemflex.com/api/autores?depth=0&locale=ja&limit=1
{
"id": 3,
"nombre": "Lab Metsä",
"tipo": "laboratorio",
"origenCultural": "フィンランド・ヘルシンキ",
"bio": "ジェネラティブ素材のラボ。",
"trayectoria": "シミュレーションによるバイオテキスタイルに特化した学術スピンオフ。",
"nodos": [],
"taller": {
"capacidad": null,
"materiales": [],
"tecnologias": [],
"usaFibrasRecicladas": null,
"fibrasRecicladasDetalle": null,
"notasSostenibilidad": null,
"procedencia": "humano"
},
"updatedAt": "2026-08-22T18:29:48.843Z",
"createdAt": "2026-08-21T07:12:36.066Z"
}第3層。カートグラフィの頂点:哲学的潮流、技術的発展、コミュニティ、機関、文化的緊張。
- 読み取り
- 公開
- 書き込み(権限)
nodo:gestionar- 操作
GET /api/nodos GET /api/nodos/count GET /api/nodos/:id POST /api/nodos PATCH /api/nodos/:id DELETE /api/nodos/:id
フィールド
| フィールド | 型 | 必須 | ローカライズ | 値 / 参照先 |
|---|
nombre 名称 | text | はい | はい | — |
tipo 種別 | select | はい | — | corriente_filosoficadesarrollo_tecnologico_previocomunidad_subculturainstituciontension_cultural |
descripcion 説明 | textarea | — | はい | — |
実例(GET、depth=0、公開ビュー)
GET https://dwfw.trabemflex.com/api/nodos?depth=0&locale=ja&limit=1
{
"id": 4,
"nombre": "生成モデル時代の作者性",
"tipo": "tension_cultural",
"descripcion": null,
"updatedAt": "2026-08-22T18:29:49.224Z",
"createdAt": "2026-08-21T07:12:36.120Z"
}第3層。グラフの型付きエッジ。機械由来のものは提案として生まれ、人間だけが確認する。
- 読み取り
- 公開
- 書き込み(権限)
conexion:proponer · conexion:confirmar- 操作
GET /api/conexiones GET /api/conexiones/count GET /api/conexiones/:id POST /api/conexiones PATCH /api/conexiones/:id DELETE /api/conexiones/:id
フィールド
| フィールド | 型 | 必須 | ローカライズ | 値 / 参照先 |
|---|
origen 起点 | relationship | はい | — | 参照先 obrasnodos |
destino 終点 | relationship | はい | — | 参照先 obrasnodos |
tipoRelacion 関係の種別 | select | はい | — | dialoga_conposibilitada_porconversacion_paralela_con |
procedencia 出所 | select | はい | — | maquinahumano |
estado 状態 | select | はい | — | propuestaconfirmadadescartada |
confirmadaPor 確認者 | relationship | — | — | 参照先 usuarios |
confirmadaEn 確認日時 | date | — | — | — |
nota メモ | textarea | — | はい | — |
実例(GET、depth=0、公開ビュー)
GET https://dwfw.trabemflex.com/api/conexiones?depth=0&locale=ja&limit=1
{
"id": 6,
"origen": {
"relationTo": "obras",
"value": 2
},
"destino": {
"relationTo": "obras",
"value": 1
},
"tipoRelacion": "conversacion_paralela_con",
"procedencia": "maquina",
"estado": "propuesta",
"confirmadaPor": null,
"confirmadaEn": null,
"nota": "Coincidencia en el campo silueta: ambas describen la silueta por lo que le falta de sostén estructural. Aguacero 01: \"Volumen inflado, sin punto de apoyo.\" Kata: \"Hombro desestructurado: la autoridad se retira del cuerpo.\" Vocabulario compartido: \"sin punto de apoyo\" / \"desestructurado\" / \"se retira\" — en las dos la forma se define por la ausencia de estructura que la sostenga, no por lo que añade. Divergen en tipo (coleccion_digital vs modelo_3d), nodo de origen (comunidad_digital_emergente vs academico_investigador) y material (plástico de baja poligonización vs lana simulada), y no tienen conexión entre sí en la cartografía. Solo se usa la descripción formal; no se usa el significado asignado a Kata ni el origen cultural de los autores. Evidencia sintáctica, pendiente de lectura curatorial.",
"updatedAt": "2026-09-03T07:10:25.005Z",
"createdAt": "2026-09-03T07:10:25.005Z"
}第4層。固定された解釈学的問いと読解。常に人間由来(サーバーが強制)。
- 読み取り
- 公開
- 書き込み(権限)
significado:asignar- 操作
GET /api/significados GET /api/significados/count GET /api/significados/:id POST /api/significados PATCH /api/significados/:id DELETE /api/significados/:id
フィールド
| フィールド | 型 | 必須 | ローカライズ | 値 / 参照先 |
|---|
obra 作品 | relationship | はい | — | 参照先 obras |
tensionSubyacente この創作は現代社会のどのような緊張に応答しているか? | textarea | はい | はい | — |
lectura 読解 | array | — | — | — |
lectura[].tipo 種別 | select | — | — | antropologicaeticapoetica |
lectura[].texto テキスト | textarea | — | はい | — |
textosTeoricos 関連する批評装置 | textarea | — | はい | — |
curador キュレーター | relationship | — | — | 参照先 usuarios |
procedencia 出所 · 読み取り専用 | text | — | — | — |
実例(GET、depth=0、公開ビュー)
GET https://dwfw.trabemflex.com/api/significados?depth=0&locale=ja&limit=1
{
"id": 2,
"obra": 3,
"tensionSubyacente": "jhksjhdkae",
"lectura": [],
"curador": 1,
"procedencia": "humano",
"updatedAt": "2026-09-04T12:02:19.341Z",
"createdAt": "2026-09-04T12:02:19.340Z"
}キュレーションのワークフロー:作品ごとの七つの工程、担当者と出所つき。
- 読み取り
- 公開
- 書き込み(権限)
movimiento:avanzar- 操作
GET /api/movimientos GET /api/movimientos/count GET /api/movimientos/:id POST /api/movimientos PATCH /api/movimientos/:id DELETE /api/movimientos/:id
フィールド
| フィールド | 型 | 必須 | ローカライズ | 値 / 参照先 |
|---|
obra 作品 | relationship | はい | — | 参照先 obras |
movimiento 工程 | select | はい | — | movimiento_1movimiento_2movimiento_3movimiento_4movimiento_5movimiento_6movimiento_7 |
estado 状態 | select | はい | — | pendienteen_cursocompletado |
responsable 担当者 | relationship | — | — | 参照先 usuarios |
procedencia 出所 | select | はい | — | maquinahumano |
notas メモ | textarea | — | はい | — |
実例(GET、depth=0、公開ビュー)
GET https://dwfw.trabemflex.com/api/movimientos?depth=0&locale=ja&limit=1
{
"id": 21,
"obra": 3,
"movimiento": "movimiento_7",
"estado": "en_curso",
"responsable": 2,
"procedencia": "humano",
"updatedAt": "2026-08-21T07:12:40.179Z",
"createdAt": "2026-08-21T07:12:40.179Z"
}Event Stack。各エディション(日程、開催都市、フォーカス国)。
- 読み取り
- 公開
- 書き込み(権限)
edicion:gestionar- 操作
GET /api/ediciones GET /api/ediciones/count GET /api/ediciones/:id POST /api/ediciones PATCH /api/ediciones/:id DELETE /api/ediciones/:id
フィールド
| フィールド | 型 | 必須 | ローカライズ | 値 / 参照先 |
|---|
nombre 名称 | text | はい | はい | — |
fechaInicio 開始日 | date | はい | — | — |
fechaFin 終了日 | date | — | — | — |
ciudadAnfitriona 開催都市(Country in Focus) | text | — | はい | — |
paisEnFoco フォーカス国 | text | — | はい | — |
実例(GET、depth=0、公開ビュー)
GET https://dwfw.trabemflex.com/api/ediciones?depth=0&locale=ja&limit=1
{
"id": 1,
"nombre": "DWFW · 第1回",
"fechaInicio": "2027-03-12T00:00:00.000Z",
"fechaFin": "2027-03-15T00:00:00.000Z",
"ciudadAnfitriona": "マドリード",
"paisEnFoco": "スペイン",
"updatedAt": "2026-08-22T18:29:48.495Z",
"createdAt": "2026-08-21T07:12:35.921Z",
"fase": "antes",
"cuentaAtras": 14562620
}Event Stack。エディションのブランドチャプター:セクション、大陸、上映時間、作品。
- 読み取り
- 公開
- 書き込み(権限)
capitulo:gestionar- 操作
GET /api/capitulos GET /api/capitulos/count GET /api/capitulos/:id POST /api/capitulos PATCH /api/capitulos/:id DELETE /api/capitulos/:id
フィールド
| フィールド | 型 | 必須 | ローカライズ | 値 / 参照先 |
|---|
titulo タイトル | text | はい | はい | — |
edicion エディション | relationship | はい | — | 参照先 ediciones |
autor 作者 | relationship | — | — | 参照先 autores |
duracionMin 上映時間(分) | number | — | — | — |
seccion セクション | select | — | — | country_in_focusicons_of_designfuture_labconversaciones |
continente 大陸 | select | — | — | asiaoceaniaeuropaafricaamerica |
obras 作品 | relationship[] | — | — | 参照先 obras |
実例(GET、depth=0、公開ビュー)
GET https://dwfw.trabemflex.com/api/capitulos?depth=0&locale=ja&limit=1
{
"id": 3,
"titulo": "対話 · 作者性と機械",
"edicion": 1,
"autor": 2,
"duracionMin": 60,
"seccion": "conversaciones",
"continente": "america",
"obras": [
2
],
"updatedAt": "2026-08-22T19:21:09.427Z",
"createdAt": "2026-08-22T19:21:09.303Z"
}Event Stack。映像作品(プレミア、対話、メイキング…)とストリーミング参照。
- 読み取り
- 公開
- 書き込み(権限)
pieza:gestionar- 操作
GET /api/piezas GET /api/piezas/count GET /api/piezas/:id POST /api/piezas PATCH /api/piezas/:id DELETE /api/piezas/:id
フィールド
| フィールド | 型 | 必須 | ローカライズ | 値 / 参照先 |
|---|
titulo タイトル | text | はい | はい | — |
tipo 種別 | select | — | — | premiereconversacionmaking_ofhero_lookreemisionclip |
capitulo チャプター | relationship | — | — | 参照先 capitulos |
obra 作品 | relationship | — | — | 参照先 obras |
urlStreaming ストリーミングURL | text | — | — | — |
実例(GET、depth=0、公開ビュー)
GET https://dwfw.trabemflex.com/api/piezas?depth=0&locale=ja&limit=1
{
"id": 3,
"titulo": "Colectivo Aguacero との対話",
"tipo": "conversacion",
"capitulo": 3,
"obra": 2,
"urlStreaming": null,
"updatedAt": "2026-08-22T19:21:09.874Z",
"createdAt": "2026-08-22T19:21:09.764Z"
}技術アセット:画像(≤50 MB)、映像(≤2 GB)、3Dモデル .glb/.gltf/.usdz/.fbx/.obj(≤500 MB)、PDF(≤20 MB)。既定で非公開(ブラインド審査):アップロード者とキュレーションが閲覧。作品が工程7に達すると公開。Cloudflare R2に保存。映像と3Dはバケットへ直接アップロード。情報:説明、クレジット、素材、AI使用、ライセンス、ソフトウェア。
- 読み取り
- アーカイブ(工程7)のみ公開。それ以外は権限による
- 書き込み(権限)
obra:crear (subir) · propio: editar / borrar si no publicado · obra:editar: todo y publicar- 操作
GET /api/media GET /api/media/count GET /api/media/:id POST /api/media PATCH /api/media/:id DELETE /api/media/:id
フィールド
| フィールド | 型 | 必須 | ローカライズ | 値 / 参照先 |
|---|
titulo タイトル | text | — | はい | — |
alt 代替テキスト | text | — | はい | — |
categoria カテゴリ · 読み取り専用 | select | — | — | imagenvideomodelo3ddocumento |
obra 作品 | relationship | — | — | 参照先 obras |
publico 公開 | checkbox | — | — | — |
subidoPor アップロード者 · 読み取り専用 | relationship | — | — | 参照先 usuarios |
ficha.descripcion 説明 | textarea | — | はい | — |
ficha.creditos クレジット / 作者 | text | — | — | — |
ficha.materiales 素材 / 技法 | text | — | はい | — |
ficha.usoIA AIの使用 | select | — | — | ningunoasistidogenerativo |
ficha.licencia ライセンス | select | — | — | todos_los_derechoscc_bycc_by_nccc_by_nc_nd |
ficha.software ソフトウェア / パイプライン | text | — | — | — |
実例(GET、depth=0、公開ビュー)
ログインなしで見えるドキュメントはありません。
ロールと追加権限(期限付きの付与)を持つアカウント。任意で作者に紐づく。
- 読み取り
- ログイン必須(各ユーザーは自分のみ。usuario:gestionar は全員を閲覧可)
- 書き込み(権限)
usuario:gestionar- 操作
GET /api/usuarios GET /api/usuarios/count GET /api/usuarios/:id POST /api/usuarios PATCH /api/usuarios/:id DELETE /api/usuarios/:id POST …/login POST …/logout GET …/me POST …/refresh-token
フィールド
| フィールド | 型 | 必須 | ローカライズ | 値 / 参照先 |
|---|
nombre 名前 | text | はい | — | — |
roles ロール | select[] | はい | — | direccionfounding_curatorcuradorinvestigadorcreadorpartnermediaadvisory |
concesiones 追加権限(一時的または恒久的) | array | — | — | — |
concesiones[].capacidad 権限 | select | はい | — | obra:leerobra:crearobra:editarobra:editar_propiaobra:borrarautor:leerautor:gestionarautor:editar_tallernodo:leernodo:gestionarconexion:leerconexion:proponerconexion:confirmarsignificado:leersignificado:asignarmovimiento:avanzarindex:leeredicion:leeredicion:gestionarcapitulo:gestionarpieza:gestionarusuario:gestionar |
concesiones[].caduca 有効期限 | date | — | — | — |
concesiones[].motivo 理由 | text | — | — | — |
scopeEdiciones これらのエディションに限定 | relationship[] | — | — | 参照先 ediciones |
autor 作者 | relationship | — | — | 参照先 autores |
enableAPIKey | checkbox | — | — | — |
apiKey | text | — | — | — |
email | email | はい | — | — |
実例(GET、depth=0、公開ビュー)
ログインなしで見えるドキュメントはありません。
10
OpenAPI、型、統合
OpenAPI 3.0仕様は同じconfigから生成されます。Postman、Insomnia、Stoplightに取り込むか、openapi-generatorでクライアントを生成してください。スキーマのTypeScript型は src/payload-types.ts にあります(pnpm generate:types で再生成)。
openapi.json をダウンロードpayload-types.ts · GitHub
// 最小のJavaScriptクライアント(ブラウザまたはNode 18+)
const API = 'https://dwfw.trabemflex.com/api'
const res = await fetch(`${API}/usuarios/login`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ email, password }),
credentials: 'include', // ブラウザではクッキーで十分。サーバーではヘッダーを使う
})
const { token } = await res.json()
// ヘッダーのJWTで読み取り
const obras = await fetch(`${API}/obras?locale=ja&depth=1&limit=20`, {
headers: { Authorization: `JWT ${token}` },
}).then((r) => r.json())
// スキーマのTypeScript型(src/payload-types.ts)
import type { Obra, Autor } from './payload-types'