{"openapi":"3.0.0","info":{"title":"SaasRock API","version":"1.0.0"},"paths":{"/api/auth/login":{"post":{"tags":["Auth"],"description":"Authenticate a user and get a token","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string"},"password":{"type":"string"}},"required":["email","password"]}}}},"responses":{"200":{"description":"User logged in successfully","content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string"},"user":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"}}}}}}}},"400":{"description":"Invalid email or password"}}}},"/api/companies":{"get":{"tags":["Companies"],"description":"Get a list of Companies","operationId":"get-all-companies","security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}],"responses":{"200":{"description":"OK"},"400":{"description":"Bad Request"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}}},"post":{"tags":["Companies"],"description":"Create a new Company","operationId":"create-companies","security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"address":{"type":"string"},"phone":{"type":"string"},"source":{"type":"string"},"logo":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"name":{"type":"string"},"file":{"type":"string"},"type":{"type":"string"}}}}}}}}},"responses":{"200":{"description":"OK"},"400":{"description":"Bad Request"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}}}},"/api/companies/{id}":{"get":{"tags":["Companies"],"description":"Get a single Company","operationId":"get-companies","security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true,"description":"The id of the Company"}],"responses":{"200":{"description":"OK"},"400":{"description":"Bad Request"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}}},"put":{"tags":["Companies"],"description":"Update an existing Company","operationId":"update-companies","security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"address":{"type":"string"},"phone":{"type":"string"},"source":{"type":"string"},"logo":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"name":{"type":"string"},"file":{"type":"string"},"type":{"type":"string"}}}}}}}}},"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true,"description":"The id of the Company"}],"responses":{"200":{"description":"OK"},"400":{"description":"Bad Request"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}}},"delete":{"tags":["Companies"],"description":"Delete an existing Company","operationId":"delete-companies","security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true,"description":"The id of the Company"}],"responses":{"200":{"description":"OK"},"400":{"description":"Bad Request"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}}}},"/api/opportunities":{"get":{"tags":["Opportunities"],"description":"Get a list of Opportunities","operationId":"get-all-opportunities","security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}],"responses":{"200":{"description":"OK"},"400":{"description":"Bad Request"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}}},"post":{"tags":["Opportunities"],"description":"Create a new Opportunity","operationId":"create-opportunities","security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"integer"},"expectedCloseDate":{"type":"string","format":"date"}}}}}},"responses":{"200":{"description":"OK"},"400":{"description":"Bad Request"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}}}},"/api/opportunities/{id}":{"get":{"tags":["Opportunities"],"description":"Get a single Opportunity","operationId":"get-opportunities","security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true,"description":"The id of the Opportunity"}],"responses":{"200":{"description":"OK"},"400":{"description":"Bad Request"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}}},"put":{"tags":["Opportunities"],"description":"Update an existing Opportunity","operationId":"update-opportunities","security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"integer"},"expectedCloseDate":{"type":"string","format":"date"}}}}}},"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true,"description":"The id of the Opportunity"}],"responses":{"200":{"description":"OK"},"400":{"description":"Bad Request"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}}},"delete":{"tags":["Opportunities"],"description":"Delete an existing Opportunity","operationId":"delete-opportunities","security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true,"description":"The id of the Opportunity"}],"responses":{"200":{"description":"OK"},"400":{"description":"Bad Request"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}}}},"/api/contacts":{"get":{"tags":["Contacts"],"description":"Get a list of Contacts","operationId":"get-all-contacts","security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}],"responses":{"200":{"description":"OK"},"400":{"description":"Bad Request"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}}},"post":{"tags":["Contacts"],"description":"Create a new Contact","operationId":"create-contacts","security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"email":{"type":"string"},"jobTitle":{"type":"string"},"status":{"type":"string"},"marketingSubscriber":{"type":"boolean"},"variant":{"type":"string"},"recurringMonths":{"type":"integer"},"firstName":{"type":"string"},"lastName":{"type":"string"}}}}}},"responses":{"200":{"description":"OK"},"400":{"description":"Bad Request"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}}}},"/api/contacts/{id}":{"get":{"tags":["Contacts"],"description":"Get a single Contact","operationId":"get-contacts","security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true,"description":"The id of the Contact"}],"responses":{"200":{"description":"OK"},"400":{"description":"Bad Request"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}}},"put":{"tags":["Contacts"],"description":"Update an existing Contact","operationId":"update-contacts","security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"email":{"type":"string"},"jobTitle":{"type":"string"},"status":{"type":"string"},"marketingSubscriber":{"type":"boolean"},"variant":{"type":"string"},"recurringMonths":{"type":"integer"},"firstName":{"type":"string"},"lastName":{"type":"string"}}}}}},"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true,"description":"The id of the Contact"}],"responses":{"200":{"description":"OK"},"400":{"description":"Bad Request"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}}},"delete":{"tags":["Contacts"],"description":"Delete an existing Contact","operationId":"delete-contacts","security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true,"description":"The id of the Contact"}],"responses":{"200":{"description":"OK"},"400":{"description":"Bad Request"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}}}},"/api/submissions":{"get":{"tags":["Submissions"],"description":"Get a list of Submissions","operationId":"get-all-submissions","security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}],"responses":{"200":{"description":"OK"},"400":{"description":"Bad Request"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}}},"post":{"tags":["Submissions"],"description":"Create a new Submission","operationId":"create-submissions","security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"users":{"type":"string"},"message":{"type":"string"}}}}}},"responses":{"200":{"description":"OK"},"400":{"description":"Bad Request"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}}}},"/api/submissions/{id}":{"get":{"tags":["Submissions"],"description":"Get a single Submission","operationId":"get-submissions","security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true,"description":"The id of the Submission"}],"responses":{"200":{"description":"OK"},"400":{"description":"Bad Request"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}}},"put":{"tags":["Submissions"],"description":"Update an existing Submission","operationId":"update-submissions","security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"users":{"type":"string"},"message":{"type":"string"}}}}}},"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true,"description":"The id of the Submission"}],"responses":{"200":{"description":"OK"},"400":{"description":"Bad Request"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}}},"delete":{"tags":["Submissions"],"description":"Delete an existing Submission","operationId":"delete-submissions","security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true,"description":"The id of the Submission"}],"responses":{"200":{"description":"OK"},"400":{"description":"Bad Request"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}}}},"/api/employees":{"get":{"tags":["Employees"],"description":"Get a list of Employees","operationId":"get-all-employees","security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}],"responses":{"200":{"description":"OK"},"400":{"description":"Bad Request"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}}},"post":{"tags":["Employees"],"description":"Create a new Employee","operationId":"create-employees","security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"firstName":{"type":"string"},"lastName":{"type":"string"},"email":{"type":"string"},"salary":{"type":"integer"},"status":{"type":"string"},"photo":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"name":{"type":"string"},"file":{"type":"string"},"type":{"type":"string"}}}}}}}}},"responses":{"200":{"description":"OK"},"400":{"description":"Bad Request"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}}}},"/api/employees/{id}":{"get":{"tags":["Employees"],"description":"Get a single Employee","operationId":"get-employees","security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true,"description":"The id of the Employee"}],"responses":{"200":{"description":"OK"},"400":{"description":"Bad Request"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}}},"put":{"tags":["Employees"],"description":"Update an existing Employee","operationId":"update-employees","security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"firstName":{"type":"string"},"lastName":{"type":"string"},"email":{"type":"string"},"salary":{"type":"integer"},"status":{"type":"string"},"photo":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"name":{"type":"string"},"file":{"type":"string"},"type":{"type":"string"}}}}}}}}},"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true,"description":"The id of the Employee"}],"responses":{"200":{"description":"OK"},"400":{"description":"Bad Request"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}}},"delete":{"tags":["Employees"],"description":"Delete an existing Employee","operationId":"delete-employees","security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true,"description":"The id of the Employee"}],"responses":{"200":{"description":"OK"},"400":{"description":"Bad Request"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}}}},"/api/github-users":{"get":{"tags":["GitHub users"],"description":"Get a list of GitHub users","operationId":"get-all-github-users","security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}],"responses":{"200":{"description":"OK"},"400":{"description":"Bad Request"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}}},"post":{"tags":["GitHub users"],"description":"Create a new GitHub user","operationId":"create-github-users","security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"username":{"type":"string"}}}}}},"responses":{"200":{"description":"OK"},"400":{"description":"Bad Request"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}}}},"/api/github-users/{id}":{"get":{"tags":["GitHub users"],"description":"Get a single GitHub user","operationId":"get-github-users","security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true,"description":"The id of the GitHub user"}],"responses":{"200":{"description":"OK"},"400":{"description":"Bad Request"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}}},"put":{"tags":["GitHub users"],"description":"Update an existing GitHub user","operationId":"update-github-users","security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"username":{"type":"string"}}}}}},"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true,"description":"The id of the GitHub user"}],"responses":{"200":{"description":"OK"},"400":{"description":"Bad Request"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}}},"delete":{"tags":["GitHub users"],"description":"Delete an existing GitHub user","operationId":"delete-github-users","security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true,"description":"The id of the GitHub user"}],"responses":{"200":{"description":"OK"},"400":{"description":"Bad Request"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}}}},"/api/relationships":{"post":{"tags":["Relationships"],"description":"Create a relationship between two rows","responses":{"200":{"description":"OK"},"400":{"description":"Bad Request"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"parent":{"type":"string"},"child":{"type":"string"}},"required":["parent","child"]}}}}}},"/api/relationships/{id}":{"get":{"tags":["Relationships"],"description":"Get a relationship","responses":{"200":{"description":"OK"},"400":{"description":"Bad Request"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true,"description":"The id of the relationship"}]},"delete":{"tags":["Relationships"],"description":"Delete a relationship","responses":{"200":{"description":"OK"},"400":{"description":"Bad Request"},"404":{"description":"Not Found"},"500":{"description":"Internal Server Error"}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true,"description":"The id of the relationship"}]}}},"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-Api-Key"},"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}}}}