{"openapi":"3.0.0","info":{"title":"STAMPEE API","description":"Electronic Registered Delivery Service API for sending messages, managing consents, and handling customer delegations.\n\n## Authentication\nAll endpoints require authentication via API token. LRE messages additionally require mTLS (mutual TLS) authentication.\n\n### API Token Authentication\nInclude your API token in the `X-API-TOKEN` header for all requests.\n\n### mTLS Authentication (for LRE messages)\nLRE messages require client certificate authentication. Your client certificate must be:\n- Registered with your account\n- Valid and not expired\n- Used within 1 year of first use\n\n## Rate Limiting\nAPI requests are rate-limited. Please contact support for current limits.\n\n\nContact Support:\n Name: API Support\n Email: support@stampee.fr","version":"1.0.0"},"servers":[{"url":"https://api.stampee.fr"}],"components":{"securitySchemes":{"apikeyAuth":{"type":"http","scheme":"apikey"}}},"tags":[{"name":"messages"},{"name":"messages > bulk_send"},{"name":"messages > resend"},{"name":"messages > {id}"},{"name":"messages > {id} > evidences"},{"name":"messages > {id} > evidences > {status}"},{"name":"messages > {id} > resend"},{"name":"customers"},{"name":"customers > bulk_store"},{"name":"customers > {id}"},{"name":"customers > {id} > logo"},{"name":"consents"},{"name":"consents > bulkStore"},{"name":"consents > {id}"},{"name":"consents > {id} > remind"}],"paths":{"/messages/bulk_send":{"post":{"tags":["messages > bulk_send"],"summary":"Send messages in bulk","description":"Send electronic registered messages (LRE), Simple Letters (LS), Avis simplifié (AS) or Acheminement Électronique Suivi (AES) to multiple recipients.\n\n**Important notes:**\n- LRE messages require mTLS authentication\n- Resellers must specify a valid sender customer ID\n- Message body must be HTML and non-empty after sanitization\n- Attachments are limited to a total of 250MB\n- AS messages follow the same recipient, body, and attachment rules as LS messages (no mTLS required, `identifier`/`identifierType` optional for legal persons)\n\n**AES-specific behavior:**\n- No mTLS or KYC required\n- At most 1 attachment\n- Body text must contain between 2 and 10000 characters\n- No evidence generated (no legal value, no cryptographic proof)\n- If the message has an attachment, the recipient receives an email with the message body and a signed link valid for 60 days\n- If the message has no attachment, the recipient receives only the body inline (no download link)\n- Webhook events emitted, following the email delivery lifecycle: `aes_sent` (sent), `aes_received` (delivered to the recipient's mailbox), `aes_opened` (recipient opened the email or downloaded the attachment), `aes_undelivered` (bounce; reversible), `aes_failed` (send failure)\n- `GET /messages/{id}` returns only `id`, `status` and an empty `evidences` array for AES\n","requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"recipients[0].email":{"type":"string","description":"List of message recipients","example":" jean@dupont.com"},"recipients[0].firstname":{"type":"string","description":"Message type","example":" Jean"},"recipients[0].lastname":{"type":"string","description":"HTML message body","example":" Dupont"},"recipients[1].email":{"type":"string","description":"Optional file reference for tracking","example":"cabinet@dupont.com"},"recipients[1].company":{"type":"string","description":"Optional customer reference for tracking","example":" Cabinet Dupont"},"type":{"type":"string","description":"LRE/LS/AS/AES","example":"LS"},"body":{"type":"string","example":"<p> This is a message </p>"},"fileReference":{"type":"string","description":"Whether to include the sender's logo in the email notification.\n","example":"string"},"customerReference":{"type":"string","example":"string"},"sender":{"type":"string","description":"Customer ID (required for resellers sending on behalf of customers)","example":"74d3c46e-ba11-ac53-fa88-444dae110eff"},"includeSenderLogo":{"type":"boolean","example":"false"},"attachments":{"type":"string","description":"Message attachments. Optional for LRE/LS/AS/AES. Max 1 item for AES.\n","format":"binary"}}}}}},"security":[{"apikeyAuth":[]}],"parameters":[{"name":"Content-Type","in":"header","schema":{"type":"string"},"example":"multipart/form-data"},{"name":"Accept","in":"header","schema":{"type":"string"},"example":"application/json"}],"responses":{"201":{"description":"Created","headers":{"Content-Type":{"schema":{"type":"string","example":"application/json"}}},"content":{"application/json":{"schema":{"type":"object"},"example":{"body":"<p>Hello, this is a test message</p>","createdAt":"2025-01-15T10:30:00.000Z","type":"LS","customerReference":"ORDER-12345","fileReference":"FILE-67890","messages":[{"id":"123456789012"},{"id":"987654321012"},{"id":"743042349192"}]}}}},"401":{"description":"Unauthorized","headers":{"Content-Type":{"schema":{"type":"string","example":"application/json"}}},"content":{"application/json":{"schema":{"type":"object"},"example":{"message":"Unauthorized access","code":"unauthorized"}}}},"405":{"description":"Method Not Allowed","headers":{"Content-Type":{"schema":{"type":"string","example":"application/json"}}},"content":{"application/json":{"schema":{"type":"object"},"example":{"message":"LRE messages cannot be sent without mTLS authentication","code":"lre-must-use-mtls"}}}},"422":{"description":"Unprocessable Entity (WebDAV) (RFC 4918)","headers":{"Content-Type":{"schema":{"type":"string","example":"application/json"}}},"content":{"application/json":{"schema":{"type":"object"},"example":{"message":"Some recipients are incomplete or incorrect","code":"message-bad-contacts","data":[]}}}}}}},"/messages/resend":{"post":{"tags":["messages > resend"],"summary":"Resend messages giving ids","description":"Resend previously sent messages\n\n**Important notes:**\n* All ids must be valid messages to resend, if one id is not valid, no message is sent\n","requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"ids":{"type":"string","description":"List of messages id to resend"}}}}}},"security":[{"apikeyAuth":[]}],"parameters":[{"name":"Content-Type","in":"header","schema":{"type":"string"},"example":"multipart/form-data"},{"name":"Accept","in":"header","schema":{"type":"string"},"example":"application/json"}],"responses":{"201":{"description":"Created","headers":{"Content-Type":{"schema":{"type":"string","example":"application/json"}}},"content":{"application/json":{"schema":{"type":"object"},"example":["249088569344","553355151360"]}}},"401":{"description":"Unauthorized","headers":{"Content-Type":{"schema":{"type":"string","example":"application/json"}}},"content":{"application/json":{"schema":{"type":"object"},"example":{"message":"Unauthorized access","code":"unauthorized"}}}},"404":{"description":"Not Found","headers":{"Content-Type":{"schema":{"type":"string","example":"application/json"}}},"content":{"application/json":{"schema":{"type":"object"},"example":{"message":"One or more messages not found","code":"message-not-found"}}}},"422":{"description":"Unprocessable Entity (WebDAV) (RFC 4918)","headers":{"Content-Type":{"schema":{"type":"string","example":"application/json"}}},"content":{"application/json":{"schema":{"type":"object"},"example":{"message":"Customer not found","code":"customer-not-found"}}}}}}},"/messages/{id}/evidences/{status}":{"get":{"tags":["messages > {id} > evidences > {status}"],"summary":"Get specific evidence for a message","description":"Retrieve a specific evidence document for a message by its status/event type.\n\n**Important notes:**\n- Returns 404 if message doesn't exist, user doesn't have access, or evidence doesn't exist\n- Returns 422 (`aes-has-no-evidence`) if the message is an AES: AES messages never generate evidences\n- Only one evidence per status is allowed (returns 404 if multiple found)\n- Evidence PDFs are signed and cached for 7 days\n- If evidence doesn't exist yet, it will be generated on-demand\n- Works with both mTLS and API token authentication\n","security":[{"apikeyAuth":[]}],"parameters":[{"name":"Accept","in":"header","schema":{"type":"string"},"example":"application/json"},{"name":"id","in":"path","schema":{"type":"integer"},"required":true,"description":"12-digit friendly ID of the message","example":"123456789012"},{"name":"status","in":"path","schema":{"type":"string"},"required":true,"description":"Evidence status/event type to retrieve","example":"SENT"}],"responses":{"200":{"description":"OK","headers":{"Content-Type":{"schema":{"type":"string","example":"application/json"}}},"content":{"application/json":{"schema":{"type":"object"},"example":{"url":"http://dAEejhFXWrkzb.arjqi,hDo,"}}}},"401":{"description":"Unauthorized","headers":{"Content-Type":{"schema":{"type":"string","example":"application/json"}}},"content":{"application/json":{"schema":{"type":"object"},"example":{"message":"Unauthorized access","code":"unauthorized"}}}},"404":{"description":"Not Found","headers":{"Content-Type":{"schema":{"type":"string","example":"application/json"}}},"content":{"application/json":{"schema":{"type":"object"},"example":{"message":"Message not found","code":"message-not-found"}}}},"422":{"description":"Unprocessable Entity (WebDAV) (RFC 4918)","headers":{"Content-Type":{"schema":{"type":"string","example":"application/json"}}},"content":{"application/json":{"schema":{"type":"object"},"example":{"message":"AES messages do not have evidences","code":"aes-has-no-evidence"}}}}}}},"/messages/{id}/resend":{"post":{"tags":["messages > {id} > resend"],"summary":"Resend a message to original recipient or a new one","description":"Resend a previously sent message. Optionally provide a new recipient to redirect the message.\n\n**Important notes:**\n- LRE messages require mTLS authentication\n- If no recipient is provided, the message is resent to the original contact\n- If a recipient is provided, a new contact is created and the message is sent to them\n","requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"recipients[0].email":{"type":"string","description":"Must provide either:\n- Natural person: firstname AND lastname\n- Legal person: company (identifier + identifierType required for LRE, optional for LS and AS)\n\nIf `identifierType` is provided, `identifier` is required and its format is enforced for that type. If `identifier` is provided without `identifierType`, `identifierType` defaults to `SIREN` and the SIREN format is enforced.\n","example":" jean@dupont.com"},"recipients[0].firstname":{"type":"string","example":" Jean"},"recipients[0].lastname":{"type":"string","example":" Dupont"}}}}}},"security":[{"apikeyAuth":[]}],"parameters":[{"name":"Content-Type","in":"header","schema":{"type":"string"},"example":"multipart/form-data"},{"name":"Accept","in":"header","schema":{"type":"string"},"example":"application/json"},{"name":"id","in":"path","schema":{"type":"integer"},"required":true,"description":"12-digit ID of the message to resend","example":"123456789012"}],"responses":{"201":{"description":"Created","headers":{"Content-Type":{"schema":{"type":"string","example":"application/json"}}},"content":{"application/json":{"schema":{"type":"object"},"example":249088569344}}},"401":{"description":"Unauthorized","headers":{"Content-Type":{"schema":{"type":"string","example":"application/json"}}},"content":{"application/json":{"schema":{"type":"object"},"example":{"message":"Unauthorized access","code":"unauthorized"}}}},"402":{"description":"Payment Required","headers":{"Content-Type":{"schema":{"type":"string","example":"application/json"}}},"content":{"application/json":{"schema":{"type":"object"},"example":{"message":"Payment is required to send this message","code":"payment-request-rejected"}}}},"404":{"description":"Not Found","headers":{"Content-Type":{"schema":{"type":"string","example":"application/json"}}},"content":{"application/json":{"schema":{"type":"object"},"example":{"message":"Message not found","code":"message-not-found"}}}},"405":{"description":"Method Not Allowed","headers":{"Content-Type":{"schema":{"type":"string","example":"application/json"}}},"content":{"application/json":{"schema":{"type":"object"},"example":{"message":"LRE messages cannot be sent without mTLS authentication","code":"lre-must-use-mtls"}}}},"422":{"description":"Unprocessable Entity (WebDAV) (RFC 4918)","headers":{"Content-Type":{"schema":{"type":"string","example":"application/json"}}},"content":{"application/json":{"schema":{"type":"object"},"example":{"message":"Recipient is incomplete or incorrect","code":"message-bad-contacts"}}}}}}},"/messages/{id}":{"get":{"tags":["messages > {id}"],"summary":"Get message details","description":"Retrieve details of a specific message including all associated evidences.\n\n**Important notes:**\n- Returns 404 if message doesn't exist or user doesn't have access\n- Evidence PDFs are signed and cached for 7 days\n- If evidences don't exist yet, they will be generated on-demand\n- Works with both mTLS and API token authentication\n- AES messages return an empty `evidences` array (AES has no legal evidence)\n- For AES, `status` follows the email delivery lifecycle: `SENT` (sent) → `RECEIVED` (delivered to the recipient's mailbox) → `OPENED` (recipient opened the email or downloaded the attachment); `UNDELIVERED` on bounce (reversible — a later successful delivery moves it back to `RECEIVED`); `EXPIRED` if delivered but never opened within the delay. Note: for AES, `RECEIVED` means \"delivered\" (not \"downloaded\") and is not a terminal status.\n","security":[{"apikeyAuth":[]}],"parameters":[{"name":"Accept","in":"header","schema":{"type":"string"},"example":"application/json"},{"name":"id","in":"path","schema":{"type":"integer"},"required":true,"description":"12-digit friendly ID of the message","example":"123456789012"}],"responses":{"200":{"description":"OK","headers":{"Content-Type":{"schema":{"type":"string","example":"application/json"}}},"content":{"application/json":{"schema":{"type":"object"},"example":{"id":"123456789012","status":"RECEIVED","evidences":[{"url":"https://storage.example.com/evidences/xxx.pdf?sig=abc","eventType":"SENT"},{"url":"https://storage.example.com/evidences/xxx.pdf?sig=def","eventType":"RECEIVED"}]}}}},"401":{"description":"Unauthorized","headers":{"Content-Type":{"schema":{"type":"string","example":"application/json"}}},"content":{"application/json":{"schema":{"type":"object"},"example":{"message":"Unauthorized access","code":"unauthorized"}}}},"404":{"description":"Not Found","headers":{"Content-Type":{"schema":{"type":"string","example":"application/json"}}},"content":{"application/json":{"schema":{"type":"object"},"example":{"message":"Message not found","code":"message-not-found"}}}},"422":{"description":"Unprocessable Entity (WebDAV) (RFC 4918)","headers":{"Content-Type":{"schema":{"type":"string","example":"application/json"}}},"content":{"application/json":{"schema":{"type":"object"},"example":{"errors":[{"field":"id","rule":"fixedLength","message":"The id field must be 12 characters long"}]}}}}}}},"/customers/bulk_store":{"post":{"tags":["customers > bulk_store"],"summary":"Create customers in bulk","description":"Create multiple customer delegation requests at once. Each customer will receive a delegation notification email.\nOnly available for resellers.\nThis operation is atomic: if one customer data is invalid or a logo upload fails, no customers are created (transaction rollback).\n\n**Authentication:**\n- Requires `apiTokenAuth`\n- Restricted to Resellers\n\n**Content-Type Support:**\n- `application/json`: For creating customers without logos.\n- `multipart/form-data`: Required if you want to include logos.\n","requestBody":{"content":{"application/json":{"schema":{"type":"object","example":{"customers":[{"name":"Acme Corp","email":"contact@acme.com","isPaying":true,"willSendLre":false}]}}}}},"security":[{"apikeyAuth":[]}],"parameters":[{"name":"Content-Type","in":"header","schema":{"type":"string"},"example":"application/json"},{"name":"Accept","in":"header","schema":{"type":"string"},"example":"application/json"}],"responses":{"201":{"description":"Created","headers":{"Content-Type":{"schema":{"type":"string","example":"application/json"}}},"content":{"application/json":{"schema":{"type":"object"},"example":{"customers":[{"id":"6c4c9677-c8a5-34c0-e1a1-25d586ec1b15","name":"Acme Corporation","email":"contact@acme.com","isPaying":false,"willSendLre":false,"state":"PENDING","delegationToken":"string","userId":"6f61d7be-cc10-10b2-7dae-9777c4630f4b","createdAt":"1959-11-09T15:08:14.630Z","updatedAt":"2001-07-10T03:27:05.996Z"},{"id":"c0c53870-ba2a-8138-23bb-fdeac0c97932","name":"Acme Corporation","email":"contact@acme.com","isPaying":false,"willSendLre":false,"state":"PENDING","delegationToken":"string","userId":"a3709610-1e35-9740-2303-076602814b20","createdAt":"2000-11-09T11:53:21.865Z","updatedAt":"2019-08-13T07:49:25.120Z"}]}}}},"401":{"description":"Unauthorized","headers":{"Content-Type":{"schema":{"type":"string","example":"application/json"}}},"content":{"application/json":{"schema":{"type":"object"},"example":{"message":"Unauthorized access","code":"unauthorized"}}}},"422":{"description":"Unprocessable Entity (WebDAV) (RFC 4918)","headers":{"Content-Type":{"schema":{"type":"string","example":"application/json"}}},"content":{"application/json":{"schema":{"type":"object"},"example":{"message":"Validation failed","code":"E_VALIDATION_ERROR","data":{"errors":[{"field":"customers.1.email","rule":"email","message":"The email field must be a valid email address"}]}}}}}}}},"/customers/{id}/logo":{"put":{"tags":["customers > {id} > logo"],"summary":"Update customer logo","description":"Update the logo for a specific customer.\n\n**Requirements:**\n- Logo file must be JPEG, JPG, or PNG format\n- Maximum file size: 2MB\n","requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"logo":{"type":"string","description":"Logo image file (JPEG, JPG, PNG, max 2MB)","format":"binary"}}}}}},"security":[{"apikeyAuth":[]}],"parameters":[{"name":"Content-Type","in":"header","schema":{"type":"string"},"example":"multipart/form-data"},{"name":"Accept","in":"header","schema":{"type":"string"},"example":"application/json"},{"name":"id","in":"path","schema":{"type":"string"},"required":true,"description":"Customer UUID","example":"d4479aa5-8c22-9009-944f-aa54591d7546"}],"responses":{"200":{"description":"OK","headers":{"Content-Type":{"schema":{"type":"string","example":"application/json"}}},"content":{"application/json":{"schema":{"type":"object"},"example":{"logoUrl":"https://storage.example.com/logos/abc123.png"}}}},"400":{"description":"Bad Request","headers":{"Content-Type":{"schema":{"type":"string","example":"application/json"}}},"content":{"application/json":{"schema":{"type":"object"},"example":{"message":"Logo file is required","code":"customer-logo-required"}}}},"401":{"description":"Unauthorized","headers":{"Content-Type":{"schema":{"type":"string","example":"application/json"}}},"content":{"application/json":{"schema":{"type":"object"},"example":{"message":"Unauthorized access","code":"unauthorized"}}}},"404":{"description":"Not Found","headers":{"Content-Type":{"schema":{"type":"string","example":"application/json"}}},"content":{"application/json":{"schema":{"type":"object"},"example":{"message":"Customer not found","code":"customer-not-found"}}}}}},"delete":{"tags":["customers > {id} > logo"],"summary":"Delete customer logo","description":"Delete the logo for a specific customer. Returns 204 even if no logo exists (idempotent).\n","security":[{"apikeyAuth":[]}],"parameters":[{"name":"Accept","in":"header","schema":{"type":"string"},"example":"application/json"},{"name":"id","in":"path","schema":{"type":"string"},"required":true,"description":"Customer UUID","example":"d4479aa5-8c22-9009-944f-aa54591d7546"}],"responses":{"204":{"description":"No Content","content":{"text/plain":{"schema":{"type":"string"},"example":""}}},"401":{"description":"Unauthorized","headers":{"Content-Type":{"schema":{"type":"string","example":"application/json"}}},"content":{"application/json":{"schema":{"type":"object"},"example":{"message":"Unauthorized access","code":"unauthorized"}}}},"404":{"description":"Not Found","headers":{"Content-Type":{"schema":{"type":"string","example":"application/json"}}},"content":{"application/json":{"schema":{"type":"object"},"example":{"message":"Customer not found","code":"customer-not-found"}}}}}}},"/customers":{"get":{"tags":["customers"],"summary":"List customers","description":"Retrieve a list of customers managed by the authenticated reseller","security":[{"apikeyAuth":[]}],"parameters":[{"name":"Accept","in":"header","schema":{"type":"string"},"example":"application/json"}],"responses":{"200":{"description":"OK","headers":{"Content-Type":{"schema":{"type":"string","example":"application/json"}}},"content":{"application/json":{"schema":{"type":"object"},"example":{"data":[{"id":"0c9afa2a-ce54-fcc4-c78c-9759de165fa0","name":"Acme Corporation","email":"contact@acme.com","isPaying":false,"willSendLre":false,"state":"PENDING","delegationToken":"string","userId":"3a8ca979-49ae-4c6b-7d37-c69d379ead24","createdAt":"2025-12-18T14:59:22.127Z","updatedAt":"1965-06-25T09:44:42.666Z"},{"id":"2530dfc1-2842-bb89-8fa8-b5a5acec3f23","name":"Acme Corporation","email":"contact@acme.com","isPaying":true,"willSendLre":false,"state":"PENDING","delegationToken":"string","userId":"5787af13-6c8e-c0e1-5d52-97e947a7b9e2","createdAt":"2016-02-09T00:50:20.390Z","updatedAt":"1991-04-03T23:21:17.675Z"}],"meta":{"total":42,"perPage":10,"currentPage":1,"lastPage":5,"firstPage":1}}}}},"401":{"description":"Unauthorized","headers":{"Content-Type":{"schema":{"type":"string","example":"application/json"}}},"content":{"application/json":{"schema":{"type":"object"},"example":{"message":"Unauthorized access","code":"unauthorized"}}}}}}},"/consents/bulkStore":{"post":{"tags":["consents > bulkStore"],"summary":"Create consents in bulk","description":"Create multiple consent requests at once. Email-type consents are automatically sent to recipients.\nResellers can send consents on behalf of their customers.\n\n**Recipient requirements:**\n- Must provide email\n- Must provide EITHER (firstname AND lastname) OR (company, optionally with identifier + identifierType)\n\n**Type-specific rules:**\n- EMAIL/LINK: delayInDays is optional (defaults to configured value)\n- MANUAL: state is required, delayInDays is optional\n","requestBody":{"content":{"application/json":{"schema":{"type":"object","example":{"type":"EMAIL","delayInDays":7,"recipients":[{"email":"john@example.com","firstname":"John","lastname":"Doe"}]}}}}},"security":[{"apikeyAuth":[]}],"parameters":[{"name":"Content-Type","in":"header","schema":{"type":"string"},"example":"application/json"},{"name":"Accept","in":"header","schema":{"type":"string"},"example":"application/json"}],"responses":{"201":{"description":"Created","headers":{"Content-Type":{"schema":{"type":"string","example":"application/json"}}},"content":{"application/json":{"schema":{"type":"object"},"example":[{"id":"f548aa99-9750-810e-9200-efac92517714","type":"LINK","state":"ACCEPTED","delayInDays":7,"email":"a5GBlj@eBLZXjwLwnnxpwZqBEyqOKHHDTvoDQRt.cip","firstName":"string","lastName":"string","company":"string","identifier":"string","identifierType":"SIREN","sender":"9f15643b-18c5-1353-4bcb-f69c5daaeb09","consentUrl":"https://cNKQAAToITltY.rtcQQgGSR520ebRW8hhy-a","createdAt":"2024-11-06T15:48:44.269Z"},{"id":"2fc798ac-5ba6-8991-4b51-49d1b9dbc5e5","type":"MANUAL","state":"PENDING","delayInDays":7,"email":"E2LQ@koXUrQYORflhqJPtSuUPseo.nuzj","firstName":"string","lastName":"string","company":"string","identifier":"string","identifierType":"SIREN","sender":"3f244df7-ce4a-ddea-cb4d-108cf81035bd","consentUrl":"https://NNTAVdvnFEw.sjonczZcyYoUQMOdpt23WmCVCVIR1S,wPIUrmxUAXleYKWRLDyV2-reIXMHk55s9Vy-NBdpr","createdAt":"2009-04-10T08:01:45.289Z"}]}}},"401":{"description":"Unauthorized","headers":{"Content-Type":{"schema":{"type":"string","example":"application/json"}}},"content":{"application/json":{"schema":{"type":"object"},"example":{"message":"Unauthorized access","code":"unauthorized"}}}},"422":{"description":"Unprocessable Entity (WebDAV) (RFC 4918)","headers":{"Content-Type":{"schema":{"type":"string","example":"application/json"}}},"content":{"application/json":{"schema":{"type":"object"},"example":{"message":"Some recipients are invalid","code":"consent-bad-recipients","invalidRecipients":[]}}}}}}},"/consents/{id}/remind":{"post":{"tags":["consents > {id} > remind"],"summary":"Send consent reminder","description":"Send a reminder email for a pending consent. Only available for email-type consents in PENDING state.\n","requestBody":{"content":{}},"security":[{"apikeyAuth":[]}],"parameters":[{"name":"Accept","in":"header","schema":{"type":"string"},"example":"application/json"},{"name":"id","in":"path","schema":{"type":"string"},"required":true,"description":"Consent ID","example":"d4479aa5-8c22-9009-944f-aa54591d7546"}],"responses":{"200":{"description":"OK","headers":{"Content-Type":{"schema":{"type":"string","example":"application/json"}}},"content":{"application/json":{"schema":{"type":"object"},"example":{"message":"Consent reminder sent successfully"}}}},"401":{"description":"Unauthorized","headers":{"Content-Type":{"schema":{"type":"string","example":"application/json"}}},"content":{"application/json":{"schema":{"type":"object"},"example":{"message":"Unauthorized access","code":"unauthorized"}}}},"404":{"description":"Not Found","headers":{"Content-Type":{"schema":{"type":"string","example":"application/json"}}},"content":{"application/json":{"schema":{"type":"object"},"example":{"message":"Consent not found","code":"consent-not-found"}}}},"422":{"description":"Unprocessable Entity (WebDAV) (RFC 4918)","headers":{"Content-Type":{"schema":{"type":"string","example":"application/json"}}},"content":{"application/json":{"schema":{"type":"object"},"example":{"message":"Consent cannot be reminded","code":"consent-cannot-be-reminded"}}}}}}},"/consents":{"get":{"tags":["consents"],"summary":"List consents","description":"Retrieve the latest consent for each contact. Returns only the most recent consent per contact.\nResellers can filter by sender customer ID.\n","security":[{"apikeyAuth":[]}],"parameters":[{"name":"Accept","in":"header","schema":{"type":"string"},"example":"application/json"}],"responses":{"200":{"description":"OK","headers":{"Content-Type":{"schema":{"type":"string","example":"application/json"}}},"content":{"application/json":{"schema":{"type":"object"},"example":{"data":[{"id":"c33f4242-6279-263a-a74d-8964b20f507e","type":"MANUAL","state":"PENDING","delayInDays":7,"email":"Qm3-dI5PkcH8W@XiYkErwJYqo.nd","firstName":"string","lastName":"string","company":"string","identifier":"string","identifierType":"BCE","sender":"38b67ae1-ab82-37d7-8732-46af22f5e40f","consentUrl":"https://EdHzvwHgN.oisajHVrvTBynIGCNIvW6bzh-x,oKGqImHWWJaGmxPQqInwzZS78w","createdAt":"1969-10-25T01:41:26.969Z"},{"id":"1f7269d6-dc77-46a9-d81a-a36683ef1652","type":"EMAIL","state":"PENDING","delayInDays":7,"email":"dLjVyRU@UvcoNhVsBzcdzYCQiz.frzj","firstName":"string","lastName":"string","company":"string","identifier":"string","identifierType":"SIREN","sender":"44b65774-71dd-2d68-ba34-55488065f263","consentUrl":"http://ZVbWvxEIR.plmmBZ3r5E,aMDy6.vHyLk","createdAt":"2021-12-04T09:52:29.850Z"}],"meta":{"total":42,"perPage":10,"currentPage":1,"lastPage":5,"firstPage":1}}}}},"401":{"description":"Unauthorized","headers":{"Content-Type":{"schema":{"type":"string","example":"application/json"}}},"content":{"application/json":{"schema":{"type":"object"},"example":{"message":"Unauthorized access","code":"unauthorized"}}}},"422":{"description":"Unprocessable Entity (WebDAV) (RFC 4918)","headers":{"Content-Type":{"schema":{"type":"string","example":"application/json"}}},"content":{"application/json":{"schema":{"type":"object"},"example":{"message":"Customer not found","code":"customer-not-found"}}}}}}}}}