Files
openfoodnetwork/swagger.yaml
Kevin Christianson 2dfcedad56 Add swagger.yaml
2019-08-18 18:26:44 +01:00

1234 lines
32 KiB
YAML

openapi: 3.0.1
info:
title: The Open Food Network
description: Some endpoints are public and require no authorization; others require authorization. Talk to us to get your credentials set up. Check out our repo! https://github.com/openfoodfoundation/openfoodnetwork
version: '0.1'
servers:
- url: 'https://staging.katuma.org/api'
tags:
- name: products
description: Product endpoints
- name: product variants
description: Product variant endpoints
- name: zones
description: Zone endpoints
- name: states
description: State endpoints
- name: taxonomies
description: Taxonomy endpoints
- name: taxons
description: Taxon endpoints
- name: countries
description: Country endpoints
- name: cookies_consent
description: Cookies_Consent endpoints
- name: orders
description: Order endpoints
paths:
/products:
get:
description: Gets all Products.
tags:
- products
responses:
'200':
description: successful operation
content:
application/json:
schema:
type: object
properties:
count:
type: integer
total_count:
type: integer
pages:
type: integer
products:
type: array
items:
$ref: '#/components/schemas/Product'
current_page:
type: integer
post:
description: Posts a new Product.
tags:
- products
parameters:
- in: path
name: product_object
schema:
type: object
properties:
product:
$ref: '#/components/schemas/Product'
required: true
description: JSON object representing the Product to be posted. Only attributes listed in the Product required_attributes object are required (obtainable via GET /products/new).
responses:
'201':
description: successful post
content:
application/json:
schema:
$ref: '#/components/schemas/Product'
/products/new:
get:
description: Gets an object consisting of an array of all Product attributes and an array of required attributes to create a new Product object.
tags:
- products
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/New'
/products/{product_id}:
get:
description: Gets a Product by ID.
tags:
- products
parameters:
- in: path
name: product_id
schema:
type: integer
required: true
description: Numeric ID of the Product.
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/Product'
put:
description: Updates the Product with the given ID.
tags:
- products
parameters:
- in: path
name: product_id
schema:
type: integer
required: true
description: Numeric ID of the Product.
- in: path
name: product_object
schema:
type: object
properties:
product:
$ref: '#/components/schemas/Product'
required: true
description: JSON object representing the Product attributes to be overwritten.
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/Product'
delete:
description: Deletes the Product with the given ID.
tags:
- products
parameters:
- in: path
name: product_id
schema:
type: integer
required: true
description: Numeric ID of the Product.
responses:
'204':
description: successful deletion
/products/{product_id}/variants:
get:
description: Gets all Variants of the given Product.
tags:
- product variants
parameters:
- in: path
name: product_id
schema:
type: integer
required: true
description: Numeric ID of the Product.
responses:
'200':
description: successful operation
content:
application/json:
schema:
type: object
properties:
count:
type: integer
total_count:
type: integer
variants:
type: array
items:
$ref: '#/components/schemas/Variant'
pages:
type: integer
current_page:
type: integer
post:
description: Posts a new Product Variant.
tags:
- product variants
parameters:
- in: path
name: product_id
schema:
type: integer
required: true
description: Numeric ID of the Product.
- in: path
name: variant_object
schema:
type: object
properties:
variant:
$ref: '#/components/schemas/Variant'
required: true
description: JSON object representing the Variant to be posted. Only attributes listed in the Variant required_attributes object are required (obtainable via GET /products/{product_id}/variants/new).
responses:
'201':
description: successful post
content:
application/json:
schema:
$ref: '#/components/schemas/Variant'
/products/{product_id}/variants/new:
get:
description: Gets an object consisting of an array of all Variant attributes and an array of required attributes to create a new Variant object.
tags:
- product variants
parameters:
- in: path
name: product_id
schema:
type: integer
required: true
description: Numeric ID of the Product.
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/New'
/products/{product_id}/variants/{variant_id}:
get:
description: Gets a Variant by ID.
tags:
- product variants
parameters:
- in: path
name: product_id
schema:
type: integer
required: true
description: Numeric ID of the Product.
- in: path
name: variant_id
schema:
type: integer
required: true
description: Numeric ID of the Variant.
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/Variant'
put:
description: Updates the Variant with the given ID.
tags:
- product variants
parameters:
- in: path
name: product_id
schema:
type: integer
required: true
description: Numeric ID of the Product.
- in: path
name: variant_id
schema:
type: integer
required: true
description: Numeric ID of the Variant.
- in: path
name: variant_object
schema:
type: object
properties:
variant:
$ref: '#/components/schemas/Variant'
required: true
description: JSON object representing the Variant attributes to be overwritten.
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/Variant'
delete:
description: Deletes the Variant with the given ID.
tags:
- product variants
parameters:
- in: path
name: product_id
schema:
type: integer
required: true
description: Numeric ID of the Product.
- in: path
name: variant_id
schema:
type: integer
required: true
description: Numeric ID of the Variant.
responses:
'204':
description: successful deletion
/zones:
get:
description: Gets all Zones.
tags:
- zones
responses:
'200':
description: successful operation
content:
application/json:
schema:
type: object
properties:
count:
type: integer
current_page:
type: integer
pages:
type: integer
zones:
type: array
items:
$ref: '#/components/schemas/Zone'
post:
description: Posts a new Zone.
tags:
- zones
parameters:
- in: path
name: zone_object
schema:
type: object
properties:
zone:
$ref: '#/components/schemas/Zone'
required: true
description: JSON object representing the Zone to be posted. Only attributes listed in the Zone required_attributes object are required (obtainable via GET /zones/new).
responses:
'201':
description: successful post
content:
application/json:
schema:
$ref: '#/components/schemas/Zone'
/zones/{zone_id}:
get:
description: Gets a Zone by ID.
tags:
- zones
parameters:
- in: path
name: zone_id
schema:
type: integer
required: true
description: Numeric ID of the Zone.
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/Zone'
put:
description: Updates the Zone with the given ID.
tags:
- zones
parameters:
- in: path
name: zone_id
schema:
type: integer
required: true
description: Numeric ID of the Zone.
- in: path
name: zone_object
schema:
type: object
properties:
zone:
$ref: '#/components/schemas/Zone'
required: true
description: JSON object representing the Zone attributes to be overwritten.
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/Zone'
delete:
description: Deletes the Zone with the given ID.
tags:
- zones
parameters:
- in: path
name: zone_id
schema:
type: integer
required: true
description: Numeric ID of the Zone.
responses:
'204':
description: successful deletion
/states:
get:
description: Gets all States.
tags:
- states
responses:
'200':
description: successful operation
content:
application/json:
schema:
type: object
properties:
states:
type: array
items:
$ref: '#/components/schemas/State'
/states/{state_id}:
get:
description: Get a State with the given ID.
tags:
- states
parameters:
- in: path
name: state_id
schema:
type: integer
required: true
description: Numeric ID of the State.
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/State'
/taxonomies:
get:
description: Gets all Taxonomies.
tags:
- taxonomies
responses:
'200':
description: successful operation
content:
application/json:
schema:
type: object
properties:
count:
type: integer
current_page:
type: integer
taxonomies:
type: array
items:
$ref: '#/components/schemas/Taxonomy'
pages:
type: integer
post:
description: Posts a new Taxonomy.
tags:
- taxonomies
parameters:
- in: path
name: taxonomy_object
schema:
type: object
properties:
taxonomy:
$ref: '#/components/schemas/Taxonomy'
required: true
description: JSON object representing the Taxonomy to be posted. Only attributes listed in the Taxonomy required_attributes object are required (obtainable via GET /taxonomies/new).
responses:
'201':
description: successful post
content:
application/json:
schema:
$ref: '#/components/schemas/Taxonomy'
/taxonomies/new:
get:
description: Gets an object consisting of an array of all Taxonomy attributes and an array of required attributes to create a new Taxonomy object.
tags:
- taxonomies
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/New'
/taxonomies/{taxonomy_id}:
get:
description: Gets a Taxonomy by ID.
tags:
- taxonomies
parameters:
- in: path
name: taxonomy_id
schema:
type: integer
required: true
description: Numeric ID of the Taxonomy.
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/Taxonomy'
put:
description: Updates the Taxonomy with the given ID.
tags:
- taxonomies
parameters:
- in: path
name: taxonomy_id
schema:
type: integer
required: true
description: Numeric ID of the Taxonomy.
- in: path
name: taxonomy_object
schema:
type: object
properties:
taxonomy:
$ref: '#/components/schemas/Taxonomy'
required: true
description: JSON object representing the Taxonomy attributes to be overwritten.
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/Taxonomy'
delete:
description: Deletes the Taxonomy with the given ID.
tags:
- taxonomies
parameters:
- in: path
name: taxonomy_id
schema:
type: integer
required: true
description: Numeric ID of the Taxonomy.
responses:
'204':
description: successful deletion
/taxons:
get:
description: Gets all Taxons.
tags:
- taxons
responses:
'200':
description: successful operation
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Taxon'
/taxonomies/{taxonomy_id}/taxons/:
get:
description: Gets all Taxons belonging to a given Taxonomy.
tags:
- taxons
parameters:
- in: path
name: taxonomy_id
schema:
type: integer
required: true
description: Numeric ID of the Taxonomy.
responses:
'200':
description: successful operation
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Taxon'
post:
description: Posts a new Taxon to a given Taxonomy.
tags:
- taxons
parameters:
- in: path
name: taxonomy_id
schema:
type: integer
required: true
description: Numeric ID of the Taxonomy.
- in: path
name: taxon_object
schema:
type: object
properties:
taxon:
$ref: '#/components/schemas/Taxon'
required: true
description: JSON object representing the Taxon to be posted. Only attributes listed in the Taxon required_attributes object are required (obtainable via GET /taxonomies/{taxonomy_id}/taxons/new).
responses:
'201':
description: successful post
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Taxon'
/taxonomies/{taxonomy_id}/taxons/new:
get:
description: Gets an object consisting of an array of all Taxon attributes and an array of required attributes to create a new Taxon object in a given Taxonomy.
tags:
- taxons
parameters:
- in: path
name: taxonomy_id
schema:
type: integer
required: true
description: Numeric ID of the Taxonomy.
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/New'
/taxonomies/{taxonomy_id}/taxons/{taxon_id}:
get:
description: Gets a Taxon by ID from the Taxonomy at the given Taxonomy ID.
tags:
- taxons
parameters:
- in: path
name: taxonomy_id
schema:
type: integer
required: true
description: Numeric ID of the Taxonomy.
- in: path
name: taxon_id
schema:
type: integer
required: true
description: Numeric ID of the Taxon.
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/Taxon'
put:
description: Updates the Taxon with the given Taxon ID in the Taxonomy with the given Taxonomy ID.
tags:
- taxons
parameters:
- in: path
name: taxonomy_id
schema:
type: integer
required: true
description: Numeric ID of the Taxonomy.
- in: path
name: taxon_id
schema:
type: integer
required: true
description: Numeric ID of the Taxon.
- in: path
name: taxon_object
schema:
type: object
properties:
taxon:
$ref: '#/components/schemas/Taxon'
required: true
description: JSON object representing the Taxon attributes to be overwritten.
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/Taxon'
delete:
description: Deletes the Taxon with the given Taxon ID from the Taxonomy with the given Taxonomy ID.
tags:
- taxons
parameters:
- in: path
name: taxonomy_id
schema:
type: integer
required: true
description: Numeric ID of the Taxonomy.
- in: path
name: taxon_id
schema:
type: integer
required: true
description: Numeric ID of the Taxon.
responses:
'204':
description: successful deletion
/countries:
get:
description: Gets all Countries.
tags:
- countries
responses:
'200':
description: successful operation
content:
application/json:
schema:
type: object
properties:
count:
type: string
current_page:
type: integer
countries:
type: array
items:
$ref: '#/components/schemas/Country'
pages:
type: integer
/countries/{country_id}:
get:
description: Gets the country with the given ID.
tags:
- countries
parameters:
- in: path
name: country_id
schema:
type: integer
required: true
description: Numeric ID of the Country.
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/Country'
/cookies/consent:
get:
description: Gets the client's Cookies_Consent status.
tags:
- cookies_consent
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/Cookies_Consent'
post:
description: Changes the client's Cookies-Consent status to true.
tags:
- cookies_consent
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/Cookies_Consent'
delete:
description: Changes the client's Cookies-Consent status to false.
tags:
- cookies_consent
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/Cookies_Consent'
/orders:
get:
description: Gets all Orders.
tags:
- orders
responses:
'200':
description: successful operation
content:
application/json:
schema:
type: object
properties:
orders:
type: array
items:
$ref: '#/components/schemas/Order_Concise'
pagination:
type: string
/orders/{order_number}:
get:
description: Gets the Order with the given number.
tags:
- orders
parameters:
- in: path
name: order_number
schema:
type: string
required: true
description: Alphanumeric string identifier for the Order.
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/Order_Verbose'
components:
securitySchemes:
api_key:
type: apiKey
name: api_key
in: header
schemas:
Product:
type: object
properties:
id:
type: integer
name:
type: string
description:
type: string
price:
type: string
available_on:
type: string
permalink:
type: string
count_on_hand:
type: integer
meta_description:
type: string
meta_keywords:
type: string
taxon_ids:
type: object
variants:
oneOf:
- type: array
items:
$ref: '#/components/schemas/Variant'
- $ref: '#/components/schemas/Variant'
option_types:
type: object
product_properties:
type: object
New:
type: object
properties:
required_attributes:
type: array
items:
type: string
attributes:
type: array
items:
type: string
Variant:
type: object
properties:
id:
type: integer
name:
type: string
count_on_hand:
type: integer
sku:
type: string
price:
type: string
weight:
type: string
height:
type: string
width:
type: string
depth:
type: string
is_master:
type: string
cost_price:
type: string
permalink:
type: string
option_values:
type: object
images:
type: object
Zone:
type: object
properties:
id:
type: integer
description:
type: string
zone_members:
type: array
items: {}
name:
type: string
Taxonomy:
type: object
properties:
root:
type: object
id:
type: integer
name:
type: string
Taxon:
type: object
properties:
name:
type: string
taxonomy_id:
type: integer
position:
type: integer
permalink:
type: string
taxons:
type: array
items:
$ref: '#/components/schemas/Taxon'
pretty_name:
type: string
id:
type: integer
parent_id:
type: integer
State:
type: object
properties:
name:
type: string
abbr:
type: string
id:
type: integer
country_id:
type: integer
Country:
type: object
properties:
count:
type: integer
current_page:
type: integer
pages:
type: string
countries:
type: array
items:
type: string
Cookies_Consent:
type: object
properties:
cookies_consent:
type: boolean
example:
cookies_consent: false
Order_Concise:
type: object
properties:
id:
type: integer
number:
type: string
full_name:
type: string
email:
type: string
phone:
type: string
completed_at:
type: string
display_total:
type: string
show_path:
type: string
edit_path:
type: string
state:
type: string
payment_state:
type: string
shipment_state:
type: string
payments_path:
type: string
shipments_path:
type: string
ship_path:
type: string
ready_to_ship:
type: boolean
created_at:
type: string
distributor_name:
type: string
special_instructions:
type: string
payment_capture_path:
type: string
distributor:
type: object
properties:
id:
type: integer
order_cycle:
type: object
properties:
id:
type: integer
Order_Verbose:
type: object
properties:
id:
type: integer
number:
type: string
item_total:
type: string
total:
type: string
state:
type: string
adjustment_total:
type: string
user_id:
type: integer
created_at:
type: string
updated_at:
type: string
completed_at:
type: string
payment_total:
type: string
shipment_state:
type: string
payment_state:
type: string
email:
type: string
special_instructions:
type: string
bill_address:
$ref: '#/components/schemas/Address'
ship_address:
$ref: '#/components/schemas/Address'
line_items:
type: array
items:
$ref: '#/components/schemas/Product'
payments:
type: array
items:
$ref: '#/components/schemas/Payment'
shipments:
type: array
items:
$ref: '#/components/schemas/Shipment'
adjustments:
type: array
items:
$ref: '#/components/schemas/Adjustment'
credit_cards:
type: array
items: {}
Address:
type: object
properties:
id:
type: integer
firstname:
type: string
lastname:
type: string
address1:
type: string
address2:
type: string
city:
type: string
zipcode:
type: string
phone:
type: string
company:
type: string
alternative_phone:
type: string
country_id:
type: integer
state_id:
type: integer
state_name:
type: string
country:
$ref: '#/components/schemas/Country'
state:
$ref: '#/components/schemas/State'
Payment:
type: object
properties:
id:
type: integer
amount:
type: string
state:
type: string
payment_method_id:
type: integer
payment_method:
$ref: '#/components/schemas/Payment_Method'
Payment_Method:
type: object
properties:
id:
type: integer
name:
type: string
environment:
type: string
Shipment:
type: object
properties:
id:
type: integer
tracking:
type: string
number:
type: string
cost:
type: string
shipped_at:
type: string
state:
type: string
order_id:
type: string
shipping_method:
$ref: '#/components/schemas/Shipping_Method'
Shipping_Method:
type: object
properties:
name:
type: string
zone_id:
type: integer
shipping_category_id:
type: string
Adjustment:
type: object
properties:
id:
type: integer
source_type:
type: string
source_id:
type: integer
adjustable_type:
type: string
adjustable_id:
type: integer
originator_type:
type: string
originator_id:
type: integer
amount:
type: string
label:
type: string
mandatory:
type: boolean
eligible:
type: boolean
created_at:
type: string
updated_at:
type: string