openapi: 3.0.0 info: version: v0.1 title: DFC INRAE Endpoint contact: { "name": "DFC General Contact" , "url": "https://www.datafoodconsortium.org/" , "email": "hello@datafoodconsortium.org" } description: >- Endpoint to expose anonymous product sales data for research purposes. Must be authenticated, must be anonymized. Served at Order Line leve for granularity. components: securitySchemes: oidc_token: type: openIdConnect openIdConnectUrl: https://login.lescommuns.org/auth/realm/datafoodconsortium security: - oidc_token: [] paths: "/api/dfc/Persons/{id}/AffilateSalesData": get: summary: Returns anonymized order line data description: Show anonymized sales data, for a given date range, for all Enterprises that have authorized this Person to collect their data. parameters: - name: id in: path required: true schema: type: string - name: page description: The page number of items to start with (see limit) in: query required: true schema: type: integer minimum: 1 default: 1 example: 1 - name: limit description: The number of items to return in: query required: true schema: type: integer format: int32 minimum: 1 maximum: 225 default: 25 example: 25 - name: startDate description: The start date from which data is requested in: query required: true schema: type: string default: "2024-01-01" example: "2024-01-01" - name: endDate description: The end date to which data is requested in: query required: true schema: type: string default: "2024-12-31" example: "2024-12-31" tags: - INRAE responses: '200': description: successful content: application/json: examples: test_example: value: "@context": https://www.datafoodconsortium.org "@graph": [ { "@id": http://test.host/api/dfc/Persons/1001/AffilateSalesData, "@type": dfc-b:Person, dfc-b:affiliates: http://test.host/api/dfc/Enterprises/10000 }, { "@id": http://test.host/api/dfc/Enterprises/10000 , # Producer Enterprise "@type": dfc-Enterprise, dfc-b:hasAddress: http://test.host/api/dfc/Addresses/Car-20170 , dfc-b:supplies: https://test.host/api/dfc/Enterprises/10000/SuppliedProducts/10001 , dfc-b-supplies: https://test.host/api/dfc/Enterprises/10000/SuppliedProducts/10002 }, { "@id": http://test.host/api/dfc/Enterprises/10023 , # 2nd Producer Enterprise "@type": dfc-Enterprise, dfc-b:hasAddress: http://test.host/api/dfc/Addresses/Car-20170 , dfc-b:supplies: https://test.host/api/dfc/Enterprises/10023/SuppliedProducts/10231 , dfc-b-supplies: https://test.host/api/dfc/Enterprises/10023/SuppliedProducts/10232 }, { "@id": http://test.host/api/dfc/Enterprises/10050 , # Distributor Enterprise "@type": dfc-Enterprise, dfc-b:hasAddress: http://test.host/api/dfc/Addresses/Car-20173 , dfc-b:coordinates: https://test.host/api/dfc/Enterprises/10050/SaleSessions/10002 , }, { "@id": http://test.host/api/dfc/Addresses/Car-20170 , "@type": dfc-b:Address , dfc-b:postcode: 20170 , # Producer Postcode dfc-b:city: Carbini }, { "@id": http://test.host/api/dfc/Addresses/Car-20173 , "@type": dfc-b:Address , dfc-b:postcode: 20173 , # Shop/Distributor Postcode dfc-b:city: Carbini }, { "@id": https://test.host/api/dfc/Enterprises/10000/SuppliedProducts/10001 , "@type": dfc-b:SuppliedProduct , dfc-b:Name: Basil Pesto 250g Jar , dfc-b:hasType: dfc-pt:processed-vegetable , # Not required dfc-b:hasQuantity: { # the quantity related "@type": dfc-b:QuantitativeValue , # to the Supplied dfc-b:hasUnit: dfc-m:Gram , # Product (in this dfc-b:value: 250.0 # case 250g) }, dfc-b:suppliedBy: http://test.host/api/dfc/Enterprises/10000 , dfc-b:concernedBy: https://test.host/api/dfc/Enterprises/10000/Orders/10001/OrderLines/10001-01 }, { "@id": https://test.host/api/dfc/Enterprises/10000/SuppliedProducts/10002 , "@type": dfc-b:SuppliedProduct , dfc-b:Name: Tomatoes - Cour de Beouf , dfc-b:hasType: dfc-pt:Tomatoes , # Not required dfc-b:hasQuantity: { # the quantity related "@type": dfc-b:QuantitativeValue , # to the Supplied dfc-b:hasUnit: dfc-m:Gram , # Product (in this dfc-b:value: 500.0 # case 250g) }, dfc-b:suppliedBy: http://test.host/api/dfc/Enterprises/10000 , dfc-b:concernedBy: https://test.host/api/dfc/Enterprises/10000/Orders/10001/OrderLines/10001-02 }, { "@id": https://test.host/api/dfc/Enterprises/10000/Orders/10001/OrderLines/10001-01 , "@type": dfc-b:OrderLine , dfc-b:concerns: http://test.host/api/dfc/Enterprises/10000/SuppliedProducts/10001 , dfc-b:hasQuantity: { "@type": dfc-b:QuantitativeValue , # the quantity related to dfc-b:hasUnit: jar , # the actual Sale (in dfc-b:hasValue: 3 # this case 3 jars, at 250g each) }, dfc-b:Price: { "@type": dfc-b:QuantitativeValue , # the price charged for the item dfc-b:hasUnit: EUR , # before any discount dfc-b:value: 19.95 , dfc-b:VATrate: 0.0 }, dfc-b:partOf: https://test.host/api/dfc/Enterprises/10000/Orders/10001 }, { "@id": https://test.host/api/dfc/Enterprises/10000/Orders/10001/OrderLines/10001-02 , "@type": dfc-b:OrderLine , dfc-b:concerns: http://test.host/api/dfc/Enterprises/10000/SuppliedProducts/10002 , dfc-b:hasQuantity: { "@type": dfc-b:QuantitativeValue , # the quantity related to dfc-b:hasUnit: Bag , # the actual Sale (in dfc-b:hasValue: 2 # this case 3 jars, at 250g each) }, dfc-b:Price: { "@type": dfc-b:QuantitativeValue , # the price charged for the item dfc-b:hasUnit: EUR , # before any discount dfc-b:value: 12.50 , dfc-b:VATrate: 0.0 }, dfc-b:partOf: https://test.host/api/dfc/Enterprises/10000/Orders/10001 }, { "@id": https://test.host/api/dfc/Enterprises/10000/Orders/10001 , "@type": dfc-b:Order , dfc-b:date: "2024-06-25" , # Order Date dfc-b:soldBy: https://test.host/api/dfc/Enterprises/10050 , dfc-b:hasPart: https://test.host/api/dfc/Enterprises/10000/Orders/10001/OrderLines/10001-01 , dfc-b:hasPart: https://test.host/api/dfc/Enterprises/10000/Orders/10001/OrderLines/10001-02 } ] '404': description: not found servers: # Added by API Auto Mocking Plugin - description: SwaggerHub API Auto Mocking url: https://virtserver.swaggerhub.com/RAGGEDSTAFF23/DFC-INRAE-Endpoint/v0.1