Using RefParameter in param

384 views
Skip to first unread message

amar padmanabhan

unread,
May 3, 2017, 6:25:43 PM5/3/17
to Swagger
Hi all,
I am trying to reuse a definition and added it to the parameters, this causes an issue in the codegen side. Wondering if what I am doing is legal which is to share a definition on the ReusableParam side.
Also are ReusableParams supported for CodeGen?  Looking at
public CodegenParameter fromParameter(Parameter param, Set<String> imports) {
it looks like if param instanceof RefParameter is not handled?
Thanks
Amar

/networks/{tenant_network_id}:
    get:
      summary: Retrieve Network Configs
      tags:
        - Networks
      parameters:
        - in: path
          name: tenant_network_id
          description: Network ID
          required: true
          $ref: '#/definitions/network_id'
      responses:
        200:
          description: Network Configs
          name: network_record
          schema:
            $ref: '#/definitions/network_record'
        default:
          $ref: "#/responses/UnexpectedError"


Fails with error:
[main] ERROR io.swagger.codegen.Codegen - Could not process operation:
  Tag: Networks
  Operation: null
  Resource: get /networks/{tenant_network_id}
  Definitions: {log_level=io.swagger.models.ModelImpl@92faeecf, network_id=io.swagger.models.ModelImpl@6b0f60b1, enodebd_config=io.swagger.models.ModelImpl@c36cbf14, network_enodebd_config=io.swagger.models.ModelImpl@e06bf483, mobilityd_config=io.swagger.models.ModelImpl@55d5985, mme_config=io.swagger.models.ModelImpl@87eca79c, network_mme_config=io.swagger.models.ModelImpl@3e1f21d4, control_proxy_config=io.swagger.models.ModelImpl@6c4336ec, controllerd_config=io.swagger.models.ModelImpl@6f0f03de, magmad_config=io.swagger.models.ModelImpl@cc912af0, metricsd_config=io.swagger.models.ModelImpl@7c0d6eb4, spgw_config=io.swagger.models.ModelImpl@7c0d6eb4, subscriber_db_config=io.swagger.models.ModelImpl@f598f277, network_record=io.swagger.models.ModelImpl@7f3c2b8, gateway_id=io.swagger.models.ModelImpl@4d043a45, hw_gateway_id=io.swagger.models.ModelImpl@4ba76cd, mutable_gateway_record=io.swagger.models.ModelImpl@977a9e84, access_gateway_record=io.swagger.models.ModelImpl@1e8b44d8, gateway_configs=io.swagger.models.ModelImpl@e4d24ce1, error=io.swagger.models.ModelImpl@7b1be154, subscriber_id=io.swagger.models.ModelImpl@99b488e7, subscriber_id_set=io.swagger.models.ArrayModel@fddb2387, lte_subscription=io.swagger.models.ModelImpl@113de764, subscriber=io.swagger.models.ModelImpl@b9a94056}
  Exception: io.swagger.models.parameters.RefParameter cannot be cast to io.swagger.models.parameters.BodyParameter

Ron Ratovsky

unread,
May 3, 2017, 7:22:41 PM5/3/17
to swagger-sw...@googlegroups.com

They should be supported by the codegen, yes.

 

However, your spec is not a valid one. I’m not exactly sure what you’re trying to do there because it’s partial, but I recommend you use our online editor to make sure it’s valid is you write it.

--
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 swagger-swaggers...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

amar padmanabhan

unread,
May 3, 2017, 7:58:31 PM5/3/17
to swagger-sw...@googlegroups.com
Cool thanks! Yeah I just posted a snippet of the spec. Let me double check, I used the online editor initially. 
- Amar

To unsubscribe from this group and stop receiving emails from it, send an email to swagger-swaggersocket+unsub...@googlegroups.com.


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 swagger-swaggersocket+unsub...@googlegroups.com.

amar padmanabhan

unread,
May 3, 2017, 9:32:59 PM5/3/17
to swagger-sw...@googlegroups.com
I ran the schema through the online editor and there are issues. I based my definition on https://github.com/OAI/OpenAPI-Specification/blob/master/examples/v2.0/yaml/petstore-expanded.yaml, can anyone provide insights into what the below error means? I have a bunch of those. For example network_record is defined under #definitions
Thanks
Amar


Schema error at paths./networks/{network_id}.get.responses[200]

is not exactly one from <#/definitions/response>,<#/definitions/jsonReference>

---
swagger: "2.0"
info:
  title: Magma
  description: Magma REST APIs
  version: 1.1.2
basePath: /magma
consumes:
  - application/json
produces:
  - application/json
schemes:
  - http
  - https
tags:
  - name: Networks
    description: Everything about networks 
  - name: Gateways
    description: Provision and manage gateways
  - name: Subscribers
    description: Operations about subscribers
paths:
  /networks:
    get:
      summary: List all networks
      tags:
        - Networks
      responses:
        200:
          description: List of network ids
          schema:
            type: array
            items:
              $ref: '#/definitions/network_id'
        default:
          $ref: "#/responses/UnexpectedError"
    post:
      summary: Add a new network
      tags:
        - Networks
      parameters:
        - in: body
          name: network_record
          description: Network object that needs to be added
          required: true
          schema:
            $ref: '#/definitions/network_record'
      responses:
        201:
          description: Success
        default:
          $ref: "#/responses/UnexpectedError"
  /networks/{network_id}:
    get:
      summary: Retrieve Network Configs
      tags:
        - Networks
      parameters:
        - in: path
          name: network_id
          description: Network ID
          required: true
          type: string
      responses:
        "200":
          description: Network Configs
          name: network_record
          schema:
            $ref: '#/definitions/network_record'
        default:
          $ref: "#/responses/UnexpectedError"
    put:
      summary: Set Network Configs
      tags:
        - Networks
      parameters:
        - in: path
          name: network_id
          description: Network ID
          required: true
          schema:
            $ref: '#/definitions/network_id'
        - in: body
          name: network_record
          description: Network Configs
          required: true
          schema:
            $ref: '#/definitions/network_record'
      responses:
        200:
          description: Success
        default:
          $ref: "#/responses/UnexpectedError"
    delete:
      summary: Delete a network
      tags:
        - Networks
      parameters:
        - in: path
          name: network_id
          description: Network ID
          required: true
          schema:
            $ref: '#/definitions/network_id'
      responses:
        204:
          description: Success
        default:
          $ref: "#/responses/UnexpectedError"
  /networks/{network_id}/gateways:
    get:
      summary: List gateways in the network
      tags:
        - Gateways
      parameters:
        - in: path
          name: network Id
          description: Network ID
          required: true
          schema:
            $ref: '#/definitions/network_id'
      responses:
        200:
          description: List of gateway ids
          schema:
            type: array
            items:
              $ref: '#/definitions/gateway_id'
        default:
          $ref: "#/responses/UnexpectedError"
    post:
      summary: Add a new gateway to the network
      tags:
        - Gateways
      parameters:
        - in: path
          name: network Id
          description: Network ID
          required: true
          schema:
            $ref: '#/definitions/network_id'
        - in: body
          name: Gateway Record
          description: Gateway Record Of the Gateway to Add
          required: true
          schema:
            $ref: '#/definitions/access_gateway_record'
      responses:
        201:
          description: New Logical ID of the Registered Gateway
          name: Logical Gateway ID
          schema:
            $ref: '#/definitions/gateway_id'
        default:
          $ref: "#/responses/UnexpectedError"
  /networks/{network_id}/gateways/{gateway_id}:
    get:
      summary: Get Registered Gateway's Record
      tags:
        - Gateways
      parameters:
        - in: path
          name: network_id
          description: Network ID
          required: true
          schema:
            $ref: '#/definitions/network_id'
        - in: path
          name: gateway_id
          description: Gateway ID
          required: true
          schema:
            $ref: '#/definitions/gateway_id'
      responses:
        200:
          description: Gateway Record on Success
          name: Gateway Record
          schema:
            $ref: '#/definitions/access_gateway_record'
        default:
          $ref: "#/responses/UnexpectedError"
    put:
      summary:  Modify Gateway Record
      tags:
        - Gateways
      parameters:
        - in: path
          name: network_id
          description: Network ID
          required: true
          schema:
            $ref: '#/definitions/network_id'
        - in: path
          name: gateway_id
          description: Gateway ID
          required: true
          schema:
            $ref: '#/definitions/gateway_id'
        - in: body
          name: MutableGatewayRecord
          description: Gateway Configs
          required: true
          schema:
            $ref: '#/definitions/mutable_gateway_record'
      responses:
        200:
          description: Success
        default:
          $ref: "#/responses/UnexpectedError"
  /networks/{network_id}/gateways/{gateway_id}/configs:
    get:
      summary: Retrieve Gateway Configs
      tags:
        - Gateways
      parameters:
        - in: path
          name: network_id
          description: Network ID
          required: true
          schema:
            $ref: '#/definitions/network_id'
        - in: path
          name: gateway_id
          description: Gateway ID
          required: true
          schema:
            $ref: '#/definitions/gateway_id'
      responses:
        200:
          description: Retreive Gateway Configs
          name: gateway_configs
          schema:
            $ref: '#/definitions/gateway_configs'
        default:
          $ref: "#/responses/UnexpectedError"
    put:
      summary:  Modify Gateway Configs
      tags:
        - Gateways
      parameters:
        - in: path
          name: network_id
          description: Network ID
          required: true
          schema:
            $ref: '#/definitions/network_id'
        - in: path
          name: gateway_id
          description: Gateway ID
          required: true
          schema:
            $ref: '#/definitions/gateway_id'
        - in: body
          name: GatewayConfigs
          description: Gateway Configs
          required: true
          schema:
            $ref: '#/definitions/gateway_configs'
      responses:
        200:
          description: Success
        default:
          $ref: "#/responses/UnexpectedError"
  /networks/{network_id}/subscribers:
    get:
      summary: List subscribers in the network
      tags:
        - Subscribers
      parameters:
        - in: path
          name: network_id
          description: Network ID
          required: true
          schema:
            $ref: '#/definitions/network_id'
      responses:
        200:
          description: List of subscriber ids
          schema:
            type: array
            items:
              $ref: '#/definitions/subscriber_id'
        default:
          $ref: "#/responses/UnexpectedError"
    post:
      summary: Add a new subscriber to the network
      tags:
        - Subscribers
      parameters:
        - in: path
          name: network_id
          description: Network ID
          required: true
          schema:
            $ref: '#/definitions/network_id'
        - in: body
          name: subscriber
          description: Subscriber object that needs to be added
          required: true
          schema:
            $ref: '#/definitions/subscriber'
      responses:
        201:
          description: Success
        default:
          $ref: "#/responses/UnexpectedError"
  /networks/{network_id}/subscribers/{subscriber_id}:
    get:
      summary: Retrieve the subscriber info
      tags:
        - Subscribers
      parameters:
        - in: path
          name: network_id
          description: Network ID
          required: true
          schema:
            $ref: '#/definitions/network_id'
        - in: path
          name: subscriber_id
          description: Subscriber ID
          required: true
          schema:
            $ref: '#/definitions/subscriber_id'
      responses:
        200:
          description: Subscriber Info
          schema:
            type: object
            items:
              $ref: '#/definitions/subscriber'
        default:
          $ref: "#/responses/UnexpectedError"
    put:
      summary: Modify subscriber info
      tags:
        - Subscribers
      parameters:
        - in: path
          name: network_id
          description: Network ID
          required: true
          schema:
            $ref: '#/definitions/network_id'
        - in: path
          name: subscriber_id
          description: Subscriber ID
          required: true
          schema:
            $ref: '#/definitions/subscriber_id'
        - in: body
          name: subscriber
          description: Subscriber Info
          required: true
          schema:
            $ref: '#/definitions/subscriber'
      responses:
        200:
          description: Success
        default:
          $ref: "#/responses/UnexpectedError"
    delete:
      summary: Remove a subscriber from the network
      tags:
        - Subscribers
      parameters:
        - in: path
          name: network_id
          description: Network ID
          required: true
          schema:
            $ref: '#/definitions/network_id'
        - in: path
          name: subscriber_id
          description: Subscriber ID
          required: true
          schema:
            $ref: '#/definitions/subscriber_id'
      responses:
        204:
          description: Success
        default:
          $ref: "#/responses/UnexpectedError"
responses:
  UnexpectedError:
    description: Unexpected Error
    schema:
      $ref: '#/definitions/error'
definitions:
  log_level:
    type: integer
    format: int32
    enum:
      - 0
      - 1
      - 2
      - 3
      - 4
    minimum: 0
    maximum: 4
    example: 1
  network_id:
    type: string
    minLength: 1
    example: "NFHDZAQU8Pyw2N91nbNdGjk5e"
  enodebd_config:
    type: object
    minLength: 1
    properties:
      log_level:
        $ref: '#/definitions/log_level'
      pci:
        type: integer
        format: int32
        example: 260
      earfcndl:
        type: integer
        format: int32
        example: 44590
      bandwidth_mhz:
        type: integer
        format: int32
        example: 20
      plmnid_list:
        type: string
        example: "20895"
      subframe_assignment:
        type: integer
        format: int32
        example: 2
      special_subframe_pattern:
        type: integer
        format: int32
        example: 7
      mme_ip:
        type: string
        x-go-custom-tag: magma_alt_name:"MmeIp"
        example: "10.0.2.1"
      allow_enodeb_transmit:
        type: boolean
        example: true
  network_enodebd_config:
    type: object
    minLength: 1
    properties:
      log_level:
        $ref: '#/definitions/log_level'
      earfcndl:
        type: integer
        format: int32
        example: 44590
      bandwidth_mhz:
        type: integer
        format: int32
        example: 20
      plmnid_list:
        type: string
        example: "20895"
      subframe_assignment:
        type: integer
        format: int32
        example: 2
      special_subframe_pattern:
        type: integer
        format: int32
        example: 7
      mme_ip:
        type: string
        x-go-custom-tag: magma_alt_name:"MmeIp"
        example: "10.0.2.1"
  mobilityd_config:
    type: object
    minLength: 1
    properties:
      log_level:
        $ref: '#/definitions/log_level'
      ip_block:
        type: string
        minLength: 5
        maxLength: 49
        x-go-custom-tag: magma_alt_name:"IpBlock"
        example: "192.168.16.0/24"
      ip_recycle_interval:
        type: integer
        format: uint32
        x-go-custom-tag: magma_alt_name:"IpRecycleInterval"
        example: 15
  mme_config:
    type: object
    minLength: 1
    properties:
      log_level:
        $ref: '#/definitions/log_level'
      mcc:
        type: integer
        format: int32
        example: 208
      mnc:
        type: integer
        format: int32
        example: 95
      tac:
        type: integer
        format: int32
        example: 1
      mme_gid:
        type: integer
        format: int32
        example: 1
      mme_code:
        type: integer
        format: int32
        example: 1
  network_mme_config:
    type: object
    minLength: 1
    properties:
      log_level:
        $ref: '#/definitions/log_level'
      mcc:
        type: integer
        format: int32
        example: 208
      mnc:
        type: integer
        format: int32
        example: 95
      tac:
        type: integer
        format: int32
        example: 1
      mme_gid:
        type: integer
        format: int32
        example: 1
  control_proxy_config:
    type: object
    minLength: 1
    properties:
      log_level:
        $ref: '#/definitions/log_level'
      cloud_address:
        type: string
        example: "192.168.80.10"
      cloud_port:
        type: integer
        format: int32
        example: 8080
  controllerd_config:
    type: object
    minLength: 1
    properties:
      log_level:
        $ref: '#/definitions/log_level'
      apps:
        type: array
        items:
          type: string
  magmad_config:
    type: object
    minLength: 1
    properties:
      log_level:
        $ref: '#/definitions/log_level'
      checkin_interval:
        type: integer
        format: int32
        example: 60
      checkin_timeout:
        type: integer
        format: int32
        example: 10
      autoupgrade_enabled:
        type: boolean
        example: true
      autoupgrade_poll_interval:
        type: integer
        format: int32
        example: 300
      autoupgrade_channel:
        type: string
        example: "stable"
      autoupgrade_available_version:
        type: string
        example: "100.0.0"
  metricsd_config:
    type: object
    minLength: 1
    properties:
      log_level:
        $ref: '#/definitions/log_level'
  spgw_config:
    type: object
    minLength: 1
    properties:
      log_level:
        $ref: '#/definitions/log_level'
  subscriber_db_config:
    type: object
    minLength: 1
    properties:
      log_level:
        $ref: '#/definitions/log_level'
      lte_auth_op:
        type: string
        format: byte
        example: "EREREREREREREREREREREQ=="
      lte_auth_amf:
        type: string
        format: byte
        example: "gAA="
  network_record:
    type: object
    required:
      - name
    properties:
      name:
        type: string
        minLength: 1
        example: "SampleNetwork"
        x-nullable: false
      enodebd:
        $ref: '#/definitions/network_enodebd_config'
      mobilityd:
        $ref: '#/definitions/mobilityd_config'
      mme:
        $ref: '#/definitions/network_mme_config'
      subscriberdb:
        $ref: '#/definitions/subscriber_db_config'
  gateway_id:
    type: string
    minLength: 1
    example: "NFHDZAQU8Pyw2N91nbNdGjk5e.22ffea10-7fc4-4427-975a-b9e4ce8f6f4d"
  hw_gateway_id:
    type: object
    required:
      - id
    properties:
      id:
        type: string
        minLength: 1
        x-nullable: false
        x-go-custom-tag: magma_alt_name:"Id"
        example: "22ffea10-7fc4-4427-975a-b9e4ce8f6f4d"
  mutable_gateway_record:
    type: object
    properties:
      name:
        type: string
        minLength: 1
        example: "SoDoSoPa Tower"
  access_gateway_record:
    type: object
    required:
      - hw_id
    properties:
      hw_id:
        $ref: '#/definitions/hw_gateway_id'
        x-go-custom-tag: magma_alt_name:"HwId"
      name:
        type: string
        minLength: 1
        example: "South Park's CtPa Town Tower"
  gateway_configs:
    type: object
    properties:
      control_proxy:
        $ref: '#/definitions/control_proxy_config'
      enodebd:
        $ref: '#/definitions/enodebd_config'
      controllerd:
        $ref: '#/definitions/controllerd_config'
      magmad:
        $ref: '#/definitions/magmad_config'
      metricsd:
        $ref: '#/definitions/metricsd_config'
      mobilityd:
        $ref: '#/definitions/mobilityd_config'
      mme:
        $ref: '#/definitions/mme_config'
      spgw:
        $ref: '#/definitions/spgw_config'
      subscriberdb:
        $ref: '#/definitions/subscriber_db_config'
  error:
    type: object
    required:
      - message
    properties:
      message:
        type: string
        example: Error string
  subscriber_id:
    type: string
    pattern: '^(IMSI\d{10,15})$'
    example: IMSI208950000000010
  subscriber_id_set:
      type: array
      items:
        $ref: '#/definitions/subscriber_id'
  lte_subscription:
    type: object
    properties:
      state:
        type: string
        enum:
          - INACTIVE
          - ACTIVE
        default: INACTIVE
        x-nullable: false
      auth_algo:
        type: string
        enum:
          - MILENAGE
        default: MILENAGE
        x-nullable: false
      auth_key:
        type: string
        format: byte
        minLength: 32
        maxLength: 32
        example: "AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8="
      auth_opc:
        type: string
        format: byte
        minLength: 32
        maxLength: 32
        example: "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="
  subscriber:
    type: object
    properties:
      id:
        $ref: '#/definitions/subscriber_id'
        x-nullable: false
        x-go-custom-tag: magma_alt_name:"Id"
      lte:
        $ref: '#/definitions/lte_subscription'

To unsubscribe from this group and stop receiving emails from it, send an email to swagger-swaggersocket+unsubscri...@googlegroups.com.


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 swagger-swaggersocket+unsubscri...@googlegroups.com.

amar padmanabhan

unread,
May 4, 2017, 4:14:09 PM5/4/17
to swagger-sw...@googlegroups.com
I got a working schema using the editor, posted at the end for completeness.
What I'm trying to solve for is reusing a definition between an in path param and an in: body param network_id in my below example. I currently am unable to do it so I have a follow-up question:
put:
      summary: Modify Gateway Record
      tags:
        - Gateways
      parameters:
        - $ref: "#/parameters/network_id"
        - $ref: "#/parameters/gateway_id"
        - in: body
          name: MutableGatewayRecord
          description: Gateway Configs
          required: true
          schema:
            $ref: '#/definitions/mutable_gateway_record'
      responses:
        '200':
          description: Success
        default:
          $ref: '#/responses/UnexpectedError'


For in path parameters, the below syntax doesn't work like for the in body params? Also is there a way to redirect the type in an in_path param to point at something in #definitions, either of these ways will allow me to reuse the typedefs.

- in: path
  name: network_id
  description: Network Id
  schema:
    $ref: '#/definitions/network_record'

Instead I had to define the parameter under #parameters like below and use a 
parameters:
  network_id:
        '201':
          description: Network Configs
          schema:
            $ref: '#/definitions/network_record'
        default:
          $ref: '#/responses/UnexpectedError'
    put:
      summary: Set Network Configs
      tags:
        - Networks
      parameters:
        - in: path
          name: network_id
          description: Network ID
          required: true
          type: string
        - in: body
          name: network_record
          description: Network Configs
          required: true
          schema:
            $ref: '#/definitions/network_record'
      responses:
        '200':
          description: Success
        default:
          $ref: '#/responses/UnexpectedError'
    delete:
      summary: Delete a network
      tags:
        - Networks
      parameters:
        - $ref: "#/parameters/network_id"
      responses:
        '204':
          description: Success
        default:
          $ref: '#/responses/UnexpectedError'
  '/networks/{network_id}/gateways':
    get:
      summary: List gateways in the network
      tags:
        - Gateways
      parameters:
        - $ref: "#/parameters/network_id"
      responses:
        '200':
          description: List of gateway ids
          schema:
            type: array
            items:
              $ref: '#/definitions/gateway_id'
        default:
          $ref: '#/responses/UnexpectedError'
    post:
      summary: Add a new gateway to the network
      tags:
        - Gateways
      parameters:
        - $ref: "#/parameters/network_id"
        - in: body
          name: Gateway Record
          description: Gateway Record Of the Gateway to Add
          required: true
          schema:
            $ref: '#/definitions/access_gateway_record'
      responses:
        '201':
          description: New Logical ID of the Registered Gateway
          schema:
            $ref: '#/definitions/gateway_id'
        default:
          $ref: '#/responses/UnexpectedError'
  '/networks/{network_id}/gateways/{gateway_id}':
    get:
      summary: Get Registered Gateway's Record
      tags:
        - Gateways
      parameters:
        - $ref: "#/parameters/network_id"
        - $ref: "#/parameters/gateway_id"
      responses:
        '200':
          description: Gateway Record on Success
          schema:
            $ref: '#/definitions/access_gateway_record'
        default:
          $ref: '#/responses/UnexpectedError'
    put:
      summary: Modify Gateway Record
      tags:
        - Gateways
      parameters:
        - $ref: "#/parameters/network_id"
        - $ref: "#/parameters/gateway_id"
        - in: body
          name: MutableGatewayRecord
          description: Gateway Configs
          required: true
          schema:
            $ref: '#/definitions/mutable_gateway_record'
      responses:
        '200':
          description: Success
        default:
          $ref: '#/responses/UnexpectedError'
  '/networks/{network_id}/gateways/{gateway_id}/configs':
    get:
      summary: Retrieve Gateway Configs
      tags:
        - Gateways
      parameters:
        - $ref: "#/parameters/network_id"
        - $ref: "#/parameters/gateway_id"
      responses:
        '200':
          description: Retreive Gateway Configs
          schema:
            $ref: '#/definitions/gateway_configs'
        default:
          $ref: '#/responses/UnexpectedError'
    put:
      summary: Modify Gateway Configs
      tags:
        - Gateways
      parameters:
        - $ref: "#/parameters/network_id"
        - $ref: "#/parameters/gateway_id"
        - in: body
          name: GatewayConfigs
          description: Gateway Configs
          required: true
          schema:
            $ref: '#/definitions/gateway_configs'
      responses:
        '200':
          description: Success
        default:
          $ref: '#/responses/UnexpectedError'
  '/networks/{network_id}/subscribers':
    get:
      summary: List subscribers in the network
      tags:
        - Subscribers
      parameters:
        - $ref: "#/parameters/network_id"
      responses:
        '200':
          description: List of subscriber ids
          schema:
            type: array
            items:
              $ref: '#/definitions/subscriber_id'
        default:
          $ref: '#/responses/UnexpectedError'
    post:
      summary: Add a new subscriber to the network
      tags:
        - Subscribers
      parameters:
        - $ref: "#/parameters/network_id"
        - in: body
          name: subscriber
          description: Subscriber object that needs to be added
          required: true
          schema:
            $ref: '#/definitions/subscriber'
      responses:
        '201':
          description: Success
        default:
          $ref: '#/responses/UnexpectedError'
  '/networks/{network_id}/subscribers/{subscriber_id}':
    get:
      summary: Retrieve the subscriber info
      tags:
        - Subscribers
      parameters:
        - $ref: "#/parameters/network_id"
        - $ref: "#/parameters/subscriber_id"
      responses:
        '200':
          description: Subscriber Info
          schema:
            type: object
            items:
              $ref: '#/definitions/subscriber'
        default:
          $ref: '#/responses/UnexpectedError'
    put:
      summary: Modify subscriber info
      tags:
        - Subscribers
      parameters:
        - $ref: "#/parameters/network_id"
        - $ref: "#/parameters/subscriber_id"
        - in: body
          name: subscriber
          description: Subscriber Info
          required: true
          schema:
            $ref: '#/definitions/subscriber'
      responses:
        '200':
          description: Success
        default:
          $ref: '#/responses/UnexpectedError'
    delete:
      summary: Remove a subscriber from the network
      tags:
        - Subscribers
      parameters:
        - $ref: "#/parameters/network_id"
        - $ref: '#/parameters/subscriber_id'
      responses:
        '204':
          description: Success
        default:
          $ref: '#/responses/UnexpectedError'
responses:
  UnexpectedError:
    description: Unexpected Error
    schema:
      $ref: '#/definitions/error'
parameters:
  network_id:
    in: path
    name: network_id
    description: Network ID
    required: true
    type: string
  subscriber_id:
    in: path
    name: subscriber_id
    description: Subscriber ID
    required: true
    type: string
  gateway_id:
    in: path
    name: gateway_id
    description: Gateway ID
    required: true
    type: string
Reply all
Reply to author
Forward
0 new messages