34 KiB
HybridmailBinectSpecification.md
1. Document Status
Document: HybridmailBinectSpecification.md Project: hybridmail-connect Provider Flavor: Binect Parent Specification: HybridmailAdapterSpecification.md Target Integration: coordination-engine Adapter Contract: AdapterInterfaceSpecification.md v1.0 Status: Draft v1.0 Primary Scope: Binect-specific hybrid-mail provider flavor for document upload, validation, attachments, preview, sending, and status mapping.
2. Purpose
This document specifies the Binect provider flavor for hybridmail-connect.
The Binect flavor implements the generic hybrid-mail adapter model for the Binect API. It maps Binect’s document-centric API workflow into the provider-neutral hybrid-mail model used by coordination-engine.
The purpose of this document is to capture:
- Binect-specific provider capabilities.
- Binect-specific workflow stages.
- Binect document, attachment, preview, sending, and status concepts.
- Binect validation semantics.
- Binect print and shipping option mapping.
- Binect evidence event mapping.
- Binect-specific limitations and assumptions.
- Binect-specific MVP boundaries.
The Binect flavor MUST remain compatible with the generic HybridmailAdapterSpecification.md and MUST NOT leak Binect-specific terminology into the core coordination model except through explicitly mapped provider metadata.
3. Grounding Summary
The public Binect API material indicates the following relevant features:
- Binect provides a REST API for digital business-letter dispatch.
- The API supports document upload.
- Attachments can be added to letters.
- Supported attachment formats include
pdf,rtf,txt,png,jpg,jpeg,bmp,gif, andps. - Attachment size is limited to 20 MB according to the public FAQ.
- The API supports setting print and shipping options.
- The API supports preview retrieval.
- The API supports sending after preparation.
- The API supports document and shipping status queries.
- Serial or child document status handling is relevant.
- Validation includes address position, address format, and restricted-area checks.
- Binect handles full-service physical dispatch including printing, enveloping/franking, and handover to Deutsche Post.
- Binect publicly positions the API as a way to integrate digital business-letter dispatch into DMS, CRM, and other software systems.
These facts define the baseline for this provider flavor.
4. Provider Flavor Identity
HybridmailProviderFlavorDescriptor:
provider_name: binect
provider_label: Binect API
provider_family: hybridmail
adapter_contract_version: "1.0"
parent_specification: HybridmailAdapterSpecification.md
deployment_mode: external
5. Binect Capability Descriptor
The Binect flavor MUST expose a capability descriptor.
HybridmailProviderFlavorDescriptor:
provider_name: binect
provider_version: provider_specific
supported_file_types:
- pdf
- postscript
supported_attachment_file_types:
- pdf
- rtf
- txt
- png
- jpg
- jpeg
- bmp
- gif
- ps
attachment_max_size_mb: 20
supports_single_letter: true
supports_bulk: true
supports_serial_letters: true
supports_attachments: true
supports_preview: true
supports_webhooks: provider_specific
supports_polling: true
supports_registered_mail: provider_specific
supports_delivery_confirmation: provider_specific
supports_return_mail: provider_specific
supports_address_correction: provider_specific
supports_international_mail: provider_specific
supports_cancellation: provider_specific
supports_staging: provider_specific
supports_idempotency: adapter_managed
supports_rate_limits: provider_specific
supports_cost_calculation: true
supports_document_status: true
supports_shipping_status: true
supports_child_document_status: true
supported_print_options:
color_mode: provider_specific
simplex_duplex: provider_specific
envelope_selection: provider_specific
address_position: true
attachment_starts_on_new_sheet: true
supported_postal_products:
- standard
- provider_specific
limitations:
- Public Binect documentation confirms status queries but does not establish ordinary postal final-delivery proof for all products.
- Public documentation confirms validation and preview concepts but implementation must rely on the live Binect Swagger/API for exact field names.
- Idempotency should be enforced by hybridmail-connect if not provided natively by the Binect endpoint used.
- Cancellation semantics must be treated as provider-specific and time-sensitive.
6. Binect-Specific Conceptual Workflow
The Binect flavor uses a document-centric workflow.
create/upload document
→ validate document
→ optionally add attachments
→ set or confirm print/shipping options
→ optionally retrieve preview
→ create/send sending
→ query document status
→ query shipping/sending status
→ receive or poll further status updates
The adapter MUST preserve this distinction:
Document preparation is not sending.
Sending is not postal handover.
Postal handover is not final physical delivery proof.
7. Binect Object Mapping
7.1 Generic to Binect Mapping
| Generic hybrid-mail concept | Binect flavor concept |
|---|---|
HybridmailLetter |
Letter-level abstraction composed from Binect document plus sending context |
HybridmailDocumentRef |
Binect document |
HybridmailAttempt |
Binect document upload and/or sending operation |
HybridmailBatch |
Binect serial/bulk document or sending group |
PostalRecipient |
Address extracted from document or provided as metadata if supported |
HybridmailOptions |
Binect print and shipping options |
HybridmailPreview |
Binect preview/brief view |
HybridmailTimeline |
Aggregated Binect document and shipping status history |
7.2 BinectDocument
BinectDocument:
binect_document_id: string
hybridmail_letter_id: string?
coordination_case_id: string?
participant_id: string?
provider_status: string?
normalized_status: string
original_file_ref: ResourceRef
file_type: pdf | ps | unknown
page_count: integer?
sheet_count: integer?
price_estimate: MoneyAmount?
validation_result: BinectValidationResult?
preview_refs:
- BinectPreviewRef
attachment_refs:
- BinectAttachmentRef
created_at: timestamp
updated_at: timestamp?
metadata: object?
7.3 BinectAttachment
BinectAttachment:
binect_attachment_id: string
binect_document_id: string
attachment_file_ref: ResourceRef
file_type: pdf | rtf | txt | png | jpg | jpeg | bmp | gif | ps | unknown
file_size_bytes: integer?
starts_on_new_sheet: boolean?
provider_status: string?
validation_result: BinectValidationResult?
created_at: timestamp
metadata: object?
Attachment Handling Rule
The Binect flavor SHOULD default starts_on_new_sheet to true if no explicit instruction is provided, because the public FAQ states that attachments start on a new sheet by default.
If duplex printing is used and the primary document has an odd number of pages, the adapter SHOULD be prepared for provider-side blank-page insertion semantics. Blank pages may affect sheet count and preview/status display, but should not be treated as billable unless the provider reports otherwise.
7.4 BinectSending
BinectSending:
binect_sending_id: string
binect_document_id: string?
hybridmail_letter_id: string
coordination_case_id: string?
participant_id: string?
provider_status: string?
normalized_status: string
shipping_options: BinectShippingOptions?
print_options: BinectPrintOptions?
submitted_at: timestamp?
status_checked_at: timestamp?
child_document_statuses:
- BinectChildDocumentStatus
metadata: object?
7.5 BinectChildDocumentStatus
For serial documents or bulk processing, child document statuses MUST be represented individually.
BinectChildDocumentStatus:
parent_document_id: string
child_document_id: string
participant_id: string?
provider_status: string?
normalized_status: string
evidence_event_refs:
- string
updated_at: timestamp?
metadata: object?
Batch-level success MUST NOT be treated as success for every child document unless each child status supports that interpretation.
8. Binect Validation Model
Binect validation results MUST be mapped into the generic HybridmailValidationResult.
The public material indicates validation of:
- address position
- address format
- restricted areas
- upload/print suitability
BinectValidationResult:
document_id: string
provider_validation_state: string?
validation_state: pending | passed | action_required | failed | unknown
issues:
- BinectValidationIssue
price_estimate: MoneyAmount?
validated_at: timestamp?
raw_provider_response_ref: string?
BinectValidationIssue:
provider_issue_code: string?
issue_code: string
severity: info | warning | action_required | fatal
category: format | page_size | address | address_position | address_format | restricted_area | margins | file_size | page_count | attachment | postage | country | provider_policy | unknown
message: string
page_number: integer?
bounding_box: object?
fixable: boolean?
9. Binect Validation Issue Mapping
| Binect validation concern | Generic validation category | Normalized issue code |
|---|---|---|
| Address position invalid | address_position |
address_position_invalid |
| Address format invalid | address_format |
address_format_invalid |
| Restricted area violation | restricted_area |
restricted_area_violation |
| Unsupported file type | format |
unsupported_file_type |
| File too large | file_size |
file_too_large |
| Attachment invalid | attachment |
attachment_invalid |
| Postal option invalid | postage |
unsupported_product |
| Provider policy rejection | provider_policy |
provider_policy_rejected |
| Unknown validation issue | unknown |
unknown_validation_issue |
Validation failure MUST emit:
payload.validation_failed
Validation success MUST emit:
payload.validation_passed
Validation warnings MAY emit payload.validation_passed with warning metadata if the provider still allows sending.
10. Binect Print and Shipping Options
The Binect flavor MUST map Binect options into the generic HybridmailOptions.
BinectPrintOptions:
color_mode: color | grayscale | provider_default | unknown
print_sides: simplex | duplex | provider_default | unknown
attachment_starts_on_new_sheet: boolean?
paper_type: provider_specific?
metadata: object?
BinectShippingOptions:
postage_product: standard | provider_specific
country_scope: domestic | international | unknown
dispatch_mode: manual_review | auto_send | submit_later | scheduled
desired_dispatch_date: date?
sender_profile_ref: string?
return_mail_handling: none | provider_processed | physical_return | digital_return_info | unknown
metadata: object?
Provider-native option names MUST be preserved in metadata.
The normalized model MUST avoid assuming support for a product unless the live provider capability descriptor confirms it.
11. Binect Preview Model
Binect preview retrieval MUST map to HybridmailPreview.
BinectPreviewRef:
preview_id: string
binect_document_id: string
preview_type: pdf | png | image | metadata | unknown
preview_uri: string?
generated_at: timestamp
expires_at: timestamp?
raw_provider_response_ref: string?
Preview availability MUST emit an operational event, normally:
delivery.payload.available
Preview availability MUST NOT be interpreted as postal delivery evidence.
12. Binect Status Model
Because provider-native statuses may differ across endpoints, the Binect flavor MUST preserve raw provider status and map it to normalized status.
BinectStatusRecord:
status_record_id: string
binect_document_id: string?
binect_sending_id: string?
child_document_id: string?
provider_status: string
normalized_status: string
status_scope: document | sending | child_document | shipping | unknown
observed_at: timestamp
raw_provider_response_ref: string?
13. Normalized Binect Status Categories
The Binect flavor SHOULD map native statuses into these normalized categories:
document.created
document.uploaded
document.validation_pending
document.validation_passed
document.validation_failed
document.preview_available
document.ready_for_sending
sending.submitted
sending.processing
sending.production_started
sending.production_completed
sending.handed_to_postal_service
sending.failed
sending.cancelled
sending.status_unknown
shipping.status_unknown
shipping.undeliverable
shipping.return_received
Where Binect status granularity is insufficient, the adapter MUST use the nearest weaker event and preserve the raw status in metadata.
Example:
If the provider status only says "sent" and does not distinguish production completion from postal handover,
the adapter SHOULD map it conservatively and document the chosen interpretation.
14. Binect-to-Generic Event Mapping
| Binect workflow event | Generic event | Evidence interpretation |
|---|---|---|
| Document upload accepted | delivery.payload.accepted |
Digital submission accepted |
| Document rejected on upload | delivery.payload.rejected |
Attempt failed before validation/send |
| Validation passed | payload.validation_passed |
Document is provider-processable |
| Validation failed | payload.validation_failed |
Document/action must be corrected |
| Price calculated on upload | metadata on validation/upload event | Cost signal, not delivery evidence |
| Attachment added | delivery.payload.accepted with attachment metadata |
Attachment accepted into document context |
| Attachment rejected | payload.validation_failed |
Attachment must be corrected |
| Preview generated | delivery.payload.available |
Operational review evidence |
| Options set | metadata event or delivery.payload.available |
Operational readiness |
| Sending submitted | delivery.payload.submitted |
Provider instructed to send |
| Document/sending processing | delivery.production.started |
Provider production chain began |
| Production completed | delivery.production.completed |
Printed/enveloped/franked if provider status supports this |
| Handover to post | delivery.postal.handed_over |
Strong dispatch evidence |
| Shipping status unknown | delivery.postal.status_unknown |
Final delivery unclear |
| Undeliverable/returned | delivery.postal.undeliverable or delivery.postal.return_received |
Strong negative evidence |
| Child document status | per-child mapped event | Required for serial/bulk cases |
15. Evidence Grading Rules
15.1 Document Upload Accepted
event_type: delivery.payload.accepted
evidence_grade:
strength: weak
actor_certainty: none
authority_certainty: none
payload_certainty: medium
interaction_certainty: none
timing_certainty: medium
channel_certainty: medium
non_repudiation_strength: low
notes:
- Binect accepted the document upload or document creation step.
- This does not prove validation, sending, production, postal handover, or delivery.
15.2 Binect Validation Passed
event_type: payload.validation_passed
evidence_grade:
strength: medium
actor_certainty: none
authority_certainty: none
payload_certainty: high
interaction_certainty: none
timing_certainty: high
channel_certainty: high
non_repudiation_strength: low
notes:
- Document passed Binect validation for further processing.
- This does not prove sending or postal handover.
15.3 Binect Validation Failed
event_type: payload.validation_failed
evidence_grade:
strength: negative
actor_certainty: none
authority_certainty: none
payload_certainty: high
interaction_certainty: none
timing_certainty: high
channel_certainty: high
non_repudiation_strength: low
notes:
- Document is not processable without correction or replacement.
- The validation issue category should be included.
15.4 Preview Available
event_type: delivery.payload.available
evidence_grade:
strength: weak
actor_certainty: none
authority_certainty: none
payload_certainty: medium
interaction_certainty: none
timing_certainty: high
channel_certainty: high
non_repudiation_strength: low
notes:
- Binect preview is available for review.
- Preview availability is operational evidence, not postal dispatch evidence.
15.5 Sending Submitted
event_type: delivery.payload.submitted
evidence_grade:
strength: medium
actor_certainty: none
authority_certainty: none
payload_certainty: high
interaction_certainty: none
timing_certainty: high
channel_certainty: high
non_repudiation_strength: low
notes:
- Binect sending was submitted.
- This does not prove production completion or postal handover.
15.6 Production Started
event_type: delivery.production.started
evidence_grade:
strength: medium
actor_certainty: none
authority_certainty: none
payload_certainty: high
interaction_certainty: none
timing_certainty: medium
channel_certainty: high
non_repudiation_strength: low
notes:
- Binect status indicates processing/production has started.
- The exact native status should be preserved in metadata.
15.7 Postal Handover
event_type: delivery.postal.handed_over
evidence_grade:
strength: strong
actor_certainty: none
authority_certainty: none
payload_certainty: high
interaction_certainty: none
timing_certainty: high
channel_certainty: high
non_repudiation_strength: medium
notes:
- Binect status indicates handover into the physical postal delivery chain.
- This is strong dispatch evidence.
- It does not prove recipient receipt or reading.
15.8 Return or Undeliverable
event_type: delivery.postal.return_received
evidence_grade:
strength: negative
actor_certainty: none
authority_certainty: none
payload_certainty: high
interaction_certainty: none
timing_certainty: high
channel_certainty: high
non_repudiation_strength: medium
notes:
- Binect or downstream status indicates the physical letter was returned or undeliverable.
- This is strong negative delivery evidence.
16. Binect Evidence Assessment
The Binect flavor SHOULD provide a Binect-native evidence assessment.
BinectEvidenceAssessment:
hybridmail_letter_id: string
binect_document_id: string?
binect_sending_id: string?
participant_id: string?
category: success | fail | undef
subclass: string
confidence: low | medium | high
strongest_signal: string?
evidence_summary:
- string
recommended_coordination_interpretation: string?
16.1 Binect Adapter Success Subclasses
success.document_uploaded
success.validation_passed
success.preview_available
success.sending_submitted
success.production_started
success.production_completed
success.handed_to_postal_service
success.return_info_processed
16.2 Binect Adapter Fail Subclasses
fail.upload_rejected
fail.validation_failed
fail.address_position_invalid
fail.address_format_invalid
fail.restricted_area_violation
fail.attachment_invalid
fail.unsupported_file_type
fail.file_too_large
fail.options_invalid
fail.sending_rejected
fail.production_failed
fail.cancelled
fail.return_received
fail.undeliverable
16.3 Binect Adapter Undef Subclasses
undef.pending
undef.uploaded_only
undef.validation_pending
undef.ready_but_not_sent
undef.preview_available_only
undef.submitted_for_sending
undef.processing
undef.production_status_unknown
undef.handed_to_postal_service_but_delivery_unproven
undef.shipping_status_unknown
undef.no_final_status_expected
undef.child_status_partial
undef.conflicting_evidence
undef.channel_degraded
17. Binect Workflow States
The Binect flavor SHOULD support these normalized workflow states:
created
upload_requested
uploaded
upload_failed
validation_pending
validation_passed
validation_failed
attachment_pending
attachment_added
attachment_failed
options_pending
options_set
preview_pending
preview_available
ready_for_sending
send_requested
sending_submitted
processing
production_started
production_completed
handed_to_postal_service
shipping_status_unknown
return_received
undeliverable
cancelled
failed
unknown
These states are Binect-flavor states, not coordination result states.
18. Binect Idempotency and Duplicate Send Prevention
Duplicate physical send prevention is mandatory.
If the Binect endpoint used does not provide native idempotency, hybridmail-connect MUST implement adapter-managed idempotency.
Idempotency scope SHOULD include:
coordination_case_id
participant_id
delivery_id
payload_id
payload_integrity_hash
provider_flavor
target postal recipient
shipping options
A repeated delivery.submit_letter request with the same idempotency key MUST NOT create a second physical send.
If the repeated request refers to a changed payload or changed address, the adapter MUST reject it as an idempotency conflict unless a new idempotency key is provided.
19. Binect Attachments
The Binect flavor MUST support attachments according to provider capability.
Supported attachment formats from public FAQ:
pdf
rtf
txt
png
jpg
jpeg
bmp
gif
ps
Maximum attachment size from public FAQ:
20 MB
The adapter SHOULD validate attachment file type and size before submission where possible.
Attachment events SHOULD be mapped as:
| Attachment event | Generic event |
|---|---|
| Attachment accepted | delivery.payload.accepted with attachment metadata |
| Attachment rejected | payload.validation_failed |
| Attachment validation warning | payload.validation_passed with warning metadata |
20. Binect Cost and Price Handling
The public Binect FAQ states that price calculation occurs when uploading the letter.
The Binect flavor SHOULD capture provider cost information when available.
BinectCostEstimate:
binect_document_id: string
amount_net: number?
amount_gross: number?
currency: string?
tax_amount: number?
page_count: integer?
sheet_count: integer?
postage_product: string?
calculated_at: timestamp?
raw_provider_response_ref: string?
Cost calculation is operational metadata and MUST NOT be treated as delivery evidence.
21. Binect Status Polling and Webhooks
The Binect flavor MUST support polling if status endpoints are available.
The Binect flavor MAY support webhooks if available in the provider configuration.
BinectStatusPollingConfig:
enabled: boolean
initial_delay_seconds: integer
interval_seconds: integer
max_duration_seconds: integer
terminal_statuses:
- string
Polling MUST be idempotent and MUST preserve status history.
Late status changes MUST be recorded.
22. Binect Raw Event Preservation
The Binect flavor SHOULD preserve raw provider responses or references to them.
RawBinectEventRef:
raw_event_id: string
source: api_response | status_poll | webhook | preview | validation | operator
endpoint: string?
storage_ref: string?
received_at: timestamp
redacted: boolean
Normalized events SHOULD reference raw Binect event data where available.
23. Binect Channel Health
BinectChannelHealth:
provider_name: binect
provider_account_ref: string?
status: healthy | degraded | failing | unknown
authentication_status: valid | expired | missing | insufficient | unknown
upload_status: healthy | degraded | unavailable | unknown
validation_status: healthy | degraded | unavailable | unknown
preview_status: healthy | degraded | unavailable | unknown
sending_status: healthy | delayed | unavailable | unknown
status_api_status: healthy | degraded | unavailable | unknown
cutoff_status: before_cutoff | after_cutoff | no_production_day | unknown
known_degradations:
- string
Health events SHOULD map to:
system.provider.degraded
system.provider.unavailable
system.adapter.health_changed
24. Security Requirements
The Binect flavor MUST:
- protect Binect API credentials.
- use secure transport.
- avoid logging document contents.
- protect postal recipient data.
- preserve idempotency.
- prevent duplicate physical sends.
- separate test and production configuration.
- protect previews, because previews may contain full document content.
- validate file type and size before upload where possible.
- apply tenant/account separation where applicable.
25. Privacy Requirements
The Binect flavor SHOULD:
- store payload references instead of payload content where possible.
- support metadata-only mode after provider submission.
- mask postal address data in logs.
- support configurable retention of raw provider responses.
- support configurable retention of previews.
- separate operational diagnostics from coordination evidence.
- document provider-side retention limitations.
- support deletion or anonymization workflows where legally possible.
26. Reliability Requirements
The Binect flavor MUST support:
- idempotent submit requests.
- duplicate status event detection.
- out-of-order status handling.
- polling-based status recovery.
- retryable upload failures.
- non-retryable validation failures.
- provider timeout handling.
- validation issue preservation.
- preview retrieval failure handling.
- child-document partial-status handling.
- correlation preservation.
- dead-letter handling for unprocessable provider responses.
27. Minimal API Surface
The Binect flavor SHOULD implement or expose these conceptual operations through hybridmail-connect.
27.1 Adapter Contract Operations
GET /adapter/descriptor
GET /adapter/health
POST /adapter/actions
POST /adapter/events/provider
GET /adapter/events
GET /adapter/letters/{id}/timeline
GET /adapter/letters/{id}/assessment
27.2 Binect Flavor Operations
POST /binect/documents
POST /binect/documents/{id}/attachments
PUT /binect/documents/{id}/options
GET /binect/documents/{id}/preview
POST /binect/sendings
GET /binect/documents/{id}/status
GET /binect/sendings/{id}/status
GET /binect/letters/{id}/timeline
GET /binect/letters/{id}/assessment
GET /binect/channel-health
The exact provider endpoint names MUST be implemented according to the live Binect Swagger/API. The conceptual operations above define the adapter-facing semantic model.
28. Example End-to-End Flow
28.1 Single Binect Letter
coordination-enginecreates a coordination case.- A PDF payload is registered.
- Policy selects
hybridmail-connectwith provider flavorbinect. coordination-enginesendsdelivery.submit_letter.hybridmail-connectcreates a Binect document upload operation.- Binect accepts the document.
- The adapter emits
delivery.payload.accepted. - Binect validates the document.
- If validation passes, the adapter emits
payload.validation_passed. - Optional attachments are uploaded.
- Print and shipping options are set or confirmed.
- A preview is requested if policy requires review.
- The adapter emits
delivery.payload.availablefor preview availability. - The sending is submitted.
- The adapter emits
delivery.payload.submitted. - Status polling reports processing/production.
- The adapter emits
delivery.production.startedand later stronger production or postal events if supported. - If status indicates postal handover, the adapter emits
delivery.postal.handed_over. coordination-engineevaluates whether handover is sufficient for the case policy.
28.2 Validation Failure
- Binect rejects the document due to address position, address format, or restricted-area violation.
- The adapter emits
payload.validation_failed. - The validation issue is preserved with category and severity.
coordination-enginemarks the participant delivery as action-required or failed for the attempt.- Policy requests correction, alternate generation, or fallback channel.
28.3 Serial / Bulk Document
- A serial or bulk document is submitted.
- Binect returns parent and child statuses.
- The adapter records parent status.
- The adapter creates or updates
BinectChildDocumentStatusrecords. - The adapter emits per-child evidence events.
coordination-engineaggregates participant-level completion and does not treat parent-level acceptance as universal delivery success.
29. Binect MVP Scope
The first Binect flavor implementation should include:
- Binect provider flavor descriptor.
- Adapter descriptor integration.
- Binect credential/config handling.
- Document upload.
- Attachment upload.
- Print/shipping option setting.
- Preview retrieval.
- Sending submission.
- Document status polling.
- Sending/shipping status polling.
- Validation result mapping.
- Child document status mapping where exposed.
- Evidence event generation.
- Letter timeline.
- Binect evidence assessment.
- Adapter-managed idempotency.
MVP Required Binect Events
delivery.payload.accepted
delivery.payload.rejected
payload.validation_passed
payload.validation_failed
delivery.payload.available
delivery.payload.submitted
delivery.production.started
delivery.production.completed
delivery.postal.handed_over
delivery.postal.status_unknown
delivery.postal.undeliverable
delivery.postal.return_received
system.provider.degraded
system.provider.unavailable
Where a provider status is unavailable or not semantically clear, the adapter MUST emit the weakest safe event and preserve the raw status.
30. Binect MVP Acceptance Criteria
The Binect flavor MVP is acceptable when it can:
- Accept a coordination-compatible
delivery.submit_letterrequest. - Upload or simulate upload of a Binect document.
- Preserve correlation and idempotency.
- Prevent duplicate physical sends for duplicate idempotency keys.
- Add supported attachments.
- Set or preserve print/shipping options.
- Retrieve or simulate a preview.
- Submit sending.
- Poll and normalize document status.
- Poll and normalize sending/shipping status.
- Map validation success to
payload.validation_passed. - Map address/layout validation failure to
payload.validation_failed. - Map sending submission to
delivery.payload.submitted. - Map postal handover only when semantically supported by provider status.
- Provide a Binect letter timeline.
- Provide a Binect evidence assessment.
- Integrate with
coordination-enginewithout overclaiming physical delivery or human awareness.
31. Open Questions
- Which exact Binect native statuses should map to
delivery.production.started,delivery.production.completed, anddelivery.postal.handed_over? - Does the relevant Binect account/API configuration expose webhooks, or is polling the required baseline?
- Which postal products are available for the target Binect customer/account?
- Which cancellation states are possible after upload but before sending or production?
- Which fields in the live Swagger/API represent child-document status for serial documents?
- How should provider price calculation be represented when a document is uploaded but not yet sent?
- Which preview formats are available in the target environment?
- Are return-mail or undeliverable events available through API status, manual import, or a separate process?
- Are registered-mail or delivery-confirmation products available in the target Binect configuration?
- Should Binect-specific validation issues update a central contact/address quality registry?
32. Non-Goals
The Binect flavor is not:
- a document authoring system.
- a PDF renderer by default.
- a legal notice system by itself.
- a postal carrier.
- a general Binect UI replacement.
- the owner of coordination case success.
- the owner of contract, payment, or signature result semantics.
It integrates Binect hybrid-mail capabilities into the coordination framework.
33. Summary
HybridmailBinectSpecification.md defines the Binect provider flavor for hybridmail-connect.
The Binect flavor models Binect as a document-centric hybrid-mail provider with:
- document upload
- validation
- attachments
- print and shipping options
- preview
- sending
- document and shipping status
- serial/child document status
- production and postal evidence mapping
The key rule is:
Binect events are provider, document, production, and postal-chain evidence. They are not automatic coordination result satisfaction. hybridmail-connect reports Binect-channel facts and uncertainty. coordination-engine evaluates intended results.