{"openapi":"3.0.0","info":{"title":"Afineo Webservices API — export","description":"Module `export` of the Afineo API v3 (6 endpoints).\n\nExport asset data using predefined mappings. Supports repository and project contexts, file-based exports (CSV, XML) via background jobs, and EasyCatalog format. Use processes/get to track export job status and retrieve generated files.\n\nFull specification: https://api.afineo.io/openapi.json","version":"3.0.0","contact":{"name":"Afineo Solutions","url":"https://www.afineo.com"},"x-logo":{"url":"./logo.png","altText":"Afineo - Powerful Data, Powerful People"}},"servers":[{"url":"https://{instance}.afineo.io","description":"Afineo instance","variables":{"instance":{"description":"Your Afineo instance name","default":"client"}}}],"tags":[{"name":"export","description":"Export asset data using predefined mappings. Supports repository and project contexts, file-based exports (CSV, XML) via background jobs, and EasyCatalog format. Use processes/get to track export job status and retrieve generated files."}],"paths":{"/api/v3/export/by-mapping/node/":{"post":{"tags":["export"],"summary":"Export project node data by mapping","description":"## Purpose\n\nExports project-contextualized assets to JSON using a mapping with pagination and filters.\n","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"JSON export response","content":{"application/json":{"schema":{"oneOf":[{"type":"object","title":"Success Response","properties":{"status_code":{"type":"integer","example":1,"description":"Status code (1 = success)"},"status_message":{"type":"string","example":"","description":"Status message"},"result":{"type":"object","properties":{"results_total":{"type":"integer","example":15,"description":"Total number of items"},"items":{"type":"array","items":{"type":"object"},"description":"Export data"},"num_page":{"type":"integer","nullable":true,"example":1,"description":"Current page number"},"nb_pages":{"type":"integer","nullable":true,"example":15,"description":"Total number of pages"},"results_per_page":{"type":"integer","nullable":true,"example":100,"description":"Number of results per page"}},"required":["results_total","items"],"description":"Export result"}},"required":["status_code","status_message","result"]},{"type":"object","title":"Error Response","properties":{"status_code":{"type":"integer","example":2,"description":"Status code (2 = Export result not valid / Export error / ...)"},"status_message":{"type":"string","example":"Export result not valid","description":"Error message"},"result":{"type":"array","items":{"type":"object"},"example":[],"description":"Empty array on error"}},"required":["status_code","status_message","result"]}]}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"class_id":{"type":"integer","description":"Library ID. Use POST /api/v3/administration/classes/list to get available libraries.","example":4},"parent_id":{"type":"integer","description":"Parent node ID in project. Use POST /api/v3/get-asset/by-search/node to find project nodes.","example":4350},"mapping_id":{"type":"integer","description":"Mapping ID. Use POST /api/v3/mappings/list/ with class_id to discover available mappings for a given class.","example":23},"num_page":{"type":"integer","description":"Page number for pagination. Must be used together with results_per_page.","example":3},"results_per_page":{"type":"integer","description":"Number of results per page (between 10 and 1000). Must always be provided together with \"num_page\".","example":50},"version_id":{"type":"integer","description":"Version ID. Use POST /api/v3/administration/versions/list with class_id to get available versions.","example":1},"exclude_inherited_values":{"type":"boolean","description":"If it is true, only the direct values of the asset are exported (excludes values that have not been filled directly in the asset : values inherited from a parent, or from the repository in the case of a contextual asset, or calculated values)","example":true},"research":{"type":"array","description":"Array of attribute filters. Each filter has attribute_id, operator, value, and optional link. IMPORTANT: When using \"research\", \"filters.types_id\" or \"filters.supertypes_id\" must also be provided. (Array of objects - see example for structure)","example":[{"attribute_id":1234,"operator":"contains","value":"Prefix_"},{"link":"or","attribute_id":2465,"operator":"contains","value":"Prefix_"}],"items":{"type":"object","properties":{"attribute_id":{"type":"integer","description":"Attribute ID. Use POST /api/v3/attributes/list with class_id to get available attributes.","example":231},"operator":{"type":"string","description":"Search operator: equal/notequal (exact match), contains/notcontains (partial), startby/endby (prefix/suffix), isnull/isnotnull (empty check), greater/atleast/lesser/nomore (numeric), between (range).","enum":["equal","notequal","contains","notcontains","startby","endby","notstartby","notendby","isnull","isnotnull","greater","atleast","lesser","nomore","between","isinlist","isnotinlist"],"example":"between"},"value":{"type":"string","description":"Value (only if operator is not \"isnull\" and \"isnotnull\") **⚠️ Required when:** `operator` = `equal` | `notequal` | `contains` | `notcontains` | `startby` | `endby` | `notstartby` | `notendby` | `greater` | `atleast` | `lesser` | `nomore` | `between` | `isinlist` | `isnotinlist`","example":"12345","x-conditional-required":{"operator":["equal","notequal","contains","notcontains","startby","endby","notstartby","notendby","greater","atleast","lesser","nomore","between","isinlist","isnotinlist"]}},"value2":{"type":"string","description":"Second value for range search. Required only when operator is \"between\" **⚠️ Required when:** `operator` = `between`","example":"12346","x-conditional-required":{"operator":["between"]}},"link":{"type":"string","description":"Logical link between filters: \"and\" (all conditions must match) or \"or\" (any condition matches). Default: \"and\".","enum":["and","or"],"example":"and"}},"required":["attribute_id","operator"],"title":"Item"}},"filters":{"type":"object","description":"Filter object with types_id, supertypes_id, status_id, creausers, users, workflow_step_id, date filters. IMPORTANT: When using \"research\" or \"filters\", at least \"types_id\" or \"supertypes_id\" must be provided.","example":{"supertypes_id":[2],"types_id":[257,258],"time":"2024-12-17T10:30:00Z","workflow_step_id":10},"properties":{"types_id":{"type":"array","description":"List of asset type IDs. Required when using \"research\" or \"filters\" (unless supertypes_id is provided). Use POST /api/v3/types/list with class_id to get available types.","example":[257,258],"items":{"type":"integer"}},"supertypes_id":{"type":"array","description":"List of supertype IDs (parent category of asset types). All child types of these supertypes will be included. Required when using \"research\" or \"filters\" (unless types_id is provided). Can be combined with types_id. Available supertypes: 1 (Groupe de fiches), 2 (Fiche), 3 (Dossier), 4 (Page), 5 (Publication), 6 (Workspace), 7 (Article), 8 (Variation de produit)","example":[1,2],"items":{"type":"integer","enum":[1,2,3,4,5,6,7,8]}},"status_id":{"type":"array","description":"List of asset status IDs. Use POST /api/v3/permissions/statuses/list with class_id to get available statuses.","example":[1287,1288],"items":{"type":"integer"}},"creausers":{"type":"array","description":"List of user IDs who created assets. Use POST /api/v3/permissions/groups/list to get user groups.","example":[1485,1535],"items":{"type":"integer"}},"users":{"type":"array","description":"List of user IDs who last modified assets. Use POST /api/v3/permissions/groups/list to get user groups.","example":[1485,1535],"items":{"type":"integer"}},"workflow_step_id":{"type":"integer","description":"Workflow step ID. Use POST /api/v3/workflows/list/node/ with project_node_id and class_id to get workflows and their steps.","example":10},"creatime":{"type":"string","description":"Minimum creation date of the asset (ISO 8601 format). Used to filter assets created from this date","example":"2024-12-17T10:30:00Z"},"creatimeend":{"type":"string","description":"Maximum creation date of the asset (ISO 8601 format). Used to filter assets created up to this date","example":"2024-12-17T23:59:59Z"},"time":{"type":"string","description":"Minimum update date of the asset (ISO 8601 format). Used to filter assets updated from this date","example":"2024-12-17T10:30:00+02:00"},"timeend":{"type":"string","description":"Maximum update date of the asset (ISO 8601 format). Used to filter assets updated up to this date","example":"2024-12-17T23:59:59+02:00"},"search_find":{"type":"string","description":"Quick search text. Searches across indexed attributes for matching content.","example":"My product label"},"split_find":{"type":"string","description":"Fast search mode: \"all_words\" (all words must be present), \"each_word\" (any word matches), \"exact_expression\" (exact phrase match).","enum":["all_words","each_word","exact_expression"],"example":"each_word"},"alias":{"type":"string","description":"Alias filter: \"only_aliases\" (return only alias nodes), \"except_aliases\" (exclude alias nodes). Default: include all.","enum":["only_aliases","except_aliases"],"example":"only_aliases"}}},"format":{"type":"string","description":"JSON format: \"simple\" (flat attribute list) or \"composed\" (recursive structure). Default: simple.","enum":["simple","composed"],"example":"composed"}},"required":["class_id","parent_id","mapping_id","num_page","results_per_page"]}}}}}},"/api/v3/export/by-mapping/repository/":{"post":{"tags":["export"],"summary":"Export repository data by mapping","description":"## Purpose\n\nExports repository assets to JSON using a preconfigured mapping with pagination and filters.\n\n## Format Options\n\n- `simple`: Standard attribute format (default)\n- `composed`: Recursive JSON structure\n","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"JSON export response","content":{"application/json":{"schema":{"oneOf":[{"type":"object","title":"Success Response","properties":{"status_code":{"type":"integer","example":1,"description":"Status code (1 = success)"},"status_message":{"type":"string","example":"","description":"Status message"},"result":{"type":"object","properties":{"results_total":{"type":"integer","example":15,"description":"Total number of items"},"items":{"type":"array","items":{"type":"object"},"description":"Export data"},"num_page":{"type":"integer","nullable":true,"example":1,"description":"Current page number"},"nb_pages":{"type":"integer","nullable":true,"example":15,"description":"Total number of pages"},"results_per_page":{"type":"integer","nullable":true,"example":100,"description":"Number of results per page"}},"required":["results_total","items"],"description":"Export result"}},"required":["status_code","status_message","result"]},{"type":"object","title":"Error Response","properties":{"status_code":{"type":"integer","example":2,"description":"Status code (2 = Export result not valid / Export error / ...)"},"status_message":{"type":"string","example":"Export result not valid","description":"Error message"},"result":{"type":"array","items":{"type":"object"},"example":[],"description":"Empty array on error"}},"required":["status_code","status_message","result"]}]}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"class_id":{"type":"integer","description":"Library ID. Use POST /api/v3/administration/classes/list to get available libraries.","example":4},"parent_id":{"type":"integer","description":"Parent asset ID in repository. Use POST /api/v3/get-asset/by-search/repository to find assets. Set to 0 for repository root.","example":4350},"mapping_id":{"type":"integer","description":"Mapping ID. Use POST /api/v3/mappings/list/ with class_id to discover available mappings for a given class.","example":23},"num_page":{"type":"integer","description":"Page number for pagination. Must be used together with results_per_page.","example":3},"results_per_page":{"type":"integer","description":"Number of results per page (between 10 and 1000). Must always be provided together with \"num_page\".","example":50},"version_id":{"type":"integer","description":"Version ID. Use POST /api/v3/administration/versions/list with class_id to get available versions.","example":1},"exclude_inherited_values":{"type":"boolean","description":"If it is true, only the direct values of the asset are exported (excludes values that have not been filled directly in the asset : values inherited from a parent, or from the repository in the case of a contextual asset, or calculated values)","example":true},"research":{"type":"array","description":"Array of attribute filters. Each filter has attribute_id, operator, value, and optional link. IMPORTANT: When using \"research\", \"filters.types_id\" or \"filters.supertypes_id\" must also be provided. (Array of objects - see example for structure)","example":[{"attribute_id":1234,"operator":"contains","value":"Prefix_"},{"link":"or","attribute_id":2465,"operator":"contains","value":"Prefix_"}],"items":{"type":"object","properties":{"attribute_id":{"type":"integer","description":"Attribute ID. Use POST /api/v3/attributes/list with class_id to get available attributes.","example":231},"operator":{"type":"string","description":"Search operator: equal/notequal (exact match), contains/notcontains (partial), startby/endby (prefix/suffix), isnull/isnotnull (empty check), greater/atleast/lesser/nomore (numeric), between (range).","enum":["equal","notequal","contains","notcontains","startby","endby","notstartby","notendby","isnull","isnotnull","greater","atleast","lesser","nomore","between","isinlist","isnotinlist"],"example":"between"},"value":{"type":"string","description":"Value (only if operator is not \"isnull\" and \"isnotnull\") **⚠️ Required when:** `operator` = `equal` | `notequal` | `contains` | `notcontains` | `startby` | `endby` | `notstartby` | `notendby` | `greater` | `atleast` | `lesser` | `nomore` | `between` | `isinlist` | `isnotinlist`","example":"12345","x-conditional-required":{"operator":["equal","notequal","contains","notcontains","startby","endby","notstartby","notendby","greater","atleast","lesser","nomore","between","isinlist","isnotinlist"]}},"value2":{"type":"string","description":"Second value for range search. Required only when operator is \"between\" **⚠️ Required when:** `operator` = `between`","example":"12346","x-conditional-required":{"operator":["between"]}},"link":{"type":"string","description":"Logical link between filters: \"and\" (all conditions must match) or \"or\" (any condition matches). Default: \"and\".","enum":["and","or"],"example":"and"}},"required":["attribute_id","operator"],"title":"Item"}},"filters":{"type":"object","description":"Filter object with types_id, supertypes_id, status_id, creausers, users, workflow_step_id, date filters. IMPORTANT: When using \"research\" or \"filters\", at least \"types_id\" or \"supertypes_id\" must be provided.","example":{"supertypes_id":[2],"types_id":[257,258],"time":"2024-12-17T10:30:00Z","workflow_step_id":10},"properties":{"types_id":{"type":"array","description":"List of asset type IDs. Required when using \"research\" or \"filters\" (unless supertypes_id is provided). Use POST /api/v3/types/list with class_id to get available types.","example":[257,258],"items":{"type":"integer"}},"supertypes_id":{"type":"array","description":"List of supertype IDs (parent category of asset types). All child types of these supertypes will be included. Required when using \"research\" or \"filters\" (unless types_id is provided). Can be combined with types_id. Available supertypes: 1 (Groupe de fiches), 2 (Fiche), 3 (Dossier), 4 (Page), 5 (Publication), 6 (Workspace), 7 (Article), 8 (Variation de produit)","example":[1,2],"items":{"type":"integer","enum":[1,2,3,4,5,6,7,8]}},"status_id":{"type":"array","description":"List of asset status IDs. Use POST /api/v3/permissions/statuses/list with class_id to get available statuses.","example":[1287,1288],"items":{"type":"integer"}},"creausers":{"type":"array","description":"List of user IDs who created assets. Use POST /api/v3/permissions/groups/list to get user groups.","example":[1485,1535],"items":{"type":"integer"}},"users":{"type":"array","description":"List of user IDs who last modified assets. Use POST /api/v3/permissions/groups/list to get user groups.","example":[1485,1535],"items":{"type":"integer"}},"workflow_step_id":{"type":"integer","description":"Workflow step ID. Use POST /api/v3/workflows/list/repository/ with class_id to get workflows and their steps.","example":10},"creatime":{"type":"string","description":"Minimum creation date of the asset (ISO 8601 format). Used to filter assets created from this date.","example":"2024-12-17T10:30:00Z"},"creatimeend":{"type":"string","description":"Maximum creation date of the asset (ISO 8601 format). Used to filter assets created up to this date.","example":"2024-12-17T23:59:59Z"},"time":{"type":"string","description":"Minimum update date of the asset (ISO 8601 format). Used to filter assets updated from this date.","example":"2024-12-17T10:30:00Z"},"timeend":{"type":"string","description":"Maximum update date of the asset (ISO 8601 format). Used to filter assets updated up to this date.","example":"2024-12-17T23:59:59Z"},"search_find":{"type":"string","description":"Quick search text. Searches across indexed attributes for matching content.","example":"My product label"},"split_find":{"type":"string","description":"Fast search mode: \"all_words\" (all words must be present), \"each_word\" (any word matches), \"exact_expression\" (exact phrase match).","enum":["all_words","each_word","exact_expression"],"example":"each_word"}}},"format":{"type":"string","description":"JSON format: \"simple\" (flat attribute list) or \"composed\" (recursive structure). Default: simple.","enum":["simple","composed"],"example":"composed"}},"required":["class_id","mapping_id","num_page","results_per_page"]}}}}}},"/api/v3/export/easycatalog/":{"post":{"tags":["export"],"summary":"Export for EasyCatalog InDesign","description":"## Description\n\nGenerates InDesign-compatible export for EasyCatalog plugin. Returns formatted data for print catalog production. Supports column mapping discovery, first result preview, and thematiques listing.\n\n## Parameters\n\n| Parameter Name            | Description                                |\n|---------------------------|--------------------------------------------|\n| class_id                  | Class ID                                   |\n| node_id                   | Node ID                                    |\n| action                    | Action : export (read cached data), columns_mapping (list of mapping columns), first_result (first export result) or get_themes (list of thematiques for the project) |\n| mapping_id  (optional)    | Mapping ID                                 |\n| version_id  (optional)    | Version ID                                 |\n| page_start     (optional) | Start page number                          |\n| page_end       (optional) | End page number                            |\n| thematique_id  (optional) | Thematique ID (mutually exclusive with page_start/page_end) |\n","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Export response","content":{"application/json":{"schema":{"oneOf":[{"type":"object","title":"Success Response","properties":{"status_code":{"type":"integer","example":1,"description":"Status code (1 = success)"},"status_message":{"type":"string","example":"","description":"Status message"},"result":{"type":"object","properties":{"results_total":{"type":"integer","example":15,"description":"Number of items"},"items":{"type":"array","items":{"type":"object"},"example":[{"Id Fiche":"651165","Id Node":"884168","Désignation produit":"Product 1"},{"Id Fiche":"651166","Id Node":"884172","Désignation produit":"Product 2"}]}},"required":["results_total","items"],"description":"Generated content"}},"required":["status_code","status_message","result"]},{"type":"object","title":"Error Response","properties":{"status_code":{"type":"integer","example":2,"description":"Status code (997 = You cannot access this project, 2 = Node does not exist or has been deleted / Project not found / ...)"},"status_message":{"type":"string","example":"Project not found","description":"Error message"},"result":{"type":"array","items":{"type":"object"},"example":[],"description":"Empty array on error"}},"required":["status_code","status_message","result"]}]}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"class_id":{"type":"integer","description":"Library ID. Use POST /api/v3/administration/classes/list to get available libraries.","example":4},"node_id":{"type":"integer","description":"Publication project node ID. Use POST /api/v3/publishing/list with class_id to find publication projects and get their node_id.","example":4350},"action":{"type":"string","description":"Read-only endpoint. Possible actions : \"export\" (direct read of `export_cache_lines` for the matching flow (class, project, mapping, versions) — no batchExport, no file generated, no DB write ; page_start/end and thematique_id filters applied in SQL on contextual_path ; returns status_code=3 if cache is not ready), \"columns_mapping\" (cache-only lookup — returns 1 line so the consumer can infer mapping columns from its keys ; same cache requirement, returns status_code=3 if not ready), \"first_result\" (cache-only lookup — returns the 1st cached line as preview ; same cache requirement), \"get_themes\" (list of thematiques for the project). Cache population/refresh is internal (cf. publication home buttons \"Lancer\" / \"Régénérer\") — not exposed via this API.","enum":["export","columns_mapping","first_result","get_themes"],"example":"export"},"mapping_id":{"type":"integer","description":"Mapping ID. Use POST /api/v3/mappings/list/ with class_id to discover available mappings for a given class.","example":23},"version_id":{"type":"string","description":"Version selector. Accepts 4 formats : a single version id (\"1\"), a comma-separated list of version ids (\"1,2,3\"), a single lang code (\"fr\"), or a comma-separated list of lang codes (\"fr,en,es\"). Mixed format (id + lang code) is rejected. Lang codes are resolved against all active versions matching that code_lang. Use POST /api/v3/administration/versions/list with class_id to get available versions.","example":"1,2,3"},"page_start":{"type":"integer","description":"Start page number to filter export. Can be used alone (single page) or with page_end (interval). Mutually exclusive with thematique_id.","example":1},"page_end":{"type":"integer","description":"End page number to filter export. Must be used with page_start. Mutually exclusive with thematique_id.","example":10},"thematique_id":{"type":"integer","description":"Thematique (group) ID to filter export by pages belonging to this thematique. Mutually exclusive with page_start/page_end. Use action \"get_themes\" to retrieve available thematiques.","example":10}},"required":["class_id","node_id","action"]}}}}}},"/api/v3/export/get-file/":{"post":{"tags":["export"],"summary":"Get export file by queue ID","description":"## Purpose\n\nReturns file information (name, size, URL) for a completed export using the queue_id.\n","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Export file","content":{"application/json":{"schema":{"oneOf":[{"type":"object","title":"Success Response","properties":{"status_code":{"type":"integer","example":1,"description":"Status code (1 = success)"},"status_message":{"type":"string","example":"","description":"Status message"},"result":{"type":"object","properties":{"file":{"type":"string","example":"export_20250901_120000.csv","description":"File name"},"extension":{"type":"string","example":"csv","description":"File extension"},"size":{"type":"integer","example":10000,"description":"File size (in bytes)"},"file_url":{"type":"string","example":"https://my-afineo.com/gallery/global/dl/files/export_20250901_120000.csv","description":"File url"}},"required":["file","extension","size","file_url"],"description":"Generated file information"}},"required":["status_code","status_message","result"]},{"type":"object","title":"Error Response","properties":{"status_code":{"type":"integer","example":3,"description":"Status code (2 = Parameters error, 3 = No file found / Export is running / ...)"},"status_message":{"type":"string","example":"No file found","description":"Error message"},"result":{"type":"array","items":{"type":"object"},"example":[],"description":"Empty array on error"}},"required":["status_code","status_message","result"]}]}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"queue_id":{"type":"integer","description":"Queue ID returned by export/jobs-by-mapping endpoints. Use this to retrieve the generated export file after async processing completes. Workflow: 1) Call jobs-by-mapping → get queue_id, 2) Poll queues/get until status=\"finished\", 3) Call this endpoint to download.","example":50}},"required":["queue_id"]}}}}}},"/api/v3/export/jobs-by-mapping/node/":{"post":{"tags":["export"],"summary":"Async export project node to file","description":"## Purpose\n\nGenerates file export from project-contextualized data (CSV/XLS/XLSX/TXT/XML/JSON). Returns queue_id for async processing.\n","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"File export response","content":{"application/json":{"schema":{"oneOf":[{"type":"object","title":"Success Response","properties":{"status_code":{"type":"integer","example":1,"description":"Status code (1 = success)"},"status_message":{"type":"string","example":"","description":"Status message"},"result":{"type":"object","properties":{"queue_id":{"type":"integer","example":47593,"description":"Queue ID for async file retrieval via export/get-file"}},"required":["queue_id"],"description":"Queue information"}},"required":["status_code","status_message","result"]},{"type":"object","title":"Error Response","properties":{"status_code":{"type":"integer","example":2,"description":"Status code (2 = error)"},"status_message":{"type":"string","example":"Export error","description":"Error message"},"result":{"type":"array","items":{"type":"object"},"example":[],"description":"Empty array on error"}},"required":["status_code","status_message","result"]}]}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"class_id":{"type":"integer","description":"Library ID. Use POST /api/v3/administration/classes/list to get available libraries.","example":4},"parent_id":{"type":"integer","description":"Parent node ID in project. Use POST /api/v3/get-asset/by-search/node to find project nodes.","example":4350},"mapping_id":{"type":"integer","description":"Mapping ID. Use POST /api/v3/mappings/list/ with class_id to discover available mappings for a given class.","example":23},"version_id":{"type":"integer","description":"Version ID. Use POST /api/v3/administration/versions/list with class_id to get available versions.","example":1},"exclude_inherited_values":{"type":"boolean","description":"If it is true, only the direct values of the asset are exported (excludes values that have not been filled directly in the asset : values inherited from a parent, or from the repository in the case of a contextual asset, or calculated values)","example":true},"research":{"type":"array","description":"Array of attribute filters. Each filter has attribute_id, operator, value, and optional link. IMPORTANT: When using \"research\", \"filters.types_id\" or \"filters.supertypes_id\" must also be provided. (Array of objects - see example for structure)","example":[{"attribute_id":1234,"operator":"contains","value":"Prefix_"},{"link":"or","attribute_id":2465,"operator":"contains","value":"Prefix_"}],"items":{"type":"object","properties":{"attribute_id":{"type":"integer","description":"Attribute ID. Use POST /api/v3/attributes/list with class_id to get available attributes.","example":231},"operator":{"type":"string","description":"Search operator: equal/notequal (exact match), contains/notcontains (partial), startby/endby (prefix/suffix), isnull/isnotnull (empty check), greater/atleast/lesser/nomore (numeric), between (range).","enum":["equal","notequal","contains","notcontains","startby","endby","notstartby","notendby","isnull","isnotnull","greater","atleast","lesser","nomore","between","isinlist","isnotinlist"],"example":"between"},"value":{"type":"string","description":"Value (only if operator is not \"isnull\" and \"isnotnull\") **⚠️ Required when:** `operator` = `equal` | `notequal` | `contains` | `notcontains` | `startby` | `endby` | `notstartby` | `notendby` | `greater` | `atleast` | `lesser` | `nomore` | `between` | `isinlist` | `isnotinlist`","example":"12345","x-conditional-required":{"operator":["equal","notequal","contains","notcontains","startby","endby","notstartby","notendby","greater","atleast","lesser","nomore","between","isinlist","isnotinlist"]}},"value2":{"type":"string","description":"Second value for range search. Required only when operator is \"between\" **⚠️ Required when:** `operator` = `between`","example":"12346","x-conditional-required":{"operator":["between"]}},"link":{"type":"string","description":"Logical link between filters: \"and\" (all conditions must match) or \"or\" (any condition matches). Default: \"and\".","enum":["and","or"],"example":"and"}},"required":["attribute_id","operator"],"title":"Item"}},"filters":{"type":"object","description":"Filter object with types_id, supertypes_id, status_id, creausers, users, workflow_step_id, date filters. IMPORTANT: When using \"research\" or \"filters\", at least \"types_id\" or \"supertypes_id\" must be provided.","example":{"supertypes_id":[2],"types_id":[257,258],"time":"2024-12-17T10:30:00Z","workflow_step_id":10},"properties":{"types_id":{"type":"array","description":"List of asset type IDs. Required when using \"research\" or \"filters\" (unless supertypes_id is provided). Use POST /api/v3/types/list with class_id to get available types.","example":[257,258],"items":{"type":"integer"}},"supertypes_id":{"type":"array","description":"List of supertype IDs (parent category of asset types). All child types of these supertypes will be included. Required when using \"research\" or \"filters\" (unless types_id is provided). Can be combined with types_id. Available supertypes: 1 (Groupe de fiches), 2 (Fiche), 3 (Dossier), 4 (Page), 5 (Publication), 6 (Workspace), 7 (Article), 8 (Variation de produit)","example":[1,2],"items":{"type":"integer","enum":[1,2,3,4,5,6,7,8]}},"status_id":{"type":"array","description":"List of asset status IDs. Use POST /api/v3/permissions/statuses/list with class_id to get available statuses.","example":[1287,1288],"items":{"type":"integer"}},"creausers":{"type":"array","description":"List of user IDs who created assets. Use POST /api/v3/permissions/groups/list to get user groups.","example":[1485,1535],"items":{"type":"integer"}},"users":{"type":"array","description":"List of user IDs who last modified assets. Use POST /api/v3/permissions/groups/list to get user groups.","example":[1485,1535],"items":{"type":"integer"}},"workflow_step_id":{"type":"integer","description":"Workflow step ID. Use POST /api/v3/workflows/list/node/ with project_node_id and class_id to get workflows and their steps.","example":10},"creatime":{"type":"string","description":"Minimum creation date of the asset (ISO 8601 format). Used to filter assets created from this date","example":"2024-12-17T10:30:00Z"},"creatimeend":{"type":"string","description":"Maximum creation date of the asset (ISO 8601 format). Used to filter assets created up to this date","example":"2024-12-17T23:59:59Z"},"time":{"type":"string","description":"Minimum update date of the asset (ISO 8601 format). Used to filter assets updated from this date","example":"2024-12-17T10:30:00+02:00"},"timeend":{"type":"string","description":"Maximum update date of the asset (ISO 8601 format). Used to filter assets updated up to this date","example":"2024-12-17T23:59:59+02:00"},"search_find":{"type":"string","description":"Quick search text. Searches across indexed attributes for matching content.","example":"My product label"},"split_find":{"type":"string","description":"Fast search mode: \"all_words\" (all words must be present), \"each_word\" (any word matches), \"exact_expression\" (exact phrase match).","enum":["all_words","each_word","exact_expression"],"example":"each_word"},"alias":{"type":"string","description":"Alias filter: \"only_aliases\" (return only alias nodes), \"except_aliases\" (exclude alias nodes). Default: include all.","enum":["only_aliases","except_aliases"],"example":"only_aliases"}}},"format":{"type":"string","description":"Export file format: \"csv\", \"xlsx\", \"xml\", \"json\". Default: csv.","enum":["csv","xls","xlsx","txt","xml","json","json_composed"],"example":"xlsx"}},"required":["class_id","parent_id","mapping_id"]}}}}}},"/api/v3/export/jobs-by-mapping/repository/":{"post":{"tags":["export"],"summary":"Async export repository to file","description":"## Purpose\n\nGenerates file export from repository (CSV/XLS/XLSX/TXT/XML/JSON). Returns queue_id for async processing.\n\n## Workflow\n\nUse `export/get-file` with queue_id to download completed file.\n","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"File export response","content":{"application/json":{"schema":{"oneOf":[{"type":"object","title":"Success Response","properties":{"status_code":{"type":"integer","example":1,"description":"Status code (1 = success)"},"status_message":{"type":"string","example":"","description":"Status message"},"result":{"type":"object","properties":{"queue_id":{"type":"integer","example":47593,"description":"Queue ID for async file retrieval via export/get-file"}},"required":["queue_id"],"description":"Queue information"}},"required":["status_code","status_message","result"]},{"type":"object","title":"Error Response","properties":{"status_code":{"type":"integer","example":2,"description":"Status code (2 = error)"},"status_message":{"type":"string","example":"Export error","description":"Error message"},"result":{"type":"array","items":{"type":"object"},"example":[],"description":"Empty array on error"}},"required":["status_code","status_message","result"]}]}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"class_id":{"type":"integer","description":"Library ID. Use POST /api/v3/administration/classes/list to get available libraries.","example":4},"parent_id":{"type":"integer","description":"Parent asset ID in repository. Use POST /api/v3/get-asset/by-search/repository to find assets. Set to 0 for repository root.","example":4350},"mapping_id":{"type":"integer","description":"Mapping ID. Use POST /api/v3/mappings/list/ with class_id to discover available mappings for a given class.","example":23},"version_id":{"type":"integer","description":"Version ID. Use POST /api/v3/administration/versions/list with class_id to get available versions.","example":1},"exclude_inherited_values":{"type":"boolean","description":"If it is true, only the direct values of the asset are exported (excludes values that have not been filled directly in the asset : values inherited from a parent, or from the repository in the case of a contextual asset, or calculated values)","example":true},"research":{"type":"array","description":"Array of attribute filters. Each filter has attribute_id, operator, value, and optional link. IMPORTANT: When using \"research\", \"filters.types_id\" or \"filters.supertypes_id\" must also be provided. (Array of objects - see example for structure)","example":[{"attribute_id":1234,"operator":"contains","value":"Prefix_"},{"link":"or","attribute_id":2465,"operator":"contains","value":"Prefix_"}],"items":{"type":"object","properties":{"attribute_id":{"type":"integer","description":"Attribute ID. Use POST /api/v3/attributes/list with class_id to get available attributes.","example":231},"operator":{"type":"string","description":"Search operator: equal/notequal (exact match), contains/notcontains (partial), startby/endby (prefix/suffix), isnull/isnotnull (empty check), greater/atleast/lesser/nomore (numeric), between (range).","enum":["equal","notequal","contains","notcontains","startby","endby","notstartby","notendby","isnull","isnotnull","greater","atleast","lesser","nomore","between","isinlist","isnotinlist"],"example":"between"},"value":{"type":"string","description":"Value (only if operator is not \"isnull\" and \"isnotnull\") **⚠️ Required when:** `operator` = `equal` | `notequal` | `contains` | `notcontains` | `startby` | `endby` | `notstartby` | `notendby` | `greater` | `atleast` | `lesser` | `nomore` | `between` | `isinlist` | `isnotinlist`","example":"12345","x-conditional-required":{"operator":["equal","notequal","contains","notcontains","startby","endby","notstartby","notendby","greater","atleast","lesser","nomore","between","isinlist","isnotinlist"]}},"value2":{"type":"string","description":"Second value for range search. Required only when operator is \"between\" **⚠️ Required when:** `operator` = `between`","example":"12346","x-conditional-required":{"operator":["between"]}},"link":{"type":"string","description":"Logical link between filters: \"and\" (all conditions must match) or \"or\" (any condition matches). Default: \"and\".","enum":["and","or"],"example":"and"}},"required":["attribute_id","operator"],"title":"Item"}},"filters":{"type":"object","description":"Filter object with types_id, supertypes_id, status_id, creausers, users, workflow_step_id, date filters. IMPORTANT: When using \"research\" or \"filters\", at least \"types_id\" or \"supertypes_id\" must be provided.","example":{"supertypes_id":[2],"types_id":[257,258],"time":"2024-12-17T10:30:00Z","workflow_step_id":10},"properties":{"types_id":{"type":"array","description":"List of asset type IDs. Required when using \"research\" or \"filters\" (unless supertypes_id is provided). Use POST /api/v3/types/list with class_id to get available types.","example":[257,258],"items":{"type":"integer"}},"supertypes_id":{"type":"array","description":"List of supertype IDs (parent category of asset types). All child types of these supertypes will be included. Required when using \"research\" or \"filters\" (unless types_id is provided). Can be combined with types_id. Available supertypes: 1 (Groupe de fiches), 2 (Fiche), 3 (Dossier), 4 (Page), 5 (Publication), 6 (Workspace), 7 (Article), 8 (Variation de produit)","example":[1,2],"items":{"type":"integer","enum":[1,2,3,4,5,6,7,8]}},"status_id":{"type":"array","description":"List of asset status IDs. Use POST /api/v3/permissions/statuses/list with class_id to get available statuses.","example":[1287,1288],"items":{"type":"integer"}},"creausers":{"type":"array","description":"List of user IDs who created assets. Use POST /api/v3/permissions/groups/list to get user groups.","example":[1485,1535],"items":{"type":"integer"}},"users":{"type":"array","description":"List of user IDs who last modified assets. Use POST /api/v3/permissions/groups/list to get user groups.","example":[1485,1535],"items":{"type":"integer"}},"workflow_step_id":{"type":"integer","description":"Workflow step ID. Use POST /api/v3/workflows/list/repository/ with class_id to get workflows and their steps.","example":10},"creatime":{"type":"string","description":"Minimum creation date of the asset (ISO 8601 format). Used to filter assets created from this date","example":"2024-12-17T10:30:00Z"},"creatimeend":{"type":"string","description":"Maximum creation date of the asset (ISO 8601 format). Used to filter assets created up to this date","example":"2024-12-17T23:59:59Z"},"time":{"type":"string","description":"Minimum update date of the asset (ISO 8601 format). Used to filter assets updated from this date","example":"2024-12-17T10:30:00+02:00"},"timeend":{"type":"string","description":"Maximum update date of the asset (ISO 8601 format). Used to filter assets updated up to this date","example":"2024-12-17T23:59:59+02:00"},"search_find":{"type":"string","description":"Quick search text. Searches across indexed attributes for matching content.","example":"My product label"},"split_find":{"type":"string","description":"Fast search mode: \"all_words\" (all words must be present), \"each_word\" (any word matches), \"exact_expression\" (exact phrase match).","enum":["all_words","each_word","exact_expression"],"example":"each_word"}}},"format":{"type":"string","description":"Export file format: \"csv\", \"xlsx\", \"xml\", \"json\". Default: csv.","enum":["csv","xls","xlsx","txt","xml","json","json_composed"],"example":"xlsx"}},"required":["class_id","mapping_id"]}}}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"JWT token generated with /api/v3/token/get/"}}}}