{"id":16134176,"url":"https://github.com/developpeurpascal/planning-api","last_synced_at":"2025-03-18T15:31:15.197Z","repository":{"id":37831730,"uuid":"477751928","full_name":"DeveloppeurPascal/Planning-API","owner":"DeveloppeurPascal","description":"Programmes serveur et client de gestion d'un planning simple avec API de consultation","archived":false,"fork":false,"pushed_at":"2024-12-22T09:02:31.000Z","size":872,"stargazers_count":3,"open_issues_count":11,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-28T10:33:23.890Z","etag":null,"topics":["api","delphi","firemonkey","javascript","php"],"latest_commit_sha":null,"homepage":"https://planningapi.olfsoftware.fr/","language":"Pascal","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DeveloppeurPascal.png","metadata":{"files":{"readme":"README.md","changelog":"ChangeLog/20230325-DeveloppeurPascal.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"DeveloppeurPascal","liberapay":"PatrickPremartin","patreon":"patrickpremartin","custom":"https://www.paypal.com/paypalme/patrickpremartin"}},"created_at":"2022-04-04T15:03:52.000Z","updated_at":"2024-12-22T09:02:35.000Z","dependencies_parsed_at":"2024-06-04T09:57:09.334Z","dependency_job_id":"04380250-199a-402a-888a-aa4a83cc80d1","html_url":"https://github.com/DeveloppeurPascal/Planning-API","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DeveloppeurPascal%2FPlanning-API","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DeveloppeurPascal%2FPlanning-API/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DeveloppeurPascal%2FPlanning-API/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DeveloppeurPascal%2FPlanning-API/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DeveloppeurPascal","download_url":"https://codeload.github.com/DeveloppeurPascal/Planning-API/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243933428,"owners_count":20370989,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","delphi","firemonkey","javascript","php"],"created_at":"2024-10-09T22:47:58.026Z","updated_at":"2025-03-18T15:31:15.184Z","avatar_url":"https://github.com/DeveloppeurPascal.png","language":"Pascal","funding_links":["https://github.com/sponsors/DeveloppeurPascal","https://liberapay.com/PatrickPremartin","https://patreon.com/patrickpremartin","https://www.paypal.com/paypalme/patrickpremartin","https://www.patreon.com/patrickpremartin"],"categories":[],"sub_categories":[],"readme":"# Planning-API\n\nServer and client programs for managing a simple schedule with a consultation API.\n\nThis project has been developed live on Twitch. Replays and additional information are available on :\n\n* [Serial Streamer](https://serialstreameur.fr/planning-api.html) if you want to see the full replays\n* [Pascal Developer](https://developpeur-pascal.fr/planning-api.html) for the Delphi part (update program, use of the API)\n* [Web developer tips](https://trucs-de-developpeur-web.fr/planning-api.html) for the web client (JavaScript) and server (PHP) parts\n\nThis code repository contains a project developed in Object Pascal language under Delphi. You don't know what Delphi is and where to download it ? You'll learn more [on this web site](https://delphi-resources.developpeur-pascal.fr/).\n\n## src-prog-maj : data update program (in Delphi)\n\nThe data update interface is developed as a FireMonkey application in Delphi. It can run on Windows, Mac and Linux (but also on Android\u0026iOS tablets if needed).\n\nYou can use [the free Community Edition of Delphi](https://www.embarcadero.com/products/delphi/starter) to compile this program for your personal use, [the Academic version of RAD Studio](https://www.embarcadero.com/development-tools-for-education) if you are in education or [one of the editions dedicated to professional users](https://www.embarcadero.com/products/delphi).\n\n## src-serveur : programs for updating and managing the API (in PHP)\n\nThe server manages the CRUD on the planning data and stores them without database (directly in JSON).\n\nA program allows the interrogation of the data for their display on a web site or elsewhere in the form of REST API in JSON.\n\nThis folder also contains the script getPlanningAPI.js which allows to retrieve the content of a schedule.\n\n## src-visu : JS scripts for querying API data\n\nExample of HTML pages using the script to consult the data of a planning hosted on a server.\n\nExamples used for blogs like https://developpeur-pascal.fr and https://trucs-de-developpeur-web.fr\n\n## Processed data\n\nThe data managed by these programs are planning information in the time zone of the site (no control, no timezone conversion).\n\nData stored in JSON :\n\n```JSON\n[\n\t{\n\t\tuid : ID of the event in the list (unique value)\n\t\tlabel : label of the event\n\t\ttype : type of event (conference, training, Twitch, webinar)\n\t\tstartdate : date\n\t\tstarttime : start time\n\t\tstoptime : end time\n\t\tlanguage : language\n\t\turl : Internet address of the event\n\t\turl_thumb : Internet address of a picture for the event\n\t\torder : order number of the event in the list (used for sorting)\n\t\tcomment : a comment for this event\n\t}\n]\n```\n\nAll the fields are in string form, without validity check.\n\n## API entry points\n\nUpdates can only be made from a program identified in the server with a public key and private keys for each API call.\n\nAll texts must be encoded in UTF-8. This is the encoding used by the output server.\n\n**You can use the programs provided on this repository for testing, but if you go to production CHANGE THE TOKEN on the Delphi and PHP side! (and don't publish them anywhere, of course)**\n\n### API keys for modifications\n\n* auth_token =\u003e public key passed on each modification call\n* add_token =\u003e private signing key (known in hard on server and client side)\n* change_token =\u003e private signing key (known in hard on server and client side)\n\n### List of events in the schedule\n\nGET url/events.php\n\nInput parameters:\n* type: optional, string, type of event we want the list of\n\t\nOutput: \n* if http status code = 200, then JSON array as string with schedule events as objects\n* otherwise, error text\n\n### Send changed events\n\nPOST url/changedevents.php\n\nInput parameters:\n* auth : string, authorization key (public)\n* events : string, JSON array of objects of modified elements\n* v: string, signature of the call (including a private key)\n\t\nOutput: \n* if http status code = 200, then JSON array as string with IDs of events whose modification was taken into account.\n* otherwise, error text\n\n### Send a new event\n\nPOST url/newevent.php\n\nInput parameters:\n* auth : string, authorization key (public)\n* event : string, JSON object of the event to add\n* v: string, signature of the call (including a private key)\n\t\nOutput: \n* if http status code = 200, then string corresponding to the unique key of the new element\n* otherwise, error text\n\n### Deleting an event\n\nPOST url/rmvevent.php\n\nInput parameters:\n* auth : string, authorization key (public)\n* id : string, uid of the event to delete\n* v : string, signature of the call (including a private key)\n\t\nOutput: \n* if http status code = 200, delete done\n* if http status code = 404, unknown event on the server\n* otherwise, text of the error\n\n## Talks and conferences\n\n### Twitch\n\nFollow my development streams of software, video games, mobile applications and websites on [my Twitch channel](https://www.twitch.tv/patrickpremartin) or as replays on [Serial Streameur](https://serialstreameur.fr/planning-api.html) mostly in French.\n\n## Using this software\n\n[Visit the software website](https://planningapi.olfsoftware.fr) to find out more about how it works, access videos and articles, find out about the different versions available and their features, contact user support...\n\n## Source code installation\n\nTo download this code repository, we recommend using \"git\", but you can also download a ZIP file directly from [its GitHub repository](https://github.com/DeveloppeurPascal/Planning-API).\n\nThis project uses dependencies in the form of sub-modules. They will be absent from the ZIP file. You'll have to download them by hand.\n\n* [DeveloppeurPascal/librairies](https://github.com/DeveloppeurPascal/librairies) must be installed in the ./lib-externes/librairies subfolder.\n\n## Compatibility\n\nAs an [Embarcadero MVP](https://www.embarcadero.com/resources/partners/mvp-directory), I benefit from the latest versions of [Delphi](https://www.embarcadero.com/products/delphi) and [C++ Builder](https://www.embarcadero.com/products/cbuilder) in [RAD Studio](https://www.embarcadero.com/products/rad-studio) as soon as they are released. I therefore work with these versions.\n\nNormally, my libraries and components should also run on at least the current version of [Delphi Community Edition](https://www.embarcadero.com/products/delphi/starter).\n\nThere's no guarantee of compatibility with earlier versions, even though I try to keep my code clean and avoid using too many of the new ways of writing in it (type inference, inline var and multiline strings).\n\nIf you detect any anomalies on earlier versions, please don't hesitate to [report them](https://github.com/DeveloppeurPascal/Planning-API/issues) so that I can test and try to correct or provide a workaround.\n\n## License to use this code repository and its contents\n\nThis source code is distributed under the [AGPL 3.0 or later license](https://choosealicense.com/licenses/agpl-3.0/).\n\nYou are generally free to use the contents of this code repository anywhere, provided that:\n* you mention it in your projects\n* distribute the modifications made to the files supplied in this project under the AGPL license (leaving the original copyright notices (author, link to this repository, license) which must be supplemented by your own)\n* to distribute the source code of your creations under the AGPL license.\n\nIf this license doesn't suit your needs, you can purchase the right to use this project under the [Apache License 2.0](https://choosealicense.com/licenses/apache-2.0/) or a dedicated commercial license ([contact the author](https://developpeur-pascal.fr/nous-contacter.php) to explain your needs).\n\nThese source codes are provided as is, without warranty of any kind.\n\nCertain elements included in this repository may be subject to third-party usage rights (images, sounds, etc.). They are not reusable in your projects unless otherwise stated.\n\n## How to ask a new feature, report a bug or a security issue ?\n\nIf you want an answer from the project owner the best way to ask for a new feature or report a bug is to go to [the GitHub repository](https://github.com/DeveloppeurPascal/Planning-API) and [open a new issue](https://github.com/DeveloppeurPascal/Planning-API/issues).\n\nIf you found a security issue please don't report it publicly before a patch is available. Explain the case by [sending a private message to the author](https://developpeur-pascal.fr/nous-contacter.php).\n\nYou also can fork the repository and contribute by submitting pull requests if you want to help. Please read the [CONTRIBUTING.md](CONTRIBUTING.md) file.\n\n## Support the project and its author\n\nIf you think this project is useful and want to support it, please make a donation to [its author](https://github.com/DeveloppeurPascal). It will help to maintain the code and binaries.\n\nYou can use one of those services :\n\n* [GitHub Sponsors](https://github.com/sponsors/DeveloppeurPascal)\n* [Liberapay](https://liberapay.com/PatrickPremartin)\n* [Patreon](https://www.patreon.com/patrickpremartin)\n* [Paypal](https://www.paypal.com/paypalme/patrickpremartin)\n\nor if you speack french you can [subscribe to Zone Abo](https://zone-abo.fr/nos-abonnements.php) on a monthly or yearly basis and get a lot of resources as videos and articles.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdeveloppeurpascal%2Fplanning-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdeveloppeurpascal%2Fplanning-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdeveloppeurpascal%2Fplanning-api/lists"}