openapi: 3.0.0
info:
    title: Automated Claims API
    version: 1.0.0
paths:
    /claims/{barcode}:
        get:
            summary: Get claims for a barcode and system
            parameters:
                - name: barcode
                  in: path
                  description: Barcode value
                  required: true
                  schema:
                      type: string
                - name: system
                  in: query
                  description: Name of barcode standard
                  required: false
                  schema:
                      type: string
                      default: UPC
            responses:
                "200":
                    description: Claims found
                    content:
                        application/json:
                            type: array
                            items:
                                $ref: "#/components/schemas/Claim"
                "204":
                    description: No claims found for product
                "404":
                    description: Product not found
        delete:
            summary: Delete claims by user ID
            parameters:
                - name: id
                  in: path
                  description: ID of the claim to delete
                  required: true
                  schema:
                      type: long
            responses:
                "200":  
                    description: Successful deletion
                    content: 
                        application/json:
                            schema:
                                $ref: "#/components/schemas/Claim"
                "404":
                    description: Claim not found
        post:
            summary: Make a new user claim
            parameters:
                - name: barcode
                  in: path
                  description: ID of the automated claim
                  required: true
                  schema:
                      type: integer
                - name: claim
                  in: body
                  description: Claim information
                  required: true
                  schema:
                      $ref: "#/components/schemas/AutomatedClaim"
            responses:
                "200":
                    description: Successfully added
                    content:
                        schema:
                            $ref: "#/components/schemas/AutomatedClaim"
                "400":
                    description: Missing information
components:
    schemas:
        Claim:
            type: object
            properties:
                id:
                    type: long
                product_id:
                    type: long
                evidence_type: # only in user claims
                    type: string
                    enum: [image, link, text]
                worker: # only in auto claims
                    type: string
                    enum: [barnivore] # TODO add other workers
                evidence:
                    type: object
                category: # single category claims
                    type: string
                    enum:
                    - ContainsMeat
                    - ContainsFish
                    - ContainsEggs
                    - ContainsMilk
                    - ContainsHoney
                    - ContainsWax
                    - ContainsFur
                    - ContainsLeather
                    - ContainsAnimalFibers
                    - ContainsWool
                    - ContainsFeathers
                    - AnimalTesting
                    - MonkeySlavery
                polarity: # true means it does do the thing
                    type: boolean
                created_at:
                    type: string
                    format: date-time
                created_by:
                    type: string