{"id":20423790,"url":"https://github.com/4xxi/caesarapp-server","last_synced_at":"2026-05-15T01:36:13.221Z","repository":{"id":149294020,"uuid":"133209961","full_name":"4xxi/caesarapp-server","owner":"4xxi","description":"API for caesarapp — secure tool to share the data","archived":false,"fork":false,"pushed_at":"2018-08-07T12:27:42.000Z","size":201,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-10-09T13:33:35.627Z","etag":null,"topics":["security","symfony","vault"],"latest_commit_sha":null,"homepage":null,"language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/4xxi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2018-05-13T05:55:58.000Z","updated_at":"2025-08-25T16:42:14.000Z","dependencies_parsed_at":null,"dependency_job_id":"a0c28f14-26ec-4c2c-bf81-692459178ef7","html_url":"https://github.com/4xxi/caesarapp-server","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/4xxi/caesarapp-server","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/4xxi%2Fcaesarapp-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/4xxi%2Fcaesarapp-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/4xxi%2Fcaesarapp-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/4xxi%2Fcaesarapp-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/4xxi","download_url":"https://codeload.github.com/4xxi/caesarapp-server/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/4xxi%2Fcaesarapp-server/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33050347,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-13T13:14:54.681Z","status":"online","status_checked_at":"2026-05-14T02:00:06.663Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["security","symfony","vault"],"created_at":"2024-11-15T07:07:40.041Z","updated_at":"2026-05-15T01:36:13.177Z","avatar_url":"https://github.com/4xxi.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"CaesarApp Server\n==========\n\n[![Build Status](https://travis-ci.org/4xxi/caesarapp-server.svg?branch=master)](https://travis-ci.org/4xxi/caesarapp-server)\n\n## Installation Instructions\n\n### Requirements\n\n* [Docker and Docker Compose](https://docs.docker.com/engine/installation)\n* [MacOS Only]: Docker Sync (run `gem install docker-sync` to install it)\n\n### Configuration\n\nApplication configuration is stored in `.env` file.\n\n#### HTTP port\nIf you have nginx or apache installed and using 80 port on host system you can either stop them before proceeding or\nreconfigure Docker to use another port by changing value of `SERVER_HTTP_PORT` in `.env` file.\n\n#### Application environment\nYou can change application environment to `dev` of `prod` by changing `APP_ENV` variable in `.env` file.\n\n#### Redis\nRedis credentials could by reconfigured by changing variable `REDIS_URL`. It is\nrecommended to restart containers after changing these values.\n\n### Installation\n\n#### 1. Start Containers and install dependencies\nOn Linux:\n```bash\ndocker-compose -f docker-compose-dev.yml up -d\n```\nOn MacOS:\n```bash\ndocker-sync-stack start\n```\n#### 2. Open project\nJust go to [http://localhost](http://localhost)\n\n## API documentation\n\n### Message Entity\n\nThe app stores each message in redis. `Message` has the following fields:\n\n* **id** (string) is used for getting the message. It is generated automatically after `POST` request.\n* **message** (text) contains encrypted body of the message including any file attached.\n* **requestsLimit** (integer) defines how many times the message can be decrypted.\n* **secondsLimit** (integer) defines how long the message can be decrypted. After `secondsLimits` seconds the message will be permanently destroyed.\n* **expires** (date in RFC) provides exact date \u0026 time when the message is destroyed.\n\n### API calls\n\n#### Base URL\n\nBase URL for the API is `yourdomain.org/api`. All endpoints have prefix `/api`.\n\n#### Error format\n\nIf any error appears the response body would automatically get an element with key `errors`. This element has an array with the keys equal to the fields that have caused the error. Each field is also an array of string variables representing errors in text format.\n\nPlease note that in case of the error the `status code` is changed to `400` (for POST /messages request) or to `404` (GET /messages/{id})\n\n###### Example\n\n```json\n{\n    \"errors\":\n    {\n        \"secondsLimit\":\n        [\n            \"This value should not be blank.\",\n            \"This value should not be greater than 5\"\n        ],\n        \"requestsLimit\":\n        [\n            \"This value should not be blank.\"\n        ]\n    }\n}\n```\n\n#### POST /messages\n\nThe request is used to create new message.\n\n##### Inputs\n\n* message (required)\n* requestsLimit (required)\n* secondsLimit (required)\n\n**Important:** the data should be sent with POST request with raw data in json format. An example of the raw request body is the following:\n\n```json\n{\n    \"message\":\"text\",\n    \"secondsLimit\":10,\n    \"requestsLimit\":5\n}\n```\n\n#### Example Output\n\n```json\n{\n    \"id\":\"745e8728047f7c7970d13d47b2ffb737faa3c9b7\",\n    \"message\":\"text\",\n    \"expires\":\"2018-05-12T21:21:48+00:00\",\n    \"requestsLimit\":2,\n    \"secondsLimit\":100\n}\n```\n\n#### GET /messages/{id}\n\nThe request is used to get the message with given `id`.\n\n##### Inputs\n\nNo\n\n##### Output\n```json\n{\n    \"id\":\"745e8728047f7c7970d13d47b2ffb737faa3c9b7\",\n    \"message\":\"text\",\n    \"expires\":\"2018-05-12T21:21:48+00:00\",\n    \"requestsLimit\":2,\n    \"secondsLimit\":100\n}\n```\n\n##### Errors\n\nIf a message is not found the response has the status code `404` and the following error appears:\n\n```json\n{\n    \"errors\":\n    {\n        \"id\":\"Message not found\"\n    }\n}\n```\n\n#### GET /messages\n\nThe request can be used to provide the actual status of the API (test request).\n\n##### Inputs\n\nNo\n\n##### Output\n```json\n{\n    \"status\":\"OK\"\n}\n```\n\n## Other\n\n### Misc\n\n* Please note that the `requestsLimit` variable won't be changed in the response due to the security reasons (in other words: a user should not know how many tries are left).\n* Each successful request to `GET /messages/{id}` decreases by 1 the number of attempts. When it is equal to zero the message will be destroyed.\n\n### Dev Notes\n\n#### Checking code style and running tests\nFix code style by running PHP CS Fixer:\n```bash\ndocker-compose exec php vendor/bin/php-cs-fixer fix\n```\n\n### Run PHP Unit Tests:\n```bash\ndocker-compose exec php bin/phpunit\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F4xxi%2Fcaesarapp-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F4xxi%2Fcaesarapp-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F4xxi%2Fcaesarapp-server/lists"}