{"components":{"callbacks":{"WebhookCallback":{"{$request.body#/callback.url}":{"post":{"parameters":[{"description":"The HMAC-SHA-256 signature payload\n","in":"header","name":"Afnor-Signature","schema":{"description":"Base 64 encoded string","format":"byte","type":"string"}},{"description":"The timestamp is an epoch time in seconds \nEncoded as a 64 bit integer to avoid the limitation reached in 2038\n","in":"header","name":"Afnor-Signature-Timestamp","required":true,"schema":{"format":"int64","type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Flow"}}},"required":true},"responses":{"200":{"$ref":"#/components/responses/Ok200EmptyResponse"},"400":{"$ref":"#/components/responses/Error400Response"},"401":{"$ref":"#/components/responses/Error401Response"},"403":{"$ref":"#/components/responses/Error403Response"},"500":{"$ref":"#/components/responses/Error500Response"}}}}}},"parameters":{"OrganizationIdHeaderParam":{"description":"The organization that is aimed in a multi tenancy context","in":"header","name":"Organization-Id","schema":{"type":"string"}},"RequestIdHeader":{"description":"Header parameter used to correlate logs from several components","in":"header","name":"Request-Id","schema":{"format":"uuid","type":"string"}},"WebhookUidPathParam":{"description":"The webhook unique ID","in":"path","name":"webhookUid","required":true,"schema":{"$ref":"#/components/schemas/WebhookId"}}},"requestBodies":{"FlowPostRequest":{"content":{"multipart/form-data":{"encoding":{"file":{"contentType":"application/pdf, application/xml"},"flowInfo":{"contentType":"application/json"}},"schema":{"properties":{"file":{"description":"Flow file: Max size = 100 MB","format":"binary","type":"string"},"flowInfo":{"$ref":"#/components/schemas/FlowInfo"}},"required":["file","flowInfo"],"type":"object"}}}},"FlowSearchRequest":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchFlowParams"}}}},"WebhookPostRequest":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookParams"}}},"description":"Create a webhook"}},"responses":{"Error400Response":{"content":{"application/json":{"example":{"errorCode":"MISSING_REQUIRED_FIELD","errorMessage":"Invalid request format"},"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Error 400 : Bad request."},"Error401Response":{"content":{"application/json":{"example":{"errorCode":"MISSING_TOKEN","errorMessage":null},"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Error 401 : Authentication error."},"Error403Response":{"content":{"application/json":{"example":{"errorCode":"FORBIDDEN_ACCESS","errorMessage":null},"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Error 403 : Forbidden."},"Error404Response":{"content":{"application/json":{"example":{"errorCode":"MISSING_RESOURCE","errorMessage":"Requested resource is Not Found"},"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Error 404 : Resource Not Found."},"Error413Response":{"content":{"application/json":{"example":{"errorCode":"FILE_SIZE_EXCEEDED","errorMessage":"Provided file is too big"},"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Error 413 : Payload Too Large."},"Error422Response":{"content":{"application/json":{"example":{"errorCode":"UNPROCESSABLE_ENTITY","errorMessage":"Entity consistency error"},"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Error 422 : Unprocessable entity."},"Error429Response":{"content":{"application/json":{"example":{"errorCode":"TOO_MANY_REQUESTS","errorMessage":"The client emitted too many requests"},"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Error 429 : Too many requests."},"Error500Response":{"content":{"application/json":{"example":{"errorCode":"INTERNAL_ERROR","errorMessage":null},"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Error 500 : Server Internal Error."},"Error503Response":{"content":{"application/json":{"example":{"errorCode":"RESOURCE_ERROR","errorMessage":null},"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Error 503 : Unavailable Resource."},"FlowGetResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Flow"}},"application/octet-stream":{}},"description":"OK - Response message once the flow has been downloaded.","headers":{"Content-Disposition":{"description":"Header specifying attached file name","schema":{"pattern":"attachment;filename=*","type":"string"}}}},"FlowPostResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FullFlowInfo"}}},"description":"OK - Response message once the flow has been uploaded.\n"},"FlowSearchResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchFlowContent"}}},"description":"OK - Response message when returning the results of a search request.\n"},"Ok200EmptyResponse":{"description":"OK - Operation succeeded"},"Ok204EmptyResponse":{"description":"No Content - No content expected"},"WebhookLightResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookIdParam"}}},"description":"OK - Webhook Created"},"WebhookListResponse":{"content":{"application/json":{"schema":{"properties":{"count":{"type":"integer"},"webhooks":{"items":{"$ref":"#/components/schemas/Webhook"},"type":"array"}},"required":["count","webhookIds"],"type":"object"}}},"description":"OK - Webhook List Response"}},"schemas":{"Acknowledgement":{"properties":{"details":{"$ref":"#/components/schemas/AcknowledgementDetails"},"status":{"$ref":"#/components/schemas/FlowAckStatus"}},"required":["status"],"type":"object"},"AcknowledgementDetail":{"properties":{"item":{"description":"Item on which the error refers","type":"string"},"level":{"enum":["Error","Warning"],"type":"string"},"reasonCode":{"$ref":"#/components/schemas/ReasonCode"},"reasonMessage":{"type":"string"}},"required":["item","level","reasonCode","reasonMessage"],"type":"object"},"AcknowledgementDetails":{"items":{"$ref":"#/components/schemas/AcknowledgementDetail"},"minItems":1,"type":"array"},"CoreFlowInfo":{"description":"Core schema to build FlowInfo, FullFlowInfo, Flow schemas","properties":{"flowProfile":{"$ref":"#/components/schemas/FlowProfile"},"flowSyntax":{"$ref":"#/components/schemas/FlowSyntax"},"name":{"description":"Name of the file","maxLength":255,"type":"string"},"processingRule":{"$ref":"#/components/schemas/ProcessingRule"},"trackingId":{"allOf":[{"$ref":"#/components/schemas/NotOnlyUuid"}],"description":"The tracking id is an external identifier and is used to track the flow by the sender"}},"required":["flowSyntax","name"],"type":"object"},"Cursor":{"description":"Pagination, Opaque cursor for pagination management, acts as a bookmark","example":"eyJjcmVhdGVkX2F0IjoiMjAyNS0wNi0wOVQxMDowMDowMFoiLCJpZCI6MTIzNH0=","type":"string"},"Error":{"description":"Error code","properties":{"details":{"example":"Error detailed description","type":"string"},"errorCode":{"description":"Short numerical or alphanumerical code that identifies precisely a unique error.","example":"MISSING_REQUIRED_FIELD","type":"string"},"errorMessage":{"description":"Contains information on the error. Not intended to be displayed to an end user. For security reasons, a tradeoff between clarity & security shall be found.","example":"Invalid request format","type":"string"},"instance":{"example":"/chemin/url-de-reference#instance-du-contexte","format":"uri-reference","type":"string"},"type":{"default":"about:blank","example":"/path/reference-url","format":"uri-reference","type":"string"}},"required":["errorCode"],"type":"object"},"Flow":{"allOf":[{"$ref":"#/components/schemas/CoreFlowInfo"},{"$ref":"#/components/schemas/FullFlowInfoExtension"},{"$ref":"#/components/schemas/FlowExtension"}],"description":"The properties of a Flow resource","required":["flowProfile","processingRule"]},"FlowAckStatus":{"description":"- `Ok`: the following checks have passed:\n  - Anti virus\n  - Integrity checks\n  - Technical rules checks\n  - Unicity checks\n- `Error`: one of the previous test has failed\n- `Pending` : the flow is not yet integrated\n","enum":["Pending","Ok","Error"],"type":"string"},"FlowDirection":{"description":"Direction of the flow:\n  - `In`:  Incoming flow, from the PDP to the OD\n  - `Out`: Outgoing flow, from the OD to the PDP\n","enum":["In","Out"],"example":"Out","type":"string"},"FlowExtension":{"description":"Extension schema to build Flow schema","properties":{"acknowledgement":{"$ref":"#/components/schemas/Acknowledgement"},"flowDirection":{"$ref":"#/components/schemas/FlowDirection"},"flowType":{"$ref":"#/components/schemas/FlowType"},"processingRuleSource":{"description":"Says whether the processing rule has been computed or the processing rule was an input parameter","enum":["Input","Computed"],"type":"string"},"updatedAt":{"description":"The last update date and time of the flow. When the flow is submitted updatedAt is equal to submittedAt.\nWhen the flow acknowledgment status is changed updatedAt date and time is updated.\n","format":"date-time","type":"string"}},"required":["acknowledgement","flowDirection","flowType","processingRuleSource","updatedAt"],"type":"object"},"FlowInfo":{"allOf":[{"$ref":"#/components/schemas/CoreFlowInfo"},{"$ref":"#/components/schemas/FlowInfoExtension"}],"description":"Signaling of the flow"},"FlowInfoExtension":{"description":"Extension to build the FlowInfo","properties":{"sha256":{"description":"The sha256 is the fingerprint of the attached file:\n- if provided in the request: it should be checked once received\n- if not provided in the request: it may be computed and returned in the response\n","format":"byte","pattern":"^[a-f0-9]{64}$","type":"string"}},"type":"object"},"FlowProfile":{"enum":["Basic","CIUS","Extended-CTC-FR","Undefined"],"type":"string"},"FlowSyntax":{"description":"Syntax of the original file belonging to a flow","enum":["CII","UBL","Factur-X","CDAR","FRR"],"example":"CII","type":"string"},"FlowType":{"description":"- `CustomerInvoice`: a non-self-billed outgoing invoice or a self-billed incoming invoice\n- `SupplierInvoice`: a non-self-billed incoming invoice or self-billed outgoing invoice\n- `CustomerInvoiceLC`: a lifecycle (CDAR) related to a customer invoice\n- `SupplierInvoiceLC`: a lifecycle (CDAR) related to supplier invoice\n- `StateCustomerInvoiceLC`: a customer invoice LC sent to DFH\n- `StateSupplierInvoiceLC`: a supplier invoice LC sent to DFH\n- `AggregatedCustomerTransactionReport` : a transaction e-reporting flow containing aggregated B2C sales (FRR 10.3)\n- `UnitaryCustomerTransactionReport`: a transaction e-reporting flow containing international B2B sales or a B2C transaction flow reported individually (FRR 10.1)\n- `AggregatedCustomerPaymentReport` : an e-reporting of collections flow containing collections linked to B2C sales (FRR 10.4)\n- `UnitaryCustomerPaymentReport` : an e-reporting of collections flow containing collections linked to unit international B2B sales or B2C sales (FRR 10.2)\n- `UnitarySupplierTransactionReport`: a transaction e-reporting flow containing international B2B purchases (FRR 10.1)\n- `MultiFlowReport`: an e-reporting flow which contains at least 2 different flow types (FRR 10)\n- `StateCustomerInvoice` : a reporting flow 1 sent to DFH related to an invoice of type ‘CustomerInvoice’\n- `StateSupplierInvoice` : a reporting flow 1 sent to DFH related to an invoice of type ‘SupplierInvoice’ for self-billing\n- `StateTransactionReport` : a transaction e-reporting flow 10.1 or 10.3 sent to the DFH\n- `StateTransactionReportLC` : a lifecycle for a StateTransactionReport flow\n- `StatePaymentReport` : a payment e-reporting flow 10.2 or 10.4 sent to DFH\n- `StatePaymentReportLC` : a lifecycle for a StatePaymentReport flow\n- `Undefined`            : Not yet defined when in Pending state or unable to define when in Error state\n","enum":["CustomerInvoice","SupplierInvoice","CustomerInvoiceLC","SupplierInvoiceLC","StateCustomerInvoiceLC","StateSupplierInvoiceLC","AggregatedCustomerTransactionReport","UnitaryCustomerTransactionReport","AggregatedCustomerPaymentReport","UnitaryCustomerPaymentReport","UnitarySupplierTransactionReport","MultiFlowReport","StateCustomerInvoice","StateSupplierInvoice","StateTransactionReport","StateTransactionReportLC","StatePaymentReport","StatePaymentReportLC","Undefined"],"example":"SupplierInvoice","type":"string"},"FullFlowInfo":{"allOf":[{"$ref":"#/components/schemas/FullFlowInfoExtension"},{"$ref":"#/components/schemas/FlowInfo"}],"description":"Identified Flow info: flow info + id + timestamp"},"FullFlowInfoExtension":{"description":"Extension schema to build FullFlowInfo, Flow schemas","properties":{"flowId":{"$ref":"#/components/schemas/NotOnlyUuid"},"submittedAt":{"description":"The flow submission date and time (the date and time when the flow was created on the system)\nThis property should be used by the API consumer as a time reference to avoid clock synchronization issues\n","format":"date-time","type":"string"}},"required":["flowId","submittedAt"],"type":"object"},"Limit":{"default":25,"description":"Pagination, Maximum number of results that may be returned","maximum":100,"type":"integer"},"NotOnlyUuid":{"description":"Unique identifier supporting UUID but not only, for flexibility purpose","maxLength":64,"type":"string"},"ProcessingRule":{"description":"- B2B                 : e-invoicing\n- B2BInt              : International B2B e-reporting\n- B2C                 : B2C e-reporting\n- B2G                 : e-invoicing for B2G sales\n- B2GInt\n- OutOfScope          : Out of scope (not regulated flow)\n- B2GOutOfScope\n- ArchiveOnly         : Archive only, no transmission\n- NotApplicable       : Not Applicable\n- Undefined           : Not yet defined when in Pending state or unable to define when in Error state\n","enum":["B2B","B2BInt","B2C","B2G","B2GInt","OutOfScope","B2GOutOfScope","ArchiveOnly","NotApplicable","Undefined"],"type":"string"},"ReasonCode":{"description":"A predefined set of reason code values + ability to extend this set","oneOf":[{"$ref":"#/components/schemas/ReasonCodeEnum"},{"type":"string"}]},"ReasonCodeEnum":{"description":"- `EmptyAttachement`      : One or more attachments are empty. (ie IRR_VID_PJ)\n- `AttachmentTypeError`   : The type and/or extension of one or more attachments is not compliant. (ie IRR_EXT_DOC)\n- `EmptyFlow`             : The binary flow is empty. (ie IRR_VID_F)\n- `OtherTechnicalError`   : Other technical error. (ie AUTRE)\n- `InvalidSchema`         : Invalid XML schema. (ie IRR_SYNTAX)\n- `FileSizeExceeded`      : File size limit reached. (ie IRR_TAILLE_F)\n- `FlowTypeError`         : The flow type and/or extension are not compliant. (ie IRR_TYPE_F)\n- `AlreadyExistingFlow`   : The flow has already been sent and received. (ie N/A)\n- `VirusFound`            : Presence of a virus. (ie IRR_ANTIVIRUS)\n- `ChecksumMismatch`      : Checksum provided is different from computed one\n- `InvoiceLCInvalidStatus`: One or more statuses are inconsistent\n- `InvoiceLCStatusError`  : One or more statuses are incorrect or not allowed\n- `InvoiceLCRuleError`    : One or more rules are not matched\n- `InvoiceLCAccessDenied` : One of the request is not authorized and requests permissions\n- `InvoiceLCAmountError`  : One or more amounts are not consistent in regards to the VAT\n","enum":["EmptyAttachement","AttachmentTypeError","EmptyFlow","OtherTechnicalError","InvalidSchema","FileSizeExceeded","FlowTypeError","AlreadyExistingFlow","VirusFound","ChecksumMismatch","InvoiceLCInvalidStatus","InvoiceLCStatusError","InvoiceLCRuleError","InvoiceLCAccessDenied","InvoiceLCAmountError"],"type":"string"},"SearchFlowContent":{"description":"A set of flows matching criterias, provided into the request","properties":{"filters":{"$ref":"#/components/schemas/SearchFlowFilters"},"limit":{"$ref":"#/components/schemas/Limit"},"nextCursor":{"allOf":[{"$ref":"#/components/schemas/Cursor"}],"description":"Pagination management:\n- If present, says where to start for next page, set nextCursor as the cursor in the next request\n- If omitted, says that pagination is finished\n"},"results":{"items":{"$ref":"#/components/schemas/Flow"},"type":"array"}},"type":"object"},"SearchFlowFilters":{"description":"Filtering criteria, at least one is required","properties":{"ackStatus":{"$ref":"#/components/schemas/FlowAckStatus"},"flowDirection":{"items":{"$ref":"#/components/schemas/FlowDirection"},"type":"array"},"flowType":{"items":{"$ref":"#/components/schemas/FlowType"},"type":"array"},"processingRule":{"items":{"$ref":"#/components/schemas/ProcessingRule"},"type":"array"},"trackingId":{"$ref":"#/components/schemas/NotOnlyUuid"},"updatedAfter":{"description":"The comparison with current date is strict : updatedAt > updatedAfter","format":"date-time","type":"string"},"updatedBefore":{"format":"date-time","type":"string"}},"type":"object"},"SearchFlowParams":{"properties":{"cursor":{"allOf":[{"$ref":"#/components/schemas/Cursor"}],"description":"If cursor is provided, then start search starting from that cursor"},"limit":{"$ref":"#/components/schemas/Limit"},"where":{"$ref":"#/components/schemas/SearchFlowFilters"}},"required":["where"],"type":"object"},"Webhook":{"allOf":[{"$ref":"#/components/schemas/WebhookIdParam"},{"$ref":"#/components/schemas/WebhookParams"}]},"WebhookId":{"format":"uuid","type":"string"},"WebhookIdParam":{"properties":{"createdAt":{"format":"date-time","type":"string"},"signingKey":{"format":"byte","type":"string"},"webhookId":{"$ref":"#/components/schemas/WebhookId"}},"type":"object"},"WebhookParams":{"properties":{"ackStatus":{"$ref":"#/components/schemas/FlowAckStatus"},"callbackUrl":{"format":"uri","type":"string"},"flowDirection":{"$ref":"#/components/schemas/FlowDirection"},"flowTypes":{"items":{"$ref":"#/components/schemas/FlowType"},"type":"array"}},"required":["callbackUrl"],"type":"object"}},"securitySchemes":{"BearerAuth":{"description":"Use authorization code to access data of another user after he gives his consent.\nUse client credentials to access your own data (similar to api key).\n\nWhen initiating the Authorization Code Flow, you can pre-fill specific user and company details by appending the following query parameters to the `/oauth2/authorize` endpoint:\n- `login_hint`: Prefills the user's email address.\n- `superpdp_company_number`: Prefills the identification number of the company. Required if `superpdp_company_number_scheme` is provided\n- `superpdp_company_number_scheme`: one of `sandbox`, `fr_siren`, `be_numero_entreprise`. Required if  `superpdp_company_number` is provided","flows":{"authorizationCode":{"authorizationUrl":"/oauth2/authorize","scopes":{},"tokenUrl":"/oauth2/token"},"clientCredentials":{"scopes":{},"tokenUrl":"/oauth2/token"}},"type":"oauth2"}}},"info":{"contact":{"name":"SUPER PDP"},"description":"The __Flow Service API__ allows to:\n  - Upload a flow.\n  - Retrieve information related to a set of flows.\n  - Download a flow given its identifier\n\nThe resources of the API are :\n  - `/flows` : with creation and retrieval methods.\n  - `/flows/webhooks` : creation, update, delete, list\n\nWorflow example:\n  - `POST /flows` : provide the flow information & content\n  - `POST /flows/search` : retrieve flows given multiple criterias.\n  - `GET /flows/{id}` : download a flow based on its id.\n  - `POST /flows/webhooks` : subscribe to a channel of event\n \nHistory:\n  - `1.0.0` : First release\n  - `1.0.1` : Fixes following 2025/04/15 SG5 plenary meeting\n    - Remove AcknowledgementXXX enumerates from FlowType\n    - Acknowledgement is now based upon details (level, item, reason)\n    - Add the attachment number in the flow information\n    - Add query parameters docType & docIndex to aim a specific download\n    - Change pagination method, from cursors to offsets\n  - `1.0.2` : Fixes following 2025/05/06 SG5 plenary meeting\n    - FlowId & TrackingId as not only UUID for more flexibility\n    - Add sha256 fingerprint to allow integrity check\n    - Add trackingId as a filter criteria and in the Flow object\n    - Add full FlowInfo object + submission date in POST response\n    - Add comments\n  - `1.1.0` : Fixes following 2025/05/20 SG5 meeting\n    - Get operation: allows also to return the flow data when docType is set to Metadata\n    - Search operation: flowId is no longer a criteria, prefer too use the Get by Id operation\n    - Remove any reference to any attached document to the flow\n    - Refactor FullFlowInfo schema\n    - FlowType update (FRR 10.*) for reporting\n    - AcknowledgementDetail update to add a message and a code\n    - offset removal, do pagination using updatedAfter\n    - remove 206 status code\n    - Add StateInvoice & associated LC in FlowType enum\n    - Add extensible reason codes related to Life cycle errors\n    - Add ProcessingRule to the flow object & criteria\n    - Add webhooks callback contents\n  - `1.2.0` : \n    - Webhook management, create, update, list, delete, get\n    - Add new flow types: B2G, B2GInt, B2GOutOfScope\n    - Add new client credentials OAuth2 workflow\n    - Optimized FlowInfo/FullFlowInfo/Flow schemas\n    - Add name in Flow schema\n    - Add OAuth2 securityScheme\n    - Add Header parameter Organization-Id to ease delegation\n  - `1.3.0` :\n    - Increase NotOnlyUuid to 64 characters\n    - Update Webhook configuration:\n      - remove processingRule from Metadata\n      - remove any required metadata field (metadat can be empty)\n      - simplify configuration (remove headers, auth & signature block)\n      - enrich URL path flexibility\n    - Added missing required for : processingRule & flowProfile in Flow schema in responses\n    - Add base path and service name as variables in server URL\n    - Remove StateInvoice flow type\n    - Add new flowtypes related to e-reporting flows sent to DFH\n      - StateCustomerInvoice\n      - StateSupplierInvoice\n      - StateTransactionReport\n      - StateTransactionReportLC\n      - StatePaymentReport\n      - StatePaymentReportLC\n    - Use a cursor-based pagination, more efficient than using just dates\n      - cursor in request\n      - nextCursor in response\n    - Add Undefined values for ProfileType, FlowType & ProcessingRule\n      - These 3 properties may not be defined in Pending & Error states\n","title":"AFNOR Flow Service","version":"1.3.0"},"openapi":"3.0.3","paths":{"/v1/flows":{"post":{"description":"Submit a flow. A flow is a single-invoice file, with :\n  - an XML/PDF file with the data of the invoice\n\nThe flow is created with a `flowInfo` object, allowing to qualify the flow.\n  \nA flow can be :\n  - an invoice (CII, UBL, Factur-X,...) \n  - a lifecycle (CDAR) \n  - or a e-reporting file\n","operationId":"createFlow","parameters":[{"description":"Header parameter used to correlate logs from several components","in":"header","name":"Request-Id","schema":{"format":"uuid","type":"string"}},{"description":"The organization that is aimed in a multi tenancy context","in":"header","name":"Organization-Id","schema":{"type":"string"}}],"requestBody":{"$ref":"#/components/requestBodies/FlowPostRequest"},"responses":{"202":{"$ref":"#/components/responses/FlowPostResponse"},"400":{"$ref":"#/components/responses/Error400Response"},"401":{"$ref":"#/components/responses/Error401Response"},"403":{"$ref":"#/components/responses/Error403Response"},"413":{"$ref":"#/components/responses/Error413Response"},"422":{"$ref":"#/components/responses/Error422Response"},"429":{"$ref":"#/components/responses/Error429Response"},"500":{"$ref":"#/components/responses/Error500Response"},"503":{"$ref":"#/components/responses/Error503Response"}},"summary":"Submit a new flow","tags":["Flow"]}},"/v1/flows/search":{"post":{"description":"Retrieves a set of flows matching the provided search criteria:\n  - Need at least one criterion to be specified\n  - Assuming a logical AND when combining criteria\n  - Assuming a logical OR for criteria allowing a list of values\n\nPagination works with 2 different ways:\n  - with dates and the updatedAfter property\n    - the comparison with current date is strict : updatedAt > updatedAfter\n  - with cursors (more secure)\n    - in case of pagination a nextCursor will be returned\n    - next pagination call shall set cursor value to nextCursor value of last call\n","operationId":"searchFlows","parameters":[{"description":"Header parameter used to correlate logs from several components","in":"header","name":"Request-Id","schema":{"format":"uuid","type":"string"}},{"description":"The organization that is aimed in a multi tenancy context","in":"header","name":"Organization-Id","schema":{"type":"string"}}],"requestBody":{"$ref":"#/components/requestBodies/FlowSearchRequest"},"responses":{"200":{"$ref":"#/components/responses/FlowSearchResponse"},"400":{"$ref":"#/components/responses/Error400Response"},"401":{"$ref":"#/components/responses/Error401Response"},"403":{"$ref":"#/components/responses/Error403Response"},"429":{"$ref":"#/components/responses/Error429Response"},"500":{"$ref":"#/components/responses/Error500Response"},"503":{"$ref":"#/components/responses/Error503Response"}},"summary":"Select flows upon criteria","tags":["Flow"]}},"/v1/flows/{flowId}":{"get":{"description":"Download a file related to a given flow:\n  - an invoice\n  - a life cycle\n  - an e-reporting\n","operationId":"getFlow","parameters":[{"description":"Header parameter used to correlate logs from several components","in":"header","name":"Request-Id","schema":{"format":"uuid","type":"string"}},{"description":"The organization that is aimed in a multi tenancy context","in":"header","name":"Organization-Id","schema":{"type":"string"}},{"description":"Flow identifier","in":"path","name":"flowId","required":true,"schema":{"$ref":"#/components/schemas/NotOnlyUuid"}},{"description":"This parameter allows to provide the type of file to be downloaded, can be either one:\n  - Metadata [Default]: provides the flow metadata as a JSON payload, no download\n  - Original: the document that has been initially sent/provided by the emitter\n  - Converted: the document that has been optionally converted by the system\n  - ReadableView: the document that has been optionally generated as the readable file\n","in":"query","name":"docType","schema":{"default":"Metadata","enum":["Metadata","Original","Converted","ReadableView"],"type":"string"}}],"responses":{"200":{"$ref":"#/components/responses/FlowGetResponse"},"400":{"$ref":"#/components/responses/Error400Response"},"401":{"$ref":"#/components/responses/Error401Response"},"403":{"$ref":"#/components/responses/Error403Response"},"404":{"$ref":"#/components/responses/Error404Response"},"429":{"$ref":"#/components/responses/Error429Response"},"500":{"$ref":"#/components/responses/Error500Response"},"503":{"$ref":"#/components/responses/Error503Response"}},"summary":"Download the file of a flow","tags":["Flow"]}},"/v1/healthcheck":{"get":{"operationId":"getHealth","parameters":[{"description":"Header parameter used to correlate logs from several components","in":"header","name":"Request-Id","schema":{"format":"uuid","type":"string"}},{"description":"The organization that is aimed in a multi tenancy context","in":"header","name":"Organization-Id","schema":{"type":"string"}}],"responses":{"200":{"$ref":"#/components/responses/Ok200EmptyResponse"},"500":{"$ref":"#/components/responses/Error500Response"},"503":{"$ref":"#/components/responses/Error503Response"}},"summary":"Check whether the API service is up and running.","tags":["Supervisor"]}},"/v1/webhooks":{},"/v1/webhooks/{webhookUid}":{}},"security":[{"BearerAuth":[]}],"servers":[{"url":"https://api.superpdp.tech/afnor-flow"}],"tags":[{"description":"Flow management","name":"Flow"},{"description":"Service supervision","name":"Supervisor"}]}