--------------------------------------------
On Tue, 8/1/17, Ron Ratovsky <[email protected]> wrote:

 Subject: Re: Inheritance and extension of API definitions
 To: "[email protected]" 
<[email protected]>
 Date: Tuesday, August 1, 2017, 1:40 AM
 
 #yiv0345487967
 #yiv0345487967 --
  
  _filtered #yiv0345487967 {font-family:Arial;panose-1:2 11 6
 4 2 2 2 2 2 4;}
  _filtered #yiv0345487967 {panose-1:2 7 3 9 2 2 5 2 4 4;}
  _filtered #yiv0345487967 {panose-1:2 4 5 3 5 4 6 3 2 4;}
  _filtered #yiv0345487967 {font-family:Calibri;panose-1:2 15
 5 2 2 2 4 3 2 4;}
 #yiv0345487967  
 #yiv0345487967 p.yiv0345487967MsoNormal, #yiv0345487967
 li.yiv0345487967MsoNormal, #yiv0345487967
 div.yiv0345487967MsoNormal
        {margin:0in;margin-bottom:.0001pt;font-size:11.0pt;}
 #yiv0345487967 a:link, #yiv0345487967
 span.yiv0345487967MsoHyperlink
        {color:blue;text-decoration:underline;}
 #yiv0345487967 a:visited, #yiv0345487967
 span.yiv0345487967MsoHyperlinkFollowed
        {color:purple;text-decoration:underline;}
 #yiv0345487967 p
        {margin-right:0in;margin-left:0in;font-size:11.0pt;}
 #yiv0345487967 pre
        {margin:0in;margin-bottom:.0001pt;font-size:10.0pt;}
 #yiv0345487967 span.yiv0345487967HTMLPreformattedChar
        {font-family:Courier;}
 #yiv0345487967 span.yiv0345487967hoenzb
        {}
 #yiv0345487967 span.yiv0345487967EmailStyle21
        {color:windowtext;}
 #yiv0345487967 span.yiv0345487967msoIns
        {text-decoration:underline;color:teal;}
 #yiv0345487967 .yiv0345487967MsoChpDefault
        {font-size:10.0pt;}
  _filtered #yiv0345487967 {margin:1.0in 1.0in 1.0in 1.0in;}
 #yiv0345487967 div.yiv0345487967WordSection1
        {}
 #yiv0345487967 For any feature requests for
 the spec, you’re welcome to file a ticket at
 https://github.com/OAI/OpenAPI-Specification/.      From: 
<[email protected]>
 on behalf of Julien Silland <[email protected]>
 Reply-To:
 "[email protected]"
 <[email protected]>
 Date: Monday, July 31, 2017 at 11:09
 To:
 "[email protected]"
 <[email protected]>
 Subject: Re: Inheritance and extension
 of API definitions  Thanks Ron for your answer
 — this is a little disappointing but good to have our
 intuition confirmed.   It'd be great if such use
 cases were supported in the future. In a perfect world,
 we'd version our API differently but this decision is
 well behind us at this point. I suspect the same is true for
 a number of API publishers out there. Beyond the
 public/private use case we are facing, implementing
 something along the lines of API inheritance/extension would
 enable fun/meaningful things:   - extend public APIs, e.g.
 publish an API that replicates another one and adds
 additional endpoints or tunes the behavior of a specific
 endpoint-
 help with API versioning — it you could reuse large chunks
 of a previous version and selectively alter/deprecate
 certain endpoints.  On your suggestion to filter
 out the specification when it is served — it's an
 interesting approach but I'm not entirely sure how
 workable that will be for us: our plan includes publishing
 the public spec to a public Github repo. I think I might try
 to develop some lightweight tooling of our own to do what we
 want here.
  Cheers,-Julien  On Fri, Jul 28, 2017 at 6:37
 PM, Ron Ratovsky <[email protected]>
 wrote:Hi Julien, The spec doesn’t
 quite support that. What it does support is referencing
 specific paths, and then theoretically you can add
 additional operations on top of that to the path. In practice, I’m
 not sure too many tools would support adding the additional
 operations, though the paths referencing should work. Depending on how you
 develop and build your API, you might be able to take a
 different approach. You can have everything in one file, and
 add some vendor extensions. You can write a very minimal app
 that will serve the spec with some form of authorization,
 and filter out the internal operations based on the
 extensions.   From: <[email protected]>
 on behalf of Julien Silland <[email protected]>
 Reply-To: "[email protected]"
 <[email protected]>
 Date: Friday, July 28, 2017 at 15:59
 To: Swagger <[email protected]>
 Subject: Inheritance and extension of
 API definitions Hello,  My company runs an
 API that we surface to three distinct audiences: third party
 developers, partners and first party clients. What this
 segmentation means in practice is that depending on the
 nature of the clients, a given endpoint might be available
 to you or not, and it if is available, the response might be
 more or less rich. We are just getting
 around to completing the Swagger specification of our public
 API and eager to publish that. We also have a goal to
 consume a Swagger spec to generate clients and documentation
 for partners and internal customers. For confidentiality
 reasons, we'd prefer keeping the internal endpoints and
 payloads out of the public definition. Swagger comes out of
 the box with support for inheriting models and we're
 thinking of taking advantage of that to formalize responses
 returned by non-public endpoints: {  "InternalFoo":
 {   
 "allOf": [      {        "$ref":
 "foo.json#/PublicFoo"      },      {        "properties":
 {          
 …      }    ]  }} What I'm
 trying to see is whether we could apply the same approach
 for extending the public API with partner and internal
 endpoints — ideally, we'd keep maintaining the
 external Swagger spec as is and the internal one would
 "inherit" from it and automatically benefit from
 additions to it, all the while accommodating the
 redefinition of certain response types and the addition of
 certain endpoints. At a fundamental level, what I'm
 trying to accomplish is:
  swagger-internal.json
  {  "$ref":
 "swagger.json",  "paths":
 {   
 "/foo/{id}": {      "get":
 {       
 "responses": {          "200":
 {           
 "schema": {             
 "$ref":
 "internal-foo.json#/InternalFoo"           
 }}}}}}},
  
 Is such a thing supported at all by the tooling? Is there a
 different model we could follow to accomplish
 this?
  Thanks,-Julien--
 
 You received
 this message because you are subscribed to the Google Groups
 "Swagger" group.
 To unsubscribe from this group
 and stop receiving emails from it, send an email to 
[email protected].
 For more options, visit https://groups.google.com/d/optout.-- 
 You
 received this message because you are subscribed to a topic
 in the Google Groups "Swagger" group.
 To unsubscribe from this topic, visit 
https://groups.google.com/d/topic/swagger-swaggersocket/xkn9tcx8tcM/unsubscribe.
 To unsubscribe from this group and all its
 topics, send an email to [email protected].
 For more options, visit https://groups.google.com/d/optout.
 
 
  --
 Move at a
 regular pace and fix thingsSTRAVA
  Stand With
 Us.-- 
 You
 received this message because you are subscribed to the
 Google Groups "Swagger" group.
 To
 unsubscribe from this group and stop receiving emails from
 it, send an email to [email protected].
 For more options, visit https://groups.google.com/d/optout.
 
 
 
 -- 
 
 You received this message because you are subscribed to the
 Google Groups "Swagger" group.
 
 To unsubscribe from this group and stop receiving emails
 from it, send an email to [email protected].
 
 For more options, visit https://groups.google.com/d/optout.
 ersul complet defavorabil al razboiului pentru Polonia a ingrijorat cercurile 
politice romanesti care  pastrand o stricta neutralitate  oficial  au inteles  
totusi  sa acorde acestei tari invinse  un pretios aliat in perioada 
interbelica  intreg sprijinul.

-- 
You received this message because you are subscribed to the Google Groups 
"Swagger" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to