- From: Dietrich Schulten <ds@escalon.de>
- Date: Tue, 24 Mar 2015 23:04:54 +0100
- To: "Jean-Gert Nesselbosch" <nesselbosch@strato-rz.de>, <public-hydra@w3.org>
Hi Jean-Gert, apparently you want to start with an entry resource which allows to search for offered products by productID. I would propose to make Strato the entry resource which has a collection of related offers: { "@context": { "@vocab":"http://schema.org/" "hydra": ..., "hydra:property":{"@type":"@vocab" } }, "@type": "Corporation", "@id": "https://strato.de/corporation", "url":"http://www.strato.de", "hydra:collection": { "@type": "hydra:Collection", "hydra:manages": { "hydra:property": "makesOffer", "hydra:subject": {"@id":"http://www.strato.de/corporation"} } "hydra:search": { "@type": "hydra:IriTemplate", "hydra:template": "https://strato.de/buy/ger/offers{?productID*}", " hydra:mappings": [ { "hydra:variable": "productID", "hydra: property": "productID", "hydra: required": true } } } } Ideally the @id of the Corporation is the URL where you can retrieve that resource, so I changed the @id to http://strato.de/corporation and added the url property for the www.strato.de address. In your uri template you used the query continuation with &, that has to be ? since you have no leading query before the &. The reply to the query would again be a Collection, only this time with a hydra:member attribute that holds a list of Offer objects. The makesOffer belongs into the manages block. { ... "@type": "hydra:Collection", "hydra:manages": { "hydra:property": "makesOffer", "hydra:subject": {"@id":"http://www.strato.de/corporation"} } "hydra:member": [ { "@type": "Offer", "@id": "http://strato.de/offers/whatever", "itemOffered": { "@type": "pto:Dedicated_hosting_service", "@id": "http://strato.de/konf_url_zur_aktn_konf_do_not_use", "productID": "SOL_K38_24" "name": "Server Hardware, 24 Monate Vertragslaufzeit", }, "price": 3.20, ... }, ... more offers matching the query ... ] } Otherwise you are all set. Heretic question: What is it you think you have to put into the ApiDocumentation which is not already in the response? :) Best regards, Dietrich Am 24. März 2015 17:31:54 schrieb Jean-Gert Nesselbosch <nesselbosch@strato-rz.de>: > > hello all, > > I'm quite sure, that this is a newbie-question answered somewhere > else. so please be so kind to just point me to the approriate thread > in this ng. > > anyway, here's the question. > > I'm trying to describe a simple API for the web-ordering-process of > the company I'm working for. It's part of a much larger context. All > the API has to do is receive some productIDs and return an appropriate > offer, containing price-information concerning the requested productIDs. > > Here's what I've assembled so far : > > (1.a) request , formal spec > > { > "@context": { > "@vocab": "http://www.w3.org/ns/hydra/context.jsonld", > "sch" : "http://schema.org/" > }, > > "@type": "IriTemplate", > "template": "https://strato.de/buy/ger/offers{&productID*}", > "mappings": [ > { > "@type": "IriTemplateMapping", > "variable": "productID", > "property": "sch:productID", > "required": true > } > ] > } > > (1.b) request , example : > > https://strato.de/buy/ger/offers?productID=SOME_PROD_ID_1&productID=SOME_PROD_ID_2&productID=SOME_PROD_ID_3 > > > (2.a) the intended reply (draft, example) ### > > { > "@context": { > "@vocab": "http://schema.org/", > "pto": "http://www.productontology.org/doc/" > }, > > "makesOffer": [ > { > "@type": "Offer", > "@id": "http://strato.de/offers/whatever", > "itemOffered": { > "@type": "pto:Dedicated_hosting_service", > "@id": "http://strato.de/konf_url_zur_aktn_konf_do_not_use", > "productID": "SOL_K38_24" > "name": "Server Hardware, 24 Monate Vertragslaufzeit", > }, > "price": 3.20, // im 1. Abrechnungszeitraum > > "alternatePrice" : 4.20 // preis des teuersten > // alternativen Artikels > "savings" : 80, // ersparnis > "savingsUnit" : "%", // ... in prozent > "billingPeriod" : 3, // abrechnungszeitraum > "billingPeriodUnit" : "Monat" // ... in monaten > "priceCurrency": "EUR", > "description" : "Sie sparen 80 %.", // weitere infos,ggf.red. > "language" : "ger", > } > ] > } > > now here are my two questions : > > (A) how do I turn the example-structure from (2.a) into the appropriate > matching part of the intended API-reply-description (must be something > to do with the keyword "returns" since it should describe the structure > of the returned API-reply) > > (B) how do I assemble the API-description of the request (1.a) and the > API-description of the reply (see (A)) into a comprehensive description > of the intended API. > > also, the description should contain some information about the company > providing the api, that is, e.g. > > "@type": "Corporation", > "@id": "http://www.strato.de", > "name": "STRATO AG", > > where do I put this information ? > > kind of confused, > > jean-gert nesselbosch > STRATO AG, > Berlin, Germany > >
Received on Tuesday, 24 March 2015 22:05:22 UTC