diff --git a/angular/openapi.json b/angular/openapi.json index 8e5af6b..cd674cb 100644 --- a/angular/openapi.json +++ b/angular/openapi.json @@ -1 +1 @@ -{"openapi":"3.1.0","info":{"title":"Imaq Platform","description":"","version":"1.0.0"},"servers":[{"url":"\/","description":""}],"paths":{"\/api\/locations":{"get":{"operationId":"api_locations_get_collection","tags":["Location"],"responses":{"200":{"description":"Location collection","content":{"application\/ld+json":{"schema":{"type":"object","properties":{"member":{"type":"array","items":{"$ref":"#\/components\/schemas\/Location.jsonld"}},"totalItems":{"type":"integer","minimum":0},"view":{"type":"object","properties":{"@id":{"type":"string","format":"iri-reference"},"@type":{"type":"string"},"first":{"type":"string","format":"iri-reference"},"last":{"type":"string","format":"iri-reference"},"previous":{"type":"string","format":"iri-reference"},"next":{"type":"string","format":"iri-reference"}},"example":{"@id":"string","type":"string","first":"string","last":"string","previous":"string","next":"string"}},"search":{"type":"object","properties":{"@type":{"type":"string"},"template":{"type":"string"},"variableRepresentation":{"type":"string"},"mapping":{"type":"array","items":{"type":"object","properties":{"@type":{"type":"string"},"variable":{"type":"string"},"property":{"type":["string","null"]},"required":{"type":"boolean"}}}}}}},"required":["member"]}}}}},"summary":"Retrieves the collection of Location resources.","description":"Retrieves the collection of Location resources.","parameters":[{"name":"page","in":"query","description":"The collection page number","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":1},"style":"form","explode":false,"allowReserved":false},{"name":"itemsPerPage","in":"query","description":"The number of items per page","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":50,"minimum":0,"maximum":100},"style":"form","explode":false,"allowReserved":false},{"name":"name","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false},{"name":"custom_json_filter","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false},{"name":"custom_json_order","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false}],"deprecated":false},"post":{"operationId":"api_locations_post","tags":["Location"],"responses":{"201":{"description":"Location resource created","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/Location.jsonld"}}},"links":{}},"400":{"description":"Invalid input"},"422":{"description":"Unprocessable entity"}},"summary":"Creates a Location resource.","description":"Creates a Location resource.","parameters":[],"requestBody":{"description":"The new Location resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/Location.jsonld"}}},"required":true},"deprecated":false}},"\/api\/locations\/{id}":{"get":{"operationId":"api_locations_id_get","tags":["Location"],"responses":{"200":{"description":"Location resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/Location.jsonld"}}}},"404":{"description":"Resource not found"}},"summary":"Retrieves a Location resource.","description":"Retrieves a Location resource.","parameters":[{"name":"id","in":"path","description":"Location identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"deprecated":false},"patch":{"operationId":"api_locations_id_patch","tags":["Location"],"responses":{"200":{"description":"Location resource updated","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/Location.jsonld"}}},"links":{}},"400":{"description":"Invalid input"},"422":{"description":"Unprocessable entity"},"404":{"description":"Resource not found"}},"summary":"Updates the Location resource.","description":"Updates the Location resource.","parameters":[{"name":"id","in":"path","description":"Location identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"requestBody":{"description":"The updated Location resource","content":{"application\/merge-patch+json":{"schema":{"$ref":"#\/components\/schemas\/Location"}}},"required":true},"deprecated":false}},"\/api\/auth":{"post":{"operationId":"login_check_post","tags":["Login Check"],"responses":{"200":{"description":"User token created","content":{"application\/json":{"schema":{"type":"object","properties":{"token":{"readOnly":true,"type":"string","nullable":false}},"required":["token"]}}}}},"summary":"Creates a user token.","description":"Creates a user token.","requestBody":{"description":"The login data","content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","nullable":false},"password":{"type":"string","nullable":false}},"required":["email","password"]}}},"required":true}}},"\/api\/media_objects":{"get":{"operationId":"api_media_objects_get_collection","tags":["MediaObject"],"responses":{"200":{"description":"MediaObject collection","content":{"application\/ld+json":{"schema":{"type":"object","properties":{"member":{"type":"array","items":{"$ref":"#\/components\/schemas\/MediaObject.jsonld-media_object.read"}},"totalItems":{"type":"integer","minimum":0},"view":{"type":"object","properties":{"@id":{"type":"string","format":"iri-reference"},"@type":{"type":"string"},"first":{"type":"string","format":"iri-reference"},"last":{"type":"string","format":"iri-reference"},"previous":{"type":"string","format":"iri-reference"},"next":{"type":"string","format":"iri-reference"}},"example":{"@id":"string","type":"string","first":"string","last":"string","previous":"string","next":"string"}},"search":{"type":"object","properties":{"@type":{"type":"string"},"template":{"type":"string"},"variableRepresentation":{"type":"string"},"mapping":{"type":"array","items":{"type":"object","properties":{"@type":{"type":"string"},"variable":{"type":"string"},"property":{"type":["string","null"]},"required":{"type":"boolean"}}}}}}},"required":["member"]}}}}},"summary":"Retrieves the collection of MediaObject resources.","description":"Retrieves the collection of MediaObject resources.","parameters":[{"name":"page","in":"query","description":"The collection page number","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":1},"style":"form","explode":false,"allowReserved":false},{"name":"itemsPerPage","in":"query","description":"The number of items per page","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":50,"minimum":0,"maximum":100},"style":"form","explode":false,"allowReserved":false}],"deprecated":false},"post":{"operationId":"api_media_objects_post","tags":["MediaObject"],"responses":{"201":{"description":"MediaObject resource created","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/MediaObject.jsonld-media_object.read"}}},"links":{}},"400":{"description":"Invalid input"},"422":{"description":"Unprocessable entity"}},"summary":"Creates a MediaObject resource.","description":"Creates a MediaObject resource.","parameters":[],"requestBody":{"description":"The new MediaObject resource","content":{"multipart\/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary"}}}}},"required":false},"deprecated":false}},"\/api\/media_objects\/{id}":{"get":{"operationId":"api_media_objects_id_get","tags":["MediaObject"],"responses":{"200":{"description":"MediaObject resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/MediaObject.jsonld-media_object.read"}}}},"404":{"description":"Resource not found"}},"summary":"Retrieves a MediaObject resource.","description":"Retrieves a MediaObject resource.","parameters":[{"name":"id","in":"path","description":"MediaObject identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"deprecated":false},"delete":{"operationId":"api_media_objects_id_delete","tags":["MediaObject"],"responses":{"204":{"description":"MediaObject resource deleted"},"404":{"description":"Resource not found"}},"summary":"Removes the MediaObject resource.","description":"Removes the MediaObject resource.","parameters":[{"name":"id","in":"path","description":"MediaObject identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"deprecated":false}},"\/api\/shipping_companies":{"get":{"operationId":"api_shipping_companies_get_collection","tags":["ShippingCompany"],"responses":{"200":{"description":"ShippingCompany collection","content":{"application\/ld+json":{"schema":{"type":"object","properties":{"member":{"type":"array","items":{"$ref":"#\/components\/schemas\/ShippingCompany.jsonld"}},"totalItems":{"type":"integer","minimum":0},"view":{"type":"object","properties":{"@id":{"type":"string","format":"iri-reference"},"@type":{"type":"string"},"first":{"type":"string","format":"iri-reference"},"last":{"type":"string","format":"iri-reference"},"previous":{"type":"string","format":"iri-reference"},"next":{"type":"string","format":"iri-reference"}},"example":{"@id":"string","type":"string","first":"string","last":"string","previous":"string","next":"string"}},"search":{"type":"object","properties":{"@type":{"type":"string"},"template":{"type":"string"},"variableRepresentation":{"type":"string"},"mapping":{"type":"array","items":{"type":"object","properties":{"@type":{"type":"string"},"variable":{"type":"string"},"property":{"type":["string","null"]},"required":{"type":"boolean"}}}}}}},"required":["member"]}}}}},"summary":"Retrieves the collection of ShippingCompany resources.","description":"Retrieves the collection of ShippingCompany resources.","parameters":[{"name":"page","in":"query","description":"The collection page number","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":1},"style":"form","explode":false,"allowReserved":false},{"name":"itemsPerPage","in":"query","description":"The number of items per page","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":50,"minimum":0,"maximum":100},"style":"form","explode":false,"allowReserved":false},{"name":"name","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false},{"name":"custom_json_filter","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false},{"name":"custom_json_order","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false}],"deprecated":false},"post":{"operationId":"api_shipping_companies_post","tags":["ShippingCompany"],"responses":{"201":{"description":"ShippingCompany resource created","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/ShippingCompany.jsonld"}}},"links":{}},"400":{"description":"Invalid input"},"422":{"description":"Unprocessable entity"}},"summary":"Creates a ShippingCompany resource.","description":"Creates a ShippingCompany resource.","parameters":[],"requestBody":{"description":"The new ShippingCompany resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/ShippingCompany.jsonld"}}},"required":true},"deprecated":false}},"\/api\/shipping_companies\/{id}":{"get":{"operationId":"api_shipping_companies_id_get","tags":["ShippingCompany"],"responses":{"200":{"description":"ShippingCompany resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/ShippingCompany.jsonld"}}}},"404":{"description":"Resource not found"}},"summary":"Retrieves a ShippingCompany resource.","description":"Retrieves a ShippingCompany resource.","parameters":[{"name":"id","in":"path","description":"ShippingCompany identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"deprecated":false},"patch":{"operationId":"api_shipping_companies_id_patch","tags":["ShippingCompany"],"responses":{"200":{"description":"ShippingCompany resource updated","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/ShippingCompany.jsonld"}}},"links":{}},"400":{"description":"Invalid input"},"422":{"description":"Unprocessable entity"},"404":{"description":"Resource not found"}},"summary":"Updates the ShippingCompany resource.","description":"Updates the ShippingCompany resource.","parameters":[{"name":"id","in":"path","description":"ShippingCompany identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"requestBody":{"description":"The updated ShippingCompany resource","content":{"application\/merge-patch+json":{"schema":{"$ref":"#\/components\/schemas\/ShippingCompany"}}},"required":true},"deprecated":false}},"\/api\/trips":{"get":{"operationId":"api_trips_get_collection","tags":["Trip"],"responses":{"200":{"description":"Trip collection","content":{"application\/ld+json":{"schema":{"type":"object","properties":{"member":{"type":"array","items":{"$ref":"#\/components\/schemas\/Trip.jsonld"}},"totalItems":{"type":"integer","minimum":0},"view":{"type":"object","properties":{"@id":{"type":"string","format":"iri-reference"},"@type":{"type":"string"},"first":{"type":"string","format":"iri-reference"},"last":{"type":"string","format":"iri-reference"},"previous":{"type":"string","format":"iri-reference"},"next":{"type":"string","format":"iri-reference"}},"example":{"@id":"string","type":"string","first":"string","last":"string","previous":"string","next":"string"}},"search":{"type":"object","properties":{"@type":{"type":"string"},"template":{"type":"string"},"variableRepresentation":{"type":"string"},"mapping":{"type":"array","items":{"type":"object","properties":{"@type":{"type":"string"},"variable":{"type":"string"},"property":{"type":["string","null"]},"required":{"type":"boolean"}}}}}}},"required":["member"]}}}}},"summary":"Retrieves the collection of Trip resources.","description":"Retrieves the collection of Trip resources.","parameters":[{"name":"page","in":"query","description":"The collection page number","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":1},"style":"form","explode":false,"allowReserved":false},{"name":"itemsPerPage","in":"query","description":"The number of items per page","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":50,"minimum":0,"maximum":100},"style":"form","explode":false,"allowReserved":false}],"deprecated":false},"post":{"operationId":"api_trips_post","tags":["Trip"],"responses":{"201":{"description":"Trip resource created","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/Trip.jsonld"}}},"links":{}},"400":{"description":"Invalid input"},"422":{"description":"Unprocessable entity"}},"summary":"Creates a Trip resource.","description":"Creates a Trip resource.","parameters":[],"requestBody":{"description":"The new Trip resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/Trip.jsonld"}}},"required":true},"deprecated":false}},"\/api\/trips\/{id}":{"get":{"operationId":"api_trips_id_get","tags":["Trip"],"responses":{"200":{"description":"Trip resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/Trip.jsonld"}}}},"404":{"description":"Resource not found"}},"summary":"Retrieves a Trip resource.","description":"Retrieves a Trip resource.","parameters":[{"name":"id","in":"path","description":"Trip identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"deprecated":false},"patch":{"operationId":"api_trips_id_patch","tags":["Trip"],"responses":{"200":{"description":"Trip resource updated","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/Trip.jsonld"}}},"links":{}},"400":{"description":"Invalid input"},"422":{"description":"Unprocessable entity"},"404":{"description":"Resource not found"}},"summary":"Updates the Trip resource.","description":"Updates the Trip resource.","parameters":[{"name":"id","in":"path","description":"Trip identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"requestBody":{"description":"The updated Trip resource","content":{"application\/merge-patch+json":{"schema":{"$ref":"#\/components\/schemas\/Trip"}}},"required":true},"deprecated":false}},"\/api\/trip_locations":{"get":{"operationId":"api_trip_locations_get_collection","tags":["TripLocation"],"responses":{"200":{"description":"TripLocation collection","content":{"application\/ld+json":{"schema":{"type":"object","properties":{"member":{"type":"array","items":{"$ref":"#\/components\/schemas\/TripLocation.jsonld"}},"totalItems":{"type":"integer","minimum":0},"view":{"type":"object","properties":{"@id":{"type":"string","format":"iri-reference"},"@type":{"type":"string"},"first":{"type":"string","format":"iri-reference"},"last":{"type":"string","format":"iri-reference"},"previous":{"type":"string","format":"iri-reference"},"next":{"type":"string","format":"iri-reference"}},"example":{"@id":"string","type":"string","first":"string","last":"string","previous":"string","next":"string"}},"search":{"type":"object","properties":{"@type":{"type":"string"},"template":{"type":"string"},"variableRepresentation":{"type":"string"},"mapping":{"type":"array","items":{"type":"object","properties":{"@type":{"type":"string"},"variable":{"type":"string"},"property":{"type":["string","null"]},"required":{"type":"boolean"}}}}}}},"required":["member"]}}}}},"summary":"Retrieves the collection of TripLocation resources.","description":"Retrieves the collection of TripLocation resources.","parameters":[{"name":"page","in":"query","description":"The collection page number","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":1},"style":"form","explode":false,"allowReserved":false},{"name":"itemsPerPage","in":"query","description":"The number of items per page","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":50,"minimum":0,"maximum":100},"style":"form","explode":false,"allowReserved":false}],"deprecated":false},"post":{"operationId":"api_trip_locations_post","tags":["TripLocation"],"responses":{"201":{"description":"TripLocation resource created","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/TripLocation.jsonld"}}},"links":{}},"400":{"description":"Invalid input"},"422":{"description":"Unprocessable entity"}},"summary":"Creates a TripLocation resource.","description":"Creates a TripLocation resource.","parameters":[],"requestBody":{"description":"The new TripLocation resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/TripLocation.jsonld"}}},"required":true},"deprecated":false}},"\/api\/trip_locations\/{id}":{"get":{"operationId":"api_trip_locations_id_get","tags":["TripLocation"],"responses":{"200":{"description":"TripLocation resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/TripLocation.jsonld"}}}},"404":{"description":"Resource not found"}},"summary":"Retrieves a TripLocation resource.","description":"Retrieves a TripLocation resource.","parameters":[{"name":"id","in":"path","description":"TripLocation identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"deprecated":false},"patch":{"operationId":"api_trip_locations_id_patch","tags":["TripLocation"],"responses":{"200":{"description":"TripLocation resource updated","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/TripLocation.jsonld"}}},"links":{}},"400":{"description":"Invalid input"},"422":{"description":"Unprocessable entity"},"404":{"description":"Resource not found"}},"summary":"Updates the TripLocation resource.","description":"Updates the TripLocation resource.","parameters":[{"name":"id","in":"path","description":"TripLocation identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"requestBody":{"description":"The updated TripLocation resource","content":{"application\/merge-patch+json":{"schema":{"$ref":"#\/components\/schemas\/TripLocation"}}},"required":true},"deprecated":false}},"\/api\/users":{"get":{"operationId":"api_users_get_collection","tags":["User"],"responses":{"200":{"description":"User collection","content":{"application\/ld+json":{"schema":{"type":"object","properties":{"member":{"type":"array","items":{"$ref":"#\/components\/schemas\/User.jsonld"}},"totalItems":{"type":"integer","minimum":0},"view":{"type":"object","properties":{"@id":{"type":"string","format":"iri-reference"},"@type":{"type":"string"},"first":{"type":"string","format":"iri-reference"},"last":{"type":"string","format":"iri-reference"},"previous":{"type":"string","format":"iri-reference"},"next":{"type":"string","format":"iri-reference"}},"example":{"@id":"string","type":"string","first":"string","last":"string","previous":"string","next":"string"}},"search":{"type":"object","properties":{"@type":{"type":"string"},"template":{"type":"string"},"variableRepresentation":{"type":"string"},"mapping":{"type":"array","items":{"type":"object","properties":{"@type":{"type":"string"},"variable":{"type":"string"},"property":{"type":["string","null"]},"required":{"type":"boolean"}}}}}}},"required":["member"]}}}}},"summary":"Retrieves the collection of User resources.","description":"Retrieves the collection of User resources.","parameters":[{"name":"page","in":"query","description":"The collection page number","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":1},"style":"form","explode":false,"allowReserved":false},{"name":"itemsPerPage","in":"query","description":"The number of items per page","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":50,"minimum":0,"maximum":100},"style":"form","explode":false,"allowReserved":false},{"name":"firstName","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false},{"name":"lastName","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false},{"name":"userNameSearch","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false},{"name":"custom_json_order","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false}],"deprecated":false},"post":{"operationId":"api_users_post","tags":["User"],"responses":{"201":{"description":"User resource created","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/User.jsonld"}}},"links":{}},"400":{"description":"Invalid input"},"422":{"description":"Unprocessable entity"}},"summary":"Creates a User resource.","description":"Creates a User resource.","parameters":[],"requestBody":{"description":"The new User resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/User.jsonld"}}},"required":true},"deprecated":false}},"\/api\/users\/{id}":{"get":{"operationId":"api_users_id_get","tags":["User"],"responses":{"200":{"description":"User resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/User.jsonld"}}}},"404":{"description":"Resource not found"}},"summary":"Retrieves a User resource.","description":"Retrieves a User resource.","parameters":[{"name":"id","in":"path","description":"User identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"deprecated":false},"patch":{"operationId":"api_users_id_patch","tags":["User"],"responses":{"200":{"description":"User resource updated","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/User.jsonld"}}},"links":{}},"400":{"description":"Invalid input"},"422":{"description":"Unprocessable entity"},"404":{"description":"Resource not found"}},"summary":"Updates the User resource.","description":"Updates the User resource.","parameters":[{"name":"id","in":"path","description":"User identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"requestBody":{"description":"The updated User resource","content":{"application\/merge-patch+json":{"schema":{"$ref":"#\/components\/schemas\/User"}}},"required":true},"deprecated":false}},"\/api\/user_trips":{"get":{"operationId":"api_user_trips_get_collection","tags":["UserTrip"],"responses":{"200":{"description":"UserTrip collection","content":{"application\/ld+json":{"schema":{"type":"object","properties":{"member":{"type":"array","items":{"$ref":"#\/components\/schemas\/UserTrip.jsonld"}},"totalItems":{"type":"integer","minimum":0},"view":{"type":"object","properties":{"@id":{"type":"string","format":"iri-reference"},"@type":{"type":"string"},"first":{"type":"string","format":"iri-reference"},"last":{"type":"string","format":"iri-reference"},"previous":{"type":"string","format":"iri-reference"},"next":{"type":"string","format":"iri-reference"}},"example":{"@id":"string","type":"string","first":"string","last":"string","previous":"string","next":"string"}},"search":{"type":"object","properties":{"@type":{"type":"string"},"template":{"type":"string"},"variableRepresentation":{"type":"string"},"mapping":{"type":"array","items":{"type":"object","properties":{"@type":{"type":"string"},"variable":{"type":"string"},"property":{"type":["string","null"]},"required":{"type":"boolean"}}}}}}},"required":["member"]}}}}},"summary":"Retrieves the collection of UserTrip resources.","description":"Retrieves the collection of UserTrip resources.","parameters":[{"name":"page","in":"query","description":"The collection page number","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":1},"style":"form","explode":false,"allowReserved":false},{"name":"itemsPerPage","in":"query","description":"The number of items per page","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":50,"minimum":0,"maximum":100},"style":"form","explode":false,"allowReserved":false}],"deprecated":false},"post":{"operationId":"api_user_trips_post","tags":["UserTrip"],"responses":{"201":{"description":"UserTrip resource created","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/UserTrip.jsonld"}}},"links":{}},"400":{"description":"Invalid input"},"422":{"description":"Unprocessable entity"}},"summary":"Creates a UserTrip resource.","description":"Creates a UserTrip resource.","parameters":[],"requestBody":{"description":"The new UserTrip resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/UserTrip.jsonld"}}},"required":true},"deprecated":false}},"\/api\/user_trips\/{id}":{"get":{"operationId":"api_user_trips_id_get","tags":["UserTrip"],"responses":{"200":{"description":"UserTrip resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/UserTrip.jsonld"}}}},"404":{"description":"Resource not found"}},"summary":"Retrieves a UserTrip resource.","description":"Retrieves a UserTrip resource.","parameters":[{"name":"id","in":"path","description":"UserTrip identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"deprecated":false},"patch":{"operationId":"api_user_trips_id_patch","tags":["UserTrip"],"responses":{"200":{"description":"UserTrip resource updated","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/UserTrip.jsonld"}}},"links":{}},"400":{"description":"Invalid input"},"422":{"description":"Unprocessable entity"},"404":{"description":"Resource not found"}},"summary":"Updates the UserTrip resource.","description":"Updates the UserTrip resource.","parameters":[{"name":"id","in":"path","description":"UserTrip identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"requestBody":{"description":"The updated UserTrip resource","content":{"application\/merge-patch+json":{"schema":{"$ref":"#\/components\/schemas\/UserTrip"}}},"required":true},"deprecated":false}},"\/api\/user_trip_locations":{"get":{"operationId":"api_user_trip_locations_get_collection","tags":["UserTripLocation"],"responses":{"200":{"description":"UserTripLocation collection","content":{"application\/ld+json":{"schema":{"type":"object","properties":{"member":{"type":"array","items":{"$ref":"#\/components\/schemas\/UserTripLocation.jsonld"}},"totalItems":{"type":"integer","minimum":0},"view":{"type":"object","properties":{"@id":{"type":"string","format":"iri-reference"},"@type":{"type":"string"},"first":{"type":"string","format":"iri-reference"},"last":{"type":"string","format":"iri-reference"},"previous":{"type":"string","format":"iri-reference"},"next":{"type":"string","format":"iri-reference"}},"example":{"@id":"string","type":"string","first":"string","last":"string","previous":"string","next":"string"}},"search":{"type":"object","properties":{"@type":{"type":"string"},"template":{"type":"string"},"variableRepresentation":{"type":"string"},"mapping":{"type":"array","items":{"type":"object","properties":{"@type":{"type":"string"},"variable":{"type":"string"},"property":{"type":["string","null"]},"required":{"type":"boolean"}}}}}}},"required":["member"]}}}}},"summary":"Retrieves the collection of UserTripLocation resources.","description":"Retrieves the collection of UserTripLocation resources.","parameters":[{"name":"page","in":"query","description":"The collection page number","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":1},"style":"form","explode":false,"allowReserved":false},{"name":"itemsPerPage","in":"query","description":"The number of items per page","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":50,"minimum":0,"maximum":100},"style":"form","explode":false,"allowReserved":false}],"deprecated":false},"post":{"operationId":"api_user_trip_locations_post","tags":["UserTripLocation"],"responses":{"201":{"description":"UserTripLocation resource created","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/UserTripLocation.jsonld"}}},"links":{}},"400":{"description":"Invalid input"},"422":{"description":"Unprocessable entity"}},"summary":"Creates a UserTripLocation resource.","description":"Creates a UserTripLocation resource.","parameters":[],"requestBody":{"description":"The new UserTripLocation resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/UserTripLocation.jsonld"}}},"required":true},"deprecated":false}},"\/api\/user_trip_locations\/{id}":{"get":{"operationId":"api_user_trip_locations_id_get","tags":["UserTripLocation"],"responses":{"200":{"description":"UserTripLocation resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/UserTripLocation.jsonld"}}}},"404":{"description":"Resource not found"}},"summary":"Retrieves a UserTripLocation resource.","description":"Retrieves a UserTripLocation resource.","parameters":[{"name":"id","in":"path","description":"UserTripLocation identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"deprecated":false},"patch":{"operationId":"api_user_trip_locations_id_patch","tags":["UserTripLocation"],"responses":{"200":{"description":"UserTripLocation resource updated","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/UserTripLocation.jsonld"}}},"links":{}},"400":{"description":"Invalid input"},"422":{"description":"Unprocessable entity"},"404":{"description":"Resource not found"}},"summary":"Updates the UserTripLocation resource.","description":"Updates the UserTripLocation resource.","parameters":[{"name":"id","in":"path","description":"UserTripLocation identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"requestBody":{"description":"The updated UserTripLocation resource","content":{"application\/merge-patch+json":{"schema":{"$ref":"#\/components\/schemas\/UserTripLocation"}}},"required":true},"deprecated":false}},"\/api\/user_trip_work_logs":{"get":{"operationId":"api_user_trip_work_logs_get_collection","tags":["UserTripWorkLog"],"responses":{"200":{"description":"UserTripWorkLog collection","content":{"application\/ld+json":{"schema":{"type":"object","properties":{"member":{"type":"array","items":{"$ref":"#\/components\/schemas\/UserTripWorkLog.jsonld"}},"totalItems":{"type":"integer","minimum":0},"view":{"type":"object","properties":{"@id":{"type":"string","format":"iri-reference"},"@type":{"type":"string"},"first":{"type":"string","format":"iri-reference"},"last":{"type":"string","format":"iri-reference"},"previous":{"type":"string","format":"iri-reference"},"next":{"type":"string","format":"iri-reference"}},"example":{"@id":"string","type":"string","first":"string","last":"string","previous":"string","next":"string"}},"search":{"type":"object","properties":{"@type":{"type":"string"},"template":{"type":"string"},"variableRepresentation":{"type":"string"},"mapping":{"type":"array","items":{"type":"object","properties":{"@type":{"type":"string"},"variable":{"type":"string"},"property":{"type":["string","null"]},"required":{"type":"boolean"}}}}}}},"required":["member"]}}}}},"summary":"Retrieves the collection of UserTripWorkLog resources.","description":"Retrieves the collection of UserTripWorkLog resources.","parameters":[{"name":"page","in":"query","description":"The collection page number","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":1},"style":"form","explode":false,"allowReserved":false},{"name":"itemsPerPage","in":"query","description":"The number of items per page","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":50,"minimum":0,"maximum":100},"style":"form","explode":false,"allowReserved":false}],"deprecated":false},"post":{"operationId":"api_user_trip_work_logs_post","tags":["UserTripWorkLog"],"responses":{"201":{"description":"UserTripWorkLog resource created","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/UserTripWorkLog.jsonld"}}},"links":{}},"400":{"description":"Invalid input"},"422":{"description":"Unprocessable entity"}},"summary":"Creates a UserTripWorkLog resource.","description":"Creates a UserTripWorkLog resource.","parameters":[],"requestBody":{"description":"The new UserTripWorkLog resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/UserTripWorkLog.jsonld"}}},"required":true},"deprecated":false}},"\/api\/user_trip_work_logs\/{id}":{"get":{"operationId":"api_user_trip_work_logs_id_get","tags":["UserTripWorkLog"],"responses":{"200":{"description":"UserTripWorkLog resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/UserTripWorkLog.jsonld"}}}},"404":{"description":"Resource not found"}},"summary":"Retrieves a UserTripWorkLog resource.","description":"Retrieves a UserTripWorkLog resource.","parameters":[{"name":"id","in":"path","description":"UserTripWorkLog identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"deprecated":false},"patch":{"operationId":"api_user_trip_work_logs_id_patch","tags":["UserTripWorkLog"],"responses":{"200":{"description":"UserTripWorkLog resource updated","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/UserTripWorkLog.jsonld"}}},"links":{}},"400":{"description":"Invalid input"},"422":{"description":"Unprocessable entity"},"404":{"description":"Resource not found"}},"summary":"Updates the UserTripWorkLog resource.","description":"Updates the UserTripWorkLog resource.","parameters":[{"name":"id","in":"path","description":"UserTripWorkLog identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"requestBody":{"description":"The updated UserTripWorkLog resource","content":{"application\/merge-patch+json":{"schema":{"$ref":"#\/components\/schemas\/UserTripWorkLog"}}},"required":true},"deprecated":false}},"\/api\/vessels":{"get":{"operationId":"api_vessels_get_collection","tags":["Vessel"],"responses":{"200":{"description":"Vessel collection","content":{"application\/ld+json":{"schema":{"type":"object","properties":{"member":{"type":"array","items":{"$ref":"#\/components\/schemas\/Vessel.jsonld"}},"totalItems":{"type":"integer","minimum":0},"view":{"type":"object","properties":{"@id":{"type":"string","format":"iri-reference"},"@type":{"type":"string"},"first":{"type":"string","format":"iri-reference"},"last":{"type":"string","format":"iri-reference"},"previous":{"type":"string","format":"iri-reference"},"next":{"type":"string","format":"iri-reference"}},"example":{"@id":"string","type":"string","first":"string","last":"string","previous":"string","next":"string"}},"search":{"type":"object","properties":{"@type":{"type":"string"},"template":{"type":"string"},"variableRepresentation":{"type":"string"},"mapping":{"type":"array","items":{"type":"object","properties":{"@type":{"type":"string"},"variable":{"type":"string"},"property":{"type":["string","null"]},"required":{"type":"boolean"}}}}}}},"required":["member"]}}}}},"summary":"Retrieves the collection of Vessel resources.","description":"Retrieves the collection of Vessel resources.","parameters":[{"name":"page","in":"query","description":"The collection page number","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":1},"style":"form","explode":false,"allowReserved":false},{"name":"itemsPerPage","in":"query","description":"The number of items per page","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":50,"minimum":0,"maximum":100},"style":"form","explode":false,"allowReserved":false},{"name":"name","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false},{"name":"custom_json_filter","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false},{"name":"custom_json_order","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false}],"deprecated":false},"post":{"operationId":"api_vessels_post","tags":["Vessel"],"responses":{"201":{"description":"Vessel resource created","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/Vessel.jsonld"}}},"links":{}},"400":{"description":"Invalid input"},"422":{"description":"Unprocessable entity"}},"summary":"Creates a Vessel resource.","description":"Creates a Vessel resource.","parameters":[],"requestBody":{"description":"The new Vessel resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/Vessel.jsonld"}}},"required":true},"deprecated":false}},"\/api\/vessels\/{id}":{"get":{"operationId":"api_vessels_id_get","tags":["Vessel"],"responses":{"200":{"description":"Vessel resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/Vessel.jsonld"}}}},"404":{"description":"Resource not found"}},"summary":"Retrieves a Vessel resource.","description":"Retrieves a Vessel resource.","parameters":[{"name":"id","in":"path","description":"Vessel identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"deprecated":false},"patch":{"operationId":"api_vessels_id_patch","tags":["Vessel"],"responses":{"200":{"description":"Vessel resource updated","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/Vessel.jsonld"}}},"links":{}},"400":{"description":"Invalid input"},"422":{"description":"Unprocessable entity"},"404":{"description":"Resource not found"}},"summary":"Updates the Vessel resource.","description":"Updates the Vessel resource.","parameters":[{"name":"id","in":"path","description":"Vessel identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"requestBody":{"description":"The updated Vessel resource","content":{"application\/merge-patch+json":{"schema":{"$ref":"#\/components\/schemas\/Vessel"}}},"required":true},"deprecated":false}},"\/api\/zones":{"get":{"operationId":"api_zones_get_collection","tags":["Zone"],"responses":{"200":{"description":"Zone collection","content":{"application\/ld+json":{"schema":{"type":"object","properties":{"member":{"type":"array","items":{"$ref":"#\/components\/schemas\/Zone.jsonld"}},"totalItems":{"type":"integer","minimum":0},"view":{"type":"object","properties":{"@id":{"type":"string","format":"iri-reference"},"@type":{"type":"string"},"first":{"type":"string","format":"iri-reference"},"last":{"type":"string","format":"iri-reference"},"previous":{"type":"string","format":"iri-reference"},"next":{"type":"string","format":"iri-reference"}},"example":{"@id":"string","type":"string","first":"string","last":"string","previous":"string","next":"string"}},"search":{"type":"object","properties":{"@type":{"type":"string"},"template":{"type":"string"},"variableRepresentation":{"type":"string"},"mapping":{"type":"array","items":{"type":"object","properties":{"@type":{"type":"string"},"variable":{"type":"string"},"property":{"type":["string","null"]},"required":{"type":"boolean"}}}}}}},"required":["member"]}}}}},"summary":"Retrieves the collection of Zone resources.","description":"Retrieves the collection of Zone resources.","parameters":[{"name":"page","in":"query","description":"The collection page number","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":1},"style":"form","explode":false,"allowReserved":false},{"name":"itemsPerPage","in":"query","description":"The number of items per page","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":50,"minimum":0,"maximum":100},"style":"form","explode":false,"allowReserved":false},{"name":"name","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false},{"name":"custom_json_filter","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false},{"name":"custom_json_order","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false}],"deprecated":false},"post":{"operationId":"api_zones_post","tags":["Zone"],"responses":{"201":{"description":"Zone resource created","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/Zone.jsonld"}}},"links":{}},"400":{"description":"Invalid input"},"422":{"description":"Unprocessable entity"}},"summary":"Creates a Zone resource.","description":"Creates a Zone resource.","parameters":[],"requestBody":{"description":"The new Zone resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/Zone.jsonld"}}},"required":true},"deprecated":false}},"\/api\/zones\/{id}":{"get":{"operationId":"api_zones_id_get","tags":["Zone"],"responses":{"200":{"description":"Zone resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/Zone.jsonld"}}}},"404":{"description":"Resource not found"}},"summary":"Retrieves a Zone resource.","description":"Retrieves a Zone resource.","parameters":[{"name":"id","in":"path","description":"Zone identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"deprecated":false},"patch":{"operationId":"api_zones_id_patch","tags":["Zone"],"responses":{"200":{"description":"Zone resource updated","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/Zone.jsonld"}}},"links":{}},"400":{"description":"Invalid input"},"422":{"description":"Unprocessable entity"},"404":{"description":"Resource not found"}},"summary":"Updates the Zone resource.","description":"Updates the Zone resource.","parameters":[{"name":"id","in":"path","description":"Zone identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"requestBody":{"description":"The updated Zone resource","content":{"application\/merge-patch+json":{"schema":{"$ref":"#\/components\/schemas\/Zone"}}},"required":true},"deprecated":false}}},"components":{"schemas":{"Location":{"type":"object","description":"","deprecated":false,"properties":{"zone":{"readOnly":true,"type":"string","format":"iri-reference","example":"https:\/\/example.com\/"},"name":{"type":"string"},"zoneName":{"readOnly":true,"type":"string"},"createdAt":{"readOnly":true,"type":["string","null"],"format":"date-time"}},"required":["name"]},"Location.jsonld":{"type":"object","description":"","deprecated":false,"properties":{"@context":{"readOnly":true,"oneOf":[{"type":"string"},{"type":"object","properties":{"@vocab":{"type":"string"},"hydra":{"type":"string","enum":["http:\/\/www.w3.org\/ns\/hydra\/core#"]}},"required":["@vocab","hydra"],"additionalProperties":true}]},"@id":{"readOnly":true,"type":"string"},"@type":{"readOnly":true,"type":"string"},"zone":{"readOnly":true,"$ref":"#\/components\/schemas\/Zone.jsonld"},"name":{"type":"string"},"zoneName":{"readOnly":true,"type":"string"},"createdAt":{"readOnly":true,"type":["string","null"],"format":"date-time"}},"required":["name"]},"MediaObject.jsonld-media_object.read":{"type":"object","description":"","deprecated":false,"externalDocs":{"url":"https:\/\/schema.org\/MediaObject"},"properties":{"@context":{"readOnly":true,"oneOf":[{"type":"string"},{"type":"object","properties":{"@vocab":{"type":"string"},"hydra":{"type":"string","enum":["http:\/\/www.w3.org\/ns\/hydra\/core#"]}},"required":["@vocab","hydra"],"additionalProperties":true}]},"@id":{"readOnly":true,"type":"string"},"@type":{"readOnly":true,"type":"string"},"contentUrl":{"externalDocs":{"url":"https:\/\/schema.org\/contentUrl"},"type":["string","null"]}}},"ShippingCompany":{"type":"object","description":"","deprecated":false,"required":["name"],"properties":{"name":{"type":"string"},"createdAt":{"readOnly":true,"type":["string","null"],"format":"date-time"}}},"ShippingCompany.jsonld":{"type":"object","description":"","deprecated":false,"required":["name"],"properties":{"@context":{"readOnly":true,"oneOf":[{"type":"string"},{"type":"object","properties":{"@vocab":{"type":"string"},"hydra":{"type":"string","enum":["http:\/\/www.w3.org\/ns\/hydra\/core#"]}},"required":["@vocab","hydra"],"additionalProperties":true}]},"@id":{"readOnly":true,"type":"string"},"@type":{"readOnly":true,"type":"string"},"name":{"type":"string"},"createdAt":{"readOnly":true,"type":["string","null"],"format":"date-time"}}},"Trip":{"type":"object","description":"","deprecated":false,"properties":{"vessel":{"readOnly":true,"type":"string","format":"iri-reference","example":"https:\/\/example.com\/"},"pilotReference":{"type":"string"},"captainName":{"type":["string","null"]},"startLocation":{"readOnly":true,"type":"string","format":"iri-reference","example":"https:\/\/example.com\/"},"endLocation":{"readOnly":true,"type":"string","format":"iri-reference","example":"https:\/\/example.com\/"},"startDate":{"type":["string","null"],"format":"date-time"},"endDate":{"type":["string","null"],"format":"date-time"},"createdAt":{"readOnly":true,"type":["string","null"],"format":"date-time"}},"required":["pilotReference","startDate","endDate"]},"Trip.jsonld":{"type":"object","description":"","deprecated":false,"properties":{"@context":{"readOnly":true,"oneOf":[{"type":"string"},{"type":"object","properties":{"@vocab":{"type":"string"},"hydra":{"type":"string","enum":["http:\/\/www.w3.org\/ns\/hydra\/core#"]}},"required":["@vocab","hydra"],"additionalProperties":true}]},"@id":{"readOnly":true,"type":"string"},"@type":{"readOnly":true,"type":"string"},"vessel":{"readOnly":true,"$ref":"#\/components\/schemas\/Vessel.jsonld"},"pilotReference":{"type":"string"},"captainName":{"type":["string","null"]},"startLocation":{"readOnly":true,"$ref":"#\/components\/schemas\/Location.jsonld"},"endLocation":{"readOnly":true,"$ref":"#\/components\/schemas\/Location.jsonld"},"startDate":{"type":["string","null"],"format":"date-time"},"endDate":{"type":["string","null"],"format":"date-time"},"createdAt":{"readOnly":true,"type":["string","null"],"format":"date-time"}},"required":["pilotReference","startDate","endDate"]},"TripLocation":{"type":"object","description":"","deprecated":false,"properties":{"trip":{"readOnly":true,"type":"string","format":"iri-reference","example":"https:\/\/example.com\/"},"location":{"readOnly":true,"type":"string","format":"iri-reference","example":"https:\/\/example.com\/"},"date":{"type":["string","null"],"format":"date-time"},"createdAt":{"readOnly":true,"type":["string","null"],"format":"date-time"}},"required":["date"]},"TripLocation.jsonld":{"type":"object","description":"","deprecated":false,"properties":{"@context":{"readOnly":true,"oneOf":[{"type":"string"},{"type":"object","properties":{"@vocab":{"type":"string"},"hydra":{"type":"string","enum":["http:\/\/www.w3.org\/ns\/hydra\/core#"]}},"required":["@vocab","hydra"],"additionalProperties":true}]},"@id":{"readOnly":true,"type":"string"},"@type":{"readOnly":true,"type":"string"},"trip":{"readOnly":true,"$ref":"#\/components\/schemas\/Trip.jsonld"},"location":{"readOnly":true,"$ref":"#\/components\/schemas\/Location.jsonld"},"date":{"type":["string","null"],"format":"date-time"},"createdAt":{"readOnly":true,"type":["string","null"],"format":"date-time"}},"required":["date"]},"User":{"type":"object","description":"","deprecated":false,"required":["email","firstName","lastName"],"properties":{"email":{"format":"email","externalDocs":{"url":"https:\/\/schema.org\/email"},"type":["string","null"]},"firstName":{"type":["string","null"]},"lastName":{"type":["string","null"]},"image":{"type":["string","null"],"format":"iri-reference","example":"https:\/\/example.com\/"},"imageUrl":{"readOnly":true,"type":["string","null"]},"fullName":{"readOnly":true,"type":["string","null"]},"password":{"writeOnly":true,"description":"The plaintext password when being set or changed.","type":["string","null"]},"active":{"type":"boolean"},"createdAt":{"readOnly":true,"type":["string","null"],"format":"date-time"}}},"User.jsonld":{"type":"object","description":"","deprecated":false,"required":["email","firstName","lastName"],"properties":{"@context":{"readOnly":true,"oneOf":[{"type":"string"},{"type":"object","properties":{"@vocab":{"type":"string"},"hydra":{"type":"string","enum":["http:\/\/www.w3.org\/ns\/hydra\/core#"]}},"required":["@vocab","hydra"],"additionalProperties":true}]},"@id":{"readOnly":true,"type":"string"},"@type":{"readOnly":true,"type":"string"},"email":{"format":"email","externalDocs":{"url":"https:\/\/schema.org\/email"},"type":["string","null"]},"firstName":{"type":["string","null"]},"lastName":{"type":["string","null"]},"image":{"type":["string","null"],"format":"iri-reference","example":"https:\/\/example.com\/"},"imageUrl":{"readOnly":true,"type":["string","null"]},"fullName":{"readOnly":true,"type":["string","null"]},"password":{"writeOnly":true,"description":"The plaintext password when being set or changed.","type":["string","null"]},"active":{"type":"boolean"},"createdAt":{"readOnly":true,"type":["string","null"],"format":"date-time"}}},"UserTrip":{"type":"object","description":"","deprecated":false,"properties":{"trip":{"readOnly":true,"type":"string","format":"iri-reference","example":"https:\/\/example.com\/"},"user":{"readOnly":true,"type":"string","format":"iri-reference","example":"https:\/\/example.com\/"},"captainName":{"type":"string"},"startDate":{"type":["string","null"],"format":"date-time"},"endDate":{"type":["string","null"],"format":"date-time"},"createdAt":{"readOnly":true,"type":["string","null"],"format":"date-time"}},"required":["captainName","startDate","endDate"]},"UserTrip.jsonld":{"type":"object","description":"","deprecated":false,"properties":{"@context":{"readOnly":true,"oneOf":[{"type":"string"},{"type":"object","properties":{"@vocab":{"type":"string"},"hydra":{"type":"string","enum":["http:\/\/www.w3.org\/ns\/hydra\/core#"]}},"required":["@vocab","hydra"],"additionalProperties":true}]},"@id":{"readOnly":true,"type":"string"},"@type":{"readOnly":true,"type":"string"},"trip":{"readOnly":true,"$ref":"#\/components\/schemas\/Trip.jsonld"},"user":{"readOnly":true,"$ref":"#\/components\/schemas\/User.jsonld"},"captainName":{"type":"string"},"startDate":{"type":["string","null"],"format":"date-time"},"endDate":{"type":["string","null"],"format":"date-time"},"createdAt":{"readOnly":true,"type":["string","null"],"format":"date-time"}},"required":["captainName","startDate","endDate"]},"UserTripLocation":{"type":"object","description":"","deprecated":false,"properties":{"userTrip":{"readOnly":true,"type":"string","format":"iri-reference","example":"https:\/\/example.com\/"},"location":{"readOnly":true,"type":"string","format":"iri-reference","example":"https:\/\/example.com\/"},"plannedDate":{"type":["string","null"],"format":"date-time"},"createdAt":{"readOnly":true,"type":["string","null"],"format":"date-time"}},"required":["plannedDate"]},"UserTripLocation.jsonld":{"type":"object","description":"","deprecated":false,"properties":{"@context":{"readOnly":true,"oneOf":[{"type":"string"},{"type":"object","properties":{"@vocab":{"type":"string"},"hydra":{"type":"string","enum":["http:\/\/www.w3.org\/ns\/hydra\/core#"]}},"required":["@vocab","hydra"],"additionalProperties":true}]},"@id":{"readOnly":true,"type":"string"},"@type":{"readOnly":true,"type":"string"},"userTrip":{"readOnly":true,"$ref":"#\/components\/schemas\/UserTrip.jsonld"},"location":{"readOnly":true,"$ref":"#\/components\/schemas\/Location.jsonld"},"plannedDate":{"type":["string","null"],"format":"date-time"},"createdAt":{"readOnly":true,"type":["string","null"],"format":"date-time"}},"required":["plannedDate"]},"UserTripWorkLog":{"type":"object","description":"","deprecated":false,"properties":{"userTrip":{"readOnly":true,"type":"string","format":"iri-reference","example":"https:\/\/example.com\/"},"startLocation":{"readOnly":true,"type":"string","format":"iri-reference","example":"https:\/\/example.com\/"},"endLocation":{"readOnly":true,"type":"string","format":"iri-reference","example":"https:\/\/example.com\/"},"startDate":{"type":["string","null"],"format":"date-time"},"endDate":{"type":["string","null"],"format":"date-time"},"createdAt":{"readOnly":true,"type":["string","null"],"format":"date-time"}},"required":["startDate","endDate"]},"UserTripWorkLog.jsonld":{"type":"object","description":"","deprecated":false,"properties":{"@context":{"readOnly":true,"oneOf":[{"type":"string"},{"type":"object","properties":{"@vocab":{"type":"string"},"hydra":{"type":"string","enum":["http:\/\/www.w3.org\/ns\/hydra\/core#"]}},"required":["@vocab","hydra"],"additionalProperties":true}]},"@id":{"readOnly":true,"type":"string"},"@type":{"readOnly":true,"type":"string"},"userTrip":{"readOnly":true,"$ref":"#\/components\/schemas\/UserTrip.jsonld"},"startLocation":{"readOnly":true,"$ref":"#\/components\/schemas\/Location.jsonld"},"endLocation":{"readOnly":true,"$ref":"#\/components\/schemas\/Location.jsonld"},"startDate":{"type":["string","null"],"format":"date-time"},"endDate":{"type":["string","null"],"format":"date-time"},"createdAt":{"readOnly":true,"type":["string","null"],"format":"date-time"}},"required":["startDate","endDate"]},"Vessel":{"type":"object","description":"","deprecated":false,"required":["name"],"properties":{"name":{"type":"string"},"company":{"readOnly":true,"type":"string","format":"iri-reference","example":"https:\/\/example.com\/"},"createdAt":{"readOnly":true,"type":["string","null"],"format":"date-time"}}},"Vessel.jsonld":{"type":"object","description":"","deprecated":false,"required":["name"],"properties":{"@context":{"readOnly":true,"oneOf":[{"type":"string"},{"type":"object","properties":{"@vocab":{"type":"string"},"hydra":{"type":"string","enum":["http:\/\/www.w3.org\/ns\/hydra\/core#"]}},"required":["@vocab","hydra"],"additionalProperties":true}]},"@id":{"readOnly":true,"type":"string"},"@type":{"readOnly":true,"type":"string"},"name":{"type":"string"},"company":{"readOnly":true,"$ref":"#\/components\/schemas\/ShippingCompany.jsonld"},"createdAt":{"readOnly":true,"type":["string","null"],"format":"date-time"}}},"Zone":{"type":"object","description":"","deprecated":false,"required":["name"],"properties":{"name":{"type":"string"},"createdAt":{"readOnly":true,"type":["string","null"],"format":"date-time"}}},"Zone.jsonld":{"type":"object","description":"","deprecated":false,"required":["name"],"properties":{"@context":{"readOnly":true,"oneOf":[{"type":"string"},{"type":"object","properties":{"@vocab":{"type":"string"},"hydra":{"type":"string","enum":["http:\/\/www.w3.org\/ns\/hydra\/core#"]}},"required":["@vocab","hydra"],"additionalProperties":true}]},"@id":{"readOnly":true,"type":"string"},"@type":{"readOnly":true,"type":"string"},"name":{"type":"string"},"createdAt":{"readOnly":true,"type":["string","null"],"format":"date-time"}}}},"responses":{},"parameters":{},"examples":{},"requestBodies":{},"headers":{},"securitySchemes":{"JWT":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}}},"security":[{"JWT":[]}],"tags":[],"webhooks":{}} \ No newline at end of file +{"openapi":"3.1.0","info":{"title":"Imaq Platform","description":"","version":"1.0.0"},"servers":[{"url":"\/","description":""}],"paths":{"\/api\/locations":{"get":{"operationId":"api_locations_get_collection","tags":["Location"],"responses":{"200":{"description":"Location collection","content":{"application\/ld+json":{"schema":{"type":"object","properties":{"member":{"type":"array","items":{"$ref":"#\/components\/schemas\/Location.jsonld"}},"totalItems":{"type":"integer","minimum":0},"view":{"type":"object","properties":{"@id":{"type":"string","format":"iri-reference"},"@type":{"type":"string"},"first":{"type":"string","format":"iri-reference"},"last":{"type":"string","format":"iri-reference"},"previous":{"type":"string","format":"iri-reference"},"next":{"type":"string","format":"iri-reference"}},"example":{"@id":"string","type":"string","first":"string","last":"string","previous":"string","next":"string"}},"search":{"type":"object","properties":{"@type":{"type":"string"},"template":{"type":"string"},"variableRepresentation":{"type":"string"},"mapping":{"type":"array","items":{"type":"object","properties":{"@type":{"type":"string"},"variable":{"type":"string"},"property":{"type":["string","null"]},"required":{"type":"boolean"}}}}}}},"required":["member"]}}}}},"summary":"Retrieves the collection of Location resources.","description":"Retrieves the collection of Location resources.","parameters":[{"name":"page","in":"query","description":"The collection page number","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":1},"style":"form","explode":false,"allowReserved":false},{"name":"itemsPerPage","in":"query","description":"The number of items per page","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":50,"minimum":0,"maximum":100},"style":"form","explode":false,"allowReserved":false},{"name":"name","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false},{"name":"custom_json_filter","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false},{"name":"custom_json_order","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false}],"deprecated":false},"post":{"operationId":"api_locations_post","tags":["Location"],"responses":{"201":{"description":"Location resource created","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/Location.jsonld"}}},"links":{}},"400":{"description":"Invalid input"},"422":{"description":"Unprocessable entity"}},"summary":"Creates a Location resource.","description":"Creates a Location resource.","parameters":[],"requestBody":{"description":"The new Location resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/Location.jsonld"}}},"required":true},"deprecated":false}},"\/api\/locations\/{id}":{"get":{"operationId":"api_locations_id_get","tags":["Location"],"responses":{"200":{"description":"Location resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/Location.jsonld"}}}},"404":{"description":"Resource not found"}},"summary":"Retrieves a Location resource.","description":"Retrieves a Location resource.","parameters":[{"name":"id","in":"path","description":"Location identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"deprecated":false},"patch":{"operationId":"api_locations_id_patch","tags":["Location"],"responses":{"200":{"description":"Location resource updated","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/Location.jsonld"}}},"links":{}},"400":{"description":"Invalid input"},"422":{"description":"Unprocessable entity"},"404":{"description":"Resource not found"}},"summary":"Updates the Location resource.","description":"Updates the Location resource.","parameters":[{"name":"id","in":"path","description":"Location identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"requestBody":{"description":"The updated Location resource","content":{"application\/merge-patch+json":{"schema":{"$ref":"#\/components\/schemas\/Location"}}},"required":true},"deprecated":false}},"\/api\/auth":{"post":{"operationId":"login_check_post","tags":["Login Check"],"responses":{"200":{"description":"User token created","content":{"application\/json":{"schema":{"type":"object","properties":{"token":{"readOnly":true,"type":"string","nullable":false}},"required":["token"]}}}}},"summary":"Creates a user token.","description":"Creates a user token.","requestBody":{"description":"The login data","content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","nullable":false},"password":{"type":"string","nullable":false}},"required":["email","password"]}}},"required":true}}},"\/api\/media_objects":{"get":{"operationId":"api_media_objects_get_collection","tags":["MediaObject"],"responses":{"200":{"description":"MediaObject collection","content":{"application\/ld+json":{"schema":{"type":"object","properties":{"member":{"type":"array","items":{"$ref":"#\/components\/schemas\/MediaObject.jsonld-media_object.read"}},"totalItems":{"type":"integer","minimum":0},"view":{"type":"object","properties":{"@id":{"type":"string","format":"iri-reference"},"@type":{"type":"string"},"first":{"type":"string","format":"iri-reference"},"last":{"type":"string","format":"iri-reference"},"previous":{"type":"string","format":"iri-reference"},"next":{"type":"string","format":"iri-reference"}},"example":{"@id":"string","type":"string","first":"string","last":"string","previous":"string","next":"string"}},"search":{"type":"object","properties":{"@type":{"type":"string"},"template":{"type":"string"},"variableRepresentation":{"type":"string"},"mapping":{"type":"array","items":{"type":"object","properties":{"@type":{"type":"string"},"variable":{"type":"string"},"property":{"type":["string","null"]},"required":{"type":"boolean"}}}}}}},"required":["member"]}}}}},"summary":"Retrieves the collection of MediaObject resources.","description":"Retrieves the collection of MediaObject resources.","parameters":[{"name":"page","in":"query","description":"The collection page number","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":1},"style":"form","explode":false,"allowReserved":false},{"name":"itemsPerPage","in":"query","description":"The number of items per page","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":50,"minimum":0,"maximum":100},"style":"form","explode":false,"allowReserved":false}],"deprecated":false},"post":{"operationId":"api_media_objects_post","tags":["MediaObject"],"responses":{"201":{"description":"MediaObject resource created","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/MediaObject.jsonld-media_object.read"}}},"links":{}},"400":{"description":"Invalid input"},"422":{"description":"Unprocessable entity"}},"summary":"Creates a MediaObject resource.","description":"Creates a MediaObject resource.","parameters":[],"requestBody":{"description":"The new MediaObject resource","content":{"multipart\/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary"}}}}},"required":false},"deprecated":false}},"\/api\/media_objects\/{id}":{"get":{"operationId":"api_media_objects_id_get","tags":["MediaObject"],"responses":{"200":{"description":"MediaObject resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/MediaObject.jsonld-media_object.read"}}}},"404":{"description":"Resource not found"}},"summary":"Retrieves a MediaObject resource.","description":"Retrieves a MediaObject resource.","parameters":[{"name":"id","in":"path","description":"MediaObject identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"deprecated":false},"delete":{"operationId":"api_media_objects_id_delete","tags":["MediaObject"],"responses":{"204":{"description":"MediaObject resource deleted"},"404":{"description":"Resource not found"}},"summary":"Removes the MediaObject resource.","description":"Removes the MediaObject resource.","parameters":[{"name":"id","in":"path","description":"MediaObject identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"deprecated":false}},"\/api\/shipping_companies":{"get":{"operationId":"api_shipping_companies_get_collection","tags":["ShippingCompany"],"responses":{"200":{"description":"ShippingCompany collection","content":{"application\/ld+json":{"schema":{"type":"object","properties":{"member":{"type":"array","items":{"$ref":"#\/components\/schemas\/ShippingCompany.jsonld"}},"totalItems":{"type":"integer","minimum":0},"view":{"type":"object","properties":{"@id":{"type":"string","format":"iri-reference"},"@type":{"type":"string"},"first":{"type":"string","format":"iri-reference"},"last":{"type":"string","format":"iri-reference"},"previous":{"type":"string","format":"iri-reference"},"next":{"type":"string","format":"iri-reference"}},"example":{"@id":"string","type":"string","first":"string","last":"string","previous":"string","next":"string"}},"search":{"type":"object","properties":{"@type":{"type":"string"},"template":{"type":"string"},"variableRepresentation":{"type":"string"},"mapping":{"type":"array","items":{"type":"object","properties":{"@type":{"type":"string"},"variable":{"type":"string"},"property":{"type":["string","null"]},"required":{"type":"boolean"}}}}}}},"required":["member"]}}}}},"summary":"Retrieves the collection of ShippingCompany resources.","description":"Retrieves the collection of ShippingCompany resources.","parameters":[{"name":"page","in":"query","description":"The collection page number","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":1},"style":"form","explode":false,"allowReserved":false},{"name":"itemsPerPage","in":"query","description":"The number of items per page","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":50,"minimum":0,"maximum":100},"style":"form","explode":false,"allowReserved":false},{"name":"name","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false},{"name":"custom_json_filter","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false},{"name":"custom_json_order","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false}],"deprecated":false},"post":{"operationId":"api_shipping_companies_post","tags":["ShippingCompany"],"responses":{"201":{"description":"ShippingCompany resource created","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/ShippingCompany.jsonld"}}},"links":{}},"400":{"description":"Invalid input"},"422":{"description":"Unprocessable entity"}},"summary":"Creates a ShippingCompany resource.","description":"Creates a ShippingCompany resource.","parameters":[],"requestBody":{"description":"The new ShippingCompany resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/ShippingCompany.jsonld"}}},"required":true},"deprecated":false}},"\/api\/shipping_companies\/{id}":{"get":{"operationId":"api_shipping_companies_id_get","tags":["ShippingCompany"],"responses":{"200":{"description":"ShippingCompany resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/ShippingCompany.jsonld"}}}},"404":{"description":"Resource not found"}},"summary":"Retrieves a ShippingCompany resource.","description":"Retrieves a ShippingCompany resource.","parameters":[{"name":"id","in":"path","description":"ShippingCompany identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"deprecated":false},"patch":{"operationId":"api_shipping_companies_id_patch","tags":["ShippingCompany"],"responses":{"200":{"description":"ShippingCompany resource updated","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/ShippingCompany.jsonld"}}},"links":{}},"400":{"description":"Invalid input"},"422":{"description":"Unprocessable entity"},"404":{"description":"Resource not found"}},"summary":"Updates the ShippingCompany resource.","description":"Updates the ShippingCompany resource.","parameters":[{"name":"id","in":"path","description":"ShippingCompany identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"requestBody":{"description":"The updated ShippingCompany resource","content":{"application\/merge-patch+json":{"schema":{"$ref":"#\/components\/schemas\/ShippingCompany"}}},"required":true},"deprecated":false}},"\/api\/trips":{"get":{"operationId":"api_trips_get_collection","tags":["Trip"],"responses":{"200":{"description":"Trip collection","content":{"application\/ld+json":{"schema":{"type":"object","properties":{"member":{"type":"array","items":{"$ref":"#\/components\/schemas\/Trip.jsonld"}},"totalItems":{"type":"integer","minimum":0},"view":{"type":"object","properties":{"@id":{"type":"string","format":"iri-reference"},"@type":{"type":"string"},"first":{"type":"string","format":"iri-reference"},"last":{"type":"string","format":"iri-reference"},"previous":{"type":"string","format":"iri-reference"},"next":{"type":"string","format":"iri-reference"}},"example":{"@id":"string","type":"string","first":"string","last":"string","previous":"string","next":"string"}},"search":{"type":"object","properties":{"@type":{"type":"string"},"template":{"type":"string"},"variableRepresentation":{"type":"string"},"mapping":{"type":"array","items":{"type":"object","properties":{"@type":{"type":"string"},"variable":{"type":"string"},"property":{"type":["string","null"]},"required":{"type":"boolean"}}}}}}},"required":["member"]}}}}},"summary":"Retrieves the collection of Trip resources.","description":"Retrieves the collection of Trip resources.","parameters":[{"name":"page","in":"query","description":"The collection page number","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":1},"style":"form","explode":false,"allowReserved":false},{"name":"itemsPerPage","in":"query","description":"The number of items per page","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":50,"minimum":0,"maximum":100},"style":"form","explode":false,"allowReserved":false}],"deprecated":false},"post":{"operationId":"api_trips_post","tags":["Trip"],"responses":{"201":{"description":"Trip resource created","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/Trip.jsonld"}}},"links":{}},"400":{"description":"Invalid input"},"422":{"description":"Unprocessable entity"}},"summary":"Creates a Trip resource.","description":"Creates a Trip resource.","parameters":[],"requestBody":{"description":"The new Trip resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/Trip.jsonld"}}},"required":true},"deprecated":false}},"\/api\/trips\/{id}":{"get":{"operationId":"api_trips_id_get","tags":["Trip"],"responses":{"200":{"description":"Trip resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/Trip.jsonld"}}}},"404":{"description":"Resource not found"}},"summary":"Retrieves a Trip resource.","description":"Retrieves a Trip resource.","parameters":[{"name":"id","in":"path","description":"Trip identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"deprecated":false},"patch":{"operationId":"api_trips_id_patch","tags":["Trip"],"responses":{"200":{"description":"Trip resource updated","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/Trip.jsonld"}}},"links":{}},"400":{"description":"Invalid input"},"422":{"description":"Unprocessable entity"},"404":{"description":"Resource not found"}},"summary":"Updates the Trip resource.","description":"Updates the Trip resource.","parameters":[{"name":"id","in":"path","description":"Trip identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"requestBody":{"description":"The updated Trip resource","content":{"application\/merge-patch+json":{"schema":{"$ref":"#\/components\/schemas\/Trip"}}},"required":true},"deprecated":false}},"\/api\/trip_locations":{"get":{"operationId":"api_trip_locations_get_collection","tags":["TripLocation"],"responses":{"200":{"description":"TripLocation collection","content":{"application\/ld+json":{"schema":{"type":"object","properties":{"member":{"type":"array","items":{"$ref":"#\/components\/schemas\/TripLocation.jsonld"}},"totalItems":{"type":"integer","minimum":0},"view":{"type":"object","properties":{"@id":{"type":"string","format":"iri-reference"},"@type":{"type":"string"},"first":{"type":"string","format":"iri-reference"},"last":{"type":"string","format":"iri-reference"},"previous":{"type":"string","format":"iri-reference"},"next":{"type":"string","format":"iri-reference"}},"example":{"@id":"string","type":"string","first":"string","last":"string","previous":"string","next":"string"}},"search":{"type":"object","properties":{"@type":{"type":"string"},"template":{"type":"string"},"variableRepresentation":{"type":"string"},"mapping":{"type":"array","items":{"type":"object","properties":{"@type":{"type":"string"},"variable":{"type":"string"},"property":{"type":["string","null"]},"required":{"type":"boolean"}}}}}}},"required":["member"]}}}}},"summary":"Retrieves the collection of TripLocation resources.","description":"Retrieves the collection of TripLocation resources.","parameters":[{"name":"page","in":"query","description":"The collection page number","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":1},"style":"form","explode":false,"allowReserved":false},{"name":"itemsPerPage","in":"query","description":"The number of items per page","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":50,"minimum":0,"maximum":100},"style":"form","explode":false,"allowReserved":false}],"deprecated":false},"post":{"operationId":"api_trip_locations_post","tags":["TripLocation"],"responses":{"201":{"description":"TripLocation resource created","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/TripLocation.jsonld"}}},"links":{}},"400":{"description":"Invalid input"},"422":{"description":"Unprocessable entity"}},"summary":"Creates a TripLocation resource.","description":"Creates a TripLocation resource.","parameters":[],"requestBody":{"description":"The new TripLocation resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/TripLocation.jsonld"}}},"required":true},"deprecated":false}},"\/api\/trip_locations\/{id}":{"get":{"operationId":"api_trip_locations_id_get","tags":["TripLocation"],"responses":{"200":{"description":"TripLocation resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/TripLocation.jsonld"}}}},"404":{"description":"Resource not found"}},"summary":"Retrieves a TripLocation resource.","description":"Retrieves a TripLocation resource.","parameters":[{"name":"id","in":"path","description":"TripLocation identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"deprecated":false},"patch":{"operationId":"api_trip_locations_id_patch","tags":["TripLocation"],"responses":{"200":{"description":"TripLocation resource updated","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/TripLocation.jsonld"}}},"links":{}},"400":{"description":"Invalid input"},"422":{"description":"Unprocessable entity"},"404":{"description":"Resource not found"}},"summary":"Updates the TripLocation resource.","description":"Updates the TripLocation resource.","parameters":[{"name":"id","in":"path","description":"TripLocation identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"requestBody":{"description":"The updated TripLocation resource","content":{"application\/merge-patch+json":{"schema":{"$ref":"#\/components\/schemas\/TripLocation"}}},"required":true},"deprecated":false}},"\/api\/users":{"get":{"operationId":"api_users_get_collection","tags":["User"],"responses":{"200":{"description":"User collection","content":{"application\/ld+json":{"schema":{"type":"object","properties":{"member":{"type":"array","items":{"$ref":"#\/components\/schemas\/User.jsonld"}},"totalItems":{"type":"integer","minimum":0},"view":{"type":"object","properties":{"@id":{"type":"string","format":"iri-reference"},"@type":{"type":"string"},"first":{"type":"string","format":"iri-reference"},"last":{"type":"string","format":"iri-reference"},"previous":{"type":"string","format":"iri-reference"},"next":{"type":"string","format":"iri-reference"}},"example":{"@id":"string","type":"string","first":"string","last":"string","previous":"string","next":"string"}},"search":{"type":"object","properties":{"@type":{"type":"string"},"template":{"type":"string"},"variableRepresentation":{"type":"string"},"mapping":{"type":"array","items":{"type":"object","properties":{"@type":{"type":"string"},"variable":{"type":"string"},"property":{"type":["string","null"]},"required":{"type":"boolean"}}}}}}},"required":["member"]}}}}},"summary":"Retrieves the collection of User resources.","description":"Retrieves the collection of User resources.","parameters":[{"name":"page","in":"query","description":"The collection page number","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":1},"style":"form","explode":false,"allowReserved":false},{"name":"itemsPerPage","in":"query","description":"The number of items per page","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":50,"minimum":0,"maximum":100},"style":"form","explode":false,"allowReserved":false},{"name":"firstName","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false},{"name":"lastName","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false},{"name":"userNameSearch","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false},{"name":"custom_json_order","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false}],"deprecated":false},"post":{"operationId":"api_users_post","tags":["User"],"responses":{"201":{"description":"User resource created","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/User.jsonld"}}},"links":{}},"400":{"description":"Invalid input"},"422":{"description":"Unprocessable entity"}},"summary":"Creates a User resource.","description":"Creates a User resource.","parameters":[],"requestBody":{"description":"The new User resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/User.jsonld"}}},"required":true},"deprecated":false}},"\/api\/users\/{id}":{"get":{"operationId":"api_users_id_get","tags":["User"],"responses":{"200":{"description":"User resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/User.jsonld"}}}},"404":{"description":"Resource not found"}},"summary":"Retrieves a User resource.","description":"Retrieves a User resource.","parameters":[{"name":"id","in":"path","description":"User identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"deprecated":false},"patch":{"operationId":"api_users_id_patch","tags":["User"],"responses":{"200":{"description":"User resource updated","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/User.jsonld"}}},"links":{}},"400":{"description":"Invalid input"},"422":{"description":"Unprocessable entity"},"404":{"description":"Resource not found"}},"summary":"Updates the User resource.","description":"Updates the User resource.","parameters":[{"name":"id","in":"path","description":"User identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"requestBody":{"description":"The updated User resource","content":{"application\/merge-patch+json":{"schema":{"$ref":"#\/components\/schemas\/User"}}},"required":true},"deprecated":false}},"\/api\/user_trips":{"get":{"operationId":"api_user_trips_get_collection","tags":["UserTrip"],"responses":{"200":{"description":"UserTrip collection","content":{"application\/ld+json":{"schema":{"type":"object","properties":{"member":{"type":"array","items":{"$ref":"#\/components\/schemas\/UserTrip.jsonld"}},"totalItems":{"type":"integer","minimum":0},"view":{"type":"object","properties":{"@id":{"type":"string","format":"iri-reference"},"@type":{"type":"string"},"first":{"type":"string","format":"iri-reference"},"last":{"type":"string","format":"iri-reference"},"previous":{"type":"string","format":"iri-reference"},"next":{"type":"string","format":"iri-reference"}},"example":{"@id":"string","type":"string","first":"string","last":"string","previous":"string","next":"string"}},"search":{"type":"object","properties":{"@type":{"type":"string"},"template":{"type":"string"},"variableRepresentation":{"type":"string"},"mapping":{"type":"array","items":{"type":"object","properties":{"@type":{"type":"string"},"variable":{"type":"string"},"property":{"type":["string","null"]},"required":{"type":"boolean"}}}}}}},"required":["member"]}}}}},"summary":"Retrieves the collection of UserTrip resources.","description":"Retrieves the collection of UserTrip resources.","parameters":[{"name":"page","in":"query","description":"The collection page number","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":1},"style":"form","explode":false,"allowReserved":false},{"name":"itemsPerPage","in":"query","description":"The number of items per page","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":50,"minimum":0,"maximum":100},"style":"form","explode":false,"allowReserved":false}],"deprecated":false},"post":{"operationId":"api_user_trips_post","tags":["UserTrip"],"responses":{"201":{"description":"UserTrip resource created","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/UserTrip.jsonld"}}},"links":{}},"400":{"description":"Invalid input"},"422":{"description":"Unprocessable entity"}},"summary":"Creates a UserTrip resource.","description":"Creates a UserTrip resource.","parameters":[],"requestBody":{"description":"The new UserTrip resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/UserTrip.jsonld"}}},"required":true},"deprecated":false}},"\/api\/user_trips\/{id}":{"get":{"operationId":"api_user_trips_id_get","tags":["UserTrip"],"responses":{"200":{"description":"UserTrip resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/UserTrip.jsonld"}}}},"404":{"description":"Resource not found"}},"summary":"Retrieves a UserTrip resource.","description":"Retrieves a UserTrip resource.","parameters":[{"name":"id","in":"path","description":"UserTrip identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"deprecated":false},"patch":{"operationId":"api_user_trips_id_patch","tags":["UserTrip"],"responses":{"200":{"description":"UserTrip resource updated","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/UserTrip.jsonld"}}},"links":{}},"400":{"description":"Invalid input"},"422":{"description":"Unprocessable entity"},"404":{"description":"Resource not found"}},"summary":"Updates the UserTrip resource.","description":"Updates the UserTrip resource.","parameters":[{"name":"id","in":"path","description":"UserTrip identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"requestBody":{"description":"The updated UserTrip resource","content":{"application\/merge-patch+json":{"schema":{"$ref":"#\/components\/schemas\/UserTrip"}}},"required":true},"deprecated":false}},"\/api\/user_trip_locations":{"get":{"operationId":"api_user_trip_locations_get_collection","tags":["UserTripLocation"],"responses":{"200":{"description":"UserTripLocation collection","content":{"application\/ld+json":{"schema":{"type":"object","properties":{"member":{"type":"array","items":{"$ref":"#\/components\/schemas\/UserTripLocation.jsonld"}},"totalItems":{"type":"integer","minimum":0},"view":{"type":"object","properties":{"@id":{"type":"string","format":"iri-reference"},"@type":{"type":"string"},"first":{"type":"string","format":"iri-reference"},"last":{"type":"string","format":"iri-reference"},"previous":{"type":"string","format":"iri-reference"},"next":{"type":"string","format":"iri-reference"}},"example":{"@id":"string","type":"string","first":"string","last":"string","previous":"string","next":"string"}},"search":{"type":"object","properties":{"@type":{"type":"string"},"template":{"type":"string"},"variableRepresentation":{"type":"string"},"mapping":{"type":"array","items":{"type":"object","properties":{"@type":{"type":"string"},"variable":{"type":"string"},"property":{"type":["string","null"]},"required":{"type":"boolean"}}}}}}},"required":["member"]}}}}},"summary":"Retrieves the collection of UserTripLocation resources.","description":"Retrieves the collection of UserTripLocation resources.","parameters":[{"name":"page","in":"query","description":"The collection page number","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":1},"style":"form","explode":false,"allowReserved":false},{"name":"itemsPerPage","in":"query","description":"The number of items per page","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":50,"minimum":0,"maximum":100},"style":"form","explode":false,"allowReserved":false}],"deprecated":false},"post":{"operationId":"api_user_trip_locations_post","tags":["UserTripLocation"],"responses":{"201":{"description":"UserTripLocation resource created","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/UserTripLocation.jsonld"}}},"links":{}},"400":{"description":"Invalid input"},"422":{"description":"Unprocessable entity"}},"summary":"Creates a UserTripLocation resource.","description":"Creates a UserTripLocation resource.","parameters":[],"requestBody":{"description":"The new UserTripLocation resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/UserTripLocation.jsonld"}}},"required":true},"deprecated":false}},"\/api\/user_trip_locations\/{id}":{"get":{"operationId":"api_user_trip_locations_id_get","tags":["UserTripLocation"],"responses":{"200":{"description":"UserTripLocation resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/UserTripLocation.jsonld"}}}},"404":{"description":"Resource not found"}},"summary":"Retrieves a UserTripLocation resource.","description":"Retrieves a UserTripLocation resource.","parameters":[{"name":"id","in":"path","description":"UserTripLocation identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"deprecated":false},"patch":{"operationId":"api_user_trip_locations_id_patch","tags":["UserTripLocation"],"responses":{"200":{"description":"UserTripLocation resource updated","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/UserTripLocation.jsonld"}}},"links":{}},"400":{"description":"Invalid input"},"422":{"description":"Unprocessable entity"},"404":{"description":"Resource not found"}},"summary":"Updates the UserTripLocation resource.","description":"Updates the UserTripLocation resource.","parameters":[{"name":"id","in":"path","description":"UserTripLocation identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"requestBody":{"description":"The updated UserTripLocation resource","content":{"application\/merge-patch+json":{"schema":{"$ref":"#\/components\/schemas\/UserTripLocation"}}},"required":true},"deprecated":false}},"\/api\/user_trip_work_logs":{"get":{"operationId":"api_user_trip_work_logs_get_collection","tags":["UserTripWorkLog"],"responses":{"200":{"description":"UserTripWorkLog collection","content":{"application\/ld+json":{"schema":{"type":"object","properties":{"member":{"type":"array","items":{"$ref":"#\/components\/schemas\/UserTripWorkLog.jsonld"}},"totalItems":{"type":"integer","minimum":0},"view":{"type":"object","properties":{"@id":{"type":"string","format":"iri-reference"},"@type":{"type":"string"},"first":{"type":"string","format":"iri-reference"},"last":{"type":"string","format":"iri-reference"},"previous":{"type":"string","format":"iri-reference"},"next":{"type":"string","format":"iri-reference"}},"example":{"@id":"string","type":"string","first":"string","last":"string","previous":"string","next":"string"}},"search":{"type":"object","properties":{"@type":{"type":"string"},"template":{"type":"string"},"variableRepresentation":{"type":"string"},"mapping":{"type":"array","items":{"type":"object","properties":{"@type":{"type":"string"},"variable":{"type":"string"},"property":{"type":["string","null"]},"required":{"type":"boolean"}}}}}}},"required":["member"]}}}}},"summary":"Retrieves the collection of UserTripWorkLog resources.","description":"Retrieves the collection of UserTripWorkLog resources.","parameters":[{"name":"page","in":"query","description":"The collection page number","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":1},"style":"form","explode":false,"allowReserved":false},{"name":"itemsPerPage","in":"query","description":"The number of items per page","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":50,"minimum":0,"maximum":100},"style":"form","explode":false,"allowReserved":false}],"deprecated":false},"post":{"operationId":"api_user_trip_work_logs_post","tags":["UserTripWorkLog"],"responses":{"201":{"description":"UserTripWorkLog resource created","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/UserTripWorkLog.jsonld"}}},"links":{}},"400":{"description":"Invalid input"},"422":{"description":"Unprocessable entity"}},"summary":"Creates a UserTripWorkLog resource.","description":"Creates a UserTripWorkLog resource.","parameters":[],"requestBody":{"description":"The new UserTripWorkLog resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/UserTripWorkLog.jsonld"}}},"required":true},"deprecated":false}},"\/api\/user_trip_work_logs\/{id}":{"get":{"operationId":"api_user_trip_work_logs_id_get","tags":["UserTripWorkLog"],"responses":{"200":{"description":"UserTripWorkLog resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/UserTripWorkLog.jsonld"}}}},"404":{"description":"Resource not found"}},"summary":"Retrieves a UserTripWorkLog resource.","description":"Retrieves a UserTripWorkLog resource.","parameters":[{"name":"id","in":"path","description":"UserTripWorkLog identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"deprecated":false},"patch":{"operationId":"api_user_trip_work_logs_id_patch","tags":["UserTripWorkLog"],"responses":{"200":{"description":"UserTripWorkLog resource updated","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/UserTripWorkLog.jsonld"}}},"links":{}},"400":{"description":"Invalid input"},"422":{"description":"Unprocessable entity"},"404":{"description":"Resource not found"}},"summary":"Updates the UserTripWorkLog resource.","description":"Updates the UserTripWorkLog resource.","parameters":[{"name":"id","in":"path","description":"UserTripWorkLog identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"requestBody":{"description":"The updated UserTripWorkLog resource","content":{"application\/merge-patch+json":{"schema":{"$ref":"#\/components\/schemas\/UserTripWorkLog"}}},"required":true},"deprecated":false}},"\/api\/vessels":{"get":{"operationId":"api_vessels_get_collection","tags":["Vessel"],"responses":{"200":{"description":"Vessel collection","content":{"application\/ld+json":{"schema":{"type":"object","properties":{"member":{"type":"array","items":{"$ref":"#\/components\/schemas\/Vessel.jsonld"}},"totalItems":{"type":"integer","minimum":0},"view":{"type":"object","properties":{"@id":{"type":"string","format":"iri-reference"},"@type":{"type":"string"},"first":{"type":"string","format":"iri-reference"},"last":{"type":"string","format":"iri-reference"},"previous":{"type":"string","format":"iri-reference"},"next":{"type":"string","format":"iri-reference"}},"example":{"@id":"string","type":"string","first":"string","last":"string","previous":"string","next":"string"}},"search":{"type":"object","properties":{"@type":{"type":"string"},"template":{"type":"string"},"variableRepresentation":{"type":"string"},"mapping":{"type":"array","items":{"type":"object","properties":{"@type":{"type":"string"},"variable":{"type":"string"},"property":{"type":["string","null"]},"required":{"type":"boolean"}}}}}}},"required":["member"]}}}}},"summary":"Retrieves the collection of Vessel resources.","description":"Retrieves the collection of Vessel resources.","parameters":[{"name":"page","in":"query","description":"The collection page number","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":1},"style":"form","explode":false,"allowReserved":false},{"name":"itemsPerPage","in":"query","description":"The number of items per page","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":50,"minimum":0,"maximum":100},"style":"form","explode":false,"allowReserved":false},{"name":"name","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false},{"name":"custom_json_filter","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false},{"name":"custom_json_order","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false}],"deprecated":false},"post":{"operationId":"api_vessels_post","tags":["Vessel"],"responses":{"201":{"description":"Vessel resource created","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/Vessel.jsonld"}}},"links":{}},"400":{"description":"Invalid input"},"422":{"description":"Unprocessable entity"}},"summary":"Creates a Vessel resource.","description":"Creates a Vessel resource.","parameters":[],"requestBody":{"description":"The new Vessel resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/Vessel.jsonld"}}},"required":true},"deprecated":false}},"\/api\/vessels\/{id}":{"get":{"operationId":"api_vessels_id_get","tags":["Vessel"],"responses":{"200":{"description":"Vessel resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/Vessel.jsonld"}}}},"404":{"description":"Resource not found"}},"summary":"Retrieves a Vessel resource.","description":"Retrieves a Vessel resource.","parameters":[{"name":"id","in":"path","description":"Vessel identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"deprecated":false},"patch":{"operationId":"api_vessels_id_patch","tags":["Vessel"],"responses":{"200":{"description":"Vessel resource updated","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/Vessel.jsonld"}}},"links":{}},"400":{"description":"Invalid input"},"422":{"description":"Unprocessable entity"},"404":{"description":"Resource not found"}},"summary":"Updates the Vessel resource.","description":"Updates the Vessel resource.","parameters":[{"name":"id","in":"path","description":"Vessel identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"requestBody":{"description":"The updated Vessel resource","content":{"application\/merge-patch+json":{"schema":{"$ref":"#\/components\/schemas\/Vessel"}}},"required":true},"deprecated":false}},"\/api\/zones":{"get":{"operationId":"api_zones_get_collection","tags":["Zone"],"responses":{"200":{"description":"Zone collection","content":{"application\/ld+json":{"schema":{"type":"object","properties":{"member":{"type":"array","items":{"$ref":"#\/components\/schemas\/Zone.jsonld"}},"totalItems":{"type":"integer","minimum":0},"view":{"type":"object","properties":{"@id":{"type":"string","format":"iri-reference"},"@type":{"type":"string"},"first":{"type":"string","format":"iri-reference"},"last":{"type":"string","format":"iri-reference"},"previous":{"type":"string","format":"iri-reference"},"next":{"type":"string","format":"iri-reference"}},"example":{"@id":"string","type":"string","first":"string","last":"string","previous":"string","next":"string"}},"search":{"type":"object","properties":{"@type":{"type":"string"},"template":{"type":"string"},"variableRepresentation":{"type":"string"},"mapping":{"type":"array","items":{"type":"object","properties":{"@type":{"type":"string"},"variable":{"type":"string"},"property":{"type":["string","null"]},"required":{"type":"boolean"}}}}}}},"required":["member"]}}}}},"summary":"Retrieves the collection of Zone resources.","description":"Retrieves the collection of Zone resources.","parameters":[{"name":"page","in":"query","description":"The collection page number","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":1},"style":"form","explode":false,"allowReserved":false},{"name":"itemsPerPage","in":"query","description":"The number of items per page","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":50,"minimum":0,"maximum":100},"style":"form","explode":false,"allowReserved":false},{"name":"name","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false},{"name":"custom_json_filter","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false},{"name":"custom_json_order","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false}],"deprecated":false},"post":{"operationId":"api_zones_post","tags":["Zone"],"responses":{"201":{"description":"Zone resource created","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/Zone.jsonld"}}},"links":{}},"400":{"description":"Invalid input"},"422":{"description":"Unprocessable entity"}},"summary":"Creates a Zone resource.","description":"Creates a Zone resource.","parameters":[],"requestBody":{"description":"The new Zone resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/Zone.jsonld"}}},"required":true},"deprecated":false}},"\/api\/zones\/{id}":{"get":{"operationId":"api_zones_id_get","tags":["Zone"],"responses":{"200":{"description":"Zone resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/Zone.jsonld"}}}},"404":{"description":"Resource not found"}},"summary":"Retrieves a Zone resource.","description":"Retrieves a Zone resource.","parameters":[{"name":"id","in":"path","description":"Zone identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"deprecated":false},"patch":{"operationId":"api_zones_id_patch","tags":["Zone"],"responses":{"200":{"description":"Zone resource updated","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/Zone.jsonld"}}},"links":{}},"400":{"description":"Invalid input"},"422":{"description":"Unprocessable entity"},"404":{"description":"Resource not found"}},"summary":"Updates the Zone resource.","description":"Updates the Zone resource.","parameters":[{"name":"id","in":"path","description":"Zone identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"requestBody":{"description":"The updated Zone resource","content":{"application\/merge-patch+json":{"schema":{"$ref":"#\/components\/schemas\/Zone"}}},"required":true},"deprecated":false}}},"components":{"schemas":{"Location":{"type":"object","description":"","deprecated":false,"properties":{"zone":{"$ref":"#\/components\/schemas\/Zone"},"name":{"type":"string"},"code":{"type":"string"},"createdAt":{"readOnly":true,"type":["string","null"],"format":"date-time"}},"required":["name","code"]},"Location.jsonld":{"type":"object","description":"","deprecated":false,"properties":{"@context":{"readOnly":true,"oneOf":[{"type":"string"},{"type":"object","properties":{"@vocab":{"type":"string"},"hydra":{"type":"string","enum":["http:\/\/www.w3.org\/ns\/hydra\/core#"]}},"required":["@vocab","hydra"],"additionalProperties":true}]},"@id":{"readOnly":true,"type":"string"},"@type":{"readOnly":true,"type":"string"},"zone":{"$ref":"#\/components\/schemas\/Zone.jsonld"},"name":{"type":"string"},"code":{"type":"string"},"createdAt":{"readOnly":true,"type":["string","null"],"format":"date-time"}},"required":["name","code"]},"MediaObject.jsonld-media_object.read":{"type":"object","description":"","deprecated":false,"externalDocs":{"url":"https:\/\/schema.org\/MediaObject"},"properties":{"@context":{"readOnly":true,"oneOf":[{"type":"string"},{"type":"object","properties":{"@vocab":{"type":"string"},"hydra":{"type":"string","enum":["http:\/\/www.w3.org\/ns\/hydra\/core#"]}},"required":["@vocab","hydra"],"additionalProperties":true}]},"@id":{"readOnly":true,"type":"string"},"@type":{"readOnly":true,"type":"string"},"contentUrl":{"externalDocs":{"url":"https:\/\/schema.org\/contentUrl"},"type":["string","null"]}}},"ShippingCompany":{"type":"object","description":"","deprecated":false,"required":["name","code"],"properties":{"name":{"type":"string"},"code":{"type":"string"},"createdAt":{"readOnly":true,"type":["string","null"],"format":"date-time"}}},"ShippingCompany.jsonld":{"type":"object","description":"","deprecated":false,"required":["name","code"],"properties":{"@context":{"readOnly":true,"oneOf":[{"type":"string"},{"type":"object","properties":{"@vocab":{"type":"string"},"hydra":{"type":"string","enum":["http:\/\/www.w3.org\/ns\/hydra\/core#"]}},"required":["@vocab","hydra"],"additionalProperties":true}]},"@id":{"readOnly":true,"type":"string"},"@type":{"readOnly":true,"type":"string"},"name":{"type":"string"},"code":{"type":"string"},"createdAt":{"readOnly":true,"type":["string","null"],"format":"date-time"}}},"Trip":{"type":"object","description":"","deprecated":false,"properties":{"vessel":{"readOnly":true,"type":"string","format":"iri-reference","example":"https:\/\/example.com\/"},"pilotReference":{"type":"string"},"captainName":{"type":["string","null"]},"startLocation":{"readOnly":true,"type":"string","format":"iri-reference","example":"https:\/\/example.com\/"},"endLocation":{"readOnly":true,"type":"string","format":"iri-reference","example":"https:\/\/example.com\/"},"startDate":{"type":["string","null"],"format":"date-time"},"endDate":{"type":["string","null"],"format":"date-time"},"createdAt":{"readOnly":true,"type":["string","null"],"format":"date-time"}},"required":["pilotReference","startDate","endDate"]},"Trip.jsonld":{"type":"object","description":"","deprecated":false,"properties":{"@context":{"readOnly":true,"oneOf":[{"type":"string"},{"type":"object","properties":{"@vocab":{"type":"string"},"hydra":{"type":"string","enum":["http:\/\/www.w3.org\/ns\/hydra\/core#"]}},"required":["@vocab","hydra"],"additionalProperties":true}]},"@id":{"readOnly":true,"type":"string"},"@type":{"readOnly":true,"type":"string"},"vessel":{"readOnly":true,"$ref":"#\/components\/schemas\/Vessel.jsonld"},"pilotReference":{"type":"string"},"captainName":{"type":["string","null"]},"startLocation":{"readOnly":true,"$ref":"#\/components\/schemas\/Location.jsonld"},"endLocation":{"readOnly":true,"$ref":"#\/components\/schemas\/Location.jsonld"},"startDate":{"type":["string","null"],"format":"date-time"},"endDate":{"type":["string","null"],"format":"date-time"},"createdAt":{"readOnly":true,"type":["string","null"],"format":"date-time"}},"required":["pilotReference","startDate","endDate"]},"TripLocation":{"type":"object","description":"","deprecated":false,"properties":{"trip":{"readOnly":true,"type":"string","format":"iri-reference","example":"https:\/\/example.com\/"},"location":{"readOnly":true,"type":"string","format":"iri-reference","example":"https:\/\/example.com\/"},"date":{"type":["string","null"],"format":"date-time"},"createdAt":{"readOnly":true,"type":["string","null"],"format":"date-time"}},"required":["date"]},"TripLocation.jsonld":{"type":"object","description":"","deprecated":false,"properties":{"@context":{"readOnly":true,"oneOf":[{"type":"string"},{"type":"object","properties":{"@vocab":{"type":"string"},"hydra":{"type":"string","enum":["http:\/\/www.w3.org\/ns\/hydra\/core#"]}},"required":["@vocab","hydra"],"additionalProperties":true}]},"@id":{"readOnly":true,"type":"string"},"@type":{"readOnly":true,"type":"string"},"trip":{"readOnly":true,"$ref":"#\/components\/schemas\/Trip.jsonld"},"location":{"readOnly":true,"$ref":"#\/components\/schemas\/Location.jsonld"},"date":{"type":["string","null"],"format":"date-time"},"createdAt":{"readOnly":true,"type":["string","null"],"format":"date-time"}},"required":["date"]},"User":{"type":"object","description":"","deprecated":false,"required":["email","firstName","lastName"],"properties":{"email":{"format":"email","externalDocs":{"url":"https:\/\/schema.org\/email"},"type":["string","null"]},"firstName":{"type":["string","null"]},"lastName":{"type":["string","null"]},"image":{"type":["string","null"],"format":"iri-reference","example":"https:\/\/example.com\/"},"imageUrl":{"readOnly":true,"type":["string","null"]},"fullName":{"readOnly":true,"type":["string","null"]},"password":{"writeOnly":true,"description":"The plaintext password when being set or changed.","type":["string","null"]},"active":{"type":"boolean"},"createdAt":{"readOnly":true,"type":["string","null"],"format":"date-time"}}},"User.jsonld":{"type":"object","description":"","deprecated":false,"required":["email","firstName","lastName"],"properties":{"@context":{"readOnly":true,"oneOf":[{"type":"string"},{"type":"object","properties":{"@vocab":{"type":"string"},"hydra":{"type":"string","enum":["http:\/\/www.w3.org\/ns\/hydra\/core#"]}},"required":["@vocab","hydra"],"additionalProperties":true}]},"@id":{"readOnly":true,"type":"string"},"@type":{"readOnly":true,"type":"string"},"email":{"format":"email","externalDocs":{"url":"https:\/\/schema.org\/email"},"type":["string","null"]},"firstName":{"type":["string","null"]},"lastName":{"type":["string","null"]},"image":{"type":["string","null"],"format":"iri-reference","example":"https:\/\/example.com\/"},"imageUrl":{"readOnly":true,"type":["string","null"]},"fullName":{"readOnly":true,"type":["string","null"]},"password":{"writeOnly":true,"description":"The plaintext password when being set or changed.","type":["string","null"]},"active":{"type":"boolean"},"createdAt":{"readOnly":true,"type":["string","null"],"format":"date-time"}}},"UserTrip":{"type":"object","description":"","deprecated":false,"properties":{"trip":{"readOnly":true,"type":"string","format":"iri-reference","example":"https:\/\/example.com\/"},"user":{"readOnly":true,"type":"string","format":"iri-reference","example":"https:\/\/example.com\/"},"captainName":{"type":"string"},"startDate":{"type":["string","null"],"format":"date-time"},"endDate":{"type":["string","null"],"format":"date-time"},"createdAt":{"readOnly":true,"type":["string","null"],"format":"date-time"}},"required":["captainName","startDate","endDate"]},"UserTrip.jsonld":{"type":"object","description":"","deprecated":false,"properties":{"@context":{"readOnly":true,"oneOf":[{"type":"string"},{"type":"object","properties":{"@vocab":{"type":"string"},"hydra":{"type":"string","enum":["http:\/\/www.w3.org\/ns\/hydra\/core#"]}},"required":["@vocab","hydra"],"additionalProperties":true}]},"@id":{"readOnly":true,"type":"string"},"@type":{"readOnly":true,"type":"string"},"trip":{"readOnly":true,"$ref":"#\/components\/schemas\/Trip.jsonld"},"user":{"readOnly":true,"$ref":"#\/components\/schemas\/User.jsonld"},"captainName":{"type":"string"},"startDate":{"type":["string","null"],"format":"date-time"},"endDate":{"type":["string","null"],"format":"date-time"},"createdAt":{"readOnly":true,"type":["string","null"],"format":"date-time"}},"required":["captainName","startDate","endDate"]},"UserTripLocation":{"type":"object","description":"","deprecated":false,"properties":{"userTrip":{"readOnly":true,"type":"string","format":"iri-reference","example":"https:\/\/example.com\/"},"location":{"readOnly":true,"type":"string","format":"iri-reference","example":"https:\/\/example.com\/"},"plannedDate":{"type":["string","null"],"format":"date-time"},"createdAt":{"readOnly":true,"type":["string","null"],"format":"date-time"}},"required":["plannedDate"]},"UserTripLocation.jsonld":{"type":"object","description":"","deprecated":false,"properties":{"@context":{"readOnly":true,"oneOf":[{"type":"string"},{"type":"object","properties":{"@vocab":{"type":"string"},"hydra":{"type":"string","enum":["http:\/\/www.w3.org\/ns\/hydra\/core#"]}},"required":["@vocab","hydra"],"additionalProperties":true}]},"@id":{"readOnly":true,"type":"string"},"@type":{"readOnly":true,"type":"string"},"userTrip":{"readOnly":true,"$ref":"#\/components\/schemas\/UserTrip.jsonld"},"location":{"readOnly":true,"$ref":"#\/components\/schemas\/Location.jsonld"},"plannedDate":{"type":["string","null"],"format":"date-time"},"createdAt":{"readOnly":true,"type":["string","null"],"format":"date-time"}},"required":["plannedDate"]},"UserTripWorkLog":{"type":"object","description":"","deprecated":false,"properties":{"userTrip":{"readOnly":true,"type":"string","format":"iri-reference","example":"https:\/\/example.com\/"},"startLocation":{"readOnly":true,"type":"string","format":"iri-reference","example":"https:\/\/example.com\/"},"endLocation":{"readOnly":true,"type":"string","format":"iri-reference","example":"https:\/\/example.com\/"},"startDate":{"type":["string","null"],"format":"date-time"},"endDate":{"type":["string","null"],"format":"date-time"},"createdAt":{"readOnly":true,"type":["string","null"],"format":"date-time"}},"required":["startDate","endDate"]},"UserTripWorkLog.jsonld":{"type":"object","description":"","deprecated":false,"properties":{"@context":{"readOnly":true,"oneOf":[{"type":"string"},{"type":"object","properties":{"@vocab":{"type":"string"},"hydra":{"type":"string","enum":["http:\/\/www.w3.org\/ns\/hydra\/core#"]}},"required":["@vocab","hydra"],"additionalProperties":true}]},"@id":{"readOnly":true,"type":"string"},"@type":{"readOnly":true,"type":"string"},"userTrip":{"readOnly":true,"$ref":"#\/components\/schemas\/UserTrip.jsonld"},"startLocation":{"readOnly":true,"$ref":"#\/components\/schemas\/Location.jsonld"},"endLocation":{"readOnly":true,"$ref":"#\/components\/schemas\/Location.jsonld"},"startDate":{"type":["string","null"],"format":"date-time"},"endDate":{"type":["string","null"],"format":"date-time"},"createdAt":{"readOnly":true,"type":["string","null"],"format":"date-time"}},"required":["startDate","endDate"]},"Vessel":{"type":"object","description":"","deprecated":false,"required":["name","code"],"properties":{"name":{"type":"string"},"code":{"type":"string"},"company":{"$ref":"#\/components\/schemas\/ShippingCompany"},"createdAt":{"readOnly":true,"type":["string","null"],"format":"date-time"}}},"Vessel.jsonld":{"type":"object","description":"","deprecated":false,"required":["name","code"],"properties":{"@context":{"readOnly":true,"oneOf":[{"type":"string"},{"type":"object","properties":{"@vocab":{"type":"string"},"hydra":{"type":"string","enum":["http:\/\/www.w3.org\/ns\/hydra\/core#"]}},"required":["@vocab","hydra"],"additionalProperties":true}]},"@id":{"readOnly":true,"type":"string"},"@type":{"readOnly":true,"type":"string"},"name":{"type":"string"},"code":{"type":"string"},"company":{"$ref":"#\/components\/schemas\/ShippingCompany.jsonld"},"createdAt":{"readOnly":true,"type":["string","null"],"format":"date-time"}}},"Zone":{"type":"object","description":"","deprecated":false,"required":["name"],"properties":{"name":{"type":"string"},"createdAt":{"readOnly":true,"type":["string","null"],"format":"date-time"}}},"Zone.jsonld":{"type":"object","description":"","deprecated":false,"required":["name"],"properties":{"@context":{"readOnly":true,"oneOf":[{"type":"string"},{"type":"object","properties":{"@vocab":{"type":"string"},"hydra":{"type":"string","enum":["http:\/\/www.w3.org\/ns\/hydra\/core#"]}},"required":["@vocab","hydra"],"additionalProperties":true}]},"@id":{"readOnly":true,"type":"string"},"@type":{"readOnly":true,"type":"string"},"name":{"type":"string"},"createdAt":{"readOnly":true,"type":["string","null"],"format":"date-time"}}}},"responses":{},"parameters":{},"examples":{},"requestBodies":{},"headers":{},"securitySchemes":{"JWT":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}}},"security":[{"JWT":[]}],"tags":[],"webhooks":{}} \ No newline at end of file diff --git a/angular/openapi.yaml b/angular/openapi.yaml index d685c83..bf74283 100644 --- a/angular/openapi.yaml +++ b/angular/openapi.yaml @@ -1870,14 +1870,10 @@ components: deprecated: false properties: zone: - readOnly: true - type: string - format: iri-reference - example: 'https://example.com/' + $ref: '#/components/schemas/Zone' name: type: string - zoneName: - readOnly: true + code: type: string createdAt: readOnly: true @@ -1887,6 +1883,7 @@ components: format: date-time required: - name + - code Location.jsonld: type: object description: '' @@ -1916,12 +1913,10 @@ components: readOnly: true type: string zone: - readOnly: true $ref: '#/components/schemas/Zone.jsonld' name: type: string - zoneName: - readOnly: true + code: type: string createdAt: readOnly: true @@ -1931,6 +1926,7 @@ components: format: date-time required: - name + - code MediaObject.jsonld-media_object.read: type: object description: '' @@ -1973,9 +1969,12 @@ components: deprecated: false required: - name + - code properties: name: type: string + code: + type: string createdAt: readOnly: true type: @@ -1988,6 +1987,7 @@ components: deprecated: false required: - name + - code properties: '@context': readOnly: true @@ -2014,6 +2014,8 @@ components: type: string name: type: string + code: + type: string createdAt: readOnly: true type: @@ -2604,14 +2606,14 @@ components: deprecated: false required: - name + - code properties: name: type: string - company: - readOnly: true + code: type: string - format: iri-reference - example: 'https://example.com/' + company: + $ref: '#/components/schemas/ShippingCompany' createdAt: readOnly: true type: @@ -2624,6 +2626,7 @@ components: deprecated: false required: - name + - code properties: '@context': readOnly: true @@ -2650,8 +2653,9 @@ components: type: string name: type: string + code: + type: string company: - readOnly: true $ref: '#/components/schemas/ShippingCompany.jsonld' createdAt: readOnly: true diff --git a/angular/src/app/_components/search-select/search-select.component.ts b/angular/src/app/_components/search-select/search-select.component.ts index 86c38a2..35269f3 100644 --- a/angular/src/app/_components/search-select/search-select.component.ts +++ b/angular/src/app/_components/search-select/search-select.component.ts @@ -118,4 +118,33 @@ export class SearchSelectComponent implements OnInit, AfterViewInit { } as ListColDefinition, ]; } + + public static getDefaultColDefShippingCompanies(subResource?: string): ListColDefinition[] { + return [ + { + name: 'name', + text: 'common.name', + type: ListComponent.COLUMN_TYPE_TEXT, + field: 'name', + sortable: true, + filterType: FilterBarComponent.FILTER_TYPE_TEXT, + } as ListColDefinition, + { + name: 'code', + text: 'common.code', + type: ListComponent.COLUMN_TYPE_TEXT, + field: 'code', + sortable: true, + filterType: FilterBarComponent.FILTER_TYPE_TEXT, + } as ListColDefinition, + { + name: 'createdAt', + text: 'common.created_at', + type: ListComponent.COLUMN_TYPE_DATE, + field: 'createdAt', + sortable: true, + filterType: FilterBarComponent.FILTER_TYPE_DATE, + } as ListColDefinition, + ]; + } } diff --git a/angular/src/app/_forms/apiForms.ts b/angular/src/app/_forms/apiForms.ts index f349615..1b1b19a 100644 --- a/angular/src/app/_forms/apiForms.ts +++ b/angular/src/app/_forms/apiForms.ts @@ -3,14 +3,14 @@ import { FormGroup, FormControl, Validators } from '@angular/forms'; export const locationForm = new FormGroup({ zone: new FormControl(null, []), name: new FormControl(null, [Validators.required]), - zoneName: new FormControl(null, []), + code: new FormControl(null, [Validators.required]), createdAt: new FormControl(null, []) }); export const locationJsonldForm = new FormGroup({ zone: new FormControl(null, []), name: new FormControl(null, [Validators.required]), - zoneName: new FormControl(null, []), + code: new FormControl(null, [Validators.required]), createdAt: new FormControl(null, []) }); @@ -20,11 +20,13 @@ export const mediaObjectJsonldMediaObjectReadForm = new FormGroup({ export const shippingCompanyForm = new FormGroup({ name: new FormControl(null, [Validators.required]), + code: new FormControl(null, [Validators.required]), createdAt: new FormControl(null, []) }); export const shippingCompanyJsonldForm = new FormGroup({ name: new FormControl(null, [Validators.required]), + code: new FormControl(null, [Validators.required]), createdAt: new FormControl(null, []) }); @@ -140,12 +142,14 @@ export const userTripWorkLogJsonldForm = new FormGroup({ export const vesselForm = new FormGroup({ name: new FormControl(null, [Validators.required]), + code: new FormControl(null, [Validators.required]), company: new FormControl(null, []), createdAt: new FormControl(null, []) }); export const vesselJsonldForm = new FormGroup({ name: new FormControl(null, [Validators.required]), + code: new FormControl(null, [Validators.required]), company: new FormControl(null, []), createdAt: new FormControl(null, []) }); diff --git a/angular/src/app/_views/location/location-list/location-list.component.ts b/angular/src/app/_views/location/location-list/location-list.component.ts index cddaf5b..518eace 100644 --- a/angular/src/app/_views/location/location-list/location-list.component.ts +++ b/angular/src/app/_views/location/location-list/location-list.component.ts @@ -20,7 +20,7 @@ import {LocationNewComponent} from "@app/_views/location/location-new/location-n export class LocationListComponent implements OnInit, AfterViewInit { @ViewChild("listComponent", {static: false}) listComponent!: ListComponent; - + protected readonly LocationNewComponent = LocationNewComponent; protected listColDefinitions!: ListColDefinition[]; constructor( @@ -38,19 +38,28 @@ export class LocationListComponent implements OnInit, AfterViewInit { sortable: true, filterType: FilterBarComponent.FILTER_TYPE_TEXT, } as ListColDefinition, + { + name: 'code', + text: 'common.code', + type: ListComponent.COLUMN_TYPE_TEXT, + field: 'code', + sortable: true, + filterType: FilterBarComponent.FILTER_TYPE_TEXT, + } as ListColDefinition, { name: 'zone', text: 'model.zone', type: ListComponent.COLUMN_TYPE_TEXT, + subResource: 'zone', field: 'name', sortable: true, filterType: FilterBarComponent.FILTER_TYPE_TEXT, } as ListColDefinition, { - name: 'creationDate', - text: 'common.creation_date', + name: 'createdAt', + text: 'common.created_at', type: ListComponent.COLUMN_TYPE_DATE, - field: 'creationDate', + field: 'createdAt', sortable: true, filterType: FilterBarComponent.FILTER_TYPE_DATE, } as ListColDefinition, @@ -87,6 +96,5 @@ export class LocationListComponent implements OnInit, AfterViewInit { this.router.navigate(['/' + ROUTE_LOCATIONS, this.appHelperService.extractId(location.id)]); } - protected readonly ZoneNewComponent = ZoneNewComponent; - protected readonly LocationNewComponent = LocationNewComponent; + } diff --git a/angular/src/app/_views/location/location-new/location-new.component.html b/angular/src/app/_views/location/location-new/location-new.component.html index 8a17766..6693037 100644 --- a/angular/src/app/_views/location/location-new/location-new.component.html +++ b/angular/src/app/_views/location/location-new/location-new.component.html @@ -5,20 +5,25 @@ +
+ + +
-
- \ No newline at end of file diff --git a/angular/src/app/_views/location/location-new/location-new.component.ts b/angular/src/app/_views/location/location-new/location-new.component.ts index 24d6c7b..2f5f488 100644 --- a/angular/src/app/_views/location/location-new/location-new.component.ts +++ b/angular/src/app/_views/location/location-new/location-new.component.ts @@ -1,28 +1,38 @@ -import {Component, EventEmitter, Input, Output} from '@angular/core'; +import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core'; import {AbstractCreateDataComponent} from "@app/_interfaces/AbstractCreateDataComponent"; import {LocationJsonld, LocationService, ZoneService} from "@app/core/api/v1"; import {ModalStatus} from "@app/_helpers/modal.states"; import {FormGroup} from "@angular/forms"; -import {locationForm, zoneForm} from "@app/_forms/apiForms"; +import {locationForm} from "@app/_forms/apiForms"; import {ListGetDataFunctionType} from "@app/_components/list/list-get-data-function-type"; import {SearchSelectComponent} from "@app/_components/search-select/search-select.component"; +import {ListColDefinition} from "@app/_components/list/list-col-definition"; @Component({ - selector: 'app-location-new', - templateUrl: './location-new.component.html', - styleUrl: './location-new.component.scss' + selector: 'app-location-new', + templateUrl: './location-new.component.html', + styleUrl: './location-new.component.scss' }) -export class LocationNewComponent extends AbstractCreateDataComponent{ +export class LocationNewComponent extends AbstractCreateDataComponent implements OnInit { @Input() public override data!: LocationJsonld; @Output() public override submit: EventEmitter = new EventEmitter(); + protected readonly SearchSelectComponent = SearchSelectComponent; override form: FormGroup = locationForm; + protected zoneColDefinitions: ListColDefinition[]; constructor( private locationService: LocationService, private zoneService: ZoneService, ) { super(); + this.zoneColDefinitions = SearchSelectComponent.getDefaultColDefZones(); + } + + override ngOnInit() { + if (this.data) { + this.form.patchValue(this.data); + } } getInitialData(): LocationJsonld { @@ -39,6 +49,8 @@ export class LocationNewComponent extends AbstractCreateDataComponent \ No newline at end of file diff --git a/angular/src/app/_views/shipping-company/shipping-company-list/shipping-company-list.component.ts b/angular/src/app/_views/shipping-company/shipping-company-list/shipping-company-list.component.ts index 581461f..9a57196 100644 --- a/angular/src/app/_views/shipping-company/shipping-company-list/shipping-company-list.component.ts +++ b/angular/src/app/_views/shipping-company/shipping-company-list/shipping-company-list.component.ts @@ -10,7 +10,11 @@ import {AppHelperService} from "@app/_helpers/app-helper.service"; import {FilterBarComponent} from "@app/_components/filter-bar/filter-bar.component"; import {ListGetDataFunctionType} from "@app/_components/list/list-get-data-function-type"; import {Sort} from "@angular/material/sort"; -import {ROUTE_SHIPPING_COMPANIES, ROUTE_VESSELS} from "@app/app-routing.module"; +import {ROUTE_SHIPPING_COMPANIES} from "@app/app-routing.module"; +import { + ShippingCompanyNewComponent +} from "@app/_views/shipping-company/shipping-company-new/shipping-company-new.component"; +import {ZoneNewComponent} from "@app/_views/zone/zone-new/zone-new.component"; @Component({ selector: 'app-shipping-company-list', @@ -20,6 +24,7 @@ import {ROUTE_SHIPPING_COMPANIES, ROUTE_VESSELS} from "@app/app-routing.module"; export class ShippingCompanyListComponent { @ViewChild("listComponent", {static: false}) listComponent!: ListComponent; + protected readonly ShippingCompanyNewComponent = ShippingCompanyNewComponent; protected listColDefinitions!: ListColDefinition[]; constructor( @@ -36,12 +41,21 @@ export class ShippingCompanyListComponent { field: 'name', sortable: true, filterType: FilterBarComponent.FILTER_TYPE_TEXT, + + } as ListColDefinition, + { + name: 'code', + text: 'common.code', + type: ListComponent.COLUMN_TYPE_TEXT, + field: 'code', + sortable: true, + filterType: FilterBarComponent.FILTER_TYPE_TEXT, } as ListColDefinition, { - name: 'creationDate', - text: 'common.creation_date', + name: 'createdAt', + text: 'common.created_at', type: ListComponent.COLUMN_TYPE_DATE, - field: 'creationDate', + field: 'createdAt', sortable: true, filterType: FilterBarComponent.FILTER_TYPE_DATE, } as ListColDefinition, @@ -77,4 +91,5 @@ export class ShippingCompanyListComponent { const shippingCompany: ShippingCompanyJsonld = element as ShippingCompanyJsonld; this.router.navigate(['/' + ROUTE_SHIPPING_COMPANIES, this.appHelperService.extractId(shippingCompany.id)]); } + protected readonly ZoneNewComponent = ZoneNewComponent; } diff --git a/angular/src/app/_views/shipping-company/shipping-company-new/shipping-company-new.component.html b/angular/src/app/_views/shipping-company/shipping-company-new/shipping-company-new.component.html new file mode 100644 index 0000000..927b1a1 --- /dev/null +++ b/angular/src/app/_views/shipping-company/shipping-company-new/shipping-company-new.component.html @@ -0,0 +1,11 @@ +

{{ 'basic.new' | translate }} {{ 'model.shipping_company' | translate }}

+
+
+
+ + +
+ +
+
\ No newline at end of file diff --git a/angular/src/app/_views/shipping-company/shipping-company-new/shipping-company-new.component.scss b/angular/src/app/_views/shipping-company/shipping-company-new/shipping-company-new.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/angular/src/app/_views/shipping-company/shipping-company-new/shipping-company-new.component.spec.ts b/angular/src/app/_views/shipping-company/shipping-company-new/shipping-company-new.component.spec.ts new file mode 100644 index 0000000..8a1bf21 --- /dev/null +++ b/angular/src/app/_views/shipping-company/shipping-company-new/shipping-company-new.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ShippingCompanyNewComponent } from './shipping-company-new.component'; + +describe('ShippingCompanyNewComponent', () => { + let component: ShippingCompanyNewComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ShippingCompanyNewComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(ShippingCompanyNewComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/angular/src/app/_views/shipping-company/shipping-company-new/shipping-company-new.component.ts b/angular/src/app/_views/shipping-company/shipping-company-new/shipping-company-new.component.ts new file mode 100644 index 0000000..1e7bb5b --- /dev/null +++ b/angular/src/app/_views/shipping-company/shipping-company-new/shipping-company-new.component.ts @@ -0,0 +1,41 @@ +import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core'; +import {AbstractCreateDataComponent} from "@app/_interfaces/AbstractCreateDataComponent"; +import {LocationJsonld, ShippingCompanyJsonld, ShippingCompanyService} from "@app/core/api/v1"; +import {ModalStatus} from "@app/_helpers/modal.states"; +import {FormGroup} from "@angular/forms"; +import {shippingCompanyForm} from "@app/_forms/apiForms"; + +@Component({ + selector: 'app-shipping-company-new', + templateUrl: './shipping-company-new.component.html', + styleUrl: './shipping-company-new.component.scss' +}) +export class ShippingCompanyNewComponent extends AbstractCreateDataComponent implements OnInit { + @Input() public override data!: ShippingCompanyJsonld; + @Output() public override submit: EventEmitter = new EventEmitter(); + + override form: FormGroup = shippingCompanyForm; + + constructor( + private shippingCompanyService: ShippingCompanyService + ) { + super(); + } + + getInitialData(): ShippingCompanyJsonld { + return {} as ShippingCompanyJsonld; + } + + onSubmit() { + if (this.form.valid) { + this.shippingCompanyService.shippingCompaniesPost( + this.form.value as ShippingCompanyJsonld + ).subscribe( + data => { + this.form.reset(); + this.submit.emit(ModalStatus.Submitted); + } + ); + } + } +} diff --git a/angular/src/app/_views/vessel/vessel-list/vessel-list.component.html b/angular/src/app/_views/vessel/vessel-list/vessel-list.component.html index 3f932ec..63609ba 100644 --- a/angular/src/app/_views/vessel/vessel-list/vessel-list.component.html +++ b/angular/src/app/_views/vessel/vessel-list/vessel-list.component.html @@ -5,5 +5,6 @@ [onNavigateToDetailsFunction]="navigateToVesselDetail" [onSortFunction]="onSortChange" [listColDefinitions]="listColDefinitions" + [createDataComponent]="VesselNewComponent" > \ No newline at end of file diff --git a/angular/src/app/_views/vessel/vessel-list/vessel-list.component.ts b/angular/src/app/_views/vessel/vessel-list/vessel-list.component.ts index cb9b523..8088de9 100644 --- a/angular/src/app/_views/vessel/vessel-list/vessel-list.component.ts +++ b/angular/src/app/_views/vessel/vessel-list/vessel-list.component.ts @@ -8,6 +8,7 @@ import {FilterBarComponent} from "@app/_components/filter-bar/filter-bar.compone import {ListGetDataFunctionType} from "@app/_components/list/list-get-data-function-type"; import {Sort} from "@angular/material/sort"; import {ROUTE_VESSELS} from "@app/app-routing.module"; +import {VesselNewComponent} from "@app/_views/vessel/vessel-new/vessel-new.component"; @Component({ selector: 'app-vessel-list', @@ -17,6 +18,7 @@ import {ROUTE_VESSELS} from "@app/app-routing.module"; export class VesselListComponent { @ViewChild("listComponent", {static: false}) listComponent!: ListComponent; + protected readonly VesselNewComponent = VesselNewComponent; protected listColDefinitions!: ListColDefinition[]; constructor( @@ -35,10 +37,27 @@ export class VesselListComponent { filterType: FilterBarComponent.FILTER_TYPE_TEXT, } as ListColDefinition, { - name: 'creationDate', - text: 'common.creation_date', + name: 'code', + text: 'common.code', + type: ListComponent.COLUMN_TYPE_TEXT, + field: 'code', + sortable: true, + filterType: FilterBarComponent.FILTER_TYPE_TEXT, + } as ListColDefinition, + { + name: 'shippingCompanyName', + text: 'model.shipping_company', + type: ListComponent.COLUMN_TYPE_TEXT, + subResource: 'company', + field: 'name', + sortable: true, + filterType: FilterBarComponent.FILTER_TYPE_TEXT, + } as ListColDefinition, + { + name: 'createdAt', + text: 'common.created_at', type: ListComponent.COLUMN_TYPE_DATE, - field: 'creationDate', + field: 'createdAt', sortable: true, filterType: FilterBarComponent.FILTER_TYPE_DATE, } as ListColDefinition, diff --git a/angular/src/app/_views/vessel/vessel-new/vessel-new.component.html b/angular/src/app/_views/vessel/vessel-new/vessel-new.component.html new file mode 100644 index 0000000..f42710a --- /dev/null +++ b/angular/src/app/_views/vessel/vessel-new/vessel-new.component.html @@ -0,0 +1,25 @@ +

{{ 'basic.new' | translate }} {{ 'model.vessel' | translate }}

+
+
+
+ + +
+
+ + + + +
+ +
+
\ No newline at end of file diff --git a/angular/src/app/_views/vessel/vessel-new/vessel-new.component.scss b/angular/src/app/_views/vessel/vessel-new/vessel-new.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/angular/src/app/_views/vessel/vessel-new/vessel-new.component.spec.ts b/angular/src/app/_views/vessel/vessel-new/vessel-new.component.spec.ts new file mode 100644 index 0000000..9c23063 --- /dev/null +++ b/angular/src/app/_views/vessel/vessel-new/vessel-new.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { VesselNewComponent } from './vessel-new.component'; + +describe('VesselNewComponent', () => { + let component: VesselNewComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [VesselNewComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(VesselNewComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/angular/src/app/_views/vessel/vessel-new/vessel-new.component.ts b/angular/src/app/_views/vessel/vessel-new/vessel-new.component.ts new file mode 100644 index 0000000..50bf063 --- /dev/null +++ b/angular/src/app/_views/vessel/vessel-new/vessel-new.component.ts @@ -0,0 +1,66 @@ +import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core'; +import {AbstractCreateDataComponent} from "@app/_interfaces/AbstractCreateDataComponent"; +import { + ShippingCompanyService, + VesselJsonld, + VesselService, +} from "@app/core/api/v1"; +import {ModalStatus} from "@app/_helpers/modal.states"; +import {FormGroup} from "@angular/forms"; +import {vesselForm} from "@app/_forms/apiForms"; +import {ListColDefinition} from "@app/_components/list/list-col-definition"; +import {SearchSelectComponent} from "@app/_components/search-select/search-select.component"; +import {ListGetDataFunctionType} from "@app/_components/list/list-get-data-function-type"; + +@Component({ + selector: 'app-vessel-new', + templateUrl: './vessel-new.component.html', + styleUrl: './vessel-new.component.scss' +}) +export class VesselNewComponent extends AbstractCreateDataComponent implements OnInit { + @Input() public override data!: VesselJsonld; + @Output() public override submit: EventEmitter = new EventEmitter(); + + protected readonly SearchSelectComponent = SearchSelectComponent; + override form: FormGroup = vesselForm; + protected shippingCompanyColDefinitions: ListColDefinition[]; + + constructor( + private vesselService: VesselService, + private shippingCompanyService: ShippingCompanyService, + ) { + super(); + this.shippingCompanyColDefinitions = SearchSelectComponent.getDefaultColDefShippingCompanies(); + } + + override ngOnInit() { + if (this.data) { + this.form.patchValue(this.data); + } + } + + getInitialData(): VesselJsonld { + return {} as VesselJsonld; + } + + getShippingCompanies: ListGetDataFunctionType = (index: number, pageSize: number, term?: string) => { + return this.shippingCompanyService.shippingCompaniesGetCollection( + index, + pageSize, + term + ); + } + + onSubmit() { + if (this.form.valid) { + this.vesselService.vesselsPost( + this.form.value as VesselJsonld + ).subscribe( + data => { + this.form.reset(); + this.submit.emit(ModalStatus.Submitted); + } + ); + } + } +} diff --git a/angular/src/app/_views/vessel/vessel.component.ts b/angular/src/app/_views/vessel/vessel.component.ts index aa19025..ac175d8 100644 --- a/angular/src/app/_views/vessel/vessel.component.ts +++ b/angular/src/app/_views/vessel/vessel.component.ts @@ -1,4 +1,4 @@ -import { Component } from '@angular/core'; +import {Component} from '@angular/core'; @Component({ selector: 'app-vessel', diff --git a/angular/src/app/_views/zone/zone-list/zone-list.component.ts b/angular/src/app/_views/zone/zone-list/zone-list.component.ts index c093e85..be0cc37 100644 --- a/angular/src/app/_views/zone/zone-list/zone-list.component.ts +++ b/angular/src/app/_views/zone/zone-list/zone-list.component.ts @@ -19,6 +19,7 @@ import {SearchSelectComponent} from "@app/_components/search-select/search-selec export class ZoneListComponent { @ViewChild("listComponent", {static: false}) listComponent!: ListComponent; + protected readonly ZoneNewComponent = ZoneNewComponent; protected listColDefinitions!: ListColDefinition[]; constructor( @@ -58,5 +59,5 @@ export class ZoneListComponent { const zone: ZoneJsonld = element as ZoneJsonld; this.router.navigate(['/' + ROUTE_ZONES, this.appHelperService.extractId(zone.id)]); } - protected readonly ZoneNewComponent = ZoneNewComponent; + } diff --git a/angular/src/app/app.module.ts b/angular/src/app/app.module.ts index 8d6d587..63e3fe9 100644 --- a/angular/src/app/app.module.ts +++ b/angular/src/app/app.module.ts @@ -55,6 +55,8 @@ import { VesselListComponent } from './_views/vessel/vessel-list/vessel-list.com import { ShippingCompanyListComponent } from './_views/shipping-company/shipping-company-list/shipping-company-list.component'; import { ZoneNewComponent } from './_views/zone/zone-new/zone-new.component'; import { LocationNewComponent } from './_views/location/location-new/location-new.component'; +import { ShippingCompanyNewComponent } from './_views/shipping-company/shipping-company-new/shipping-company-new.component'; +import { VesselNewComponent } from './_views/vessel/vessel-new/vessel-new.component'; registerLocaleData(localeDe, 'de-DE'); @@ -132,6 +134,8 @@ export function HttpLoaderFactory(http: HttpClient) { ShippingCompanyListComponent, ZoneNewComponent, LocationNewComponent, + ShippingCompanyNewComponent, + VesselNewComponent, ], providers: [ {provide: HTTP_INTERCEPTORS, useClass: JwtInterceptor, multi: true}, diff --git a/angular/src/app/core/api/v1/.openapi-generator/FILES b/angular/src/app/core/api/v1/.openapi-generator/FILES index 5aee2ff..49ad28a 100644 --- a/angular/src/app/core/api/v1/.openapi-generator/FILES +++ b/angular/src/app/core/api/v1/.openapi-generator/FILES @@ -1,5 +1,4 @@ .gitignore -.openapi-generator-ignore README.md api.module.ts api/api.ts diff --git a/angular/src/app/core/api/v1/model/location.ts b/angular/src/app/core/api/v1/model/location.ts index 96d26b4..60a8fc0 100644 --- a/angular/src/app/core/api/v1/model/location.ts +++ b/angular/src/app/core/api/v1/model/location.ts @@ -9,15 +9,16 @@ * https://openapi-generator.tech * Do not edit the class manually. */ +import { Zone } from './zone'; /** * */ export interface Location { - readonly zone?: string; + zone?: Zone; name: string; - readonly zoneName?: string; + code: string; readonly createdAt?: string | null; } diff --git a/angular/src/app/core/api/v1/model/locationJsonld.ts b/angular/src/app/core/api/v1/model/locationJsonld.ts index 44b447e..097b3ca 100644 --- a/angular/src/app/core/api/v1/model/locationJsonld.ts +++ b/angular/src/app/core/api/v1/model/locationJsonld.ts @@ -20,9 +20,9 @@ export interface LocationJsonld { context?: LocationJsonldContext; readonly id?: string; readonly type?: string; - readonly zone?: ZoneJsonld; + zone?: ZoneJsonld; name: string; - readonly zoneName?: string; + code: string; readonly createdAt?: string | null; } diff --git a/angular/src/app/core/api/v1/model/shippingCompany.ts b/angular/src/app/core/api/v1/model/shippingCompany.ts index 00f1a77..b67ae55 100644 --- a/angular/src/app/core/api/v1/model/shippingCompany.ts +++ b/angular/src/app/core/api/v1/model/shippingCompany.ts @@ -16,6 +16,7 @@ */ export interface ShippingCompany { name: string; + code: string; readonly createdAt?: string | null; } diff --git a/angular/src/app/core/api/v1/model/shippingCompanyJsonld.ts b/angular/src/app/core/api/v1/model/shippingCompanyJsonld.ts index e5fc411..cdb9b4d 100644 --- a/angular/src/app/core/api/v1/model/shippingCompanyJsonld.ts +++ b/angular/src/app/core/api/v1/model/shippingCompanyJsonld.ts @@ -20,6 +20,7 @@ export interface ShippingCompanyJsonld { readonly id?: string; readonly type?: string; name: string; + code: string; readonly createdAt?: string | null; } diff --git a/angular/src/app/core/api/v1/model/vessel.ts b/angular/src/app/core/api/v1/model/vessel.ts index 2e23b90..6e51eeb 100644 --- a/angular/src/app/core/api/v1/model/vessel.ts +++ b/angular/src/app/core/api/v1/model/vessel.ts @@ -9,6 +9,7 @@ * https://openapi-generator.tech * Do not edit the class manually. */ +import { ShippingCompany } from './shippingCompany'; /** @@ -16,7 +17,8 @@ */ export interface Vessel { name: string; - readonly company?: string; + code: string; + company?: ShippingCompany; readonly createdAt?: string | null; } diff --git a/angular/src/app/core/api/v1/model/vesselJsonld.ts b/angular/src/app/core/api/v1/model/vesselJsonld.ts index 7b4afec..2e795b8 100644 --- a/angular/src/app/core/api/v1/model/vesselJsonld.ts +++ b/angular/src/app/core/api/v1/model/vesselJsonld.ts @@ -21,7 +21,8 @@ export interface VesselJsonld { readonly id?: string; readonly type?: string; name: string; - readonly company?: ShippingCompanyJsonld; + code: string; + company?: ShippingCompanyJsonld; readonly createdAt?: string | null; } diff --git a/angular/src/assets/i18n/en.json b/angular/src/assets/i18n/en.json index 78cf638..4254fa6 100644 --- a/angular/src/assets/i18n/en.json +++ b/angular/src/assets/i18n/en.json @@ -12,7 +12,8 @@ "common": { "name": "Name", - "created_at": "Creation date" + "code": "Code", + "created_at": "Created at" }, "base_data": { @@ -24,7 +25,9 @@ }, "model": { "location": "Location", - "zone": "Zone" + "zone": "Zone", + "vessel": "Vessel", + "shipping_company": "Shipping Company" }, "location": diff --git a/httpdocs/.ddev/config.yaml b/httpdocs/.ddev/config.yaml index f145332..c5fd28a 100644 --- a/httpdocs/.ddev/config.yaml +++ b/httpdocs/.ddev/config.yaml @@ -1,7 +1,7 @@ name: imaq type: php docroot: public -php_version: "8.2" +php_version: "8.3" webserver_type: nginx-fpm xdebug_enabled: false additional_hostnames: [] diff --git a/httpdocs/migrations/Version20241206100317.php b/httpdocs/migrations/Version20241206100317.php new file mode 100644 index 0000000..06be003 --- /dev/null +++ b/httpdocs/migrations/Version20241206100317.php @@ -0,0 +1,31 @@ +addSql('ALTER TABLE location ADD code VARCHAR(10) NOT NULL'); + } + + public function down(Schema $schema): void + { + // this down() migration is auto-generated, please modify it to your needs + $this->addSql('ALTER TABLE location DROP code'); + } +} diff --git a/httpdocs/migrations/Version20241206103710.php b/httpdocs/migrations/Version20241206103710.php new file mode 100644 index 0000000..d7096a6 --- /dev/null +++ b/httpdocs/migrations/Version20241206103710.php @@ -0,0 +1,37 @@ +addSql('ALTER TABLE shipping_company ADD code VARCHAR(20) NOT NULL'); + $this->addSql('CREATE UNIQUE INDEX UNIQ_A9F70F8B77153098 ON shipping_company (code)'); + $this->addSql('ALTER TABLE vessel ADD code VARCHAR(20) NOT NULL'); + $this->addSql('CREATE UNIQUE INDEX UNIQ_4ED8DCA877153098 ON vessel (code)'); + } + + public function down(Schema $schema): void + { + // this down() migration is auto-generated, please modify it to your needs + $this->addSql('DROP INDEX UNIQ_4ED8DCA877153098 ON vessel'); + $this->addSql('ALTER TABLE vessel DROP code'); + $this->addSql('DROP INDEX UNIQ_A9F70F8B77153098 ON shipping_company'); + $this->addSql('ALTER TABLE shipping_company DROP code'); + } +} diff --git a/httpdocs/src/ApiResource/LocationApi.php b/httpdocs/src/ApiResource/LocationApi.php index 307baeb..1a01914 100644 --- a/httpdocs/src/ApiResource/LocationApi.php +++ b/httpdocs/src/ApiResource/LocationApi.php @@ -54,9 +54,9 @@ class LocationApi * @var ZoneApi */ #[ApiProperty( - writable: false, + writable: true, readableLink: true, - writableLink: false, + writableLink: true, builtinTypes: [ new Type( 'object', @@ -69,8 +69,8 @@ class LocationApi #[Assert\NotBlank] public string $name; - #[ApiProperty(writable: false)] - public string $zoneName; + #[Assert\NotBlank] + public string $code; #[ApiProperty(writable: false)] public ?\DateTimeImmutable $createdAt = null; diff --git a/httpdocs/src/ApiResource/ShippingCompanyApi.php b/httpdocs/src/ApiResource/ShippingCompanyApi.php index 7786404..e3cf512 100644 --- a/httpdocs/src/ApiResource/ShippingCompanyApi.php +++ b/httpdocs/src/ApiResource/ShippingCompanyApi.php @@ -52,6 +52,9 @@ class ShippingCompanyApi #[Assert\NotBlank] public string $name; + #[Assert\NotBlank] + public string $code; + #[ApiProperty(writable: false)] public ?\DateTimeImmutable $createdAt = null; } \ No newline at end of file diff --git a/httpdocs/src/ApiResource/VesselApi.php b/httpdocs/src/ApiResource/VesselApi.php index 3916cac..426e68e 100644 --- a/httpdocs/src/ApiResource/VesselApi.php +++ b/httpdocs/src/ApiResource/VesselApi.php @@ -53,13 +53,16 @@ class VesselApi #[Assert\NotBlank] public string $name; + #[Assert\NotBlank] + public string $code; + /** * @var ShippingCompanyApi */ #[ApiProperty( - writable: false, + writable: true, readableLink: true, - writableLink: false, + writableLink: true, builtinTypes: [ new Type( 'object', diff --git a/httpdocs/src/Command/Import/CreateShippingTestDataCommand.php b/httpdocs/src/Command/Import/CreateShippingTestDataCommand.php new file mode 100644 index 0000000..574b0aa --- /dev/null +++ b/httpdocs/src/Command/Import/CreateShippingTestDataCommand.php @@ -0,0 +1,111 @@ + 'Arctic Shipping Lines', 'code' => 'ARCTIC-SL'], + ['name' => 'Greenland Marine Transport', 'code' => 'GRE-MAR-TRANS'], + ['name' => 'Nordic Sea Carriers', 'code' => 'NORDIC-SEA'], + ['name' => 'Polar Route Navigation', 'code' => 'POLAR-ROUTE'], + ['name' => 'Royal Arctic Line', 'code' => 'RAL'], + ['name' => 'North Atlantic Shipping', 'code' => 'NORTH-ATL'], + ['name' => 'Viking Ocean Transport', 'code' => 'VIKING-OT'], + ['name' => 'Ice Route Maritime', 'code' => 'ICE-ROUTE'], + ['name' => 'Aurora Vessel Operations', 'code' => 'AURORA-VO'], + ['name' => 'Baltic Sea Logistics', 'code' => 'BALTIC-LOG'] + ]; + + private array $vesselNames = [ + 'Nordic Explorer', + 'Arctic Princess', + 'Polar Star', + 'Northern Light', + 'Ice Breaker', + 'Aurora', + 'Viking Spirit', + 'Ocean Pioneer', + 'Greenland Express', + 'Baltic Voyager' + ]; + + public function __construct( + private readonly EntityManagerInterface $entityManager + ) { + parent::__construct(); + } + + protected function execute(InputInterface $input, OutputInterface $output): int + { + $io = new SymfonyStyle($input, $output); + + try { + // Shuffle company data to randomize selection + shuffle($this->companyData); + + // Select 7-10 companies randomly + $numberOfCompanies = random_int(7, 10); + $selectedCompanies = array_slice($this->companyData, 0, $numberOfCompanies); + + foreach ($selectedCompanies as $companyInfo) { + $company = new ShippingCompany($companyInfo['name'], $companyInfo['code']); + $this->entityManager->persist($company); + + // Create 1-3 vessels for each company + $numberOfVessels = random_int(1, 3); + + // Generate unique vessel names and codes + for ($i = 0; $i < $numberOfVessels; $i++) { + $vesselName = $this->vesselNames[array_rand($this->vesselNames)]; + // Create unique vessel code using company code and counter + $vesselCode = sprintf( + '%s-V%03d', + $companyInfo['code'], + random_int(1, 999) + ); + + $vessel = new Vessel($company, $vesselName, $vesselCode); + $this->entityManager->persist($vessel); + $io->writeln(sprintf( + 'Created vessel "%s" (%s) for company "%s" (%s)', + $vesselName, + $vesselCode, + $companyInfo['name'], + $companyInfo['code'] + )); + } + + $io->writeln(sprintf( + 'Created company "%s" (%s) with %d vessels', + $companyInfo['name'], + $companyInfo['code'], + $numberOfVessels + )); + } + + $this->entityManager->flush(); + $io->success(sprintf('Created %d companies with vessels', $numberOfCompanies)); + + return Command::SUCCESS; + } catch (\Exception $e) { + $io->error('Error creating test data: ' . $e->getMessage()); + return Command::FAILURE; + } + } +} \ No newline at end of file diff --git a/httpdocs/src/Command/Import/ImportZonesLocationsCommand.php b/httpdocs/src/Command/Import/ImportZonesLocationsCommand.php new file mode 100644 index 0000000..34c5f7d --- /dev/null +++ b/httpdocs/src/Command/Import/ImportZonesLocationsCommand.php @@ -0,0 +1,117 @@ + 'Area 4', + 5 => 'Area 5', + 6 => 'Area 6', + 7 => 'Area 7', + ]; + + // Location data + $locationData = [ + 4 => [ + ['code' => 'TAS', 'name' => 'Tasiilaq'], + ['code' => 'UMI', 'name' => 'Umivik'], + ['code' => 'SKJ', 'name' => 'Skjoldungen'], + ], + 5 => [ + ['code' => 'PCS', 'name' => 'Prins Chr. Sund'], + ['code' => 'NAN', 'name' => 'Nanortalik / Tasermiut fjorden'], + ['code' => 'QAQ', 'name' => 'Qaqortoq / Igaliku fjorden'], + ['code' => 'NRQ', 'name' => 'Narsaq/Skovfjord/Bredefjord'], + ['code' => 'NRQ', 'name' => 'Narsaq - Havnelodsning'], + ['code' => 'NSSQ', 'name' => 'Narsarssuaq/Skovfjord/Bredefjord'], + ['code' => 'IVI', 'name' => 'Arsuk/Ivigtut/Grønnedal'], + ['code' => 'PAA', 'name' => 'Paamiut/Kvanefjord'], + ['code' => 'NUU', 'name' => 'Nuuk/Nuuk Fjorden'], + ['code' => 'NUU', 'name' => 'Nuuk - Havnelodsning'], + ], + 6 => [ + ['code' => 'MAN', 'name' => 'Maniitsoq/Hamborgsund'], + ['code' => 'EVI', 'name' => 'Evighedsfjorden'], + ['code' => 'SFJ', 'name' => 'Kangerlussuaq'], + ['code' => 'SIS', 'name' => 'Sisimiut'], + ['code' => 'SIS', 'name' => 'Sisimiut - Havnelodsning'], + ], + 7 => [ + ['code' => 'AAS', 'name' => 'Aasiaat'], + ['code' => 'QEQ', 'name' => 'Qeqertarsuaq'], + ['code' => 'QAS', 'name' => 'Qasigiannguit'], + ['code' => 'ILU', 'name' => 'Ilulissat/Ilimanaq'], + ['code' => 'QER', 'name' => 'Qeqertaq'], + ['code' => 'SQQ', 'name' => 'Sarqaq'], + ['code' => 'VAI', 'name' => 'Vaigat'], + ['code' => 'UUM', 'name' => 'Uummannaq'], + ], + ]; + + try { + // Import zones + $zones = []; + foreach ($zoneData as $zoneId => $zoneName) { + $zone = new Zone($zoneName); + $this->entityManager->persist($zone); + $zones[$zoneId] = $zone; + $io->writeln(sprintf('Created zone "%s"', $zoneName)); + } + + // Import locations + foreach ($locationData as $zoneId => $locations) { + $zone = $zones[$zoneId]; + foreach ($locations as $locationInfo) { + $location = new Location( + $zone, + $locationInfo['name'], + $locationInfo['code'] + ); + + $this->entityManager->persist($location); + $io->writeln(sprintf( + 'Created location "%s" (%s) in zone "%s"', + $locationInfo['name'], + $locationInfo['code'], + $zone->getName() + )); + } + } + + $this->entityManager->flush(); + $io->success('Import completed successfully'); + + return Command::SUCCESS; + } catch (\Exception $e) { + $io->error('Import error: ' . $e->getMessage()); + return Command::FAILURE; + } + } +} \ No newline at end of file diff --git a/httpdocs/src/Entity/Location.php b/httpdocs/src/Entity/Location.php index 393ce49..095c3b0 100644 --- a/httpdocs/src/Entity/Location.php +++ b/httpdocs/src/Entity/Location.php @@ -22,6 +22,9 @@ class Location #[ORM\JoinColumn(nullable: false)] private Zone $zone; + #[ORM\Column(length: 10)] + private string $code; + #[ORM\Column(length: 255)] private string $name; @@ -40,10 +43,11 @@ class Location #[ORM\OneToMany(targetEntity: UserTripWorkLog::class, mappedBy: 'endLocation')] private Collection $endWorkLogs; - public function __construct(Zone $zone, string $name) + public function __construct(Zone $zone, string $name, string $code) { $this->zone = $zone; $this->name = $name; + $this->code = $code; $this->createdAt = new DateTimeImmutable(); $this->tripLocations = new ArrayCollection(); $this->userTripLocations = new ArrayCollection(); @@ -78,6 +82,16 @@ class Location return $this; } + public function getCode(): string + { + return $this->code; + } + + public function setCode(string $code): void + { + $this->code = $code; + } + public function getCreatedAt(): DateTimeImmutable { return $this->createdAt; diff --git a/httpdocs/src/Entity/ShippingCompany.php b/httpdocs/src/Entity/ShippingCompany.php index 2a8e5b2..6fe09c4 100644 --- a/httpdocs/src/Entity/ShippingCompany.php +++ b/httpdocs/src/Entity/ShippingCompany.php @@ -21,15 +21,19 @@ class ShippingCompany #[ORM\Column(length: 255)] private string $name; + #[ORM\Column(length: 20, unique: true)] + private string $code; + #[ORM\Column] private DateTimeImmutable $createdAt; #[ORM\OneToMany(targetEntity: Vessel::class, mappedBy: 'company')] private Collection $vessels; - public function __construct(string $name) + public function __construct(string $name, string $code) { $this->name = $name; + $this->code = $code; $this->createdAt = new DateTimeImmutable(); $this->vessels = new ArrayCollection(); } @@ -50,6 +54,16 @@ class ShippingCompany return $this; } + public function getCode(): string + { + return $this->code; + } + + public function setCode(string $code): void + { + $this->code = $code; + } + public function getCreatedAt(): DateTimeImmutable { return $this->createdAt; diff --git a/httpdocs/src/Entity/Vessel.php b/httpdocs/src/Entity/Vessel.php index b11fbd0..aa27acb 100644 --- a/httpdocs/src/Entity/Vessel.php +++ b/httpdocs/src/Entity/Vessel.php @@ -25,16 +25,20 @@ class Vessel #[ORM\Column(length: 255)] private string $name; + #[ORM\Column(length: 20, unique: true)] + private string $code; + #[ORM\Column] private DateTimeImmutable $createdAt; #[ORM\OneToMany(targetEntity: Trip::class, mappedBy: 'vessel')] private Collection $trips; - public function __construct(ShippingCompany $company, string $name) + public function __construct(ShippingCompany $company, string $name, string $code) { $this->company = $company; $this->name = $name; + $this->code = $code; $this->createdAt = new DateTimeImmutable(); $this->trips = new ArrayCollection(); } @@ -66,6 +70,16 @@ class Vessel return $this; } + public function getCode(): string + { + return $this->code; + } + + public function setCode(string $code): void + { + $this->code = $code; + } + public function getCreatedAt(): DateTimeImmutable { return $this->createdAt; diff --git a/httpdocs/src/Mapper/LocationApiToEntityMapper.php b/httpdocs/src/Mapper/LocationApiToEntityMapper.php index 1e33181..4c99d5e 100644 --- a/httpdocs/src/Mapper/LocationApiToEntityMapper.php +++ b/httpdocs/src/Mapper/LocationApiToEntityMapper.php @@ -33,7 +33,7 @@ class LocationApiToEntityMapper implements MapperInterface } // For new locations, we need the zone - if (!$dto->zone?->id) { + if (!$dto->zone) { throw new \Exception('Zone is required for new locations'); } @@ -42,7 +42,7 @@ class LocationApiToEntityMapper implements MapperInterface throw new \Exception('Zone not found'); } - return new Location($zone, $dto->name); + return new Location($zone, $dto->name, $dto->code); } public function populate(object $from, object $to, array $context): object @@ -53,6 +53,15 @@ class LocationApiToEntityMapper implements MapperInterface assert($entity instanceof Location); $entity->setName($dto->name); + $entity->setCode($dto->code); + + if ($dto->zone) { + $zone = $this->zoneRepository->find($dto->zone->id); + if (!$zone) { + throw new \Exception('Zone not found'); + } + $entity->setZone($zone); + } return $entity; } diff --git a/httpdocs/src/Mapper/LocationEntityToApiMapper.php b/httpdocs/src/Mapper/LocationEntityToApiMapper.php index 71f080a..a5a22e2 100644 --- a/httpdocs/src/Mapper/LocationEntityToApiMapper.php +++ b/httpdocs/src/Mapper/LocationEntityToApiMapper.php @@ -36,14 +36,13 @@ class LocationEntityToApiMapper implements MapperInterface assert($dto instanceof LocationApi); $dto->name = $entity->getName(); + $dto->code = $entity->getCode(); $dto->createdAt = $entity->getCreatedAt(); $dto->zone = $this->microMapper->map($entity->getZone(), ZoneApi::class, [ MicroMapperInterface::MAX_DEPTH => 1, ]); - $dto->zoneName = $dto->zone->name; - return $dto; } } \ No newline at end of file diff --git a/httpdocs/src/Mapper/ShippingCompanyApiToEntityMapper.php b/httpdocs/src/Mapper/ShippingCompanyApiToEntityMapper.php index a08f6f6..1c8ba75 100644 --- a/httpdocs/src/Mapper/ShippingCompanyApiToEntityMapper.php +++ b/httpdocs/src/Mapper/ShippingCompanyApiToEntityMapper.php @@ -37,6 +37,7 @@ class ShippingCompanyApiToEntityMapper implements MapperInterface assert($entity instanceof ShippingCompany); $entity->setName($dto->name); + $entity->setCode($dto->code); return $entity; } diff --git a/httpdocs/src/Mapper/ShippingCompanyEntityToApiMapper.php b/httpdocs/src/Mapper/ShippingCompanyEntityToApiMapper.php index 57c5fa9..f80ec3c 100644 --- a/httpdocs/src/Mapper/ShippingCompanyEntityToApiMapper.php +++ b/httpdocs/src/Mapper/ShippingCompanyEntityToApiMapper.php @@ -35,6 +35,7 @@ class ShippingCompanyEntityToApiMapper implements MapperInterface assert($dto instanceof ShippingCompanyApi); $dto->name = $entity->getName(); + $dto->code = $entity->getCode(); $dto->createdAt = $entity->getCreatedAt(); return $dto; diff --git a/httpdocs/src/Mapper/VesselApiToEntityMapper.php b/httpdocs/src/Mapper/VesselApiToEntityMapper.php index 772b50b..431b097 100644 --- a/httpdocs/src/Mapper/VesselApiToEntityMapper.php +++ b/httpdocs/src/Mapper/VesselApiToEntityMapper.php @@ -42,7 +42,7 @@ class VesselApiToEntityMapper implements MapperInterface throw new \Exception('ShippingCompany not found'); } - return new Vessel($company, $dto->name); + return new Vessel($company, $dto->name, $dto->code); } public function populate(object $from, object $to, array $context): object @@ -53,6 +53,8 @@ class VesselApiToEntityMapper implements MapperInterface assert($entity instanceof Vessel); $entity->setName($dto->name); + $entity->setCode($dto->code); + $dto->createdAt = $entity->getCreatedAt(); return $entity; } diff --git a/httpdocs/src/Mapper/VesselEntityToApiMapper.php b/httpdocs/src/Mapper/VesselEntityToApiMapper.php index 66f490f..3f45e35 100644 --- a/httpdocs/src/Mapper/VesselEntityToApiMapper.php +++ b/httpdocs/src/Mapper/VesselEntityToApiMapper.php @@ -36,6 +36,7 @@ class VesselEntityToApiMapper implements MapperInterface assert($dto instanceof VesselApi); $dto->name = $entity->getName(); + $dto->code = $entity->getCode(); $dto->createdAt = $entity->getCreatedAt(); $dto->company = $this->microMapper->map($entity->getCompany(), ShippingCompanyApi::class, [