Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
184 commits
Select commit Hold shift + click to select a range
f28aecb
Update PHP requirement to ^8.2 and test matrix to [8.2, 8.3, 8.4]
MarketDataApp Jan 16, 2026
d524576
Update phpunit/phpunit requirement from ^10.3.2 to ^11.4.0
dependabot[bot] Oct 7, 2024
f755356
Update documentation
KerryJones Sep 24, 2024
95d9359
Update PHPUnit XML schema to 11.4
MarketDataApp Jan 16, 2026
c4f6391
Update CHANGELOG for v0.7.0-beta with breaking changes
MarketDataApp Jan 16, 2026
4f9b50e
Fix integration tests and remove deprecated rho property
MarketDataApp Jan 16, 2026
831e40f
Remove deprecated bulkQuotes endpoint
MarketDataApp Jan 16, 2026
16aafc3
Add retry logic with exponential backoff and fix flaky tests
MarketDataApp Jan 17, 2026
78436bc
Add user endpoint to Utilities with comprehensive tests
MarketDataApp Jan 17, 2026
0052313
Add 401 UNAUTHORIZED exception support
MarketDataApp Jan 17, 2026
b1a1e00
Add automatic rate limit tracking to client
MarketDataApp Jan 17, 2026
85b0814
Update rate limit property names and add examples directory
MarketDataApp Jan 17, 2026
0ee1735
Add token validation on client initialization
MarketDataApp Jan 17, 2026
6b10316
Add automatic environment variable and .env file support
MarketDataApp Jan 17, 2026
6e31bdb
Add PHP 8.5 support and comprehensive testing strategy
MarketDataApp Jan 18, 2026
f69efb6
Add test-with-act.sh script for quick PHP version testing
MarketDataApp Jan 18, 2026
f6763a6
feat: Add mode parameter support for universal parameters
MarketDataApp Jan 18, 2026
d9a5a26
Add date_format parameter for CSV exports
MarketDataApp Jan 21, 2026
f220b02
Allow date_format parameter with HTML format
MarketDataApp Jan 21, 2026
76b28d5
Add columns parameter for CSV and HTML output formats
MarketDataApp Jan 21, 2026
a7a2526
Add add_headers parameter support for CSV/HTML outputs
MarketDataApp Jan 21, 2026
0263bd5
Add filename parameter for CSV/HTML output format
MarketDataApp Jan 21, 2026
28ead88
Implement prices endpoint for stocks
MarketDataApp Jan 21, 2026
682ed87
Add enhanced input validation across all SDK endpoints
MarketDataApp Jan 21, 2026
4f042e1
Implement universal parameters feature parity with Python SDK
MarketDataApp Jan 21, 2026
158228b
Add test runner script and reorganize PHPUnit configuration
MarketDataApp Jan 21, 2026
a19742d
Add version-based User-Agent header following RFC 7231
MarketDataApp Jan 21, 2026
90294df
Implement full API status endpoint with caching and service status ch…
MarketDataApp Jan 21, 2026
aeff4a3
Implement intelligent retry with API status checking
MarketDataApp Jan 21, 2026
0a9f3af
Update GitHub Actions workflows and fix PHP 8.5 deprecation
MarketDataApp Jan 21, 2026
04f105b
Add comprehensive unit tests for API status, error handling, exceptio…
MarketDataApp Jan 21, 2026
45b88fc
Mock /user/ endpoint for unit tests to prevent real API calls
MarketDataApp Jan 22, 2026
75cd87c
Document mock response sources in unit tests
MarketDataApp Jan 22, 2026
2598147
Refactor stocks tests into separate files and update with real API data
MarketDataApp Jan 22, 2026
17fd043
Fix Windows test failures by making OS-specific tests pass on all pla…
MarketDataApp Jan 22, 2026
6078dfe
Fix Windows test: use protected system directory instead of reserved …
MarketDataApp Jan 22, 2026
2f27c71
Fix Windows test: create read-only file and attempt overwrite
MarketDataApp Jan 22, 2026
ce2774a
Utilities tests at 100% coverage
MarketDataApp Jan 22, 2026
60d6981
test: achieve 98.10% coverage for ApiStatusData response class
MarketDataApp Jan 22, 2026
d1afa64
test: Add tests for parseDateToTimestamp to achieve 100% coverage on …
MarketDataApp Jan 22, 2026
0d7709f
Fix: Restore MARKETDATA_TOKEN after unit tests to prevent integration…
MarketDataApp Jan 22, 2026
34b5761
test: Add integration tests for UniversalParametersConfig to validate…
MarketDataApp Jan 22, 2026
6823fbb
Add tests for ClientBase file writing error paths
MarketDataApp Jan 22, 2026
f586603
Improve ClientBase coverage: Add tests for validateResponseStatusCode
MarketDataApp Jan 22, 2026
dfe89ff
Improve ClientBase coverage: Add test for exception handling in shoul…
MarketDataApp Jan 22, 2026
1861360
test: Add coverage for ClientBase makeRawRequest exception re-throw path
MarketDataApp Jan 22, 2026
a3d9895
Improve ClientBase coverage: Add test for async RequestException retr…
MarketDataApp Jan 22, 2026
8a526ac
Add tests for ClientBase RequestError catch block in sync execute method
MarketDataApp Jan 22, 2026
d5ec579
Add tests for async RequestError catch block in ClientBase
MarketDataApp Jan 22, 2026
ed8ee0a
test: Add coverage for async BadStatusCodeError catch block in Client…
MarketDataApp Jan 22, 2026
e72359d
test: Fix Settings exception handling test to improve coverage
MarketDataApp Jan 22, 2026
1c1fc5e
test: Fix flaky Prices integration tests for numeric type variance
MarketDataApp Jan 22, 2026
210ab6d
test: Add Settings filesystem root coverage test
MarketDataApp Jan 22, 2026
4c5527c
test: Add Settings getcwd() false coverage test
MarketDataApp Jan 22, 2026
3d4e146
Enhance test.sh with cleanup functions for old coverage files and tes…
MarketDataApp Jan 22, 2026
3f01af1
feat: Add automatic concurrent request handling for stocks.candles
MarketDataApp Jan 23, 2026
9815666
feat: Enhance test.sh for better output handling and logging
MarketDataApp Jan 23, 2026
b1f1579
refactor: Split test files by endpoint and universal parameter
MarketDataApp Jan 23, 2026
3375664
refactor: Move filename tests outside UniversalParameters, merge Para…
MarketDataApp Jan 23, 2026
0d79309
refactor: Split Options tests by endpoint
MarketDataApp Jan 23, 2026
d34b7f8
feat: Add PSR-3 compatible logging system
MarketDataApp Jan 23, 2026
306802d
test: Add coverage for makeRawRequest with arguments
MarketDataApp Jan 23, 2026
cfc54f0
feat: Add API-wide concurrent request limit of 50
MarketDataApp Jan 23, 2026
40f65f6
feat: Support multi-symbol quotes in single API request
MarketDataApp Jan 23, 2026
6c20f56
test: Add coverage for parallel execution and async rate limits
MarketDataApp Jan 24, 2026
76b11e3
fix: Skip FilenameTest integration tests when no API token available
MarketDataApp Jan 24, 2026
73f017e
fix: Add trailing slashes to single-symbol endpoint URLs
MarketDataApp Jan 24, 2026
b000595
test: Set log level to CRITICAL during test runs
MarketDataApp Jan 24, 2026
7eaf169
feat: Add partial failure tolerance for multi-symbol options quotes
MarketDataApp Jan 24, 2026
9e9ca5b
test: Add integration tests for expired/unexpired options edge cases
MarketDataApp Jan 24, 2026
13789c4
feat!: Unify options Quote and OptionChainStrike into OptionQuote
MarketDataApp Jan 24, 2026
e21767c
feat: Add convenience methods to OptionChains
MarketDataApp Jan 24, 2026
36571a4
feat: Generate coverage.md with uncovered line numbers
MarketDataApp Jan 24, 2026
c879d1d
test: Add unit tests for OptionChains convenience methods
MarketDataApp Jan 24, 2026
7d24558
feat: Add __toString() methods to all SDK response objects
MarketDataApp Jan 24, 2026
77e2058
test: Add comprehensive __toString() coverage tests
MarketDataApp Jan 24, 2026
46fcf1f
test: Achieve 100% coverage for __toString() methods
MarketDataApp Jan 24, 2026
8e3f586
chore: Add documentation-tests and coverage.md to .gitignore
MarketDataApp Jan 24, 2026
32c2f73
chore: Update .gitignore to include .vscode directory
MarketDataApp Jan 24, 2026
d5423be
chore: Prepare v1.0.0 release
MarketDataApp Jan 24, 2026
33854df
fix: Upload coverage from single canonical job only
MarketDataApp Jan 24, 2026
fcff364
fix: Use string 'true'/'false' for boolean API parameters
MarketDataApp Jan 25, 2026
f2c3386
feat: Add MarketDataException base class with support ticket helpers
MarketDataApp Jan 25, 2026
a182a78
chore: Update CHANGELOG and add error handling examples
MarketDataApp Jan 25, 2026
34ef1f4
chore: Update .gitignore and remove deprecated comments in Options.php
MarketDataApp Jan 25, 2026
277758f
refactor: Reorganize tests by endpoint group
MarketDataApp Jan 25, 2026
e43475d
docs: Add rate limit tracking documentation and example
MarketDataApp Jan 25, 2026
78e7391
docs: Add comprehensive SDK examples with documentation
MarketDataApp Jan 25, 2026
0a71582
fix: Resolve 8 API parameter and validation bugs
MarketDataApp Jan 25, 2026
617e927
fix: Check numeric before strtotime in date parsing
MarketDataApp Jan 25, 2026
d20468d
test: Capture logger output in tests to reduce noise
MarketDataApp Jan 25, 2026
7fb9331
fix: Allow explicit adjust_splits=false in candles methods
MarketDataApp Jan 25, 2026
6ccb877
fix: Preserve time-of-day when splitting candle date ranges
MarketDataApp Jan 25, 2026
590ba8e
fix: Add symbol validation to bulkCandles endpoint
MarketDataApp Jan 25, 2026
1667af9
fix: Support Format enum in Client::execute() methods
MarketDataApp Jan 25, 2026
a68ffa6
fix: Trim whitespace from symbols in single-symbol endpoints
MarketDataApp Jan 25, 2026
6d17600
test: Add unit tests for CSV/HTML format handling in parallel requests
MarketDataApp Jan 25, 2026
754d86a
fix: Trim whitespace from symbols in MutualFunds::candles()
MarketDataApp Jan 25, 2026
5a7e4b7
fix: Add extended parameter to quote() and quotes() methods
MarketDataApp Jan 25, 2026
6e206a1
fix: Remove date range requirement from Stocks::news()
MarketDataApp Jan 25, 2026
7d98b38
fix: Remove date range requirement from Stocks::earnings()
MarketDataApp Jan 25, 2026
e9e4ca2
test: Fix integration tests for quote()/quotes() parameter order
MarketDataApp Jan 25, 2026
c4c76cf
test: Add unit tests to improve coverage for CSV parallel requests
MarketDataApp Jan 25, 2026
ae17fea
test: Add tests to achieve 100% coverage for parallel CSV requests
MarketDataApp Jan 25, 2026
afbaf3e
feat: Add maxage parameter for controlling cached data freshness
MarketDataApp Jan 25, 2026
fbc085f
fix: Replace minBidAskSpread with maxBidAskSpread, add am/pm parameters
MarketDataApp Jan 25, 2026
54d8dbf
docs: Document unsupported API features (token, limit, offset)
MarketDataApp Jan 25, 2026
7fdc9a6
test: Add setMockResponsesWithHistory helper for request tracking
MarketDataApp Jan 25, 2026
a297b22
chore: Add bug-reports/ and coverage-html/ to gitignore
MarketDataApp Jan 25, 2026
53fe588
fix: Remove unimplemented datekey parameter from earnings endpoint
MarketDataApp Jan 26, 2026
5ffc757
fix: Replace deprecated @dataProvider annotations with PHP 8 attributes
MarketDataApp Jan 26, 2026
105470f
fix: Remove unsupported exchange, country, adjust_dividends parameter…
MarketDataApp Jan 26, 2026
30628de
fix: Enforce that 'to' requires either 'from' or 'countback' (not both)
MarketDataApp Jan 26, 2026
1af75b2
chore: Update LICENSE year and add test for maxage parameter in concu…
MarketDataApp Jan 26, 2026
a9fa26e
fix: Empty CSV/HTML responses no longer misclassified as JSON
MarketDataApp Jan 26, 2026
26b9918
fix: _filename no longer leaks into API query parameters
MarketDataApp Jan 26, 2026
f027808
fix: Filter JSON error payloads from multi-symbol CSV options quotes
MarketDataApp Jan 26, 2026
6ee766b
fix: Handle 204 No Content and empty JSON bodies gracefully
MarketDataApp Jan 26, 2026
ac547d8
fix: getCsv()/getHtml() throw InvalidArgumentException on wrong format
MarketDataApp Jan 26, 2026
ee4ce8c
fix: Throw exception when filename used with multi-symbol options quotes
MarketDataApp Jan 26, 2026
c4d5a77
fix: Throw ApiException for JSON errors in CSV/HTML responses
MarketDataApp Jan 26, 2026
0a7ee4f
fix: Handle DateInterval day/month/year components in maxage conversion
MarketDataApp Jan 26, 2026
8f53fa6
fix: Pass maxage through in CSV parallel request Parameters
MarketDataApp Jan 26, 2026
74a469b
fix: Use sys_get_temp_dir() for cross-platform test compatibility
MarketDataApp Jan 26, 2026
269a372
fix: Handle leading whitespace in CSV/HTML JSON error detection
MarketDataApp Jan 26, 2026
d977701
fix: Include CSV headers when first multi-symbol request fails
MarketDataApp Jan 26, 2026
fbfdb48
fix: Initialize typed properties to prevent fatal errors on CSV/no_da…
MarketDataApp Jan 26, 2026
4b834f3
fix: Preserve negative sign in formatChange() method
MarketDataApp Jan 26, 2026
c899a28
fix: Include CSV headers when first multi-symbol request fails
MarketDataApp Jan 26, 2026
fe8e646
fix: Return all dates in human-readable market status responses
MarketDataApp Jan 26, 2026
1701dd1
fix: Preserve symbol information in Candle objects for bulkCandles an…
MarketDataApp Jan 26, 2026
7ad0652
fix: Initialize typed properties in Options Lookup response for CSV/H…
MarketDataApp Jan 26, 2026
1d93113
fix: Initialize typed properties in MutualFunds Candles response for …
MarketDataApp Jan 26, 2026
205b25c
fix: Initialize typed properties in Stocks Candles response for CSV/H…
MarketDataApp Jan 26, 2026
e7c4448
fix: Initialize typed properties in BulkCandles response for CSV/HTML…
MarketDataApp Jan 26, 2026
569a968
fix: Trim whitespace from options lookup input before URL encoding
MarketDataApp Jan 26, 2026
b344242
fix: Handle unix timestamp strings in candles automatic splitting
MarketDataApp Jan 26, 2026
2fc618b
fix: Parse human-readable JSON format in MutualFunds Candles response
MarketDataApp Jan 26, 2026
7f78536
fix: Skip header stripping in CSV multi-symbol options quotes when ad…
MarketDataApp Jan 26, 2026
e464001
fix: Handle array Symbol in human-readable options lookup response
MarketDataApp Feb 17, 2026
70649a8
fix: Skip header stripping in CSV candles concurrent when add_headers…
MarketDataApp Feb 17, 2026
777c411
fix: Recognize spreadsheet serial numbers in automatic date-range spl…
MarketDataApp Feb 17, 2026
efbd8d9
fix: Include boundary day when splitting date ranges at exact year bo…
MarketDataApp Feb 17, 2026
0077548
fix: Guard optional fields in Options Quotes regular JSON format
MarketDataApp Feb 17, 2026
fa71bdc
test: Add tests to achieve 100% code coverage
MarketDataApp Feb 18, 2026
28dd441
fix: Guard optional fields in OptionChains regular JSON format
MarketDataApp Feb 18, 2026
bc79e84
fix: Guard against empty arrays in Quote human-readable format
MarketDataApp Feb 18, 2026
250c4c9
test: Add tests confirming BulkCandles handles missing symbol field
MarketDataApp Feb 18, 2026
8b9e7f2
fix: Add null guard for status field in Earnings response
MarketDataApp Feb 18, 2026
71139bf
fix: Add guards for empty arrays and missing status in News response
MarketDataApp Feb 18, 2026
5836ae1
fix: Add guards for empty arrays and missing status in Quote regular …
MarketDataApp Feb 18, 2026
e810c1e
fix: Add array validation for Symbol in Earnings human-readable format
MarketDataApp Feb 18, 2026
117b634
fix: Strip _filename from exception URLs in execute_in_parallel
MarketDataApp Feb 18, 2026
66bda09
docs: Update bugtracker with fixed bugs BUG-031 to BUG-052
MarketDataApp Feb 18, 2026
2ad761d
docs: Add architectural decision records for SDK enhancements
MarketDataApp Feb 18, 2026
e766f7d
docs: Add CONTRIBUTING.md and update README for contribution guidelines
MarketDataApp Feb 18, 2026
6826d21
docs: Update comment templates in ISSUE_WORKFLOW.md
MarketDataApp Feb 18, 2026
55d8bc2
docs: Enhance contribution guidelines with bug finding workflow
MarketDataApp Feb 18, 2026
8af57c1
docs: Update CHANGELOG.md for v0.6.0-beta release
MarketDataApp Feb 18, 2026
898fae4
test: Add unit test for handling empty arrays in human-readable news …
MarketDataApp Feb 18, 2026
9f986bb
docs: Add 7 real-world example mini-applications
MarketDataApp Feb 19, 2026
90c81fb
docs: Require API documentation verification in bug reports
MarketDataApp Feb 20, 2026
393ea71
docs: Clarify that bug hunts require creating GitHub issues
MarketDataApp Feb 20, 2026
19b71f2
fix: Add null checks for Quote human-readable format fields (closes #44)
MarketDataApp Feb 20, 2026
2854744
fix: Use minimum array length in Candles to prevent out-of-bounds acc…
MarketDataApp Feb 20, 2026
0688648
fix: Use minimum array length in OptionChains to prevent out-of-bound…
MarketDataApp Feb 20, 2026
ab03aba
fix: Add null-coalescing and min array length in Earnings (closes #47)
MarketDataApp Feb 20, 2026
a63a226
test: Add test for Earnings ok status with empty arrays (closes #48)
MarketDataApp Feb 20, 2026
cf0f314
test: Add test for Candles ok status with empty arrays (closes #49)
MarketDataApp Feb 20, 2026
dc20441
test: Add test for OptionChains ok status with empty arrays (closes #50)
MarketDataApp Feb 20, 2026
b350fe2
fix: Validate date keys in Strikes response to ignore unknown metadat…
MarketDataApp Feb 20, 2026
5b16b46
fix: Trim whitespace in CSV header deduplication for robust compariso…
MarketDataApp Feb 20, 2026
50a1deb
fix: Base failure tolerance on parameter value, not func_num_args (cl…
MarketDataApp Feb 20, 2026
a901396
fix: Add symbol deduplication in Stocks endpoint for consistency (clo…
MarketDataApp Feb 20, 2026
034b8a8
fix: Add single-symbol optimization in Stocks.quotes() for consistenc…
MarketDataApp Feb 20, 2026
9fff370
fix: Use specific date patterns in canParseAsDate() to avoid false po…
MarketDataApp Feb 20, 2026
b339c48
fix: Normalize symbols to uppercase for proper deduplication
MarketDataApp Feb 20, 2026
02f219f
fix: Support all API relative date formats in canParseAsDate()
MarketDataApp Feb 20, 2026
bbf8337
fix: derive PHP User-Agent version from Composer metadata
MarketDataApp Feb 20, 2026
17f2f20
fix: harden release validation and permission-assumption tests
MarketDataApp Feb 20, 2026
95d06f5
chore: update PHPUnit version in CHANGELOG and fix README example
MarketDataApp Feb 20, 2026
7a0b7d1
chore(docs): publish phpdoc to github pages
MarketDataApp Feb 20, 2026
b3abd6b
chore(docs): stop tracking generated docs artifacts
MarketDataApp Feb 20, 2026
b090d30
ci(release): add gated workflow-dispatch release publisher
MarketDataApp Feb 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
689 changes: 689 additions & 0 deletions .github/BUG_FINDING.md

Large diffs are not rendered by default.

161 changes: 112 additions & 49 deletions .github/ISSUE_TEMPLATE/bug.yml
Original file line number Diff line number Diff line change
@@ -1,58 +1,121 @@
name: Bug Report
description: Report an Issue or Bug with the Package
description: Report a bug in the Market Data PHP SDK
title: "[Bug]: "
labels: ["bug"]
body:
- type: markdown
attributes:
value: |
We're sorry to hear you have a problem. Can you help us solve it by providing the following details.
- type: textarea
id: what-happened
attributes:
label: What happened?
description: What did you expect to happen?
placeholder: I cannot currently do X thing because when I do, it breaks X thing.
validations:
- type: markdown
attributes:
value: |
Thanks for reporting a bug. Please fill out all required fields to help us reproduce and fix the issue.

**Important:** The SDK returns data exactly as the API provides it. Before reporting, please verify the behavior you're seeing differs from what the [API documentation](https://www.marketdata.app/docs/api) describes.

- type: checkboxes
id: api-docs-verified
attributes:
label: API Documentation Verification
description: Confirm you've checked the API documentation before reporting this as an SDK bug.
options:
- label: I have reviewed the [API documentation](https://www.marketdata.app/docs/api) for this endpoint
required: true
- type: textarea
id: how-to-reproduce
attributes:
label: How to reproduce the bug
description: How did this occur, please add any config values used and provide a set of reliable steps if possible.
placeholder: When I do X I see Y.
validations:
- label: The behavior I'm reporting differs from what the API documentation describes (not just unexpected to me)
required: true
- type: input
id: package-version
attributes:
label: Package Version
description: What version of our Package are you running? Please be as specific as possible
placeholder: 2.0.0
validations:
required: true
- type: input
id: php-version
attributes:
label: PHP Version
description: What version of PHP are you running? Please be as specific as possible
placeholder: 8.2.0
validations:
required: true
- type: dropdown
id: operating-systems
attributes:
label: Which operating systems does with happen with?
description: You may select more than one.
multiple: true
options:

- type: dropdown
id: endpoint
attributes:
label: SDK Endpoint
description: Which part of the SDK is affected?
options:
- stocks
- options
- markets
- mutual_funds
- utilities
- Client (general)
- Other
validations:
required: true

- type: input
id: method
attributes:
label: Method
description: Which method are you calling? (e.g., candles, quote, option_chain)
placeholder: candles
validations:
required: true

- type: textarea
id: reproduction
attributes:
label: Reproduction Code
description: Complete, runnable PHP code that demonstrates the bug. Must be self-contained.
placeholder: |
<?php
require 'vendor/autoload.php';

$client = new MarketDataApp\Client();
$result = $client->stocks->candles('AAPL', from: '2024-01-01');
// Bug: ...
render: php
validations:
required: true

- type: textarea
id: expected
attributes:
label: Expected Behavior
description: What should happen?
placeholder: The method should return candle data for the specified date range.
validations:
required: true

- type: textarea
id: actual
attributes:
label: Actual Behavior
description: What actually happens? Include any error messages.
placeholder: |
TypeError: Cannot access property on null
Stack trace: ...
validations:
required: true

- type: input
id: sdk-version
attributes:
label: SDK Version
description: Run `composer show marketdataapp/sdk-php` to find this
placeholder: "1.0.0"
validations:
required: true

- type: input
id: php-version
attributes:
label: PHP Version
description: Run `php -v` to find this
placeholder: "8.2.0"
validations:
required: true

- type: dropdown
id: os
attributes:
label: Operating System
multiple: true
options:
- macOS
- Windows
- Linux
- type: textarea
id: notes
attributes:
label: Notes
description: Use this field to provide any other notes that you feel might be relevant to the issue.
validations:
required: false
validations:
required: false

- type: textarea
id: notes
attributes:
label: Additional Context
description: Any other relevant information (config, workarounds tried, etc.)
validations:
required: false
Loading
Loading