All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
1.9.1 - 2026-10-08
- Premature Stream Termination: Fixed auto-pagination in
Endpoint.stream()aborting after the first page due to Mailjet's page-localTotalmetadata (Total == len(Data)). Iteration now continues across full pages until receiving a short or empty page (len(data) < chunk_size). - Stream Limit Parameter Normalization:
Endpoint._normalize_stream_filtersnow strips both"limit"and"Limit"from input filters sochunk_sizestrictly dictates the request page window. - Integration Webhook Collision: Added idempotent pre-test cleanup to
test_live_eventcallbackurl_crud_lifecycleto remove leftover"open"webhooks and avoid HTTP 400MJ18uniqueness constraint failures.
- API Ceiling Guardrail: Enforced
Endpoint.MAX_LIMIT = 1000to rejectchunk_size > 1000with a descriptiveValueError, preventing silent page truncation from Mailjet's upstream 1,000-record limit. - Pagination Examples & CI Checks: Added
stream_all_contactstosamples/contacts_sample.py, and added live verification for.stream(), offset resumption, and multidict query filters tosamples/smoke_readme_runner.py. - Pagination Unit Tests: Added test coverage in
tests/unit/test_endpoint.pyverifying page-local totals across varied offsets, empty collection exits, casing normalization, and maximum limit rejections.
- HTML Tag Bomb DoS Mitigation (CWE-400): Introduced
SecurityGuard.MAX_TAG_COUNT = 10000and tag-counting enforcement in_SpamGuardParseracross all tag types and comments, raisingValidationErroron nested tag flood attacks. - Security Policy Update: Updated
SECURITY.mdsupported releases table to designate versions< 1.9.1as end-of-life.
- Documentation: Updated
README.mdwith explicit examples comparing manual single-pageGETqueries (Limit,Offset,Sort) with lazy.stream()auto-pagination and stream resumption. - CI & Maintenance: Reduced ClusterFuzzLite batch fuzzing schedule to monthly, clarified the security scan workflow schedule, and bumped pre-commit hook revisions (
commitizen,semgrep,typos,check-jsonschema,slotscheck,ruff, andmypy). - Workflow Dependencies: Upgraded GitHub Actions dependencies across CI workflows (
codeql-action,setup-miniconda,codecov-action, andosv-scanner-action).
- PR #161: build(deps): bump github/codeql-action/analyze from 4.38.1 to 4.38.2.
- PR #160: build(deps): bump github/codeql-action/upload-sarif from 4.38.1 to 4.38.2.
- PR #159: Release 1.9.1.
- PR #158: Fix stream pagination premature termination on page-local Total.
- PR #157: build(deps): bump github/codeql-action/analyze from 4.38.0 to 4.38.1.
- PR #156: build(deps): bump github/codeql-action/upload-sarif from 4.38.0 to 4.38.1.
- PR #155: build(deps): bump conda-incubator/setup-miniconda from 4.0.1 to 4.1.0.
- PR #154: build(deps): bump codecov/codecov-action from 7.0.0 to 7.1.1.
- PR #153: build(deps): bump google/osv-scanner-action/osv-scanner-action from 2.5.1 to 2.6.0.
- PR #152: build(deps): bump github/codeql-action/analyze from 4.37.9 to 4.38.0.
- PR #151: build(deps): bump github/codeql-action/upload-sarif from 4.37.9 to 4.38.0.
1.9.0 - 2026-09-14
-
Static O(1) Route Additions: Registered missing static route definitions in
ROUTE_MAPforcontactslist_csvdataandbatchjob_csverror. -
Sub-Action Hyphenation: Re-implemented native CamelCase-to-kebab-case transformation for sub-actions in
Endpoint.__init__(e.g.,statistics_linkClick$\rightarrow$ statistics/link-click). -
Stream Query Parameter Casting: Added
Endpoint._cast_query_paramand_normalize_stream_filtersto automatically parse and cast multidict query filter values (such as those fromurllib.parse.parse_qs) toint,float,bool,list,tuple, orset. -
Custom Headers Support: Added optional
headersparameter toEndpoint.__call__,create(), andupdate(). -
Fuzz Dictionary Expansion: Added route tokens, streaming keywords, HTML/XSS triggers, IDN tags, and secret patterns to
tests/fuzz/fuzzer.dict.
- Stream Generator Termination: Enhanced
Endpoint.stream()to checkTotalfrom response bodies, automatically halting iteration whencurrent_offset + len(data) >= total. - Redaction of Complex Types: Expanded
RedactingFilterto recursively sanitizetyping.NamedTupleinstances (preserving structure), objects withmodel_dump()(e.g., Pydantic models),__dict__-based instances, andset/frozensetcollections. - Path Control Character Neutralization:
SecurityGuard.sanitize_log_tracenow cleans unprintable ASCII control characters ([\x00-\x1f\x7f]) before whitespace normalization. - Email IDN Parsing: Switched IDN extraction in
SecurityGuard.normalize_domaintorpartition("@")and scoped exception interception directly toUnicodeError. - Sample Updates: Refactored
samples/segments_sample.pyto usecampaigndraftand updatedsamples/smoke_readme_runner.pyhealth checks to use canonical endpointseventcallbackurlandtemplate_contents.
-
Deprecation Advisory Mapping: Introduced
DEPRECATION_ADVISORYinroutes.pyto emit non-breakingDeprecationWarningnotices pointing to recommended replacements:-
newsletterand sub-resources (newsletter_*)$\rightarrow$ campaigndraft/campaigndraft_* - Legacy statistics (
apikeytotals,campaignstatistics,liststatistics,domainstatistics, etc.)$\rightarrow$ statcountersandstatistics_recipientEsp - Removed SDK alias
webhook$\rightarrow$ official REST resourceeventcallbackurl - Legacy template endpoints (
template_update,templates_contents)$\rightarrow$ template.update(id=...)ortemplate_detailcontent(v3) /template_contents(v1)
-
- Strict Timeout Type Guard: Explicitly blocked boolean flags (
True/False) inSecurityGuard.validate_timeoutto prevent coercion to numeric1.0/0.0seconds. - Regular File Validation (CWE-400): Added explicit
Path.is_file()verification inSecurityGuard.check_file_sizebefore evaluating file stats. - Header Injection Screen (CWE-113): Broadened header sanitization in
Client.api_callto acceptMapping[str, str | None]and screen non-Nonevalues against CRLF injection patterns.
- ClusterFuzzLite Workflows: Removed redundant
.github/workflows/cflite_build.ymland.github/workflows/cflite_cron.ymlCI tasks.
- PR #150: Release 1.9.0.
- PR #149: Deprecate endpoints.
- PR #148: build(deps): bump github/codeql-action/upload-sarif from 4.37.7 to 4.37.9.
- PR #147: build(deps): bump github/codeql-action/analyze from 4.37.7 to 4.37.9.
- PR #146: build(deps): bump github/codeql-action/analyze from 4.37.6 to 4.37.7.
- PR #145: build(deps): bump github/codeql-action/upload-sarif from 4.37.6 to 4.37.7.
- PR #144: build(deps): bump google/osv-scanner-action/osv-scanner-action from 2.5.0 to 2.5.1.
1.8.0 - 2026-08-17
- Secret Obfuscation (CWE-316): Added
SecretAuthtransport adapter and recursiveRedactingFilterto strictly prevent API credentials and sensitive payload data from leaking in memory dumps, tracebacks, or system logs. - SpamGuard Analysis: Implemented internal HTML static analyzer (
_SpamGuardParser) to preemptively intercept and block known XSS vectors (e.g.,<script>,onerror=) before network dispatch. - Idempotency Fingerprinting: Automatically generates a safe SHA-256
Idempotency-Keyheader for state-mutating requests (POST,PUT,DELETE) to prevent duplicate mutations during network retries. - Punycode IDN Support (RFC 3490): Automatically normalizes Internationalized Domain Names (IDNs) in sender and recipient addresses via
SecurityGuard.normalize_domainto prevent Unicode Homograph attacks. - Control Character & CRLF Validation (CWE-20, CWE-113): Added strict rejection of unprintable ASCII control characters in HTTP headers and dynamic path segments (
SecurityGuard.sanitize_headers,SecurityGuard.sanitize_segment). - SSRF & Transport Security (CWE-918, CWE-319): Strictly enforces HTTPS scheme and authorized hostnames (
mailjet.comor local test loopbacks) duringConfiginitialization; enforces minimum TLS 1.2+ viaSecureHTTPAdapter. Disabling TLS verification now strictly raisesValueError. - Resource Exhaustion Mitigations (CWE-400): Capped
HTMLPartandTextPartinputs at 5MB safe limits, validated numeric scalar/tuple timeouts (rejectingNaN,Infinity, and non-positive values), and enforcedchunk_size > 0in generators. - Supply Chain & CI/CD Hardening: Integrated Google's ClusterFuzzLite, Zizmor, OpenSSF Scorecard, and OSV-Scanner into the GitHub Actions pipeline. Expanded the Atheris coverage-guided fuzzing suite.
-
Memory-Safe File Chunking: Introduced
ChunkedStreamerto iteratively read and base64-encode large file attachments in 512KB chunks, preventing Out-Of-Memory (OOM) allocation spikes. -
Jitter Retry Engine: Implemented custom
JitterRetryconnection pooling policy utilizing exponential backoff and randomized full jitter for transient 429/5xx status codes to mitigate the "Thundering Herd" effect. -
Fluent Builders: Added
SendPayloadBuilderto construct root Send API v3.1 payload wrappers (supportingSandboxModeandGlobals) andTemplateContentBuilderfor Content API payloads. -
Inline Attachments: Added
.attach_inline()support toMessageBuilderfor embedding inline images directly from disk. -
Expanded Route Registry: Added explicit
$O(1)$ routing entries inROUTE_MAPfor Messages, Bulk Contact Management, Campaigns, Newsletters, Template Content, DNS verifications, and Analytics endpoints. -
Fuzzer Seed Harvester: Added dynamic corpus generation tool (
seed_harvester.py) for automated security testing and schema discovery.
- O(1) Route Resolution: Replaced dynamic
__getattr__and proceduralif/elifstring concatenation chains with an immutable routing table (ROUTE_MAP) and dedicated fallback resolvers (_resolve_registry_route,_resolve_dynamic_route). - Domain Exception Mapping:
Client._execute_requestnow maps HTTP errors to specific domain exceptions (MailjetAuthError,ApiRateLimitError,DoesNotExistError,ValidationError,ApiError) with extracted response messages instead of returning raw error responses. - Stream Pagination Behavior:
Endpoint.stream()defaultchunk_sizeincreased from 100 to 1000, and now respects user-suppliedOffsetparameters for stream resumption. - Memory Density (
__slots__): Standardized__slots__acrossEndpoint,_BaseContentBuilder,MessageBuilder,SendPayloadBuilder, andTemplateContentBuilderto reduce RAM footprint and accelerate attribute access. - Template Content Schema:
TemplateContentBuildernow generates standard kebab-case keys (Text-part,Html-part) matching the legacy v3 template endpoint expectations. - Builder Immutability:
MessageBuilder.build()andTemplateContentBuilder.build()return deep/shallow dictionary copies (.copy()) to prevent downstream payload mutation. - Payload Types: Broadened
PayloadTypetype alias inmailjet_rest.typesto supportbytesandlist[Any]batch payloads.
- Legacy Serialization Parameters:
ensure_asciianddata_encodingarguments inEndpoint.__call__,create(), andupdate()emitDeprecationWarning; underlyingrequestshandles JSON serialization natively. - Legacy Utility Functions:
mailjet_rest.client.parse_responseandmailjet_rest.client.logging_handleremitDeprecationWarningin favor of standardrequests.Responsemethods and standard logging. - Unbounded Timeouts: Passing
timeout=Noneemits a deprecation warning due to unbounded socket blocking risks (CWE-400).
Config.__getitem__Routing Helper: Removed undocumented dictionary-style routing accessor (config[key]) fromConfig; route resolution is fully managed byROUTE_MAPandEndpoint.- Procedural Route Functions: Removed obsolete procedural routing helpers (
_route_send,_route_csv,_route_data,_route_rest) andEndpoint._build_csv_urlin favor of centralized_resolve_registry_routeand_resolve_dynamic_route. authAttribute Reflection: Removed raw credentials exposure onClientinstances to prevent accidental credential leakage in memory inspectors and debug traces.
- Path Traversal Bypass (CWE-22): Explicitly sanitized
action_idand dynamic path segments in legacy routing fallbacks (_resolve_dynamic_route) to prevent unescaped directory traversal execution. - Legacy Serialization for Lists: Fixed
ensure_asciianddata_encodingfallbacks inEndpoint.__call__to correctly serialize list batch payloads. - Stream None Offset Crash: Fixed
TypeErrorinEndpoint.stream()when evaluating empty orNoneoffsets. - Builder Variable Serialization: Handled non-serializable objects (such as
datetimeandUUID) inMessageBuilder.build()viadefault=strduring variable length verification.
- PR #135: Modernize SDK architecture, add fluent builders, implement O(1) routing, and harden OWASP security guardrails.
- PR #142 - build(deps): bump ossf/scorecard-action from 2.4.0 to 2.4.4.
- PR #141 — build(deps): bump github/codeql-action/analyze from 4.37.3 to 4.37.6 by @dependabot.
- PR #140 — build(deps): bump actions/upload-artifact from 4.3.3 to 7.0.1 by @dependabot.
- PR #139 — build(deps): bump codecov/codecov-action from 4.5.0 to 7.0.0 by @dependabot.
- PR #138 — build(deps): bump github/codeql-action/upload-sarif from 4.37.3 to 4.37.6 by @dependabot.
1.7.0 - 2026-06-10
- Enterprise Runtime Security: Added opt-in PEP 578 Audit Hooks (
sys.addaudithook) viaConfig.enable_security_auditto track runtime network events. - Path Traversal Mitigation: Implemented strict input sanitization using
urllib.parse.quote(safe="")across endpoints to block directory traversal attacks. - Centralized Security Control: Centralized path and string checks inside
SecurityGuard.sanitize_segmentto stop CRLF injection and traversal attempts across all requests. - Pipeline validation: Added Google's
osv-scannerand turnedpip-auditinto a strict, standalone task inside the GitHub Actions pipeline. - Static analysis: Expanded Semgrep scans to cover insecure transports and connected the custom Bandit configuration file straight into CI gates.
- Fuzz testing: Integrated the
Atheriscoverage-guided fuzzing tool into development routines via a unifiedmanage.sh fuzz_allscript.
- Static O(1) Routing: Replaced procedural dynamic routing with an immutable
ROUTE_MAPregistry to process endpoints instantly and remove lookup overhead. - Zero-Leak Sandbox Mode: Introduced a
dry_run=Trueclient initialization parameter to safely mock mutations locally without sending real network traffic. - Lazy Pagination: Added a
.stream()generator method on endpoints to handle records automatically without manual pagination loops. - Fluent payload builders: Introduced
MessageBuilderandTemplateContentBuilderto easily construct and validate complex API requests. - Custom domain exceptions: Created a dedicated error layer with clear exceptions like
ValidationErrorandMailjetAuthErrorto eliminate broad exception silencing. - Explicit type safety: Developed a complete
types.pydefinition layer to remove MyPy type blindness across internal utilities. - URL templating engine: Added a dynamic path interpolation engine to handle multi-level REST endpoints smoothly.
- Testing topology: Split tests into separate, dedicated environments for unit (fully offline), integration (live), regression, and fuzzing suites.
- Structured telemetry: Enhanced internal logging to record structured API request payloads clearly.
- Architectural Refactoring: Split the monolithic core file into single-responsibility modules and deployed
__slots__across core objects to optimize the overall memory footprint. - Internal performance tuning: Refactored core string operations to reduce cold-boot overhead by roughly 29ms.
- Signature flexibility: Relaxed internal route handler parameters to support optional name identifiers.
- Pipeline workflows: Configured pre-commit hooks to force validation over the entire repository context instead of only checking staged file fragments.
- Infrastructure updates: Upgraded core GitHub Actions dependencies to modern release versions and aligned workspace triggers.
- Development docs: Updated optimization benchmarks and performance profiling instructions.
- Legacy compatibility: Restored parity with old exceptions and dynamic routing mechanics to keep integration completely seamless for existing users.
- PR_129 - Use hyphen in the package name in readme.
- PR_130 - refactor: Modernize SDK architecture, harden security, and enable O(1) routing.
- PR_131 - Release 1.7.0.
1.6.0 - 2026-04-27
- CWE-22 (Prevented Path Traversal): Prevented vulnerabilities by enforcing strict URL encoding (
urllib.parse.quote) on all dynamically injected path parameters (idandaction_id). - CWE-113 (CRLF Injection): Added strict header validation to block HTTP Request Smuggling.
- CWE-117 (Log Forging): Implemented mandatory sanitization of telemetry data.
- CWE-316 (Secret Leakage): Enhanced
__repr__and__str__to prevent sensitive data from appearing in stack traces. - CWE-319 (Cleartext transmission): Prevented by enforcing strict
api_urlscheme validation (https) and hostname presence duringConfiginitialization. - CWE-601 (Open Redirect): Hard-disabled automatic redirects (
allow_redirects=False) for all API calls. - CWE-918 (SSRF): Added hostname validation to prevent credential exfiltration to non-Mailjet domains.
- Added comprehensive security scanning to the CI/CD pipeline (
bandit,semgrep,gitleaks,detect-secrets). - Updated
SECURITY.mdpolicy to clarify supported active branches.
- Official support for Python 3.14 (added to CI test matrix and PyPI classifiers).
- Runtime dependency
typing-extensions>=4.7.1for Python versions<3.11to support modern type hinting. - Context Managers (Resource Management): The
Clientnow supports thewithstatement (__enter__/__exit__) for automatic TCP connection pooling and socket cleanup, preventing resource leaks. - New
mailjet_rest.utils.guardrailsmodule for centralized security and routing validation. sanitize_log_traceutility to protect against Log Forging attacks.- Proactive
UserWarningfor insecure TLS configurations and unencrypted HTTP proxies. - Smart Telemetry: The SDK now automatically extracts Mailjet Trace IDs (
CustomID,Campaign,TemplateID) from payloads and headers, injecting them into debug logs for easier correlation with the Mailjet Dashboard. - Executable Documentation: Added
samples/smoke_readme_runner.pyas a dynamic test suite to guarantee allREADME.mdexamples are continuously validated and functional against the live API. - Developer Experience (DX) Guardrails: The SDK now logs explicit warnings when encountering ambiguous routing configurations (e.g., using the singular
templateresource on Content APIv1, or attempting to route the Send API outside ofv3/v3.1). - Content API (v1): Native
multipart/form-dataupload support using therequestsfileskwarg for thedata_imagesendpoint. - Safe Exceptions: Network errors are now safely encapsulated in custom
mailjet_restexceptions (TimeoutError,CriticalApiError,ApiError). - Native Logging: Centralized HTTP status and debug logging in
api_callusing standard Pythonlogging. - IDE Autocompletion: Overrode
__dir__in the coreClientto expose high-traffic dynamic endpoints (e.g.,.contact,.send,.campaigndraft) directly to IDE autocompletion engines (VS Code, PyCharm). - Validated and added explicit test coverage for Issue #97, proving
TemplateLanguageandVariablesare correctly serialized by the SDK.
- Performance: Optimized dynamic routing by introducing an instance-level
_endpoint_cache, resulting in a ~47x speedup for endpoint resolution. - Performance: Reduced RAM footprint and garbage collection overhead by implementing
__slots__across coreClient,Config, andEndpointclasses. - Performance: Optimized API call overhead by replacing dynamic header generation with
types.MappingProxyType(_JSON_HEADERS,_TEXT_HEADERS) and moving the retry configuration to aClassVar. - Performance: Improved cold boot initialization time by replacing regex (
re.match) with native string manipulation (.split()) inmailjet_rest/utils/version.py. - Test Suite Modernization: Migrated from legacy
unittestmonolith topytest, segregated intotests/unit/(offline) andtests/integration/(live network), adhering to the AAA (Arrange, Act, Assert) pattern. - CI/CD Optimization: Drastically improved GitHub Actions speed and reliability by implementing native pip dependency caching (
cache: 'pip') and isolated wheel installation tests. - Refactored
ClientandConfigusing@dataclassandrequests.Sessionfor robust connection pooling on multiple sequential requests. - Refactored
Endpoint._build_urlcyclomatic complexity by extracting pure@staticmethodhelpers (_build_csv_url,_check_dx_guardrails) to satisfy strict static analysis. - Expanded
pre-commithooks for robust security and formatting (ruff, mypy, pyright, typos, bandit, semgrep). - Defined explicit public module interfaces using
__all__to prevent namespace pollution. - Cleaned up local development environments (
environment-dev.yaml) and pinned sub-dependencies for stable CI pipelines. - Tooling Consolidation: Completely migrated to Ruff as the single source of truth for linting and formatting, purging legacy tools (Black, Flake8, Pylint, Pydocstyle) from
pyproject.tomland Conda environments. - Documentation: Rewrote
README.mdto highlight modern DX configurations, including Context Managers, robust Error Handling, and Smart Telemetry.
- Passing
timeout=Noneto allow infinite socket blocking is deprecated to mitigate CWE-400. Explicit timeouts will be strictly enforced in v2.0. - Legacy HTTP exception classes (
AuthorizationError,ApiRateLimitError,DoesNotExistError,ValidationError,ActionDeniedError). The SDK natively returns therequests.Responseobject for standard HTTP status codes. - The legacy
ensure_asciianddata_encodingarguments in thecreateandupdatemethod signatures. The underlyingrequestslibrary handles UTF-8 serialization natively. - The
parse_responseandlogging_handlerutility functions. Logging is now integrated cleanly and automatically via Python's standardlogginglibrary. See theREADMEfor the new 2-line setup.
- Root
test.pymonolith (replaced by a modulartest/directory structure). - Redundant class constants (
API_REF,DEFAULT_API_URL).
- Fixed
statcountersrequired filters (explicitly added theCounterTimingparameter).
- PR_125 - Refactor client.
- PR_126 - build(deps): bump conda-incubator/setup-miniconda from 3.3.0 to 4.0.1
- PR_128 - Release 1.6.0.
- PR_129 - Use hyphen in the package name in readme.
1.5.1 - 2025-07-14
- Remove
*/_version.pyfrom.gitignore
- Improve a conda recipe
- PR_124 - Release 1.5.1
1.5.0 - 2025-07-11
- Add class
TestCsvImporwith a test suite for testing CSV import functionality totest.py - Add
types-requeststomypy'sadditional_dependenciesinpre-commithooks - Add
pydocstylepre-commit's hook - Add
*/_version.pyto.gitignore
- Fix a csvimport error 'List index (0) out of bounds': renamed
json_databack todata. Corrected behavior broken since v1.4.0
- Update pre-commit hooks to the latest versions
- Breaking changes: drop support for Python 3.9
- Import Callable from collections.abc
- Improve a conda recipe
- Update
README.md
- Add the Security Policy file
SECURITY.md - Use
permissions: contents: readin all CI workflow files explicitly - Use commit hashes to ensure reproducible builds
- Update pinning for runtime dependency
requests >=2.32.4
1.4.0 - 2025-05-07
- Enabled debug logging
- Support for Python >=3.9,<3.14
- CI Automation (commit checks, issue-triage, PR validation, publish)
- Issue templates for bug report, feature request, documentation
- Type hinting
- Docstrings
- A conda recipe (meta.yaml)
- Package management stuff: pyproject.toml, .editorconfig, .gitattributes, .gitignore, .pre-commit-config.yaml, Makefile, environment-dev.yaml, environment.yaml
- Linting: py.typed
- New samples
- New tests
- Update README.md
- Improved tests
- requirements.txt and setup.py are replaced by pyproject.toml
- .travis.yml was obsolete
- PR_105 - Update README.md, fix the license name in setup.py
- PR_107 - PEP8 enabled
- PR_108 - Support py>=39,<py313
- PR_109 - PEP 484 enabled
- PR_110 - PEP 257 enabled
- PR_111 - Enable debug logging
- PR_114 - Update README
- PR_115 - Add a conda recipe
- PR_116 - Improve CI Automation and package management
- PR_117 - Release 1.4.0
Closed issues:
- Response 400 error #59
- Lib expected to work on py3.7? #48
- FromTS-ToTS filter does not work for GET /message #47
- import name Client #33
- proxy dict #23
- Too many 500 #19
- ImportError: cannot import name Client #16
- Add a "date" property on pypi #15
- Django support #9
Merged pull requests:
- Update README.md #44 (Hyask)
- new readme version with standardized content #42 (adamyanliev)
- fix page #41 (adamyanliev)
- Fix unit tests for new API address #37 (todorDim)
- Fix URL slicing, update version in unit test #36 (todorDim)
- Add support for domain specific api url, update requests module, remove python 2.6 support #34 (todorDim)
- add versioning section #32 (adamyanliev)
- Update README.md #31 (mskochev)
- Fix README.md #30 (MichalMartinek)
v1.3.2 (2018-11-19)
Merged pull requests:
v1.3.1 (2018-11-13)
Closed issues:
- How to add a contact to a list #22
- Impossible to know what is wrong #20
- wrong version number #13
- example missing / not working #11
- Remove 'Programming Language :: Python :: 3.2', from setup.py #10
Merged pull requests:
- Features/add action #27 (todorDim)
- Fix action_id #26 (mskochev)
- Pass action id, change build_url to accept both number and string #25 (todorDim)
- README: Fix grammar #18 (bfontaine)
- Fix issue #13 #14 (latanasov)
- Improve Package version #12 (jorgii)
v1.3.0 (2017-05-31)
Closed issues:
Merged pull requests:
- Api version kwargs #8 (jorgii)
- fix unresolved variable inside build_headers #4 (vparitskiy)
v1.2.2 (2016-06-21)
Merged pull requests:
- Fix mixed indent type #3 (Malimediagroup)
v1.0.6 (2016-06-20)
Merged pull requests:
v1.0.4 (2015-11-19)
v1.0.3 (2015-10-13)
* This Changelog was automatically generated by github_changelog_generator