Thank you for your interest in contributing to the EODHD OpenAPI Specification!
- Fork the repository on GitHub
- Clone your fork locally:
git clone https://github.com/yourusername/eodhd-openapi-spec.git cd eodhd-openapi-spec - Install dependencies:
npm install # or pip install pyyaml
Each API endpoint has its own file in the paths/ directory:
- Find the relevant endpoint file (e.g.,
paths/eod_{ticker}.yaml) - Make your changes following OpenAPI 3.1.0 specification
- Update descriptions, parameters, or response schemas as needed
To add a new data schema:
- Create a new file in
components/schemas/(e.g.,NewSchema.yaml) - Define your schema following JSON Schema 2020-12 format:
NewSchema: type: object properties: field1: type: string description: Description of field1 field2: type: number description: Description of field2 required: - field1
- Reference it in
components/index.yaml:schemas: NewSchema: $ref: './schemas/NewSchema.yaml#/NewSchema'
Follow the same pattern as schemas:
- Create file in
components/parameters/orcomponents/responses/ - Update
components/index.yamlwith the reference
Always validate your changes before submitting:
# Using npm script
npm run validate
# Using shell script
bash validate.sh
# Using Redocly CLI directly
npx @redocly/cli lint openapi.yamlPreview the specification in a browser:
npm run previewThis will start a local server at http://localhost:8080
Ensure client code can be generated:
# Python client
npm run generate-python
# TypeScript client
npm run generate-typescript- Use 2 spaces for indentation
- No trailing whitespace
- UTF-8 encoding
- Unix line endings (LF)
- Write clear, concise descriptions
- Use proper grammar and punctuation
- Include examples where helpful
- Document all required vs optional fields
Always provide examples for:
- Request parameters
- Request bodies
- Response bodies
Example format:
examples:
example1:
summary: Basic example
value:
field1: "value1"
field2: 123Follow conventional commit format:
type(scope): subject
body (optional)
footer (optional)
Types:
feat: New feature or endpointfix: Bug fix or correctiondocs: Documentation changesstyle: Formatting changesrefactor: Code restructuringtest: Adding testschore: Maintenance tasks
Examples:
feat(endpoints): add new options data endpoint
docs(readme): update authentication section
fix(schemas): correct InternalUser schema property types
Use descriptive branch names:
feature/add-new-endpointfix/correct-schema-definitiondocs/update-examples
- Create a descriptive PR title following commit message format
- Describe your changes in the PR description:
- What changed?
- Why was it changed?
- How was it tested?
- Link related issues if applicable
- Ensure validation passes:
- Run
npm run validate - Fix any linting errors
- Run
- Request review from maintainers
- Address feedback if requested
- Wait for approval before merging
- Changes follow OpenAPI 3.1.0 specification
- All files use consistent formatting (2-space indentation)
- Validation passes (
npm run validate) - Documentation is updated if needed
- Examples are provided for new endpoints/schemas
- Commit messages follow conventional format
- Branch is up to date with main
If you have questions or need help:
- Check existing Issues
- Review the OpenAPI Specification
- Open a new issue with your question
Please be respectful and professional in all interactions. We aim to maintain a welcoming and inclusive community.
Thank you for contributing! 🎉