components:
  schemas:
    Account:
      allOf:
      - $ref: '#/components/schemas/AccountPartial'
      - required:
        - state
        - name
        - metro_area_network_presence
        - id
        title: Account
        type: object
    AccountPartial:
      description: Account
      properties:
        address:
          $ref: '#/components/schemas/Address'
        billing_information:
          $ref: '#/components/schemas/BillingInformation'
        discoverable:
          default: false
          description: 'The account will be included for all members of the

            ix in the list of accounts.


            Only `id`, `name` and `present_in_metro_area_networks`

            are provided to other members.'
          type: boolean
        external_ref:
          description: Reference field, free to use for the API user.
          example: IX:Service:23042
          maxLength: 80
          nullable: true
          type: string
        id:
          maxLength: 80
          type: string
        legal_name:
          description: 'Legal name of the organisation.

            Only required when it''s different from the account name.

            '
          example: Moon Network Services LLS.
          maxLength: 80
          nullable: true
          type: string
        managing_account:
          description: 'The `id` of a managing account. Can be used for creating

            a customer hierachy.

            '
          example: IX:Account:231
          nullable: true
          type: string
        metro_area_network_presence:
          description: 'Informal list of `MetroAreaNetwork` ids, indicating the

            presence to other accounts.

            The list is maintained by the account and can be empty.

            '
          example:
          - '14021'
          - '12939'
          items:
            type: string
          type: array
        name:
          description: 'Name of the account, how it gets represented

            in e.g. a "customers list".

            '
          example: Moonpeer Inc.
          maxLength: 80
          type: string
        state:
          enum:
          - requested
          - allocated
          - testing
          - production
          - production_change_pending
          - decommission_requested
          - decommissioned
          - archived
          - error
          - operator
          - scheduled
          type: string
        status:
          items:
            $ref: '#/components/schemas/Status'
          type: array
      title: PartialAccount
      type: object
    AccountRequest:
      allOf:
      - $ref: '#/components/schemas/AccountRequestPartial'
      - required:
        - name
        - address
        title: AccountRequest
        type: object
    AccountRequestPartial:
      description: Account Request
      properties:
        address:
          $ref: '#/components/schemas/Address'
        billing_information:
          $ref: '#/components/schemas/BillingInformation'
        discoverable:
          default: false
          description: 'The account will be included for all members of the

            ix in the list of accounts.


            Only `id`, `name` and `present_in_metro_area_networks`

            are provided to other members.'
          type: boolean
        external_ref:
          description: Reference field, free to use for the API user.
          example: IX:Service:23042
          maxLength: 80
          nullable: true
          type: string
        legal_name:
          description: 'Legal name of the organisation.

            Only required when it''s different from the account name.

            '
          example: Moon Network Services LLS.
          maxLength: 80
          nullable: true
          type: string
        managing_account:
          description: 'The `id` of a managing account. Can be used for creating

            a customer hierachy.

            '
          example: IX:Account:231
          nullable: true
          type: string
        metro_area_network_presence:
          default: []
          description: 'Informal list of `MetroAreaNetwork` ids, indicating the

            presence to other accounts.

            The list is maintained by the account and can be empty.

            '
          example:
          - '14021'
          - '12939'
          items:
            type: string
          type: array
        name:
          description: 'Name of the account, how it gets represented

            in e.g. a "customers list".

            '
          example: Moonpeer Inc.
          maxLength: 80
          type: string
      title: PartialAccountRequest
      type: object
    AccountUpdate:
      allOf:
      - $ref: '#/components/schemas/AccountUpdatePartial'
      - required:
        - name
        - metro_area_network_presence
        - address
        title: AccountUpdate
        type: object
    AccountUpdatePartial:
      description: Account Update Request
      properties:
        address:
          $ref: '#/components/schemas/Address'
        billing_information:
          $ref: '#/components/schemas/BillingInformation'
        discoverable:
          default: false
          description: 'The account will be included for all members of the

            ix in the list of accounts.


            Only `id`, `name` and `present_in_metro_area_networks`

            are provided to other members.'
          type: boolean
        external_ref:
          description: Reference field, free to use for the API user.
          example: IX:Service:23042
          maxLength: 80
          nullable: true
          type: string
        legal_name:
          description: 'Legal name of the organisation.

            Only required when it''s different from the account name.

            '
          example: Moon Network Services LLS.
          maxLength: 80
          nullable: true
          type: string
        managing_account:
          description: 'The `id` of a managing account. Can be used for creating

            a customer hierachy.

            '
          example: IX:Account:231
          nullable: true
          type: string
        metro_area_network_presence:
          description: 'Informal list of `MetroAreaNetwork` ids, indicating the

            presence to other accounts.

            The list is maintained by the account and can be empty.

            '
          example:
          - '14021'
          - '12939'
          items:
            type: string
          type: array
        name:
          description: 'Name of the account, how it gets represented

            in e.g. a "customers list".

            '
          example: Moonpeer Inc.
          maxLength: 80
          type: string
      title: PartialAccountUpdate
      type: object
    Address:
      allOf:
      - $ref: '#/components/schemas/AddressPartial'
      - required:
        - country
        - locality
        - postal_code
        - street_address
        title: Address
        type: object
    AddressPartial:
      description: ''
      properties:
        country:
          description: ISO 3166-1 alpha-2 country code, for example DE
          example: US
          maxLength: 2
          type: string
        locality:
          description: The locality/city. For example, Mountain View.
          example: Mountain View
          maxLength: 40
          type: string
        post_office_box_number:
          description: The post office box number for PO box addresses.
          example: '2335232'
          maxLength: 80
          nullable: true
          type: string
        postal_code:
          description: A postal code. For example, 9404
          example: '9409'
          maxLength: 24
          type: string
        region:
          description: The region. For example, CA
          example: CA
          maxLength: 80
          nullable: true
          type: string
        street_address:
          description: The street address. For example, 1600 Amphitheatre Pkwy.
          example: 1600 Amphitheatre Pkwy.
          maxLength: 80
          type: string
      title: PartialAddress
      type: object
    AllowMemberJoiningRule:
      allOf:
      - $ref: '#/components/schemas/AllowMemberJoiningRulePartial'
      - required:
        - managing_account
        - consuming_account
        - id
        - network_service
        - type
        title: AllowMemberJoiningRule
        type: object
    AllowMemberJoiningRulePartial:
      description: A rule for members joining a private vlan
      properties:
        capacity_max:
          description: 'An optional rate limit which has precedence over

            the capacity set in the network service config.'
          minimum: 1
          nullable: true
          type: integer
        capacity_min:
          description: 'Require an optional minimum capacity to join

            the network service.'
          minimum: 1
          nullable: true
          type: integer
        consuming_account:
          description: 'The `id` of the account to which access to the

            network service should be granted or denied.

            '
          example: '2381982'
          type: string
        external_ref:
          description: Reference field, free to use for the API user.
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          type: string
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

            the API. A manager can read and update the state of entities.

            '
          example: '238189294'
          type: string
        network_service:
          type: string
        type:
          example: allow
          type: string
      required:
      - type
      title: PartialAllowMemberJoiningRule
      type: object
    AllowMemberJoiningRuleRequest:
      allOf:
      - $ref: '#/components/schemas/AllowMemberJoiningRuleRequestPartial'
      - required:
        - managing_account
        - consuming_account
        - network_service
        - type
        title: AllowMemberJoiningRuleRequest
        type: object
    AllowMemberJoiningRuleRequestPartial:
      description: A new vlan member joining rule
      properties:
        capacity_max:
          description: 'An optional rate limit which has precedence over

            the capacity set in the network service config.'
          minimum: 1
          nullable: true
          type: integer
        capacity_min:
          description: 'Require an optional minimum capacity to join

            the network service.'
          minimum: 1
          nullable: true
          type: integer
        consuming_account:
          description: 'The `id` of the account to which access to the

            network service should be granted or denied.

            '
          example: '2381982'
          type: string
        external_ref:
          description: Reference field, free to use for the API user.
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

            the API. A manager can read and update the state of entities.

            '
          example: '238189294'
          type: string
        network_service:
          type: string
        type:
          example: allow
          type: string
      required:
      - type
      title: PartialAllowMemberJoiningRuleRequest
      type: object
    AllowMemberJoiningRuleUpdate:
      allOf:
      - $ref: '#/components/schemas/AllowMemberJoiningRuleUpdatePartial'
      - required:
        - managing_account
        - consuming_account
        - type
        title: AllowMemberJoiningRuleUpdate
        type: object
    AllowMemberJoiningRuleUpdatePartial:
      description: A vlan member joining rule update
      properties:
        capacity_max:
          description: 'An optional rate limit which has precedence over

            the capacity set in the network service config.'
          minimum: 1
          nullable: true
          type: integer
        capacity_min:
          description: 'Require an optional minimum capacity to join

            the network service.'
          minimum: 1
          nullable: true
          type: integer
        consuming_account:
          description: 'The `id` of the account to which access to the

            network service should be granted or denied.

            '
          example: '2381982'
          type: string
        external_ref:
          description: Reference field, free to use for the API user.
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

            the API. A manager can read and update the state of entities.

            '
          example: '238189294'
          type: string
        type:
          example: allow
          type: string
      required:
      - type
      title: PartialAllowMemberJoiningRuleUpdate
      type: object
    AuthToken:
      allOf:
      - $ref: '#/components/schemas/AuthTokenPartial'
      - required:
        - access_token
        - refresh_token
        title: AuthToken
        type: object
    AuthTokenPartial:
      description: AuthToken
      properties:
        access_token:
          type: string
        refresh_token:
          type: string
      title: PartialAuthToken
      type: object
    AuthTokenRequest:
      allOf:
      - $ref: '#/components/schemas/AuthTokenRequestPartial'
      - required:
        - api_key
        - api_secret
        title: AuthTokenRequest
        type: object
    AuthTokenRequestPartial:
      description: AuthTokenRequest
      properties:
        api_key:
          maxLength: 16
          minLength: 16
          type: string
        api_secret:
          maxLength: 86
          minLength: 86
          type: string
      title: PartialAuthTokenRequest
      type: object
    BillingInformation:
      allOf:
      - $ref: '#/components/schemas/BillingInformationPartial'
      - required:
        - name
        - address
        title: BillingInformation
        type: object
    BillingInformationPartial:
      description: 'Optional information required for issuing invoices.

        Only accounts with `billing_information` present can be used

        as a `billing_account`.'
      properties:
        address:
          $ref: '#/components/schemas/Address'
        name:
          description: 'Name of the organisation receiving invoices.

            '
          example: Moonoc Network Services LLS.
          maxLength: 80
          type: string
        vat_number:
          description: 'Value-added tax number, required for

            european reverse charge system.

            '
          example: UK2300000042
          maxLength: 20
          minLength: 2
          nullable: true
          type: string
      title: PartialBillingInformation
      type: object
    CloudNetworkProductOffering:
      allOf:
      - $ref: '#/components/schemas/CloudNetworkProductOfferingPartial'
      - required:
        - id
        - name
        - display_name
        - provider_vlans
        - resource_type
        - handover_metro_area_network
        - handover_metro_area
        - service_metro_area_network
        - service_metro_area
        - bandwidth_min
        - bandwidth_max
        - physical_port_speed
        - service_provider
        - downgrade_allowed
        - upgrade_allowed
        - service_provider_region
        - service_provider_pop
        - service_provider_workflow
        - delivery_method
        - diversity
        - type
        title: CloudNetworkProductOffering
        type: object
    CloudNetworkProductOfferingPartial:
      description: Cloud Network Product Offering
      properties:
        bandwidth_max:
          description: 'When not `null`, this value enforces a mandatory

            rate limit for all network service configs.'
          minimum: 0
          nullable: true
          type: integer
        bandwidth_min:
          description: 'When configuring access to the network service, at least

            this `capacity` must be provided.'
          minimum: 0
          nullable: true
          type: integer
        delivery_method:
          description: The exchange delivers the service over a `shared` or `dedicated`
            NNI.
          enum:
          - dedicated
          - shared
          type: string
        display_name:
          maxLength: 256
          type: string
        diversity:
          description: 'The service can be delivered over multiple handovers from

            the exchange to the `service_provider`.

            The `diversity` denotes the number of handovers between the

            exchange and the service provider. A value of two signals a

            redundant service.


            Only one network service configuration for each `handover` and

            `cloud_vlan` can be created.'
          minimum: 1
          type: integer
        downgrade_allowed:
          description: 'Indicates if the service can be migrated to

            a lower bandwidth.'
          type: boolean
        handover_metro_area:
          description: 'Id of the `MetroArea`. The network service will be

            accessed from this metro area.

            '
          example: met:29381993:NYC
          type: string
        handover_metro_area_network:
          description: 'Id of the `MetroAreaNetwork`. The service will be accessed

            through the handover metro area network.

            '
          example: '191239810'
          type: string
        id:
          maxLength: 80
          type: string
        name:
          description: Name of the product
          maxLength: 160
          type: string
        physical_port_speed:
          description: 'If the service is dependent on the speed of

            the physical port this field denotes the speed.'
          minimum: 0
          nullable: true
          type: integer
        provider_vlans:
          description: The `NetworkService` provides `single` or `multi`ple vlans.
          enum:
          - single
          - multi
          type: string
        resource_type:
          description: 'The resource type refers to an ix-api resource.

            '
          enum:
          - connection
          - demarc
          - network_service
          - network_service_config
          example: network_service
          type: string
        service_metro_area:
          description: 'Id of the `MetroArea`. The service is delivered

            in this metro area.

            '
          example: met:213913485:LON
          type: string
        service_metro_area_network:
          description: 'Id of the `MetroAreaNetwork`.

            The service is directly provided on the metro area network.

            '
          example: '9123843'
          type: string
        service_provider:
          description: 'The name of the provider providing the service.

            '
          example: AWS
          type: string
        service_provider_pop:
          description: 'The datacenter description of the partner NNI to the

            service provider.

            '
          example: INX6
          maxLength: 16
          nullable: true
          type: string
        service_provider_region:
          description: 'The service provider offers the network service for a

            specific region.

            '
          example: eu-central-1
          nullable: true
          type: string
        service_provider_workflow:
          description: 'When the workflow is `provider_first` the subscriber creates

            a circuit with the cloud provider and provides a `cloud_key` for filtering

            the product-offerings.


            If the workflow is `exchange_first` the IX will create

            the cloud circuit on the provider side.

            '
          enum:
          - exchange_first
          - provider_first
          example: exchange_first
          type: string
        type:
          example: cloud_vc
          type: string
        upgrade_allowed:
          description: 'Indicates if the service can be migrated to

            a higher bandwidth.'
          type: boolean
      required:
      - type
      title: PartialCloudNetworkProductOffering
      type: object
    CloudNetworkService:
      allOf:
      - $ref: '#/components/schemas/CloudNetworkServicePartial'
      - required:
        - state
        - id
        - managing_account
        - consuming_account
        - billing_account
        - product_offering
        - cloud_key
        - diversity
        - provider_ref
        - type
        title: CloudNetworkService
        type: object
    CloudNetworkServiceConfig:
      allOf:
      - $ref: '#/components/schemas/CloudNetworkServiceConfigPartial'
      - required:
        - state
        - id
        - network_service
        - managing_account
        - consuming_account
        - billing_account
        - role_assignments
        - connection
        - vlan_config
        - handover
        - cloud_vlan
        - type
        title: CloudNetworkServiceConfig
        type: object
    CloudNetworkServiceConfigPartial:
      description: Cloud Network Service Config
      properties:
        billing_account:
          description: An account requires billing_information to be used as a `billing_account`.
          type: string
        cloud_vlan:
          description: 'If the `provider_vlans` property of the `ProductOffering`
            is

            `multi`, a numeric value refers to a specific vlan on the service

            provider side.


            Otherwise, if set to `null`, it refers to all unmatched

            vlan ids on the service provider side. (All vlan ids from the

            service provider side are presented as tags within any vlans specified

            in `vlan_config`.)


            If the `provider_vlans` property of the `ProductOffering` is `single`,

            the `cloud_vlan` MUST be `null` or MUST NOT be provided.'
          format: int32
          maximum: 4094
          minimum: 1
          nullable: true
          type: integer
        connection:
          description: The id of the connection to use for this `NetworkServiceConfig`.
          type: string
        consuming_account:
          description: 'The `id` of the account consuming a service.


            Used to be `owning_customer`.

            '
          example: '2381982'
          type: string
        contract_ref:
          description: 'A reference to a contract. If no specific contract is used,
            a default

            MAY be chosen by the implementer.

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        external_ref:
          description: Reference field, free to use for the API user.
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        handover:
          description: 'The handover enumerates the connection and is

            required for checking diversity constraints.


            It must be within `1 <= x <= network_service.diversity`.

            '
          example: 1
          minimum: 1
          type: integer
        id:
          maxLength: 80
          type: string
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

            the API. A manager can read and update the state of entities.

            '
          example: '238189294'
          type: string
        network_feature_configs:
          description: 'A list of ids of `NetworkFeatureConfig`s.

            '
          example:
          - '12356'
          - '43829'
          items:
            type: string
          readOnly: true
          type: array
        network_service:
          description: The id of the configured network service.
          type: string
        purchase_order:
          default: ''
          description: 'Purchase Order ID which will be displayed on the invoice.

            '
          example: 'Project: DC Moon'
          maxLength: 80
          type: string
        role_assignments:
          description: 'A set of `RoleAssignment`s. See the documentation

            on the specific `required_contact_roles`,

            `nfc_required_contact_roles` or `nsc_required_contact_roles`

            on what `RoleAssignment`s to provide.

            '
          example:
          - c-impl:123
          - c-noc:331
          items:
            type: string
          type: array
        state:
          enum:
          - requested
          - allocated
          - testing
          - production
          - production_change_pending
          - decommission_requested
          - decommissioned
          - archived
          - error
          - operator
          - scheduled
          type: string
        status:
          items:
            $ref: '#/components/schemas/Status'
          type: array
        type:
          example: cloud_vc
          type: string
        vlan_config:
          $ref: '#/components/schemas/VlanConfig'
      required:
      - type
      title: PartialCloudNetworkServiceConfig
      type: object
    CloudNetworkServiceConfigRequest:
      allOf:
      - $ref: '#/components/schemas/CloudNetworkServiceConfigRequestPartial'
      - required:
        - managing_account
        - consuming_account
        - network_service
        - billing_account
        - role_assignments
        - connection
        - vlan_config
        - handover
        - cloud_vlan
        - type
        title: CloudNetworkServiceConfigRequest
        type: object
    CloudNetworkServiceConfigRequestPartial:
      description: Cloud Network Service Config Request
      properties:
        billing_account:
          description: An account requires billing_information to be used as a `billing_account`.
          type: string
        cloud_vlan:
          description: 'If the `provider_vlans` property of the `ProductOffering`
            is

            `multi`, a numeric value refers to a specific vlan on the service

            provider side.


            Otherwise, if set to `null`, it refers to all unmatched

            vlan ids on the service provider side. (All vlan ids from the

            service provider side are presented as tags within any vlans specified

            in `vlan_config`.)


            If the `provider_vlans` property of the `ProductOffering` is `single`,

            the `cloud_vlan` MUST be `null` or MUST NOT be provided.'
          format: int32
          maximum: 4094
          minimum: 1
          nullable: true
          type: integer
        connection:
          description: The id of the connection to use for this `NetworkServiceConfig`.
          type: string
        consuming_account:
          description: 'The `id` of the account consuming a service.


            Used to be `owning_customer`.

            '
          example: '2381982'
          type: string
        contract_ref:
          description: 'A reference to a contract. If no specific contract is used,
            a default

            MAY be chosen by the implementer.

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        external_ref:
          description: Reference field, free to use for the API user.
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        handover:
          description: 'The handover enumerates the connection and is

            required for checking diversity constraints.


            It must be within `1 <= x <= network_service.diversity`.

            '
          example: 1
          minimum: 1
          type: integer
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

            the API. A manager can read and update the state of entities.

            '
          example: '238189294'
          type: string
        network_feature_configs:
          description: 'A list of ids of `NetworkFeatureConfig`s.

            '
          example:
          - '12356'
          - '43829'
          items:
            type: string
          readOnly: true
          type: array
        network_service:
          description: The id of the `NetworkService` to configure.
          type: string
        purchase_order:
          default: ''
          description: 'Purchase Order ID which will be displayed on the invoice.

            '
          example: 'Project: DC Moon'
          maxLength: 80
          type: string
        role_assignments:
          description: 'A set of `RoleAssignment`s. See the documentation

            on the specific `required_contact_roles`,

            `nfc_required_contact_roles` or `nsc_required_contact_roles`

            on what `RoleAssignment`s to provide.

            '
          example:
          - c-impl:123
          - c-noc:331
          items:
            type: string
          type: array
        type:
          example: cloud_vc
          type: string
        vlan_config:
          $ref: '#/components/schemas/VlanConfig'
      required:
      - type
      title: PartialCloudNetworkServiceConfigRequest
      type: object
    CloudNetworkServiceConfigUpdate:
      allOf:
      - $ref: '#/components/schemas/CloudNetworkServiceConfigUpdatePartial'
      - required:
        - managing_account
        - consuming_account
        - vlan_config
        - billing_account
        - role_assignments
        - connection
        - handover
        - cloud_vlan
        - type
        title: CloudNetworkServiceConfigUpdate
        type: object
    CloudNetworkServiceConfigUpdatePartial:
      description: Cloud Network Service Config Update
      properties:
        billing_account:
          description: An account requires billing_information to be used as a `billing_account`.
          type: string
        cloud_vlan:
          description: 'If the `provider_vlans` property of the `ProductOffering`
            is

            `multi`, a numeric value refers to a specific vlan on the service

            provider side.


            Otherwise, if set to `null`, it refers to all unmatched

            vlan ids on the service provider side. (All vlan ids from the

            service provider side are presented as tags within any vlans specified

            in `vlan_config`.)


            If the `provider_vlans` property of the `ProductOffering` is `single`,

            the `cloud_vlan` MUST be `null` or MUST NOT be provided.'
          format: int32
          maximum: 4094
          minimum: 1
          nullable: true
          type: integer
        connection:
          description: The id of the connection to use for this `NetworkServiceConfig`.
          type: string
        consuming_account:
          description: 'The `id` of the account consuming a service.


            Used to be `owning_customer`.

            '
          example: '2381982'
          type: string
        contract_ref:
          description: 'A reference to a contract. If no specific contract is used,
            a default

            MAY be chosen by the implementer.

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        external_ref:
          description: Reference field, free to use for the API user.
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        handover:
          description: 'The handover enumerates the connection and is

            required for checking diversity constraints.


            It must be within `1 <= x <= network_service.diversity`.

            '
          example: 1
          minimum: 1
          type: integer
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

            the API. A manager can read and update the state of entities.

            '
          example: '238189294'
          type: string
        network_feature_configs:
          description: 'A list of ids of `NetworkFeatureConfig`s.

            '
          example:
          - '12356'
          - '43829'
          items:
            type: string
          readOnly: true
          type: array
        purchase_order:
          default: ''
          description: 'Purchase Order ID which will be displayed on the invoice.

            '
          example: 'Project: DC Moon'
          maxLength: 80
          type: string
        role_assignments:
          description: 'A set of `RoleAssignment`s. See the documentation

            on the specific `required_contact_roles`,

            `nfc_required_contact_roles` or `nsc_required_contact_roles`

            on what `RoleAssignment`s to provide.

            '
          example:
          - c-impl:123
          - c-noc:331
          items:
            type: string
          type: array
        type:
          example: cloud_vc
          type: string
        vlan_config:
          $ref: '#/components/schemas/VlanConfig'
      required:
      - type
      title: PartialCloudNetworkServiceConfigUpdate
      type: object
    CloudNetworkServicePartial:
      description: Cloud Network Service
      properties:
        billing_account:
          description: An account requires billing_information to be used as a `billing_account`.
          type: string
        capacity:
          description: 'The capacity of the service in Mbps. When null,

            the maximum capacity will be used.'
          minimum: 1
          nullable: true
          type: integer
        cloud_key:
          type: string
        consuming_account:
          description: 'The `id` of the account consuming a service.


            Used to be `owning_customer`.

            '
          example: '2381982'
          type: string
        contract_ref:
          description: 'A reference to a contract. If no specific contract is used,
            a default

            MAY be chosen by the implementer.

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        diversity:
          description: 'Same value as the corresponding `ProductOffering`.


            The service can be delivered over multiple handovers from

            the exchange to the `service_provider`.


            The `diversity` denotes the number of handovers between the

            exchange and the service provider. A value of two signals a

            redundant service.


            Only one network service configuration for each `handover` and

            `cloud_vlan` can be created.'
          minimum: 1
          type: integer
        external_ref:
          description: Reference field, free to use for the API user.
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          type: string
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

            the API. A manager can read and update the state of entities.

            '
          example: '238189294'
          type: string
        nsc_required_contact_roles:
          description: 'The configuration will require at least one of each of the

            specified roles assigned to contacts.


            The `RoleAssignment` is associated through the

            `role_assignments` list property of the network service configuration.'
          items:
            type: string
          readOnly: true
          type: array
        product_offering:
          type: string
        provider_ref:
          description: 'For a cloud network service with the exchange first

            workflow, the `provider_ref` will be a reference

            to a resource of the cloud provider. (E.g. the UUID of

            a virtual circuit.)


            The `provider_ref` is managed by the exchange and its

            meaning may vary between different cloud services.

            '
          example: 331050d5-76fb-498b-b72a-248520278fbd
          nullable: true
          type: string
        purchase_order:
          default: ''
          description: 'Purchase Order ID which will be displayed on the invoice.

            '
          example: 'Project: DC Moon'
          maxLength: 80
          type: string
        state:
          enum:
          - requested
          - allocated
          - testing
          - production
          - production_change_pending
          - decommission_requested
          - decommissioned
          - archived
          - error
          - operator
          - scheduled
          type: string
        status:
          items:
            $ref: '#/components/schemas/Status'
          type: array
        type:
          example: cloud_vc
          type: string
      required:
      - type
      title: PartialCloudNetworkService
      type: object
    CloudNetworkServiceRequest:
      allOf:
      - $ref: '#/components/schemas/CloudNetworkServiceRequestPartial'
      - required:
        - managing_account
        - consuming_account
        - billing_account
        - product_offering
        - cloud_key
        - type
        title: CloudNetworkServiceRequest
        type: object
    CloudNetworkServiceRequestPartial:
      description: Cloud Network Service Request
      properties:
        billing_account:
          description: An account requires billing_information to be used as a `billing_account`.
          type: string
        capacity:
          description: 'The capacity of the service in Mbps. When null,

            the maximum capacity will be used.'
          minimum: 1
          nullable: true
          type: integer
        cloud_key:
          type: string
        consuming_account:
          description: 'The `id` of the account consuming a service.


            Used to be `owning_customer`.

            '
          example: '2381982'
          type: string
        contract_ref:
          description: 'A reference to a contract. If no specific contract is used,
            a default

            MAY be chosen by the implementer.

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        external_ref:
          description: Reference field, free to use for the API user.
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

            the API. A manager can read and update the state of entities.

            '
          example: '238189294'
          type: string
        product_offering:
          type: string
        purchase_order:
          default: ''
          description: 'Purchase Order ID which will be displayed on the invoice.

            '
          example: 'Project: DC Moon'
          maxLength: 80
          type: string
        type:
          example: cloud_vc
          type: string
      required:
      - type
      title: PartialCloudNetworkServiceRequest
      type: object
    Connection:
      allOf:
      - $ref: '#/components/schemas/ConnectionPartial'
      - required:
        - state
        - managing_account
        - consuming_account
        - billing_account
        - role_assignments
        - mode
        - id
        - name
        - vlan_types
        - outer_vlan_ethertypes
        title: Connection
        type: object
    ConnectionPartial:
      description: Connection
      properties:
        billing_account:
          description: An account requires billing_information to be used as a `billing_account`.
          type: string
        consuming_account:
          description: 'The `id` of the account consuming a service.


            Used to be `owning_customer`.

            '
          example: '2381982'
          type: string
        contract_ref:
          description: 'A reference to a contract. If no specific contract is used,
            a default

            MAY be chosen by the implementer.

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        external_ref:
          description: Reference field, free to use for the API user.
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          maxLength: 80
          type: string
        lacp_timeout:
          description: 'This sets the LACP Timeout mode. Both ends of the connections
            need

            to be configured the same.

            '
          enum:
          - slow
          - fast
          example: slow
          nullable: true
          type: string
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

            the API. A manager can read and update the state of entities.

            '
          example: '238189294'
          type: string
        mode:
          description: 'Sets the mode of the connection. The mode can be:


            - `lag_lacp`: connection is build as a LAG with LACP enabled

            - `lag_static`: connection is build as LAG with static configuration

            - `flex_ethernet`: connect is build as a FlexEthernet channel

            - `standalone`: only one port is allowed in this connection without

            any bundling.

            '
          enum:
          - lag_lacp
          - lag_static
          - flex_ethernet
          - standalone
          example: lag_lacp
          type: string
        name:
          maxLength: 80
          type: string
        outer_vlan_ethertypes:
          description: 'The ethertype of the outer tag in hexadecimal notation.

            '
          example:
          - '0x8100'
          items:
            default: '0x8100'
            enum:
            - '0x8100'
            - '0x88a8'
            - '0x9100'
            type: string
          type: array
        ports:
          description: 'References to the port belonging to this connection. Typically

            all ports within one connection are distributed over the same

            device.

            '
          example:
          - ID23
          - '42'
          - '5'
          items:
            type: string
          type: array
        purchase_order:
          default: ''
          description: 'Purchase Order ID which will be displayed on the invoice.

            '
          example: 'Project: DC Moon'
          maxLength: 80
          type: string
        role_assignments:
          description: 'A set of `RoleAssignment`s. See the documentation

            on the specific `required_contact_roles`,

            `nfc_required_contact_roles` or `nsc_required_contact_roles`

            on what `RoleAssignment`s to provide.

            '
          example:
          - c-impl:123
          - c-noc:331
          items:
            type: string
          type: array
        speed:
          description: 'Shows the total bandwidth of the connection in Mbit/s.

            '
          example: 20000
          minimum: 0
          nullable: true
          type: integer
        state:
          enum:
          - requested
          - allocated
          - testing
          - production
          - production_change_pending
          - decommission_requested
          - decommissioned
          - archived
          - error
          - operator
          - scheduled
          type: string
        status:
          items:
            $ref: '#/components/schemas/Status'
          type: array
        vlan_types:
          description: 'A list of vlan config types you can configure using

            this connection.'
          items:
            enum:
            - port
            - dot1q
            - qinq
            type: string
          type: array
      title: PartialConnection
      type: object
    ConnectionRequest:
      allOf:
      - $ref: '#/components/schemas/ConnectionRequestPartial'
      - required:
        - managing_account
        - consuming_account
        - billing_account
        - role_assignments
        - mode
        title: ConnectionRequest
        type: object
    ConnectionRequestPartial:
      description: Connection Request
      properties:
        billing_account:
          description: An account requires billing_information to be used as a `billing_account`.
          type: string
        consuming_account:
          description: 'The `id` of the account consuming a service.


            Used to be `owning_customer`.

            '
          example: '2381982'
          type: string
        contract_ref:
          description: 'A reference to a contract. If no specific contract is used,
            a default

            MAY be chosen by the implementer.

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        external_ref:
          description: Reference field, free to use for the API user.
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        lacp_timeout:
          description: 'This sets the LACP Timeout mode. Both ends of the connections
            need

            to be configured the same.

            '
          enum:
          - slow
          - fast
          example: slow
          nullable: true
          type: string
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

            the API. A manager can read and update the state of entities.

            '
          example: '238189294'
          type: string
        mode:
          description: 'Sets the mode of the connection. The mode can be:


            - `lag_lacp`: connection is build as a LAG with LACP enabled

            - `lag_static`: connection is build as LAG with static configuration

            - `flex_ethernet`: connect is build as a FlexEthernet channel

            - `standalone`: only one port is allowed in this connection without

            any bundling.

            '
          enum:
          - lag_lacp
          - lag_static
          - flex_ethernet
          - standalone
          example: lag_lacp
          type: string
        purchase_order:
          default: ''
          description: 'Purchase Order ID which will be displayed on the invoice.

            '
          example: 'Project: DC Moon'
          maxLength: 80
          type: string
        role_assignments:
          description: 'A set of `RoleAssignment`s. See the documentation

            on the specific `required_contact_roles`,

            `nfc_required_contact_roles` or `nsc_required_contact_roles`

            on what `RoleAssignment`s to provide.

            '
          example:
          - c-impl:123
          - c-noc:331
          items:
            type: string
          type: array
        speed:
          description: 'Shows the total bandwidth of the connection in Mbit/s.

            '
          example: 20000
          minimum: 0
          nullable: true
          type: integer
      title: PartialConnectionRequest
      type: object
    ConnectionUpdate:
      allOf:
      - $ref: '#/components/schemas/ConnectionUpdatePartial'
      - required:
        - managing_account
        - consuming_account
        - billing_account
        - role_assignments
        - mode
        title: ConnectionUpdate
        type: object
    ConnectionUpdatePartial:
      description: Connection Update
      properties:
        billing_account:
          description: An account requires billing_information to be used as a `billing_account`.
          type: string
        consuming_account:
          description: 'The `id` of the account consuming a service.


            Used to be `owning_customer`.

            '
          example: '2381982'
          type: string
        contract_ref:
          description: 'A reference to a contract. If no specific contract is used,
            a default

            MAY be chosen by the implementer.

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        external_ref:
          description: Reference field, free to use for the API user.
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        lacp_timeout:
          description: 'This sets the LACP Timeout mode. Both ends of the connections
            need

            to be configured the same.

            '
          enum:
          - slow
          - fast
          example: slow
          nullable: true
          type: string
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

            the API. A manager can read and update the state of entities.

            '
          example: '238189294'
          type: string
        mode:
          description: 'Sets the mode of the connection. The mode can be:


            - `lag_lacp`: connection is build as a LAG with LACP enabled

            - `lag_static`: connection is build as LAG with static configuration

            - `flex_ethernet`: connect is build as a FlexEthernet channel

            - `standalone`: only one port is allowed in this connection without

            any bundling.

            '
          enum:
          - lag_lacp
          - lag_static
          - flex_ethernet
          - standalone
          example: lag_lacp
          type: string
        purchase_order:
          default: ''
          description: 'Purchase Order ID which will be displayed on the invoice.

            '
          example: 'Project: DC Moon'
          maxLength: 80
          type: string
        role_assignments:
          description: 'A set of `RoleAssignment`s. See the documentation

            on the specific `required_contact_roles`,

            `nfc_required_contact_roles` or `nsc_required_contact_roles`

            on what `RoleAssignment`s to provide.

            '
          example:
          - c-impl:123
          - c-noc:331
          items:
            type: string
          type: array
        speed:
          description: 'Shows the total bandwidth of the connection in Mbit/s.

            '
          example: 20000
          minimum: 0
          nullable: true
          type: integer
      title: PartialConnectionUpdate
      type: object
    Consumable:
      allOf:
      - $ref: '#/components/schemas/ConsumablePartial'
      - required:
        - consuming_account
        title: Consumable
        type: object
    ConsumablePartial:
      description: Consumable
      properties:
        consuming_account:
          description: 'The `id` of the account consuming a service.


            Used to be `owning_customer`.

            '
          example: '2381982'
          type: string
      title: PartialConsumable
      type: object
    Contact:
      allOf:
      - $ref: '#/components/schemas/ContactPartial'
      - required:
        - managing_account
        - consuming_account
        - id
        title: Contact
        type: object
    ContactPartial:
      description: Contact
      properties:
        consuming_account:
          description: 'The `id` of the account consuming a service.


            Used to be `owning_customer`.

            '
          example: '2381982'
          type: string
        email:
          description: 'The email of the legal company entity.

            '
          example: info@moon-peer.net
          maxLength: 80
          nullable: true
          type: string
        external_ref:
          description: Reference field, free to use for the API user.
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          type: string
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

            the API. A manager can read and update the state of entities.

            '
          example: '238189294'
          type: string
        name:
          description: A name of a person or an organisation
          example: Some A. Name
          maxLength: 128
          nullable: true
          type: string
        telephone:
          description: The telephone number in E.164 Phone Number Formatting
          example: '+442071838750'
          maxLength: 40
          nullable: true
          type: string
      title: PartialContact
      type: object
    ContactRequest:
      allOf:
      - $ref: '#/components/schemas/ContactRequestPartial'
      - required:
        - managing_account
        - consuming_account
        title: ContactRequest
        type: object
    ContactRequestPartial:
      description: A contact creation request
      properties:
        consuming_account:
          description: 'The `id` of the account consuming a service.


            Used to be `owning_customer`.

            '
          example: '2381982'
          type: string
        email:
          description: 'The email of the legal company entity.

            '
          example: info@moon-peer.net
          maxLength: 80
          nullable: true
          type: string
        external_ref:
          description: Reference field, free to use for the API user.
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

            the API. A manager can read and update the state of entities.

            '
          example: '238189294'
          type: string
        name:
          description: A name of a person or an organisation
          example: Some A. Name
          maxLength: 128
          nullable: true
          type: string
        telephone:
          description: The telephone number in E.164 Phone Number Formatting
          example: '+442071838750'
          maxLength: 40
          nullable: true
          type: string
      title: PartialContactRequest
      type: object
    ContactUpdate:
      allOf:
      - $ref: '#/components/schemas/ContactUpdatePartial'
      - required:
        - managing_account
        - consuming_account
        title: ContactUpdate
        type: object
    ContactUpdatePartial:
      description: A contact update
      properties:
        consuming_account:
          description: 'The `id` of the account consuming a service.


            Used to be `owning_customer`.

            '
          example: '2381982'
          type: string
        email:
          description: 'The email of the legal company entity.

            '
          example: info@moon-peer.net
          maxLength: 80
          nullable: true
          type: string
        external_ref:
          description: Reference field, free to use for the API user.
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

            the API. A manager can read and update the state of entities.

            '
          example: '238189294'
          type: string
        name:
          description: A name of a person or an organisation
          example: Some A. Name
          maxLength: 128
          nullable: true
          type: string
        telephone:
          description: The telephone number in E.164 Phone Number Formatting
          example: '+442071838750'
          maxLength: 40
          nullable: true
          type: string
      title: PartialContactUpdate
      type: object
    Contactable:
      allOf:
      - $ref: '#/components/schemas/ContactablePartial'
      - required:
        - role_assignments
        title: Contactable
        type: object
    ContactablePartial:
      description: Contactable
      properties:
        role_assignments:
          description: 'A set of `RoleAssignment`s. See the documentation

            on the specific `required_contact_roles`,

            `nfc_required_contact_roles` or `nsc_required_contact_roles`

            on what `RoleAssignment`s to provide.

            '
          example:
          - c-impl:123
          - c-noc:331
          items:
            type: string
          type: array
      title: PartialContactable
      type: object
    DenyMemberJoiningRule:
      allOf:
      - $ref: '#/components/schemas/DenyMemberJoiningRulePartial'
      - required:
        - managing_account
        - consuming_account
        - id
        - network_service
        - type
        title: DenyMemberJoiningRule
        type: object
    DenyMemberJoiningRulePartial:
      description: A rule for members joining a private vlan
      properties:
        consuming_account:
          description: 'The `id` of the account to which access to the

            network service should be granted or denied.

            '
          example: '2381982'
          type: string
        external_ref:
          description: Reference field, free to use for the API user.
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          type: string
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

            the API. A manager can read and update the state of entities.

            '
          example: '238189294'
          type: string
        network_service:
          type: string
        type:
          example: deny
          type: string
      required:
      - type
      title: PartialDenyMemberJoiningRule
      type: object
    DenyMemberJoiningRuleRequest:
      allOf:
      - $ref: '#/components/schemas/DenyMemberJoiningRuleRequestPartial'
      - required:
        - managing_account
        - consuming_account
        - network_service
        - type
        title: DenyMemberJoiningRuleRequest
        type: object
    DenyMemberJoiningRuleRequestPartial:
      description: A new vlan member joining rule
      properties:
        consuming_account:
          description: 'The `id` of the account to which access to the

            network service should be granted or denied.

            '
          example: '2381982'
          type: string
        external_ref:
          description: Reference field, free to use for the API user.
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

            the API. A manager can read and update the state of entities.

            '
          example: '238189294'
          type: string
        network_service:
          type: string
        type:
          example: deny
          type: string
      required:
      - type
      title: PartialDenyMemberJoiningRuleRequest
      type: object
    DenyMemberJoiningRuleUpdate:
      allOf:
      - $ref: '#/components/schemas/DenyMemberJoiningRuleUpdatePartial'
      - required:
        - managing_account
        - consuming_account
        - type
        title: DenyMemberJoiningRuleUpdate
        type: object
    DenyMemberJoiningRuleUpdatePartial:
      description: A vlan member joining rule update
      properties:
        consuming_account:
          description: 'The `id` of the account to which access to the

            network service should be granted or denied.

            '
          example: '2381982'
          type: string
        external_ref:
          description: Reference field, free to use for the API user.
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

            the API. A manager can read and update the state of entities.

            '
          example: '238189294'
          type: string
        type:
          example: deny
          type: string
      required:
      - type
      title: PartialDenyMemberJoiningRuleUpdate
      type: object
    Device:
      allOf:
      - $ref: '#/components/schemas/DevicePartial'
      - required:
        - name
        - pop
        - id
        title: Device
        type: object
    DeviceCapability:
      allOf:
      - $ref: '#/components/schemas/DeviceCapabilityPartial'
      - title: DeviceCapability
        type: object
    DeviceCapabilityPartial:
      description: Device Capability
      properties:
        availability:
          description: 'Count of available ports on device

            '
          example: 23
          format: int32
          maximum: 2147483647
          minimum: 0
          readOnly: true
          type: integer
        max_lag:
          description: Maximum count of ports which can be bundled to a max_lag
          example: 8
          format: int32
          maximum: 32767
          minimum: 0
          readOnly: true
          type: integer
        media_type:
          description: 'The media type of the port (e.g. 1000BASE-LX, 10GBASE-LR,
            ...)

            '
          example: 1000BASE-LX
          maxLength: 20
          readOnly: true
          type: string
        speed:
          description: 'Speed of port in Mbit/s

            '
          example: 1000
          readOnly: true
          type: integer
      title: PartialDeviceCapability
      type: object
    DeviceConnection:
      allOf:
      - $ref: '#/components/schemas/DeviceConnectionPartial'
      - required:
        - capacity_max
        - device
        - connected_device
        - id
        title: DeviceConnection
        type: object
    DeviceConnectionPartial:
      description: Device Connection
      properties:
        capacity_max:
          format: int32
          maximum: 2147483647
          minimum: 0
          type: integer
        connected_device:
          type: string
        device:
          type: string
        id:
          maxLength: 80
          type: string
      title: PartialDeviceConnection
      type: object
    DevicePartial:
      description: Device
      properties:
        capabilities:
          items:
            $ref: '#/components/schemas/DeviceCapability'
          type: array
        facility:
          description: 'Identifier of the facility where the device

            is physically based.'
          readOnly: true
          type: string
        id:
          maxLength: 80
          type: string
        name:
          description: 'Name of the device

            '
          example: edge2.moon.space-ix.net
          maxLength: 180
          type: string
        pop:
          description: The `PointOfPresence` the device is in.
          type: string
      title: PartialDevice
      type: object
    Event:
      allOf:
      - $ref: '#/components/schemas/EventPartial'
      - required:
        - serial
        - type
        - payload
        - timestamp
        title: Event
        type: object
    EventPartial:
      description: Event
      properties:
        account:
          readOnly: true
          type: string
        payload:
          type: object
        serial:
          type: integer
        timestamp:
          format: date-time
          type: string
        type:
          type: string
      title: PartialEvent
      type: object
    ExchangeLanNetworkProductOffering:
      allOf:
      - $ref: '#/components/schemas/ExchangeLanNetworkProductOfferingPartial'
      - required:
        - id
        - name
        - display_name
        - provider_vlans
        - resource_type
        - handover_metro_area_network
        - handover_metro_area
        - service_metro_area_network
        - service_metro_area
        - bandwidth_min
        - bandwidth_max
        - physical_port_speed
        - service_provider
        - downgrade_allowed
        - upgrade_allowed
        - type
        title: ExchangeLanNetworkProductOffering
        type: object
    ExchangeLanNetworkProductOfferingPartial:
      description: Exchange Lan Network Product Offering
      properties:
        bandwidth_max:
          description: 'When not `null`, this value enforces a mandatory

            rate limit for all network service configs.'
          minimum: 0
          nullable: true
          type: integer
        bandwidth_min:
          description: 'When configuring access to the network service, at least

            this `capacity` must be provided.'
          minimum: 0
          nullable: true
          type: integer
        display_name:
          maxLength: 256
          type: string
        downgrade_allowed:
          description: 'Indicates if the service can be migrated to

            a lower bandwidth.'
          type: boolean
        handover_metro_area:
          description: 'Id of the `MetroArea`. The network service will be

            accessed from this metro area.

            '
          example: met:29381993:NYC
          type: string
        handover_metro_area_network:
          description: 'Id of the `MetroAreaNetwork`. The service will be accessed

            through the handover metro area network.

            '
          example: '191239810'
          type: string
        id:
          maxLength: 80
          type: string
        name:
          description: Name of the product
          maxLength: 160
          type: string
        physical_port_speed:
          description: 'If the service is dependent on the speed of

            the physical port this field denotes the speed.'
          minimum: 0
          nullable: true
          type: integer
        provider_vlans:
          description: The `NetworkService` provides `single` or `multi`ple vlans.
          enum:
          - single
          - multi
          type: string
        resource_type:
          description: 'The resource type refers to an ix-api resource.

            '
          enum:
          - connection
          - demarc
          - network_service
          - network_service_config
          example: network_service
          type: string
        service_metro_area:
          description: 'Id of the `MetroArea`. The service is delivered

            in this metro area.

            '
          example: met:213913485:LON
          type: string
        service_metro_area_network:
          description: 'Id of the `MetroAreaNetwork`.

            The service is directly provided on the metro area network.

            '
          example: '9123843'
          type: string
        service_provider:
          description: 'The name of the provider providing the service.

            '
          example: AWS
          type: string
        type:
          example: exchange_lan
          type: string
        upgrade_allowed:
          description: 'Indicates if the service can be migrated to

            a higher bandwidth.'
          type: boolean
      required:
      - type
      title: PartialExchangeLanNetworkProductOffering
      type: object
    ExchangeLanNetworkService:
      allOf:
      - $ref: '#/components/schemas/ExchangeLanNetworkServicePartial'
      - required:
        - state
        - id
        - managing_account
        - consuming_account
        - product_offering
        - name
        - metro_area_network
        - network_features
        - subnet_v4
        - subnet_v6
        - type
        title: ExchangeLanNetworkService
        type: object
    ExchangeLanNetworkServiceConfig:
      allOf:
      - $ref: '#/components/schemas/ExchangeLanNetworkServiceConfigPartial'
      - required:
        - state
        - id
        - network_service
        - managing_account
        - consuming_account
        - billing_account
        - role_assignments
        - connection
        - vlan_config
        - asns
        - listed
        - type
        title: ExchangeLanNetworkServiceConfig
        type: object
    ExchangeLanNetworkServiceConfigPartial:
      description: Exchange Lan Network Service Config
      properties:
        asns:
          items:
            format: int64
            maximum: 4294967295
            minimum: 0
            type: integer
          type: array
        billing_account:
          description: An account requires billing_information to be used as a `billing_account`.
          type: string
        capacity:
          description: 'The capacity of the service in Mbps. If set to Null,

            the maximum capacity will be used, i.e. the virtual circuit is

            not rate-limited.


            An exchange may choose to constrain the available capacity range

            of a `ProductOffering`.


            That means, the service can consume up to the total bandwidth

            of the `Connection`.


            Typically the service is charged based on the capacity.'
          minimum: 1
          nullable: true
          type: integer
        connection:
          description: The id of the connection to use for this `NetworkServiceConfig`.
          type: string
        consuming_account:
          description: 'The `id` of the account consuming a service.


            Used to be `owning_customer`.

            '
          example: '2381982'
          type: string
        contract_ref:
          description: 'A reference to a contract. If no specific contract is used,
            a default

            MAY be chosen by the implementer.

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        external_ref:
          description: Reference field, free to use for the API user.
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          maxLength: 80
          type: string
        ips:
          description: 'A list of ip-address IDs.


            Allocation of IP Addresses might be deferred depending on

            the IXP implementation. No assumption should be made.'
          items:
            type: string
          readOnly: true
          type: array
        listed:
          description: The customer wants to be featured on the member list
          type: boolean
        macs:
          description: A list of mac-address IDs.
          items:
            type: string
          type: array
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

            the API. A manager can read and update the state of entities.

            '
          example: '238189294'
          type: string
        network_feature_configs:
          description: 'A list of ids of `NetworkFeatureConfig`s.

            '
          example:
          - '12356'
          - '43829'
          items:
            type: string
          readOnly: true
          type: array
        network_service:
          description: The id of the configured network service.
          type: string
        purchase_order:
          default: ''
          description: 'Purchase Order ID which will be displayed on the invoice.

            '
          example: 'Project: DC Moon'
          maxLength: 80
          type: string
        role_assignments:
          description: 'A set of `RoleAssignment`s. See the documentation

            on the specific `required_contact_roles`,

            `nfc_required_contact_roles` or `nsc_required_contact_roles`

            on what `RoleAssignment`s to provide.

            '
          example:
          - c-impl:123
          - c-noc:331
          items:
            type: string
          type: array
        state:
          enum:
          - requested
          - allocated
          - testing
          - production
          - production_change_pending
          - decommission_requested
          - decommissioned
          - archived
          - error
          - operator
          - scheduled
          type: string
        status:
          items:
            $ref: '#/components/schemas/Status'
          type: array
        type:
          example: exchange_lan
          type: string
        vlan_config:
          $ref: '#/components/schemas/VlanConfig'
      required:
      - type
      title: PartialExchangeLanNetworkServiceConfig
      type: object
    ExchangeLanNetworkServiceConfigRequest:
      allOf:
      - $ref: '#/components/schemas/ExchangeLanNetworkServiceConfigRequestPartial'
      - required:
        - managing_account
        - consuming_account
        - network_service
        - billing_account
        - role_assignments
        - connection
        - vlan_config
        - asns
        - listed
        - type
        title: ExchangeLanNetworkServiceConfigRequest
        type: object
    ExchangeLanNetworkServiceConfigRequestPartial:
      description: Exchange Lan Network Service Config Request
      properties:
        asns:
          items:
            format: int64
            maximum: 4294967295
            minimum: 0
            type: integer
          type: array
        billing_account:
          description: An account requires billing_information to be used as a `billing_account`.
          type: string
        capacity:
          description: 'The capacity of the service in Mbps. If set to Null,

            the maximum capacity will be used, i.e. the virtual circuit is

            not rate-limited.


            An exchange may choose to constrain the available capacity range

            of a `ProductOffering`.


            That means, the service can consume up to the total bandwidth

            of the `Connection`.


            Typically the service is charged based on the capacity.'
          minimum: 1
          nullable: true
          type: integer
        connection:
          description: The id of the connection to use for this `NetworkServiceConfig`.
          type: string
        consuming_account:
          description: 'The `id` of the account consuming a service.


            Used to be `owning_customer`.

            '
          example: '2381982'
          type: string
        contract_ref:
          description: 'A reference to a contract. If no specific contract is used,
            a default

            MAY be chosen by the implementer.

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        external_ref:
          description: Reference field, free to use for the API user.
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        ips:
          description: 'A list of ip-address IDs.


            Allocation of IP Addresses might be deferred depending on

            the IXP implementation. No assumption should be made.'
          items:
            type: string
          readOnly: true
          type: array
        listed:
          description: The customer wants to be featured on the member list
          type: boolean
        macs:
          description: A list of mac-address IDs.
          items:
            type: string
          type: array
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

            the API. A manager can read and update the state of entities.

            '
          example: '238189294'
          type: string
        network_feature_configs:
          description: 'A list of ids of `NetworkFeatureConfig`s.

            '
          example:
          - '12356'
          - '43829'
          items:
            type: string
          readOnly: true
          type: array
        network_service:
          description: The id of the `NetworkService` to configure.
          type: string
        purchase_order:
          default: ''
          description: 'Purchase Order ID which will be displayed on the invoice.

            '
          example: 'Project: DC Moon'
          maxLength: 80
          type: string
        role_assignments:
          description: 'A set of `RoleAssignment`s. See the documentation

            on the specific `required_contact_roles`,

            `nfc_required_contact_roles` or `nsc_required_contact_roles`

            on what `RoleAssignment`s to provide.

            '
          example:
          - c-impl:123
          - c-noc:331
          items:
            type: string
          type: array
        type:
          example: exchange_lan
          type: string
        vlan_config:
          $ref: '#/components/schemas/VlanConfig'
      required:
      - type
      title: PartialExchangeLanNetworkServiceConfigRequest
      type: object
    ExchangeLanNetworkServiceConfigUpdate:
      allOf:
      - $ref: '#/components/schemas/ExchangeLanNetworkServiceConfigUpdatePartial'
      - required:
        - managing_account
        - consuming_account
        - vlan_config
        - billing_account
        - role_assignments
        - connection
        - asns
        - listed
        - type
        title: ExchangeLanNetworkServiceConfigUpdate
        type: object
    ExchangeLanNetworkServiceConfigUpdatePartial:
      description: Exchange Lan Network Service Config Update
      properties:
        asns:
          items:
            format: int64
            maximum: 4294967295
            minimum: 0
            type: integer
          type: array
        billing_account:
          description: An account requires billing_information to be used as a `billing_account`.
          type: string
        capacity:
          description: 'The capacity of the service in Mbps. If set to Null,

            the maximum capacity will be used, i.e. the virtual circuit is

            not rate-limited.


            An exchange may choose to constrain the available capacity range

            of a `ProductOffering`.


            That means, the service can consume up to the total bandwidth

            of the `Connection`.


            Typically the service is charged based on the capacity.'
          minimum: 1
          nullable: true
          type: integer
        connection:
          description: The id of the connection to use for this `NetworkServiceConfig`.
          type: string
        consuming_account:
          description: 'The `id` of the account consuming a service.


            Used to be `owning_customer`.

            '
          example: '2381982'
          type: string
        contract_ref:
          description: 'A reference to a contract. If no specific contract is used,
            a default

            MAY be chosen by the implementer.

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        external_ref:
          description: Reference field, free to use for the API user.
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        ips:
          description: 'A list of ip-address IDs.


            Allocation of IP Addresses might be deferred depending on

            the IXP implementation. No assumption should be made.'
          items:
            type: string
          readOnly: true
          type: array
        listed:
          description: The customer wants to be featured on the member list
          type: boolean
        macs:
          description: A list of mac-address IDs.
          items:
            type: string
          type: array
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

            the API. A manager can read and update the state of entities.

            '
          example: '238189294'
          type: string
        network_feature_configs:
          description: 'A list of ids of `NetworkFeatureConfig`s.

            '
          example:
          - '12356'
          - '43829'
          items:
            type: string
          readOnly: true
          type: array
        purchase_order:
          default: ''
          description: 'Purchase Order ID which will be displayed on the invoice.

            '
          example: 'Project: DC Moon'
          maxLength: 80
          type: string
        role_assignments:
          description: 'A set of `RoleAssignment`s. See the documentation

            on the specific `required_contact_roles`,

            `nfc_required_contact_roles` or `nsc_required_contact_roles`

            on what `RoleAssignment`s to provide.

            '
          example:
          - c-impl:123
          - c-noc:331
          items:
            type: string
          type: array
        type:
          example: exchange_lan
          type: string
        vlan_config:
          $ref: '#/components/schemas/VlanConfig'
      required:
      - type
      title: PartialExchangeLanNetworkServiceConfigUpdate
      type: object
    ExchangeLanNetworkServicePartial:
      description: Exchange Lan Network Service
      properties:
        consuming_account:
          description: 'The `id` of the account consuming a service.


            Used to be `owning_customer`.

            '
          example: '2381982'
          type: string
        external_ref:
          description: Reference field, free to use for the API user.
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          type: string
        ixfdb_ixid:
          description: id of ixfdb
          nullable: true
          type: integer
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

            the API. A manager can read and update the state of entities.

            '
          example: '238189294'
          type: string
        metro_area_network:
          description: 'Id of the `MetroAreaNetwork` where

            the exchange lan network service is directly provided.


            Same as `service_metro_area_network` on the related

            `ProductOffering`.

            '
          example: man:293225:LON2
          type: string
        name:
          description: Exchange-dependent service name, will be shown on the invoice.
          maxLength: 40
          type: string
        network_features:
          items:
            type: string
          type: array
        nsc_required_contact_roles:
          description: 'The configuration will require at least one of each of the

            specified roles assigned to contacts.


            The `RoleAssignment` is associated through the

            `role_assignments` list property of the network service configuration.'
          items:
            type: string
          readOnly: true
          type: array
        peeringdb_ixid:
          description: PeeringDB ixid
          nullable: true
          type: integer
        product_offering:
          type: string
        state:
          enum:
          - requested
          - allocated
          - testing
          - production
          - production_change_pending
          - decommission_requested
          - decommissioned
          - archived
          - error
          - operator
          - scheduled
          type: string
        status:
          items:
            $ref: '#/components/schemas/Status'
          type: array
        subnet_v4:
          description: 'IPv4 subnet in [dot-decimal notation](https://en.wikipedia.org/wiki/Dot-decimal_notation)

            CIDR notation.

            '
          example: 23.142.52.0/21
          type: string
        subnet_v6:
          description: 'IPv6 subnet in hexadecimal colon separated CIDR notation.

            '
          example: 2001:23:42::/48
          type: string
        type:
          example: exchange_lan
          type: string
      required:
      - type
      title: PartialExchangeLanNetworkService
      type: object
    ExternalReference:
      allOf:
      - $ref: '#/components/schemas/ExternalReferencePartial'
      - title: ExternalReference
        type: object
    ExternalReferencePartial:
      description: External Reference
      properties:
        external_ref:
          description: Reference field, free to use for the API user.
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
      title: PartialExternalReference
      type: object
    Facility:
      allOf:
      - $ref: '#/components/schemas/FacilityPartial'
      - required:
        - name
        - metro_area
        - address_country
        - address_locality
        - address_region
        - postal_code
        - street_address
        - organisation_name
        - pops
        - id
        title: Facility
        type: object
    FacilityPartial:
      description: Facility
      properties:
        address_country:
          description: 'ISO 3166-1 alpha-2 country code, for example DE

            '
          example: US
          maxLength: 2
          type: string
        address_locality:
          description: The locality/city. For example, Mountain View.
          example: Mountain View
          maxLength: 80
          type: string
        address_region:
          description: The region. For example, CA
          example: CA
          maxLength: 80
          type: string
        id:
          maxLength: 80
          type: string
        metro_area:
          description: 'Id of the `MetroArea` the DC is located in.

            '
          example: met:93214980:BER
          type: string
        name:
          description: 'Name of the Datacenter as called by the operator

            '
          example: Crater DC Moon 1
          maxLength: 80
          type: string
        organisation_name:
          description: 'Name of Datacenter operator

            '
          example: Moon Datacenters
          maxLength: 80
          type: string
        peeringdb_facility_id:
          description: '[PeeringDB](https://www.peeringdb.com) facitlity ID,

            can be extracted from the url https://www.peeringdb.com/fac/$id

            '
          example: 103
          format: int32
          maximum: 2147483647
          minimum: 0
          nullable: true
          type: integer
        pops:
          description: List of pops in the `Facility`.
          items:
            type: string
          type: array
        postal_code:
          description: A postal code. For example, 9404
          example: '9409'
          maxLength: 18
          type: string
        street_address:
          description: The street address. For example, 1600 Amphitheatre Pkwy.
          example: 1600 Amphitheatre Pkwy.
          maxLength: 80
          type: string
      title: PartialFacility
      type: object
    HealthResponse:
      allOf:
      - $ref: '#/components/schemas/HealthResponsePartial'
      - required:
        - status
        title: HealthResponse
        type: object
    HealthResponsePartial:
      description: Health Status Response
      properties:
        checks:
          additionalProperties:
            additionalProperties:
              type: string
            type: object
          description: 'The "checks" object MAY have a number of unique keys,

            one for each logical downstream dependency or sub-component.


            Since each sub-component may be backed by several nodes

            with varying health statuses, these keys point to arrays

            of objects. In case of a single-node sub-component

            (or if presence of nodes is not relevant), a single-element

            array SHOULD be used as the value, for consistency.


            Please see

            https://tools.ietf.org/id/draft-inadarei-api-health-check-04.html#the-checks-object

            for details.'
          type: object
        description:
          description: A human-friendly description of the service.
          type: string
        links:
          additionalProperties:
            type: string
          description: 'Is an object containing link relations and URIs [RFC3986]

            for external links that MAY contain more information about

            the health of the endpoint.'
          type: object
        notes:
          description: Array of notes relevant to current state of health.
          items:
            type: string
          type: array
        output:
          description: Raw error output, in case of "fail" or "warn" states.
          type: string
        releaseId:
          description: 'Release version of the api implementation.

            '
          example: 1.23.0
          type: string
        serviceId:
          description: A unique identifier of the service, in the application scope.
          type: string
        status:
          description: 'status indicates whether the service status is

            acceptable or not.'
          enum:
          - pass
          - fail
          - warn
          type: string
        version:
          description: 'Public version of the service.

            '
          example: '1'
          type: string
      title: PartialHealthResponse
      type: object
    IXPSpecificFeatureFlag:
      allOf:
      - $ref: '#/components/schemas/IXPSpecificFeatureFlagPartial'
      - required:
        - name
        - description
        title: IXPSpecificFeatureFlag
        type: object
    IXPSpecificFeatureFlagPartial:
      description: IXP-Specific Feature Flag
      properties:
        description:
          description: 'The description of the feature flag.

            '
          example: RPKI reject invalid filtering is available
          maxLength: 80
          type: string
        name:
          description: 'The name of the feature flag.

            '
          example: RPKI
          maxLength: 20
          type: string
      title: PartialIXPSpecificFeatureFlag
      type: object
    Invoiceable:
      allOf:
      - $ref: '#/components/schemas/InvoiceablePartial'
      - required:
        - billing_account
        title: Invoiceable
        type: object
    InvoiceablePartial:
      description: Invoiceable
      properties:
        billing_account:
          description: An account requires billing_information to be used as a `billing_account`.
          type: string
        contract_ref:
          description: 'A reference to a contract. If no specific contract is used,
            a default

            MAY be chosen by the implementer.

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        purchase_order:
          default: ''
          description: 'Purchase Order ID which will be displayed on the invoice.

            '
          example: 'Project: DC Moon'
          maxLength: 80
          type: string
      title: PartialInvoiceable
      type: object
    IpAddress:
      allOf:
      - $ref: '#/components/schemas/IpAddressPartial'
      - required:
        - managing_account
        - consuming_account
        - version
        - address
        - prefix_length
        - id
        title: IpAddress
        type: object
    IpAddressPartial:
      description: IP-Address
      properties:
        address:
          description: 'IPv4 or IPv6 Address in the following format:

            - IPv4: [dot-decimal notation](https://en.wikipedia.org/wiki/Dot-decimal_notation)

            - IPv6: hexadecimal colon separated notation

            '
          example: 23.142.52.0
          type: string
        consuming_account:
          description: 'The `id` of the account consuming a service.


            Used to be `owning_customer`.

            '
          example: '2381982'
          type: string
        external_ref:
          description: Reference field, free to use for the API user.
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        fqdn:
          maxLength: 100
          nullable: true
          type: string
        id:
          maxLength: 80
          type: string
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

            the API. A manager can read and update the state of entities.

            '
          example: '238189294'
          type: string
        prefix_length:
          description: 'The CIDR ip prefix length

            '
          example: 23
          format: int32
          maximum: 128
          minimum: 0
          type: integer
        valid_not_after:
          format: date-time
          nullable: true
          type: string
        valid_not_before:
          format: date-time
          nullable: true
          type: string
        version:
          description: 'The version of the internet protocol.

            '
          example: 4
          type: integer
      title: PartialIpAddress
      type: object
    IpAddressRequest:
      allOf:
      - $ref: '#/components/schemas/IpAddressRequestPartial'
      - required:
        - managing_account
        - consuming_account
        - version
        - address
        - prefix_length
        title: IpAddressRequest
        type: object
    IpAddressRequestPartial:
      description: IP-Address / Prefix allocation Request
      properties:
        address:
          description: 'IPv4 or IPv6 Address in the following format:

            - IPv4: [dot-decimal notation](https://en.wikipedia.org/wiki/Dot-decimal_notation)

            - IPv6: hexadecimal colon separated notation

            '
          example: 23.142.52.0
          type: string
        consuming_account:
          description: 'The `id` of the account consuming a service.


            Used to be `owning_customer`.

            '
          example: '2381982'
          type: string
        external_ref:
          description: Reference field, free to use for the API user.
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        fqdn:
          maxLength: 100
          nullable: true
          type: string
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

            the API. A manager can read and update the state of entities.

            '
          example: '238189294'
          type: string
        prefix_length:
          description: 'The CIDR ip prefix length

            '
          example: 23
          format: int32
          maximum: 128
          minimum: 0
          type: integer
        valid_not_after:
          format: date-time
          nullable: true
          type: string
        valid_not_before:
          format: date-time
          nullable: true
          type: string
        version:
          description: 'The version of the internet protocol.

            '
          example: 4
          type: integer
      title: PartialIpAddressRequest
      type: object
    IpAddressUpdate:
      allOf:
      - $ref: '#/components/schemas/IpAddressUpdatePartial'
      - required:
        - managing_account
        - consuming_account
        - version
        - address
        - prefix_length
        title: IpAddressUpdate
        type: object
    IpAddressUpdatePartial:
      description: IP-Address Update
      properties:
        address:
          description: 'IPv4 or IPv6 Address in the following format:

            - IPv4: [dot-decimal notation](https://en.wikipedia.org/wiki/Dot-decimal_notation)

            - IPv6: hexadecimal colon separated notation

            '
          example: 23.142.52.0
          type: string
        consuming_account:
          description: 'The `id` of the account consuming a service.


            Used to be `owning_customer`.

            '
          example: '2381982'
          type: string
        external_ref:
          description: Reference field, free to use for the API user.
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        fqdn:
          maxLength: 100
          nullable: true
          type: string
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

            the API. A manager can read and update the state of entities.

            '
          example: '238189294'
          type: string
        prefix_length:
          description: 'The CIDR ip prefix length

            '
          example: 23
          format: int32
          maximum: 128
          minimum: 0
          type: integer
        valid_not_after:
          format: date-time
          nullable: true
          type: string
        valid_not_before:
          format: date-time
          nullable: true
          type: string
        version:
          description: 'The version of the internet protocol.

            '
          example: 4
          type: integer
      title: PartialIpAddressUpdate
      type: object
    MP2MPNetworkProductOffering:
      allOf:
      - $ref: '#/components/schemas/MP2MPNetworkProductOfferingPartial'
      - required:
        - id
        - name
        - display_name
        - provider_vlans
        - resource_type
        - handover_metro_area_network
        - handover_metro_area
        - service_metro_area_network
        - service_metro_area
        - bandwidth_min
        - bandwidth_max
        - physical_port_speed
        - service_provider
        - downgrade_allowed
        - upgrade_allowed
        - type
        title: MP2MPNetworkProductOffering
        type: object
    MP2MPNetworkProductOfferingPartial:
      description: MP2MP Network Product Offering
      properties:
        bandwidth_max:
          description: 'When not `null`, this value enforces a mandatory

            rate limit for all network service configs.'
          minimum: 0
          nullable: true
          type: integer
        bandwidth_min:
          description: 'When configuring access to the network service, at least

            this `capacity` must be provided.'
          minimum: 0
          nullable: true
          type: integer
        display_name:
          maxLength: 256
          type: string
        downgrade_allowed:
          description: 'Indicates if the service can be migrated to

            a lower bandwidth.'
          type: boolean
        handover_metro_area:
          description: 'Id of the `MetroArea`. The network service will be

            accessed from this metro area.

            '
          example: met:29381993:NYC
          type: string
        handover_metro_area_network:
          description: 'Id of the `MetroAreaNetwork`. The service will be accessed

            through the handover metro area network.

            '
          example: '191239810'
          type: string
        id:
          maxLength: 80
          type: string
        name:
          description: Name of the product
          maxLength: 160
          type: string
        physical_port_speed:
          description: 'If the service is dependent on the speed of

            the physical port this field denotes the speed.'
          minimum: 0
          nullable: true
          type: integer
        provider_vlans:
          description: The `NetworkService` provides `single` or `multi`ple vlans.
          enum:
          - single
          - multi
          type: string
        resource_type:
          description: 'The resource type refers to an ix-api resource.

            '
          enum:
          - connection
          - demarc
          - network_service
          - network_service_config
          example: network_service
          type: string
        service_metro_area:
          description: 'Id of the `MetroArea`. The service is delivered

            in this metro area.

            '
          example: met:213913485:LON
          type: string
        service_metro_area_network:
          description: 'Id of the `MetroAreaNetwork`.

            The service is directly provided on the metro area network.

            '
          example: '9123843'
          type: string
        service_provider:
          description: 'The name of the provider providing the service.

            '
          example: AWS
          type: string
        type:
          example: mp2mp_vc
          type: string
        upgrade_allowed:
          description: 'Indicates if the service can be migrated to

            a higher bandwidth.'
          type: boolean
      required:
      - type
      title: PartialMP2MPNetworkProductOffering
      type: object
    MP2MPNetworkService:
      allOf:
      - $ref: '#/components/schemas/MP2MPNetworkServicePartial'
      - required:
        - state
        - id
        - managing_account
        - consuming_account
        - billing_account
        - product_offering
        - name
        - member_joining_rules
        - network_features
        - type
        title: MP2MPNetworkService
        type: object
    MP2MPNetworkServiceConfig:
      allOf:
      - $ref: '#/components/schemas/MP2MPNetworkServiceConfigPartial'
      - required:
        - state
        - id
        - network_service
        - managing_account
        - consuming_account
        - billing_account
        - role_assignments
        - connection
        - vlan_config
        - type
        title: MP2MPNetworkServiceConfig
        type: object
    MP2MPNetworkServiceConfigPartial:
      description: MP2MP Network Service Config
      properties:
        billing_account:
          description: An account requires billing_information to be used as a `billing_account`.
          type: string
        capacity:
          description: 'The capacity of the service in Mbps. If set to Null,

            the maximum capacity will be used, i.e. the virtual circuit is

            not rate-limited.


            An exchange may choose to constrain the available capacity range

            of a `ProductOffering`.


            That means, the service can consume up to the total bandwidth

            of the `Connection`.


            Typically the service is charged based on the capacity.'
          minimum: 1
          nullable: true
          type: integer
        connection:
          description: The id of the connection to use for this `NetworkServiceConfig`.
          type: string
        consuming_account:
          description: 'The `id` of the account consuming a service.


            Used to be `owning_customer`.

            '
          example: '2381982'
          type: string
        contract_ref:
          description: 'A reference to a contract. If no specific contract is used,
            a default

            MAY be chosen by the implementer.

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        external_ref:
          description: Reference field, free to use for the API user.
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          maxLength: 80
          type: string
        macs:
          items:
            type: string
          type: array
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

            the API. A manager can read and update the state of entities.

            '
          example: '238189294'
          type: string
        network_feature_configs:
          description: 'A list of ids of `NetworkFeatureConfig`s.

            '
          example:
          - '12356'
          - '43829'
          items:
            type: string
          readOnly: true
          type: array
        network_service:
          description: The id of the configured network service.
          type: string
        purchase_order:
          default: ''
          description: 'Purchase Order ID which will be displayed on the invoice.

            '
          example: 'Project: DC Moon'
          maxLength: 80
          type: string
        role_assignments:
          description: 'A set of `RoleAssignment`s. See the documentation

            on the specific `required_contact_roles`,

            `nfc_required_contact_roles` or `nsc_required_contact_roles`

            on what `RoleAssignment`s to provide.

            '
          example:
          - c-impl:123
          - c-noc:331
          items:
            type: string
          type: array
        state:
          enum:
          - requested
          - allocated
          - testing
          - production
          - production_change_pending
          - decommission_requested
          - decommissioned
          - archived
          - error
          - operator
          - scheduled
          type: string
        status:
          items:
            $ref: '#/components/schemas/Status'
          type: array
        type:
          example: mp2mp_vc
          type: string
        vlan_config:
          $ref: '#/components/schemas/VlanConfig'
      required:
      - type
      title: PartialMP2MPNetworkServiceConfig
      type: object
    MP2MPNetworkServiceConfigRequest:
      allOf:
      - $ref: '#/components/schemas/MP2MPNetworkServiceConfigRequestPartial'
      - required:
        - managing_account
        - consuming_account
        - network_service
        - billing_account
        - role_assignments
        - connection
        - vlan_config
        - type
        title: MP2MPNetworkServiceConfigRequest
        type: object
    MP2MPNetworkServiceConfigRequestPartial:
      description: MP2MP Network Service Config Request
      properties:
        billing_account:
          description: An account requires billing_information to be used as a `billing_account`.
          type: string
        capacity:
          description: 'The capacity of the service in Mbps. If set to Null,

            the maximum capacity will be used, i.e. the virtual circuit is

            not rate-limited.


            An exchange may choose to constrain the available capacity range

            of a `ProductOffering`.


            That means, the service can consume up to the total bandwidth

            of the `Connection`.


            Typically the service is charged based on the capacity.'
          minimum: 1
          nullable: true
          type: integer
        connection:
          description: The id of the connection to use for this `NetworkServiceConfig`.
          type: string
        consuming_account:
          description: 'The `id` of the account consuming a service.


            Used to be `owning_customer`.

            '
          example: '2381982'
          type: string
        contract_ref:
          description: 'A reference to a contract. If no specific contract is used,
            a default

            MAY be chosen by the implementer.

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        external_ref:
          description: Reference field, free to use for the API user.
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        macs:
          items:
            type: string
          type: array
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

            the API. A manager can read and update the state of entities.

            '
          example: '238189294'
          type: string
        network_feature_configs:
          description: 'A list of ids of `NetworkFeatureConfig`s.

            '
          example:
          - '12356'
          - '43829'
          items:
            type: string
          readOnly: true
          type: array
        network_service:
          description: The id of the `NetworkService` to configure.
          type: string
        purchase_order:
          default: ''
          description: 'Purchase Order ID which will be displayed on the invoice.

            '
          example: 'Project: DC Moon'
          maxLength: 80
          type: string
        role_assignments:
          description: 'A set of `RoleAssignment`s. See the documentation

            on the specific `required_contact_roles`,

            `nfc_required_contact_roles` or `nsc_required_contact_roles`

            on what `RoleAssignment`s to provide.

            '
          example:
          - c-impl:123
          - c-noc:331
          items:
            type: string
          type: array
        type:
          example: mp2mp_vc
          type: string
        vlan_config:
          $ref: '#/components/schemas/VlanConfig'
      required:
      - type
      title: PartialMP2MPNetworkServiceConfigRequest
      type: object
    MP2MPNetworkServiceConfigUpdate:
      allOf:
      - $ref: '#/components/schemas/MP2MPNetworkServiceConfigUpdatePartial'
      - required:
        - managing_account
        - consuming_account
        - vlan_config
        - billing_account
        - role_assignments
        - connection
        - type
        title: MP2MPNetworkServiceConfigUpdate
        type: object
    MP2MPNetworkServiceConfigUpdatePartial:
      description: MP2MP Network Service Config Update
      properties:
        billing_account:
          description: An account requires billing_information to be used as a `billing_account`.
          type: string
        capacity:
          description: 'The capacity of the service in Mbps. If set to Null,

            the maximum capacity will be used, i.e. the virtual circuit is

            not rate-limited.


            An exchange may choose to constrain the available capacity range

            of a `ProductOffering`.


            That means, the service can consume up to the total bandwidth

            of the `Connection`.


            Typically the service is charged based on the capacity.'
          minimum: 1
          nullable: true
          type: integer
        connection:
          description: The id of the connection to use for this `NetworkServiceConfig`.
          type: string
        consuming_account:
          description: 'The `id` of the account consuming a service.


            Used to be `owning_customer`.

            '
          example: '2381982'
          type: string
        contract_ref:
          description: 'A reference to a contract. If no specific contract is used,
            a default

            MAY be chosen by the implementer.

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        external_ref:
          description: Reference field, free to use for the API user.
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        macs:
          items:
            type: string
          type: array
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

            the API. A manager can read and update the state of entities.

            '
          example: '238189294'
          type: string
        network_feature_configs:
          description: 'A list of ids of `NetworkFeatureConfig`s.

            '
          example:
          - '12356'
          - '43829'
          items:
            type: string
          readOnly: true
          type: array
        purchase_order:
          default: ''
          description: 'Purchase Order ID which will be displayed on the invoice.

            '
          example: 'Project: DC Moon'
          maxLength: 80
          type: string
        role_assignments:
          description: 'A set of `RoleAssignment`s. See the documentation

            on the specific `required_contact_roles`,

            `nfc_required_contact_roles` or `nsc_required_contact_roles`

            on what `RoleAssignment`s to provide.

            '
          example:
          - c-impl:123
          - c-noc:331
          items:
            type: string
          type: array
        type:
          example: mp2mp_vc
          type: string
        vlan_config:
          $ref: '#/components/schemas/VlanConfig'
      required:
      - type
      title: PartialMP2MPNetworkServiceConfigUpdate
      type: object
    MP2MPNetworkServicePartial:
      description: MP2MP Network Service
      properties:
        billing_account:
          description: An account requires billing_information to be used as a `billing_account`.
          type: string
        consuming_account:
          description: 'The `id` of the account consuming a service.


            Used to be `owning_customer`.

            '
          example: '2381982'
          type: string
        contract_ref:
          description: 'A reference to a contract. If no specific contract is used,
            a default

            MAY be chosen by the implementer.

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        external_ref:
          description: Reference field, free to use for the API user.
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          type: string
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

            the API. A manager can read and update the state of entities.

            '
          example: '238189294'
          type: string
        member_joining_rules:
          items:
            type: string
          type: array
        name:
          description: 'Name of the multi-point to multi-point

            virtual circuit.'
          maxLength: 40
          type: string
        network_features:
          items:
            type: string
          type: array
        nsc_required_contact_roles:
          description: 'The configuration will require at least one of each of the

            specified roles assigned to contacts.


            The `RoleAssignment` is associated through the

            `role_assignments` list property of the network service configuration.'
          items:
            type: string
          readOnly: true
          type: array
        product_offering:
          type: string
        public:
          default: false
          description: 'A public mp2mp network service can be joined

            by everyone on the exchange unless denied by

            a member-joining-rule.


            Public network services are visible to other

            members of the IXP, however only `name`, `type`,

            `product_offering`, `consuming_account` and

            `managing_account` are made available.


            Other required fields are redacted.'
          type: boolean
        purchase_order:
          default: ''
          description: 'Purchase Order ID which will be displayed on the invoice.

            '
          example: 'Project: DC Moon'
          maxLength: 80
          type: string
        state:
          enum:
          - requested
          - allocated
          - testing
          - production
          - production_change_pending
          - decommission_requested
          - decommissioned
          - archived
          - error
          - operator
          - scheduled
          type: string
        status:
          items:
            $ref: '#/components/schemas/Status'
          type: array
        type:
          example: mp2mp_vc
          type: string
      required:
      - type
      title: PartialMP2MPNetworkService
      type: object
    MP2MPNetworkServiceRequest:
      allOf:
      - $ref: '#/components/schemas/MP2MPNetworkServiceRequestPartial'
      - required:
        - managing_account
        - consuming_account
        - billing_account
        - product_offering
        - name
        - type
        title: MP2MPNetworkServiceRequest
        type: object
    MP2MPNetworkServiceRequestPartial:
      description: MP2MP Network Service Request
      properties:
        billing_account:
          description: An account requires billing_information to be used as a `billing_account`.
          type: string
        consuming_account:
          description: 'The `id` of the account consuming a service.


            Used to be `owning_customer`.

            '
          example: '2381982'
          type: string
        contract_ref:
          description: 'A reference to a contract. If no specific contract is used,
            a default

            MAY be chosen by the implementer.

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        external_ref:
          description: Reference field, free to use for the API user.
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

            the API. A manager can read and update the state of entities.

            '
          example: '238189294'
          type: string
        name:
          description: 'Name of the multi-point to multi-point

            virtual circuit.'
          maxLength: 40
          type: string
        product_offering:
          type: string
        public:
          default: false
          description: 'A public mp2mp network service can be joined

            by everyone on the exchange unless denied by

            a member-joining-rule.


            Public network services are visible to other

            members of the IXP, however only `name`, `type`,

            `product_offering`, `consuming_account` and

            `managing_account` are made available.


            Other required fields are redacted.'
          type: boolean
        purchase_order:
          default: ''
          description: 'Purchase Order ID which will be displayed on the invoice.

            '
          example: 'Project: DC Moon'
          maxLength: 80
          type: string
        type:
          example: mp2mp_vc
          type: string
      required:
      - type
      title: PartialMP2MPNetworkServiceRequest
      type: object
    MacAddress:
      allOf:
      - $ref: '#/components/schemas/MacAddressPartial'
      - required:
        - managing_account
        - consuming_account
        - address
        - id
        title: MacAddress
        type: object
    MacAddressPartial:
      description: MAC-Address
      properties:
        address:
          description: 'Unicast MAC address, formatted hexadecimal values with colons.

            '
          example: 42:23:bc:8e:b8:b0
          type: string
        consuming_account:
          description: 'The `id` of the account consuming a service.


            Used to be `owning_customer`.

            '
          example: '2381982'
          type: string
        external_ref:
          description: Reference field, free to use for the API user.
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          maxLength: 80
          type: string
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

            the API. A manager can read and update the state of entities.

            '
          example: '238189294'
          type: string
        valid_not_after:
          format: date-time
          nullable: true
          type: string
        valid_not_before:
          format: date-time
          nullable: true
          type: string
      title: PartialMacAddress
      type: object
    MacAddressRequest:
      allOf:
      - $ref: '#/components/schemas/MacAddressRequestPartial'
      - required:
        - managing_account
        - consuming_account
        - address
        title: MacAddressRequest
        type: object
    MacAddressRequestPartial:
      description: MAC-Address Request
      properties:
        address:
          description: 'Unicast MAC address, formatted hexadecimal values with colons.

            '
          example: 42:23:bc:8e:b8:b0
          type: string
        consuming_account:
          description: 'The `id` of the account consuming a service.


            Used to be `owning_customer`.

            '
          example: '2381982'
          type: string
        external_ref:
          description: Reference field, free to use for the API user.
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

            the API. A manager can read and update the state of entities.

            '
          example: '238189294'
          type: string
        valid_not_after:
          format: date-time
          nullable: true
          type: string
        valid_not_before:
          format: date-time
          nullable: true
          type: string
      title: PartialMacAddressRequest
      type: object
    Manageable:
      allOf:
      - $ref: '#/components/schemas/ManageablePartial'
      - required:
        - managing_account
        title: Manageable
        type: object
    ManageablePartial:
      description: Managed
      properties:
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

            the API. A manager can read and update the state of entities.

            '
          example: '238189294'
          type: string
      title: PartialManageable
      type: object
    MemberJoiningRule:
      description: Polymorphic Member Joining Rule
      discriminator:
        mapping:
          allow: '#/components/schemas/AllowMemberJoiningRule'
          deny: '#/components/schemas/DenyMemberJoiningRule'
        propertyName: type
      oneOf:
      - $ref: '#/components/schemas/AllowMemberJoiningRule'
      - $ref: '#/components/schemas/DenyMemberJoiningRule'
      title: MemberJoiningRule
    MemberJoiningRulePartial:
      description: Polymorphic Member Joining Rule
      discriminator:
        mapping:
          allow: '#/components/schemas/AllowMemberJoiningRulePartial'
          deny: '#/components/schemas/DenyMemberJoiningRulePartial'
        propertyName: type
      oneOf:
      - $ref: '#/components/schemas/AllowMemberJoiningRulePartial'
      - $ref: '#/components/schemas/DenyMemberJoiningRulePartial'
      title: MemberJoiningRule (partial)
    MemberJoiningRuleRequest:
      description: Polymorphic Member Joining Rule Request
      discriminator:
        mapping:
          allow: '#/components/schemas/AllowMemberJoiningRuleRequest'
          deny: '#/components/schemas/DenyMemberJoiningRuleRequest'
        propertyName: type
      oneOf:
      - $ref: '#/components/schemas/AllowMemberJoiningRuleRequest'
      - $ref: '#/components/schemas/DenyMemberJoiningRuleRequest'
      title: MemberJoiningRuleRequest
    MemberJoiningRuleRequestPartial:
      description: Polymorphic Member Joining Rule Request
      discriminator:
        mapping:
          allow: '#/components/schemas/AllowMemberJoiningRuleRequestPartial'
          deny: '#/components/schemas/DenyMemberJoiningRuleRequestPartial'
        propertyName: type
      oneOf:
      - $ref: '#/components/schemas/AllowMemberJoiningRuleRequestPartial'
      - $ref: '#/components/schemas/DenyMemberJoiningRuleRequestPartial'
      title: MemberJoiningRuleRequest (partial)
    MemberJoiningRuleUpdate:
      description: Polymorphic Member Joining Rule Update
      discriminator:
        mapping:
          allow: '#/components/schemas/AllowMemberJoiningRuleUpdate'
          deny: '#/components/schemas/DenyMemberJoiningRuleUpdate'
        propertyName: type
      oneOf:
      - $ref: '#/components/schemas/AllowMemberJoiningRuleUpdate'
      - $ref: '#/components/schemas/DenyMemberJoiningRuleUpdate'
      title: MemberJoiningRuleUpdate
    MemberJoiningRuleUpdatePartial:
      description: Polymorphic Member Joining Rule Update
      discriminator:
        mapping:
          allow: '#/components/schemas/AllowMemberJoiningRuleUpdatePartial'
          deny: '#/components/schemas/DenyMemberJoiningRuleUpdatePartial'
        propertyName: type
      oneOf:
      - $ref: '#/components/schemas/AllowMemberJoiningRuleUpdatePartial'
      - $ref: '#/components/schemas/DenyMemberJoiningRuleUpdatePartial'
      title: MemberJoiningRuleUpdate (partial)
    MetroArea:
      allOf:
      - $ref: '#/components/schemas/MetroAreaPartial'
      - required:
        - id
        - un_locode
        - iata_code
        - display_name
        - facilities
        - metro_area_networks
        title: MetroArea
        type: object
    MetroAreaNetwork:
      allOf:
      - $ref: '#/components/schemas/MetroAreaNetworkPartial'
      - required:
        - name
        - metro_area
        - service_provider
        - pops
        - id
        title: MetroAreaNetwork
        type: object
    MetroAreaNetworkPartial:
      description: MetroAreaNetwork
      properties:
        id:
          maxLength: 80
          type: string
        metro_area:
          description: 'The id of the metro area.

            '
          example: met:199399:FRA
          type: string
        name:
          description: 'The name of the metro area network.

            '
          example: MY-IX-FRA1
          maxLength: 32
          type: string
        pops:
          description: List of pops in the metro area network.
          items:
            type: string
          type: array
        service_provider:
          description: 'The service provider is operating the network.

            Usually the exchange.

            '
          example: MY-IX
          maxLength: 128
          type: string
      title: PartialMetroAreaNetwork
      type: object
    MetroAreaPartial:
      description: MetroArea
      properties:
        display_name:
          description: 'The name of the metro area. Likely the same as the IATA code.

            '
          example: FRA
          maxLength: 64
          type: string
        facilities:
          description: List of facilities the metro area network.
          items:
            type: string
          type: array
        iata_code:
          description: 'The three letter IATA airport code for identiying the

            metro area.

            '
          example: FRA
          maxLength: 3
          type: string
        id:
          maxLength: 80
          type: string
        metro_area_networks:
          description: List of networks in the metro area.
          items:
            type: string
          type: array
        un_locode:
          description: 'The UN/LOCODE for identifying the metro area.

            '
          example: DE FRA
          maxLength: 6
          type: string
      title: PartialMetroArea
      type: object
    NetworkFeature:
      description: Polymorphic Network Feature
      discriminator:
        mapping:
          route_server: '#/components/schemas/RouteServerNetworkFeature'
        propertyName: type
      oneOf:
      - $ref: '#/components/schemas/RouteServerNetworkFeature'
      title: NetworkFeature
    NetworkFeatureConfig:
      description: Polymorphic Network Feature Config
      discriminator:
        mapping:
          route_server: '#/components/schemas/RouteServerNetworkFeatureConfig'
        propertyName: type
      oneOf:
      - $ref: '#/components/schemas/RouteServerNetworkFeatureConfig'
      title: NetworkFeatureConfig
    NetworkFeatureConfigPartial:
      description: Polymorphic Network Feature Config
      discriminator:
        mapping:
          route_server: '#/components/schemas/RouteServerNetworkFeatureConfigPartial'
        propertyName: type
      oneOf:
      - $ref: '#/components/schemas/RouteServerNetworkFeatureConfigPartial'
      title: NetworkFeatureConfig (partial)
    NetworkFeatureConfigRequest:
      description: Polymorphic Network Feature Config Request
      discriminator:
        mapping:
          route_server: '#/components/schemas/RouteServerNetworkFeatureConfigRequest'
        propertyName: type
      oneOf:
      - $ref: '#/components/schemas/RouteServerNetworkFeatureConfigRequest'
      title: NetworkFeatureConfigRequest
    NetworkFeatureConfigRequestPartial:
      description: Polymorphic Network Feature Config Request
      discriminator:
        mapping:
          route_server: '#/components/schemas/RouteServerNetworkFeatureConfigRequestPartial'
        propertyName: type
      oneOf:
      - $ref: '#/components/schemas/RouteServerNetworkFeatureConfigRequestPartial'
      title: NetworkFeatureConfigRequest (partial)
    NetworkFeatureConfigUpdate:
      description: Polymorphic Network Feauture Config Update
      discriminator:
        mapping:
          route_server: '#/components/schemas/RouteServerNetworkFeatureConfigUpdate'
        propertyName: type
      oneOf:
      - $ref: '#/components/schemas/RouteServerNetworkFeatureConfigUpdate'
      title: NetworkFeatureConfigUpdate
    NetworkFeatureConfigUpdatePartial:
      description: Polymorphic Network Feauture Config Update
      discriminator:
        mapping:
          route_server: '#/components/schemas/RouteServerNetworkFeatureConfigUpdatePartial'
        propertyName: type
      oneOf:
      - $ref: '#/components/schemas/RouteServerNetworkFeatureConfigUpdatePartial'
      title: NetworkFeatureConfigUpdate (partial)
    NetworkFeaturePartial:
      description: Polymorphic Network Feature
      discriminator:
        mapping:
          route_server: '#/components/schemas/RouteServerNetworkFeaturePartial'
        propertyName: type
      oneOf:
      - $ref: '#/components/schemas/RouteServerNetworkFeaturePartial'
      title: NetworkFeature (partial)
    NetworkService:
      description: Polymorphic Network Services
      discriminator:
        mapping:
          cloud_vc: '#/components/schemas/CloudNetworkService'
          exchange_lan: '#/components/schemas/ExchangeLanNetworkService'
          mp2mp_vc: '#/components/schemas/MP2MPNetworkService'
          p2mp_vc: '#/components/schemas/P2MPNetworkService'
          p2p_vc: '#/components/schemas/P2PNetworkService'
        propertyName: type
      oneOf:
      - $ref: '#/components/schemas/ExchangeLanNetworkService'
      - $ref: '#/components/schemas/P2PNetworkService'
      - $ref: '#/components/schemas/P2MPNetworkService'
      - $ref: '#/components/schemas/MP2MPNetworkService'
      - $ref: '#/components/schemas/CloudNetworkService'
      title: NetworkService
    NetworkServiceChangeRequest:
      allOf:
      - $ref: '#/components/schemas/NetworkServiceChangeRequestPartial'
      - required:
        - product_offering
        title: NetworkServiceChangeRequest
        type: object
    NetworkServiceChangeRequestPartial:
      description: NetworkServiceChangeRequest
      properties:
        capacity:
          description: 'The desired capacity of the service in Mbps.


            Must be within the range of `bandwidth_min` and

            `bandwidth_max` of the `ProductOffering`.


            When `null` the maximum capacity wil be used.'
          minimum: 1
          nullable: true
          type: integer
        product_offering:
          description: 'Migrate to a diffrent product offering. Please note, that

            the offering only may differ in bandwidth.'
          type: string
      title: PartialNetworkServiceChangeRequest
      type: object
    NetworkServiceConfig:
      description: Polymorphic Network Service Config
      discriminator:
        mapping:
          cloud_vc: '#/components/schemas/CloudNetworkServiceConfig'
          exchange_lan: '#/components/schemas/ExchangeLanNetworkServiceConfig'
          mp2mp_vc: '#/components/schemas/MP2MPNetworkServiceConfig'
          p2mp_vc: '#/components/schemas/P2MPNetworkServiceConfig'
          p2p_vc: '#/components/schemas/P2PNetworkServiceConfig'
        propertyName: type
      oneOf:
      - $ref: '#/components/schemas/ExchangeLanNetworkServiceConfig'
      - $ref: '#/components/schemas/P2PNetworkServiceConfig'
      - $ref: '#/components/schemas/P2MPNetworkServiceConfig'
      - $ref: '#/components/schemas/MP2MPNetworkServiceConfig'
      - $ref: '#/components/schemas/CloudNetworkServiceConfig'
      title: NetworkServiceConfig
    NetworkServiceConfigPartial:
      description: Polymorphic Network Service Config
      discriminator:
        mapping:
          cloud_vc: '#/components/schemas/CloudNetworkServiceConfigPartial'
          exchange_lan: '#/components/schemas/ExchangeLanNetworkServiceConfigPartial'
          mp2mp_vc: '#/components/schemas/MP2MPNetworkServiceConfigPartial'
          p2mp_vc: '#/components/schemas/P2MPNetworkServiceConfigPartial'
          p2p_vc: '#/components/schemas/P2PNetworkServiceConfigPartial'
        propertyName: type
      oneOf:
      - $ref: '#/components/schemas/ExchangeLanNetworkServiceConfigPartial'
      - $ref: '#/components/schemas/P2PNetworkServiceConfigPartial'
      - $ref: '#/components/schemas/P2MPNetworkServiceConfigPartial'
      - $ref: '#/components/schemas/MP2MPNetworkServiceConfigPartial'
      - $ref: '#/components/schemas/CloudNetworkServiceConfigPartial'
      title: NetworkServiceConfig (partial)
    NetworkServiceConfigRequest:
      description: Polymorhic Network Service Config Request
      discriminator:
        mapping:
          cloud_vc: '#/components/schemas/CloudNetworkServiceConfigRequest'
          exchange_lan: '#/components/schemas/ExchangeLanNetworkServiceConfigRequest'
          mp2mp_vc: '#/components/schemas/MP2MPNetworkServiceConfigRequest'
          p2mp_vc: '#/components/schemas/P2MPNetworkServiceConfigRequest'
          p2p_vc: '#/components/schemas/P2PNetworkServiceConfigRequest'
        propertyName: type
      oneOf:
      - $ref: '#/components/schemas/ExchangeLanNetworkServiceConfigRequest'
      - $ref: '#/components/schemas/P2PNetworkServiceConfigRequest'
      - $ref: '#/components/schemas/P2MPNetworkServiceConfigRequest'
      - $ref: '#/components/schemas/MP2MPNetworkServiceConfigRequest'
      - $ref: '#/components/schemas/CloudNetworkServiceConfigRequest'
      title: NetworkServiceConfigRequest
    NetworkServiceConfigRequestPartial:
      description: Polymorhic Network Service Config Request
      discriminator:
        mapping:
          cloud_vc: '#/components/schemas/CloudNetworkServiceConfigRequestPartial'
          exchange_lan: '#/components/schemas/ExchangeLanNetworkServiceConfigRequestPartial'
          mp2mp_vc: '#/components/schemas/MP2MPNetworkServiceConfigRequestPartial'
          p2mp_vc: '#/components/schemas/P2MPNetworkServiceConfigRequestPartial'
          p2p_vc: '#/components/schemas/P2PNetworkServiceConfigRequestPartial'
        propertyName: type
      oneOf:
      - $ref: '#/components/schemas/ExchangeLanNetworkServiceConfigRequestPartial'
      - $ref: '#/components/schemas/P2PNetworkServiceConfigRequestPartial'
      - $ref: '#/components/schemas/P2MPNetworkServiceConfigRequestPartial'
      - $ref: '#/components/schemas/MP2MPNetworkServiceConfigRequestPartial'
      - $ref: '#/components/schemas/CloudNetworkServiceConfigRequestPartial'
      title: NetworkServiceConfigRequest (partial)
    NetworkServiceConfigUpdate:
      description: Polymorphic Network Service Config
      discriminator:
        mapping:
          cloud_vc: '#/components/schemas/CloudNetworkServiceConfigUpdate'
          exchange_lan: '#/components/schemas/ExchangeLanNetworkServiceConfigUpdate'
          mp2mp_vc: '#/components/schemas/MP2MPNetworkServiceConfigRequest'
          p2mp_vc: '#/components/schemas/P2MPNetworkServiceConfigRequest'
          p2p_vc: '#/components/schemas/P2PNetworkServiceConfigUpdate'
        propertyName: type
      oneOf:
      - $ref: '#/components/schemas/ExchangeLanNetworkServiceConfigUpdate'
      - $ref: '#/components/schemas/P2PNetworkServiceConfigUpdate'
      - $ref: '#/components/schemas/P2MPNetworkServiceConfigRequest'
      - $ref: '#/components/schemas/MP2MPNetworkServiceConfigRequest'
      - $ref: '#/components/schemas/CloudNetworkServiceConfigUpdate'
      title: NetworkServiceConfigUpdate
    NetworkServiceConfigUpdatePartial:
      description: Polymorphic Network Service Config
      discriminator:
        mapping:
          cloud_vc: '#/components/schemas/CloudNetworkServiceConfigUpdatePartial'
          exchange_lan: '#/components/schemas/ExchangeLanNetworkServiceConfigUpdatePartial'
          mp2mp_vc: '#/components/schemas/MP2MPNetworkServiceConfigRequestPartial'
          p2mp_vc: '#/components/schemas/P2MPNetworkServiceConfigRequestPartial'
          p2p_vc: '#/components/schemas/P2PNetworkServiceConfigUpdatePartial'
        propertyName: type
      oneOf:
      - $ref: '#/components/schemas/ExchangeLanNetworkServiceConfigUpdatePartial'
      - $ref: '#/components/schemas/P2PNetworkServiceConfigUpdatePartial'
      - $ref: '#/components/schemas/P2MPNetworkServiceConfigRequestPartial'
      - $ref: '#/components/schemas/MP2MPNetworkServiceConfigRequestPartial'
      - $ref: '#/components/schemas/CloudNetworkServiceConfigUpdatePartial'
      title: NetworkServiceConfigUpdate (partial)
    NetworkServiceDeleteResponse:
      description: Polymorphic Network Service Request
      discriminator:
        mapping:
          cloud_vc: '#/components/schemas/CloudNetworkService'
          mp2mp_vc: '#/components/schemas/MP2MPNetworkService'
          p2mp_vc: '#/components/schemas/P2MPNetworkService'
          p2p_vc: '#/components/schemas/P2PNetworkService'
        propertyName: type
      oneOf:
      - $ref: '#/components/schemas/P2PNetworkService'
      - $ref: '#/components/schemas/P2MPNetworkService'
      - $ref: '#/components/schemas/MP2MPNetworkService'
      - $ref: '#/components/schemas/CloudNetworkService'
      title: NetworkServiceDeleteResponse
    NetworkServiceDeleteResponsePartial:
      description: Polymorphic Network Service Request
      discriminator:
        mapping:
          cloud_vc: '#/components/schemas/CloudNetworkServicePartial'
          mp2mp_vc: '#/components/schemas/MP2MPNetworkServicePartial'
          p2mp_vc: '#/components/schemas/P2MPNetworkServicePartial'
          p2p_vc: '#/components/schemas/P2PNetworkServicePartial'
        propertyName: type
      oneOf:
      - $ref: '#/components/schemas/P2PNetworkServicePartial'
      - $ref: '#/components/schemas/P2MPNetworkServicePartial'
      - $ref: '#/components/schemas/MP2MPNetworkServicePartial'
      - $ref: '#/components/schemas/CloudNetworkServicePartial'
      title: NetworkServiceDeleteResponse (partial)
    NetworkServicePartial:
      description: Polymorphic Network Services
      discriminator:
        mapping:
          cloud_vc: '#/components/schemas/CloudNetworkServicePartial'
          exchange_lan: '#/components/schemas/ExchangeLanNetworkServicePartial'
          mp2mp_vc: '#/components/schemas/MP2MPNetworkServicePartial'
          p2mp_vc: '#/components/schemas/P2MPNetworkServicePartial'
          p2p_vc: '#/components/schemas/P2PNetworkServicePartial'
        propertyName: type
      oneOf:
      - $ref: '#/components/schemas/ExchangeLanNetworkServicePartial'
      - $ref: '#/components/schemas/P2PNetworkServicePartial'
      - $ref: '#/components/schemas/P2MPNetworkServicePartial'
      - $ref: '#/components/schemas/MP2MPNetworkServicePartial'
      - $ref: '#/components/schemas/CloudNetworkServicePartial'
      title: NetworkService (partial)
    NetworkServiceRequest:
      description: Polymorphic Network Service Request
      discriminator:
        mapping:
          cloud_vc: '#/components/schemas/CloudNetworkServiceRequest'
          mp2mp_vc: '#/components/schemas/MP2MPNetworkServiceRequest'
          p2mp_vc: '#/components/schemas/P2MPNetworkServiceRequest'
          p2p_vc: '#/components/schemas/P2PNetworkServiceRequest'
        propertyName: type
      oneOf:
      - $ref: '#/components/schemas/P2PNetworkServiceRequest'
      - $ref: '#/components/schemas/P2MPNetworkServiceRequest'
      - $ref: '#/components/schemas/MP2MPNetworkServiceRequest'
      - $ref: '#/components/schemas/CloudNetworkServiceRequest'
      title: NetworkServiceRequest
    NetworkServiceRequestPartial:
      description: Polymorphic Network Service Request
      discriminator:
        mapping:
          cloud_vc: '#/components/schemas/CloudNetworkServiceRequestPartial'
          mp2mp_vc: '#/components/schemas/MP2MPNetworkServiceRequestPartial'
          p2mp_vc: '#/components/schemas/P2MPNetworkServiceRequestPartial'
          p2p_vc: '#/components/schemas/P2PNetworkServiceRequestPartial'
        propertyName: type
      oneOf:
      - $ref: '#/components/schemas/P2PNetworkServiceRequestPartial'
      - $ref: '#/components/schemas/P2MPNetworkServiceRequestPartial'
      - $ref: '#/components/schemas/MP2MPNetworkServiceRequestPartial'
      - $ref: '#/components/schemas/CloudNetworkServiceRequestPartial'
      title: NetworkServiceRequest (partial)
    Ownable:
      allOf:
      - $ref: '#/components/schemas/OwnablePartial'
      - required:
        - managing_account
        - consuming_account
        title: Ownable
        type: object
    OwnablePartial:
      description: Ownable
      properties:
        consuming_account:
          description: 'The `id` of the account consuming a service.


            Used to be `owning_customer`.

            '
          example: '2381982'
          type: string
        external_ref:
          description: Reference field, free to use for the API user.
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

            the API. A manager can read and update the state of entities.

            '
          example: '238189294'
          type: string
      title: PartialOwnable
      type: object
    P2MPNetworkProductOffering:
      allOf:
      - $ref: '#/components/schemas/P2MPNetworkProductOfferingPartial'
      - required:
        - id
        - name
        - display_name
        - provider_vlans
        - resource_type
        - handover_metro_area_network
        - handover_metro_area
        - service_metro_area_network
        - service_metro_area
        - bandwidth_min
        - bandwidth_max
        - physical_port_speed
        - service_provider
        - downgrade_allowed
        - upgrade_allowed
        - type
        title: P2MPNetworkProductOffering
        type: object
    P2MPNetworkProductOfferingPartial:
      description: P2MP Network Product Offering
      properties:
        bandwidth_max:
          description: 'When not `null`, this value enforces a mandatory

            rate limit for all network service configs.'
          minimum: 0
          nullable: true
          type: integer
        bandwidth_min:
          description: 'When configuring access to the network service, at least

            this `capacity` must be provided.'
          minimum: 0
          nullable: true
          type: integer
        display_name:
          maxLength: 256
          type: string
        downgrade_allowed:
          description: 'Indicates if the service can be migrated to

            a lower bandwidth.'
          type: boolean
        handover_metro_area:
          description: 'Id of the `MetroArea`. The network service will be

            accessed from this metro area.

            '
          example: met:29381993:NYC
          type: string
        handover_metro_area_network:
          description: 'Id of the `MetroAreaNetwork`. The service will be accessed

            through the handover metro area network.

            '
          example: '191239810'
          type: string
        id:
          maxLength: 80
          type: string
        name:
          description: Name of the product
          maxLength: 160
          type: string
        physical_port_speed:
          description: 'If the service is dependent on the speed of

            the physical port this field denotes the speed.'
          minimum: 0
          nullable: true
          type: integer
        provider_vlans:
          description: The `NetworkService` provides `single` or `multi`ple vlans.
          enum:
          - single
          - multi
          type: string
        resource_type:
          description: 'The resource type refers to an ix-api resource.

            '
          enum:
          - connection
          - demarc
          - network_service
          - network_service_config
          example: network_service
          type: string
        service_metro_area:
          description: 'Id of the `MetroArea`. The service is delivered

            in this metro area.

            '
          example: met:213913485:LON
          type: string
        service_metro_area_network:
          description: 'Id of the `MetroAreaNetwork`.

            The service is directly provided on the metro area network.

            '
          example: '9123843'
          type: string
        service_provider:
          description: 'The name of the provider providing the service.

            '
          example: AWS
          type: string
        type:
          example: p2mp_vc
          type: string
        upgrade_allowed:
          description: 'Indicates if the service can be migrated to

            a higher bandwidth.'
          type: boolean
      required:
      - type
      title: PartialP2MPNetworkProductOffering
      type: object
    P2MPNetworkService:
      allOf:
      - $ref: '#/components/schemas/P2MPNetworkServicePartial'
      - required:
        - state
        - id
        - managing_account
        - consuming_account
        - billing_account
        - product_offering
        - name
        - network_features
        - member_joining_rules
        - type
        title: P2MPNetworkService
        type: object
    P2MPNetworkServiceConfig:
      allOf:
      - $ref: '#/components/schemas/P2MPNetworkServiceConfigPartial'
      - required:
        - state
        - id
        - network_service
        - managing_account
        - consuming_account
        - billing_account
        - role_assignments
        - connection
        - vlan_config
        - type
        title: P2MPNetworkServiceConfig
        type: object
    P2MPNetworkServiceConfigPartial:
      description: P2MP Network Service Config
      properties:
        billing_account:
          description: An account requires billing_information to be used as a `billing_account`.
          type: string
        capacity:
          description: 'The capacity of the service in Mbps. If set to Null,

            the maximum capacity will be used, i.e. the virtual circuit is

            not rate-limited.


            An exchange may choose to constrain the available capacity range

            of a `ProductOffering`.


            That means, the service can consume up to the total bandwidth

            of the `Connection`.


            Typically the service is charged based on the capacity.'
          minimum: 1
          nullable: true
          type: integer
        connection:
          description: The id of the connection to use for this `NetworkServiceConfig`.
          type: string
        consuming_account:
          description: 'The `id` of the account consuming a service.


            Used to be `owning_customer`.

            '
          example: '2381982'
          type: string
        contract_ref:
          description: 'A reference to a contract. If no specific contract is used,
            a default

            MAY be chosen by the implementer.

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        external_ref:
          description: Reference field, free to use for the API user.
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          maxLength: 80
          type: string
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

            the API. A manager can read and update the state of entities.

            '
          example: '238189294'
          type: string
        network_feature_configs:
          description: 'A list of ids of `NetworkFeatureConfig`s.

            '
          example:
          - '12356'
          - '43829'
          items:
            type: string
          readOnly: true
          type: array
        network_service:
          description: The id of the configured network service.
          type: string
        purchase_order:
          default: ''
          description: 'Purchase Order ID which will be displayed on the invoice.

            '
          example: 'Project: DC Moon'
          maxLength: 80
          type: string
        role:
          default: leaf
          description: 'A `leaf` can only reach roots and is

            isolated from other leafs. A `root` can

            reach any other point in the virtual circuit

            including other roots.'
          enum:
          - root
          - leaf
          type: string
        role_assignments:
          description: 'A set of `RoleAssignment`s. See the documentation

            on the specific `required_contact_roles`,

            `nfc_required_contact_roles` or `nsc_required_contact_roles`

            on what `RoleAssignment`s to provide.

            '
          example:
          - c-impl:123
          - c-noc:331
          items:
            type: string
          type: array
        state:
          enum:
          - requested
          - allocated
          - testing
          - production
          - production_change_pending
          - decommission_requested
          - decommissioned
          - archived
          - error
          - operator
          - scheduled
          type: string
        status:
          items:
            $ref: '#/components/schemas/Status'
          type: array
        type:
          example: p2mp_vc
          type: string
        vlan_config:
          $ref: '#/components/schemas/VlanConfig'
      required:
      - type
      title: PartialP2MPNetworkServiceConfig
      type: object
    P2MPNetworkServiceConfigRequest:
      allOf:
      - $ref: '#/components/schemas/P2MPNetworkServiceConfigRequestPartial'
      - required:
        - managing_account
        - consuming_account
        - network_service
        - billing_account
        - role_assignments
        - connection
        - vlan_config
        - type
        title: P2MPNetworkServiceConfigRequest
        type: object
    P2MPNetworkServiceConfigRequestPartial:
      description: P2MP Network Service Config Request
      properties:
        billing_account:
          description: An account requires billing_information to be used as a `billing_account`.
          type: string
        capacity:
          description: 'The capacity of the service in Mbps. If set to Null,

            the maximum capacity will be used, i.e. the virtual circuit is

            not rate-limited.


            An exchange may choose to constrain the available capacity range

            of a `ProductOffering`.


            That means, the service can consume up to the total bandwidth

            of the `Connection`.


            Typically the service is charged based on the capacity.'
          minimum: 1
          nullable: true
          type: integer
        connection:
          description: The id of the connection to use for this `NetworkServiceConfig`.
          type: string
        consuming_account:
          description: 'The `id` of the account consuming a service.


            Used to be `owning_customer`.

            '
          example: '2381982'
          type: string
        contract_ref:
          description: 'A reference to a contract. If no specific contract is used,
            a default

            MAY be chosen by the implementer.

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        external_ref:
          description: Reference field, free to use for the API user.
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

            the API. A manager can read and update the state of entities.

            '
          example: '238189294'
          type: string
        network_feature_configs:
          description: 'A list of ids of `NetworkFeatureConfig`s.

            '
          example:
          - '12356'
          - '43829'
          items:
            type: string
          readOnly: true
          type: array
        network_service:
          description: The id of the `NetworkService` to configure.
          type: string
        purchase_order:
          default: ''
          description: 'Purchase Order ID which will be displayed on the invoice.

            '
          example: 'Project: DC Moon'
          maxLength: 80
          type: string
        role:
          default: leaf
          description: 'A `leaf` can only reach roots and is

            isolated from other leafs. A `root` can

            reach any other point in the virtual circuit

            including other roots.'
          enum:
          - root
          - leaf
          type: string
        role_assignments:
          description: 'A set of `RoleAssignment`s. See the documentation

            on the specific `required_contact_roles`,

            `nfc_required_contact_roles` or `nsc_required_contact_roles`

            on what `RoleAssignment`s to provide.

            '
          example:
          - c-impl:123
          - c-noc:331
          items:
            type: string
          type: array
        type:
          example: p2mp_vc
          type: string
        vlan_config:
          $ref: '#/components/schemas/VlanConfig'
      required:
      - type
      title: PartialP2MPNetworkServiceConfigRequest
      type: object
    P2MPNetworkServiceConfigUpdate:
      allOf:
      - $ref: '#/components/schemas/P2MPNetworkServiceConfigUpdatePartial'
      - required:
        - managing_account
        - consuming_account
        - vlan_config
        - billing_account
        - role_assignments
        - connection
        - type
        title: P2MPNetworkServiceConfigUpdate
        type: object
    P2MPNetworkServiceConfigUpdatePartial:
      description: P2MP Network Service Config Update
      properties:
        billing_account:
          description: An account requires billing_information to be used as a `billing_account`.
          type: string
        capacity:
          description: 'The capacity of the service in Mbps. If set to Null,

            the maximum capacity will be used, i.e. the virtual circuit is

            not rate-limited.


            An exchange may choose to constrain the available capacity range

            of a `ProductOffering`.


            That means, the service can consume up to the total bandwidth

            of the `Connection`.


            Typically the service is charged based on the capacity.'
          minimum: 1
          nullable: true
          type: integer
        connection:
          description: The id of the connection to use for this `NetworkServiceConfig`.
          type: string
        consuming_account:
          description: 'The `id` of the account consuming a service.


            Used to be `owning_customer`.

            '
          example: '2381982'
          type: string
        contract_ref:
          description: 'A reference to a contract. If no specific contract is used,
            a default

            MAY be chosen by the implementer.

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        external_ref:
          description: Reference field, free to use for the API user.
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

            the API. A manager can read and update the state of entities.

            '
          example: '238189294'
          type: string
        network_feature_configs:
          description: 'A list of ids of `NetworkFeatureConfig`s.

            '
          example:
          - '12356'
          - '43829'
          items:
            type: string
          readOnly: true
          type: array
        purchase_order:
          default: ''
          description: 'Purchase Order ID which will be displayed on the invoice.

            '
          example: 'Project: DC Moon'
          maxLength: 80
          type: string
        role:
          default: leaf
          description: 'A `leaf` can only reach roots and is

            isolated from other leafs. A `root` can

            reach any other point in the virtual circuit

            including other roots.'
          enum:
          - root
          - leaf
          type: string
        role_assignments:
          description: 'A set of `RoleAssignment`s. See the documentation

            on the specific `required_contact_roles`,

            `nfc_required_contact_roles` or `nsc_required_contact_roles`

            on what `RoleAssignment`s to provide.

            '
          example:
          - c-impl:123
          - c-noc:331
          items:
            type: string
          type: array
        type:
          example: p2mp_vc
          type: string
        vlan_config:
          $ref: '#/components/schemas/VlanConfig'
      required:
      - type
      title: PartialP2MPNetworkServiceConfigUpdate
      type: object
    P2MPNetworkServicePartial:
      description: P2MP Network Service
      properties:
        billing_account:
          description: An account requires billing_information to be used as a `billing_account`.
          type: string
        consuming_account:
          description: 'The `id` of the account consuming a service.


            Used to be `owning_customer`.

            '
          example: '2381982'
          type: string
        contract_ref:
          description: 'A reference to a contract. If no specific contract is used,
            a default

            MAY be chosen by the implementer.

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        external_ref:
          description: Reference field, free to use for the API user.
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          type: string
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

            the API. A manager can read and update the state of entities.

            '
          example: '238189294'
          type: string
        member_joining_rules:
          items:
            type: string
          type: array
        name:
          description: Name of the point to multi-point virtual circuit.
          maxLength: 40
          type: string
        network_features:
          items:
            type: string
          type: array
        nsc_required_contact_roles:
          description: 'The configuration will require at least one of each of the

            specified roles assigned to contacts.


            The `RoleAssignment` is associated through the

            `role_assignments` list property of the network service configuration.'
          items:
            type: string
          readOnly: true
          type: array
        product_offering:
          type: string
        public:
          default: false
          description: 'A public p2mp network service can be joined

            by everyone on the exchange unless denied by

            a member-joining-rule.


            Public network services are visible to other

            members of the IXP, however only `name`, `type`,

            `product_offering`, `consuming_account` and

            `managing_account` are made

            available.


            Other required fields are redacted.'
          type: boolean
        purchase_order:
          default: ''
          description: 'Purchase Order ID which will be displayed on the invoice.

            '
          example: 'Project: DC Moon'
          maxLength: 80
          type: string
        state:
          enum:
          - requested
          - allocated
          - testing
          - production
          - production_change_pending
          - decommission_requested
          - decommissioned
          - archived
          - error
          - operator
          - scheduled
          type: string
        status:
          items:
            $ref: '#/components/schemas/Status'
          type: array
        type:
          example: p2mp_vc
          type: string
      required:
      - type
      title: PartialP2MPNetworkService
      type: object
    P2MPNetworkServiceRequest:
      allOf:
      - $ref: '#/components/schemas/P2MPNetworkServiceRequestPartial'
      - required:
        - managing_account
        - consuming_account
        - billing_account
        - product_offering
        - name
        - type
        title: P2MPNetworkServiceRequest
        type: object
    P2MPNetworkServiceRequestPartial:
      description: P2MP Network Service Request
      properties:
        billing_account:
          description: An account requires billing_information to be used as a `billing_account`.
          type: string
        consuming_account:
          description: 'The `id` of the account consuming a service.


            Used to be `owning_customer`.

            '
          example: '2381982'
          type: string
        contract_ref:
          description: 'A reference to a contract. If no specific contract is used,
            a default

            MAY be chosen by the implementer.

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        external_ref:
          description: Reference field, free to use for the API user.
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

            the API. A manager can read and update the state of entities.

            '
          example: '238189294'
          type: string
        name:
          description: Name of the point to multi-point virtual circuit.
          maxLength: 40
          type: string
        product_offering:
          type: string
        public:
          default: false
          description: 'A public p2mp network service can be joined

            by everyone on the exchange unless denied by

            a member-joining-rule.


            Public network services are visible to other

            members of the IXP, however only `name`, `type`,

            `product_offering`, `consuming_account` and

            `managing_account` are made

            available.


            Other required fields are redacted.'
          type: boolean
        purchase_order:
          default: ''
          description: 'Purchase Order ID which will be displayed on the invoice.

            '
          example: 'Project: DC Moon'
          maxLength: 80
          type: string
        type:
          example: p2mp_vc
          type: string
      required:
      - type
      title: PartialP2MPNetworkServiceRequest
      type: object
    P2PNetworkProductOffering:
      allOf:
      - $ref: '#/components/schemas/P2PNetworkProductOfferingPartial'
      - required:
        - id
        - name
        - display_name
        - provider_vlans
        - resource_type
        - handover_metro_area_network
        - handover_metro_area
        - service_metro_area_network
        - service_metro_area
        - bandwidth_min
        - bandwidth_max
        - physical_port_speed
        - service_provider
        - downgrade_allowed
        - upgrade_allowed
        - type
        title: P2PNetworkProductOffering
        type: object
    P2PNetworkProductOfferingPartial:
      description: P2P Network Product Offering
      properties:
        bandwidth_max:
          description: 'When not `null`, this value enforces a mandatory

            rate limit for all network service configs.'
          minimum: 0
          nullable: true
          type: integer
        bandwidth_min:
          description: 'When configuring access to the network service, at least

            this `capacity` must be provided.'
          minimum: 0
          nullable: true
          type: integer
        display_name:
          maxLength: 256
          type: string
        downgrade_allowed:
          description: 'Indicates if the service can be migrated to

            a lower bandwidth.'
          type: boolean
        handover_metro_area:
          description: 'Id of the `MetroArea`. The network service will be

            accessed from this metro area.

            '
          example: met:29381993:NYC
          type: string
        handover_metro_area_network:
          description: 'Id of the `MetroAreaNetwork`. The service will be accessed

            through the handover metro area network.

            '
          example: '191239810'
          type: string
        id:
          maxLength: 80
          type: string
        name:
          description: Name of the product
          maxLength: 160
          type: string
        physical_port_speed:
          description: 'If the service is dependent on the speed of

            the physical port this field denotes the speed.'
          minimum: 0
          nullable: true
          type: integer
        provider_vlans:
          description: The `NetworkService` provides `single` or `multi`ple vlans.
          enum:
          - single
          - multi
          type: string
        resource_type:
          description: 'The resource type refers to an ix-api resource.

            '
          enum:
          - connection
          - demarc
          - network_service
          - network_service_config
          example: network_service
          type: string
        service_metro_area:
          description: 'Id of the `MetroArea`. The service is delivered

            in this metro area.

            '
          example: met:213913485:LON
          type: string
        service_metro_area_network:
          description: 'Id of the `MetroAreaNetwork`.

            The service is directly provided on the metro area network.

            '
          example: '9123843'
          type: string
        service_provider:
          description: 'The name of the provider providing the service.

            '
          example: AWS
          type: string
        type:
          example: p2p_vc
          type: string
        upgrade_allowed:
          description: 'Indicates if the service can be migrated to

            a higher bandwidth.'
          type: boolean
      required:
      - type
      title: PartialP2PNetworkProductOffering
      type: object
    P2PNetworkService:
      allOf:
      - $ref: '#/components/schemas/P2PNetworkServicePartial'
      - required:
        - state
        - id
        - managing_account
        - consuming_account
        - billing_account
        - product_offering
        - joining_member_account
        - type
        title: P2PNetworkService
        type: object
    P2PNetworkServiceConfig:
      allOf:
      - $ref: '#/components/schemas/P2PNetworkServiceConfigPartial'
      - required:
        - state
        - id
        - network_service
        - managing_account
        - consuming_account
        - billing_account
        - role_assignments
        - connection
        - vlan_config
        - type
        title: P2PNetworkServiceConfig
        type: object
    P2PNetworkServiceConfigPartial:
      description: P2P Network Service Config
      properties:
        billing_account:
          description: An account requires billing_information to be used as a `billing_account`.
          type: string
        capacity:
          description: 'The capacity of the service in Mbps. If set to Null,

            the maximum capacity will be used, i.e. the virtual circuit is

            not rate-limited.


            An exchange may choose to constrain the available capacity range

            of a `ProductOffering`.


            That means, the service can consume up to the total bandwidth

            of the `Connection`.


            Typically the service is charged based on the capacity.'
          minimum: 1
          nullable: true
          type: integer
        connection:
          description: The id of the connection to use for this `NetworkServiceConfig`.
          type: string
        consuming_account:
          description: 'The `id` of the account consuming a service.


            Used to be `owning_customer`.

            '
          example: '2381982'
          type: string
        contract_ref:
          description: 'A reference to a contract. If no specific contract is used,
            a default

            MAY be chosen by the implementer.

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        external_ref:
          description: Reference field, free to use for the API user.
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          maxLength: 80
          type: string
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

            the API. A manager can read and update the state of entities.

            '
          example: '238189294'
          type: string
        network_feature_configs:
          description: 'A list of ids of `NetworkFeatureConfig`s.

            '
          example:
          - '12356'
          - '43829'
          items:
            type: string
          readOnly: true
          type: array
        network_service:
          description: The id of the configured network service.
          type: string
        purchase_order:
          default: ''
          description: 'Purchase Order ID which will be displayed on the invoice.

            '
          example: 'Project: DC Moon'
          maxLength: 80
          type: string
        role_assignments:
          description: 'A set of `RoleAssignment`s. See the documentation

            on the specific `required_contact_roles`,

            `nfc_required_contact_roles` or `nsc_required_contact_roles`

            on what `RoleAssignment`s to provide.

            '
          example:
          - c-impl:123
          - c-noc:331
          items:
            type: string
          type: array
        state:
          enum:
          - requested
          - allocated
          - testing
          - production
          - production_change_pending
          - decommission_requested
          - decommissioned
          - archived
          - error
          - operator
          - scheduled
          type: string
        status:
          items:
            $ref: '#/components/schemas/Status'
          type: array
        type:
          example: p2p_vc
          type: string
        vlan_config:
          $ref: '#/components/schemas/VlanConfig'
      required:
      - type
      title: PartialP2PNetworkServiceConfig
      type: object
    P2PNetworkServiceConfigRequest:
      allOf:
      - $ref: '#/components/schemas/P2PNetworkServiceConfigRequestPartial'
      - required:
        - managing_account
        - consuming_account
        - network_service
        - billing_account
        - role_assignments
        - connection
        - vlan_config
        - type
        title: P2PNetworkServiceConfigRequest
        type: object
    P2PNetworkServiceConfigRequestPartial:
      description: P2P Network Service Config Request
      properties:
        billing_account:
          description: An account requires billing_information to be used as a `billing_account`.
          type: string
        capacity:
          description: 'The capacity of the service in Mbps. If set to Null,

            the maximum capacity will be used, i.e. the virtual circuit is

            not rate-limited.


            An exchange may choose to constrain the available capacity range

            of a `ProductOffering`.


            That means, the service can consume up to the total bandwidth

            of the `Connection`.


            Typically the service is charged based on the capacity.'
          minimum: 1
          nullable: true
          type: integer
        connection:
          description: The id of the connection to use for this `NetworkServiceConfig`.
          type: string
        consuming_account:
          description: 'The `id` of the account consuming a service.


            Used to be `owning_customer`.

            '
          example: '2381982'
          type: string
        contract_ref:
          description: 'A reference to a contract. If no specific contract is used,
            a default

            MAY be chosen by the implementer.

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        external_ref:
          description: Reference field, free to use for the API user.
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

            the API. A manager can read and update the state of entities.

            '
          example: '238189294'
          type: string
        network_feature_configs:
          description: 'A list of ids of `NetworkFeatureConfig`s.

            '
          example:
          - '12356'
          - '43829'
          items:
            type: string
          readOnly: true
          type: array
        network_service:
          description: The id of the `NetworkService` to configure.
          type: string
        purchase_order:
          default: ''
          description: 'Purchase Order ID which will be displayed on the invoice.

            '
          example: 'Project: DC Moon'
          maxLength: 80
          type: string
        role_assignments:
          description: 'A set of `RoleAssignment`s. See the documentation

            on the specific `required_contact_roles`,

            `nfc_required_contact_roles` or `nsc_required_contact_roles`

            on what `RoleAssignment`s to provide.

            '
          example:
          - c-impl:123
          - c-noc:331
          items:
            type: string
          type: array
        type:
          example: p2p_vc
          type: string
        vlan_config:
          $ref: '#/components/schemas/VlanConfig'
      required:
      - type
      title: PartialP2PNetworkServiceConfigRequest
      type: object
    P2PNetworkServiceConfigUpdate:
      allOf:
      - $ref: '#/components/schemas/P2PNetworkServiceConfigUpdatePartial'
      - required:
        - managing_account
        - consuming_account
        - vlan_config
        - billing_account
        - role_assignments
        - connection
        - type
        title: P2PNetworkServiceConfigUpdate
        type: object
    P2PNetworkServiceConfigUpdatePartial:
      description: P2P Network Service Config Update
      properties:
        billing_account:
          description: An account requires billing_information to be used as a `billing_account`.
          type: string
        capacity:
          description: 'The capacity of the service in Mbps. If set to Null,

            the maximum capacity will be used, i.e. the virtual circuit is

            not rate-limited.


            An exchange may choose to constrain the available capacity range

            of a `ProductOffering`.


            That means, the service can consume up to the total bandwidth

            of the `Connection`.


            Typically the service is charged based on the capacity.'
          minimum: 1
          nullable: true
          type: integer
        connection:
          description: The id of the connection to use for this `NetworkServiceConfig`.
          type: string
        consuming_account:
          description: 'The `id` of the account consuming a service.


            Used to be `owning_customer`.

            '
          example: '2381982'
          type: string
        contract_ref:
          description: 'A reference to a contract. If no specific contract is used,
            a default

            MAY be chosen by the implementer.

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        external_ref:
          description: Reference field, free to use for the API user.
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

            the API. A manager can read and update the state of entities.

            '
          example: '238189294'
          type: string
        network_feature_configs:
          description: 'A list of ids of `NetworkFeatureConfig`s.

            '
          example:
          - '12356'
          - '43829'
          items:
            type: string
          readOnly: true
          type: array
        purchase_order:
          default: ''
          description: 'Purchase Order ID which will be displayed on the invoice.

            '
          example: 'Project: DC Moon'
          maxLength: 80
          type: string
        role_assignments:
          description: 'A set of `RoleAssignment`s. See the documentation

            on the specific `required_contact_roles`,

            `nfc_required_contact_roles` or `nsc_required_contact_roles`

            on what `RoleAssignment`s to provide.

            '
          example:
          - c-impl:123
          - c-noc:331
          items:
            type: string
          type: array
        type:
          example: p2p_vc
          type: string
        vlan_config:
          $ref: '#/components/schemas/VlanConfig'
      required:
      - type
      title: PartialP2PNetworkServiceConfigUpdate
      type: object
    P2PNetworkServicePartial:
      description: P2P Network Service
      properties:
        billing_account:
          description: An account requires billing_information to be used as a `billing_account`.
          type: string
        capacity:
          description: 'The capacity of the service in Mbps. When null,

            the maximum capacity will be used.'
          minimum: 1
          nullable: true
          type: integer
        consuming_account:
          description: 'The `id` of the account consuming a service.


            Used to be `owning_customer`.

            '
          example: '2381982'
          type: string
        contract_ref:
          description: 'A reference to a contract. If no specific contract is used,
            a default

            MAY be chosen by the implementer.

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        external_ref:
          description: Reference field, free to use for the API user.
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          type: string
        joining_member_account:
          description: 'The account of the B-side member joining the virtual circuit.

            '
          example: '231829'
          type: string
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

            the API. A manager can read and update the state of entities.

            '
          example: '238189294'
          type: string
        nsc_required_contact_roles:
          description: 'The configuration will require at least one of each of the

            specified roles assigned to contacts.


            The `RoleAssignment` is associated through the

            `role_assignments` list property of the network service configuration.'
          items:
            type: string
          readOnly: true
          type: array
        product_offering:
          type: string
        purchase_order:
          default: ''
          description: 'Purchase Order ID which will be displayed on the invoice.

            '
          example: 'Project: DC Moon'
          maxLength: 80
          type: string
        state:
          enum:
          - requested
          - allocated
          - testing
          - production
          - production_change_pending
          - decommission_requested
          - decommissioned
          - archived
          - error
          - operator
          - scheduled
          type: string
        status:
          items:
            $ref: '#/components/schemas/Status'
          type: array
        type:
          example: p2p_vc
          type: string
      required:
      - type
      title: PartialP2PNetworkService
      type: object
    P2PNetworkServiceRequest:
      allOf:
      - $ref: '#/components/schemas/P2PNetworkServiceRequestPartial'
      - required:
        - managing_account
        - consuming_account
        - billing_account
        - product_offering
        - joining_member_account
        - type
        title: P2PNetworkServiceRequest
        type: object
    P2PNetworkServiceRequestPartial:
      description: P2P Network Service Request
      properties:
        billing_account:
          description: An account requires billing_information to be used as a `billing_account`.
          type: string
        consuming_account:
          description: 'The `id` of the account consuming a service.


            Used to be `owning_customer`.

            '
          example: '2381982'
          type: string
        contract_ref:
          description: 'A reference to a contract. If no specific contract is used,
            a default

            MAY be chosen by the implementer.

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        external_ref:
          description: Reference field, free to use for the API user.
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        joining_member_account:
          description: 'The account of the B-side member joining the virtual circuit.

            '
          example: '231829'
          type: string
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

            the API. A manager can read and update the state of entities.

            '
          example: '238189294'
          type: string
        product_offering:
          type: string
        purchase_order:
          default: ''
          description: 'Purchase Order ID which will be displayed on the invoice.

            '
          example: 'Project: DC Moon'
          maxLength: 80
          type: string
        type:
          example: p2p_vc
          type: string
      required:
      - type
      title: PartialP2PNetworkServiceRequest
      type: object
    PointOfPresence:
      allOf:
      - $ref: '#/components/schemas/PointOfPresencePartial'
      - required:
        - name
        - facility
        - metro_area_network
        - devices
        - id
        title: PointOfPresence
        type: object
    PointOfPresencePartial:
      description: Point Of Presence
      properties:
        devices:
          items:
            type: string
          type: array
        facility:
          type: string
        id:
          maxLength: 80
          type: string
        metro_area_network:
          type: string
        name:
          maxLength: 40
          type: string
      title: PartialPointOfPresence
      type: object
    Port:
      allOf:
      - $ref: '#/components/schemas/PortPartial'
      - required:
        - state
        - managing_account
        - consuming_account
        - billing_account
        - role_assignments
        - id
        - media_type
        - device
        - pop
        title: Port
        type: object
    PortPartial:
      description: Port
      properties:
        billing_account:
          description: An account requires billing_information to be used as a `billing_account`.
          type: string
        connection:
          nullable: true
          type: string
        consuming_account:
          description: 'The `id` of the account consuming a service.


            Used to be `owning_customer`.

            '
          example: '2381982'
          type: string
        contract_ref:
          description: 'A reference to a contract. If no specific contract is used,
            a default

            MAY be chosen by the implementer.

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        device:
          description: 'The device the port.

            '
          example: device:29139871
          type: string
        external_ref:
          description: Reference field, free to use for the API user.
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          maxLength: 80
          type: string
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

            the API. A manager can read and update the state of entities.

            '
          example: '238189294'
          type: string
        media_type:
          description: 'The media type of the port.

            Query the device''s capabilities for available types.

            '
          example: 10GBASE-LR
          maxLength: 20
          type: string
        name:
          default: ''
          description: Name of the port (set by the exchange)
          maxLength: 80
          readOnly: true
          type: string
        pop:
          description: 'Same as the `pop` of the `device`.

            '
          example: pop:2913
          type: string
        purchase_order:
          default: ''
          description: 'Purchase Order ID which will be displayed on the invoice.

            '
          example: 'Project: DC Moon'
          maxLength: 80
          type: string
        role_assignments:
          description: 'A set of `RoleAssignment`s. See the documentation

            on the specific `required_contact_roles`,

            `nfc_required_contact_roles` or `nsc_required_contact_roles`

            on what `RoleAssignment`s to provide.

            '
          example:
          - c-impl:123
          - c-noc:331
          items:
            type: string
          type: array
        speed:
          minimum: 0
          nullable: true
          readOnly: true
          type: integer
        state:
          enum:
          - requested
          - allocated
          - testing
          - production
          - production_change_pending
          - decommission_requested
          - decommissioned
          - archived
          - error
          - operator
          - scheduled
          type: string
        status:
          items:
            $ref: '#/components/schemas/Status'
          type: array
      title: PartialPort
      type: object
    PortRequest:
      allOf:
      - $ref: '#/components/schemas/PortRequestPartial'
      - required:
        - managing_account
        - consuming_account
        - billing_account
        - role_assignments
        - pop
        - media_type
        title: PortRequest
        type: object
    PortRequestPartial:
      description: Port Request
      properties:
        billing_account:
          description: An account requires billing_information to be used as a `billing_account`.
          type: string
        connection:
          nullable: true
          type: string
        consuming_account:
          description: 'The `id` of the account consuming a service.


            Used to be `owning_customer`.

            '
          example: '2381982'
          type: string
        contract_ref:
          description: 'A reference to a contract. If no specific contract is used,
            a default

            MAY be chosen by the implementer.

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        external_ref:
          description: Reference field, free to use for the API user.
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

            the API. A manager can read and update the state of entities.

            '
          example: '238189294'
          type: string
        media_type:
          description: 'The media type of the interface.

            See the device''s capabilities to see what types

            are available.

            '
          example: 10GBASE-LR
          maxLength: 20
          type: string
        pop:
          description: 'Same as the `pop` of the `device`.

            '
          example: pop:2913
          type: string
        purchase_order:
          default: ''
          description: 'Purchase Order ID which will be displayed on the invoice.

            '
          example: 'Project: DC Moon'
          maxLength: 80
          type: string
        role_assignments:
          description: 'A set of `RoleAssignment`s. See the documentation

            on the specific `required_contact_roles`,

            `nfc_required_contact_roles` or `nsc_required_contact_roles`

            on what `RoleAssignment`s to provide.

            '
          example:
          - c-impl:123
          - c-noc:331
          items:
            type: string
          type: array
        speed:
          minimum: 0
          nullable: true
          readOnly: true
          type: integer
      title: PartialPortRequest
      type: object
    PortUpdate:
      allOf:
      - $ref: '#/components/schemas/PortUpdatePartial'
      - required:
        - managing_account
        - consuming_account
        - billing_account
        - role_assignments
        title: PortUpdate
        type: object
    PortUpdatePartial:
      description: Port Update
      properties:
        billing_account:
          description: An account requires billing_information to be used as a `billing_account`.
          type: string
        connection:
          nullable: true
          type: string
        consuming_account:
          description: 'The `id` of the account consuming a service.


            Used to be `owning_customer`.

            '
          example: '2381982'
          type: string
        contract_ref:
          description: 'A reference to a contract. If no specific contract is used,
            a default

            MAY be chosen by the implementer.

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        external_ref:
          description: Reference field, free to use for the API user.
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

            the API. A manager can read and update the state of entities.

            '
          example: '238189294'
          type: string
        purchase_order:
          default: ''
          description: 'Purchase Order ID which will be displayed on the invoice.

            '
          example: 'Project: DC Moon'
          maxLength: 80
          type: string
        role_assignments:
          description: 'A set of `RoleAssignment`s. See the documentation

            on the specific `required_contact_roles`,

            `nfc_required_contact_roles` or `nsc_required_contact_roles`

            on what `RoleAssignment`s to provide.

            '
          example:
          - c-impl:123
          - c-noc:331
          items:
            type: string
          type: array
        speed:
          minimum: 0
          nullable: true
          readOnly: true
          type: integer
      title: PartialPortUpdate
      type: object
    ProblemResponse:
      allOf:
      - $ref: '#/components/schemas/ProblemResponsePartial'
      - required:
        - type
        title: ProblemResponse
        type: object
    ProblemResponsePartial:
      description: Encodes a problem into an appropriate response body.
      properties:
        detail:
          description: 'A human-readable explanation specific to this

            occurrence of the problem.'
          type: string
        instance:
          description: 'A URI reference that identifies the specific

            occurrence of the problem.  It may or may not yield

            further information if dereferenced.'
          type: string
        status:
          description: 'The HTTP status code ([RFC7231], Section 6)

            generated by the origin server for this occurrence

            of the problem.'
          minimum: 100
          type: integer
        title:
          description: 'A short, human-readable summary of the problem type.


            It SHOULD NOT change from occurrence to

            occurrence of the problem, except for purposes

            of localization (e.g., using proactive content

            negotiation; see [RFC7231], Section 3.4).

            '
          example: Some fields have validation errors.
          type: string
        type:
          description: 'A URI reference (see RFC3986) that identifies the

            problem type.


            This specification encourages that, when

            dereferenced, it provide human-readable documentation

            for the problem type (e.g., using HTML

            [W3C.REC-html5-20141028]).


            When this member is not present, its value is assumed

            to be "about:blank".

            '
          example: about:blank
          type: string
      title: PartialProblemResponse
      type: object
    ProductOffering:
      description: Polymorphic Product Offering
      discriminator:
        mapping:
          cloud_vc: '#/components/schemas/CloudNetworkProductOffering'
          exchange_lan: '#/components/schemas/ExchangeLanNetworkProductOffering'
          mp2mp_vc: '#/components/schemas/MP2MPNetworkProductOffering'
          p2mp_vc: '#/components/schemas/P2MPNetworkProductOffering'
          p2p_vc: '#/components/schemas/P2PNetworkProductOffering'
        propertyName: type
      oneOf:
      - $ref: '#/components/schemas/ExchangeLanNetworkProductOffering'
      - $ref: '#/components/schemas/P2PNetworkProductOffering'
      - $ref: '#/components/schemas/MP2MPNetworkProductOffering'
      - $ref: '#/components/schemas/P2MPNetworkProductOffering'
      - $ref: '#/components/schemas/CloudNetworkProductOffering'
      title: ProductOffering
    ProductOfferingPartial:
      description: Polymorphic Product Offering
      discriminator:
        mapping:
          cloud_vc: '#/components/schemas/CloudNetworkProductOfferingPartial'
          exchange_lan: '#/components/schemas/ExchangeLanNetworkProductOfferingPartial'
          mp2mp_vc: '#/components/schemas/MP2MPNetworkProductOfferingPartial'
          p2mp_vc: '#/components/schemas/P2MPNetworkProductOfferingPartial'
          p2p_vc: '#/components/schemas/P2PNetworkProductOfferingPartial'
        propertyName: type
      oneOf:
      - $ref: '#/components/schemas/ExchangeLanNetworkProductOfferingPartial'
      - $ref: '#/components/schemas/P2PNetworkProductOfferingPartial'
      - $ref: '#/components/schemas/MP2MPNetworkProductOfferingPartial'
      - $ref: '#/components/schemas/P2MPNetworkProductOfferingPartial'
      - $ref: '#/components/schemas/CloudNetworkProductOfferingPartial'
      title: ProductOffering (partial)
    RateLimitedNetworkServiceConfig:
      allOf:
      - $ref: '#/components/schemas/RateLimitedNetworkServiceConfigPartial'
      - title: RateLimitedNetworkServiceConfig
        type: object
    RateLimitedNetworkServiceConfigPartial:
      description: 'Rate limited network services include a capacity

        property.'
      properties:
        capacity:
          description: 'The capacity of the service in Mbps. If set to Null,

            the maximum capacity will be used, i.e. the virtual circuit is

            not rate-limited.


            An exchange may choose to constrain the available capacity range

            of a `ProductOffering`.


            That means, the service can consume up to the total bandwidth

            of the `Connection`.


            Typically the service is charged based on the capacity.'
          minimum: 1
          nullable: true
          type: integer
      title: PartialRateLimitedNetworkServiceConfig
      type: object
    RefreshTokenRequest:
      allOf:
      - $ref: '#/components/schemas/RefreshTokenRequestPartial'
      - required:
        - refresh_token
        title: RefreshTokenRequest
        type: object
    RefreshTokenRequestPartial:
      description: RefreshTokenRequest
      properties:
        refresh_token:
          type: string
      title: PartialRefreshTokenRequest
      type: object
    Role:
      allOf:
      - $ref: '#/components/schemas/RolePartial'
      - required:
        - name
        - required_fields
        - id
        title: Role
        type: object
    RoleAssignment:
      allOf:
      - $ref: '#/components/schemas/RoleAssignmentPartial'
      - required:
        - role
        - contact
        - id
        title: RoleAssignment
        type: object
    RoleAssignmentPartial:
      description: A role assignment for a contact
      properties:
        contact:
          description: 'The `id` of a contact the role is assigned to.

            '
          example: contact:42b
          type: string
        id:
          type: string
        role:
          description: 'The `id` of a role the contact is assigned to.

            '
          example: role:23
          type: string
      title: PartialRoleAssignment
      type: object
    RoleAssignmentRequest:
      allOf:
      - $ref: '#/components/schemas/RoleAssignmentRequestPartial'
      - required:
        - role
        - contact
        title: RoleAssignmentRequest
        type: object
    RoleAssignmentRequestPartial:
      description: A role assignment request
      properties:
        contact:
          description: 'The `id` of a contact the role is assigned to.

            '
          example: contact:42b
          type: string
        role:
          description: 'The `id` of a role the contact is assigned to.

            '
          example: role:23
          type: string
      title: PartialRoleAssignmentRequest
      type: object
    RoleAssignmentUpdate:
      allOf:
      - $ref: '#/components/schemas/RoleAssignmentUpdatePartial'
      - required:
        - role
        - contact
        title: RoleAssignmentUpdate
        type: object
    RoleAssignmentUpdatePartial:
      description: A role assignemnt update
      properties:
        contact:
          description: 'The `id` of a contact the role is assigned to.

            '
          example: contact:42b
          type: string
        role:
          description: 'The `id` of a role the contact is assigned to.

            '
          example: role:23
          type: string
      title: PartialRoleAssignmentUpdate
      type: object
    RolePartial:
      description: A role for a contact
      properties:
        id:
          type: string
        name:
          description: 'The name of the role.

            '
          example: noc
          maxLength: 80
          type: string
        required_fields:
          description: 'A list of required field names.

            '
          example:
          - name
          - email
          items:
            maxLength: 80
            type: string
          type: array
      title: PartialRole
      type: object
    RoleRequest:
      allOf:
      - $ref: '#/components/schemas/RoleRequestPartial'
      - required:
        - name
        - required_fields
        title: RoleRequest
        type: object
    RoleRequestPartial:
      description: A new role
      properties:
        name:
          description: 'The name of the role.

            '
          example: noc
          maxLength: 80
          type: string
        required_fields:
          description: 'A list of required field names.

            '
          example:
          - name
          - email
          items:
            maxLength: 80
            type: string
          type: array
      title: PartialRoleRequest
      type: object
    RoleUpdate:
      allOf:
      - $ref: '#/components/schemas/RoleUpdatePartial'
      - required:
        - name
        - required_fields
        title: RoleUpdate
        type: object
    RoleUpdatePartial:
      description: A role update
      properties:
        name:
          description: 'The name of the role.

            '
          example: noc
          maxLength: 80
          type: string
        required_fields:
          description: 'A list of required field names.

            '
          example:
          - name
          - email
          items:
            maxLength: 80
            type: string
          type: array
      title: PartialRoleUpdate
      type: object
    RouteServerNetworkFeature:
      allOf:
      - $ref: '#/components/schemas/RouteServerNetworkFeaturePartial'
      - required:
        - id
        - name
        - required
        - flags
        - network_service
        - asn
        - fqdn
        - address_families
        - session_mode
        - available_bgp_session_types
        - ip_v4
        - ip_v6
        - type
        title: RouteServerNetworkFeature
        type: object
    RouteServerNetworkFeatureConfig:
      allOf:
      - $ref: '#/components/schemas/RouteServerNetworkFeatureConfigPartial'
      - required:
        - state
        - managing_account
        - consuming_account
        - billing_account
        - role_assignments
        - network_feature
        - network_service_config
        - asn
        - session_mode
        - bgp_session_type
        - ip
        - id
        - type
        title: RouteServerNetworkFeatureConfig
        type: object
    RouteServerNetworkFeatureConfigPartial:
      description: Route Server Network Feature Config
      properties:
        as_set_v4:
          description: 'AS-SET of the customer for IPv4 prefix filtering.

            This is used to generate filters on the router servers.


            Only valid referenced prefixes within the AS-SET

            are allowed inbound to the route server. All other routes are

            filtered.


            This field is *required* if the route server network feature only

            supports the `af_inet` address family.

            If multiple address families are supported, it is optional if the

            `as_set_v6` is provided.


            Important: The format has to be: "AS-SET@IRR". IRR is the database

            where the AS-SET is registred. Typically used IRR''s are RADB, RIPE,

            NTTCOM, APNIC, ALTDB, LEVEL3, ARIN, AFRINIC, LACNIC

            '
          example: MOON-AS@RIPE
          maxLength: 100
          nullable: true
          type: string
        as_set_v6:
          description: 'AS-SET of the customer for IPv6. This is used to generate
            filters

            on the router servers. Only valid referenced prefixes within

            the AS-SET are allowed inbound to the route server.

            All other routes are filtered.


            This field is *required* if the route server network feature only

            supports the `af_inet6` address family.

            If multiple address families are supported, it is optional if the

            `as_set_v4` is provided.


            Important: The format has to be: "AS-SET@IRR". IRR is the database

            where the AS-SET is registred. Typically used IRR''s are RADB, RIPE,

            NTTCOM, APNIC, ALTDB, LEVEL3, ARIN, AFRINIC, LACNIC

            '
          example: MOON-AS@RIPE
          maxLength: 100
          nullable: true
          type: string
        asn:
          description: 'The ASN of the peer.

            '
          example: 4200000023
          format: int64
          maximum: 4294967295
          minimum: 0
          type: integer
        bgp_session_type:
          description: 'The session type describes which of the both parties will
            open the

            connection. If set to passive, the customer router needs to open

            the connection. If its set to active, the route server will open

            the connection. The standard behavior on most exchanges is passive.

            '
          enum:
          - active
          - passive
          example: passive
          type: string
        billing_account:
          description: An account requires billing_information to be used as a `billing_account`.
          type: string
        consuming_account:
          description: 'The `id` of the account consuming a service.


            Used to be `owning_customer`.

            '
          example: '2381982'
          type: string
        contract_ref:
          description: 'A reference to a contract. If no specific contract is used,
            a default

            MAY be chosen by the implementer.

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        external_ref:
          description: Reference field, free to use for the API user.
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          maxLength: 80
          type: string
        insert_ixp_asn:
          default: true
          description: 'Insert the ASN of the exchange into the AS path. This function
            is only

            used in special cases. In 99% of all cases, it should be false.

            '
          type: boolean
        ip:
          description: 'The BGP session will be established from this IP address.

            Only IPs assigned to the corresponding network service

            config can be used.'
          type: string
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

            the API. A manager can read and update the state of entities.

            '
          example: '238189294'
          type: string
        max_prefix_v4:
          description: 'Announcing more than `max_prefix` IPv4 prefixes the bgp

            session will be droped.

            '
          example: 5000
          minimum: 0
          nullable: true
          type: integer
        max_prefix_v6:
          description: 'Announcing more than `max_prefix` IPv6 prefixes the bgp

            session will be droped.

            '
          example: 5000
          minimum: 0
          nullable: true
          type: integer
        network_feature:
          type: string
        network_service_config:
          type: string
        password:
          default: ''
          description: The cleartext BGP session password
          example: bgp-session-test-23
          maxLength: 128
          type: string
        purchase_order:
          default: ''
          description: 'Purchase Order ID which will be displayed on the invoice.

            '
          example: 'Project: DC Moon'
          maxLength: 80
          type: string
        role_assignments:
          description: 'A set of `RoleAssignment`s. See the documentation

            on the specific `required_contact_roles`,

            `nfc_required_contact_roles` or `nsc_required_contact_roles`

            on what `RoleAssignment`s to provide.

            '
          example:
          - c-impl:123
          - c-noc:331
          items:
            type: string
          type: array
        session_mode:
          description: 'Set the session mode with the routeserver.

            '
          enum:
          - public
          - collector
          example: public
          type: string
        state:
          enum:
          - requested
          - allocated
          - testing
          - production
          - production_change_pending
          - decommission_requested
          - decommissioned
          - archived
          - error
          - operator
          - scheduled
          type: string
        status:
          items:
            $ref: '#/components/schemas/Status'
          type: array
        type:
          example: route_server
          type: string
      required:
      - type
      title: PartialRouteServerNetworkFeatureConfig
      type: object
    RouteServerNetworkFeatureConfigRequest:
      allOf:
      - $ref: '#/components/schemas/RouteServerNetworkFeatureConfigRequestPartial'
      - required:
        - managing_account
        - consuming_account
        - billing_account
        - role_assignments
        - network_feature
        - network_service_config
        - asn
        - session_mode
        - bgp_session_type
        - ip
        - type
        title: RouteServerNetworkFeatureConfigRequest
        type: object
    RouteServerNetworkFeatureConfigRequestPartial:
      description: Route Server Network Feature Config Request
      properties:
        as_set_v4:
          description: 'AS-SET of the customer for IPv4 prefix filtering.

            This is used to generate filters on the router servers.


            Only valid referenced prefixes within the AS-SET

            are allowed inbound to the route server. All other routes are

            filtered.


            This field is *required* if the route server network feature only

            supports the `af_inet` address family.

            If multiple address families are supported, it is optional if the

            `as_set_v6` is provided.


            Important: The format has to be: "AS-SET@IRR". IRR is the database

            where the AS-SET is registred. Typically used IRR''s are RADB, RIPE,

            NTTCOM, APNIC, ALTDB, LEVEL3, ARIN, AFRINIC, LACNIC

            '
          example: MOON-AS@RIPE
          maxLength: 100
          nullable: true
          type: string
        as_set_v6:
          description: 'AS-SET of the customer for IPv6. This is used to generate
            filters

            on the router servers. Only valid referenced prefixes within

            the AS-SET are allowed inbound to the route server.

            All other routes are filtered.


            This field is *required* if the route server network feature only

            supports the `af_inet6` address family.

            If multiple address families are supported, it is optional if the

            `as_set_v4` is provided.


            Important: The format has to be: "AS-SET@IRR". IRR is the database

            where the AS-SET is registred. Typically used IRR''s are RADB, RIPE,

            NTTCOM, APNIC, ALTDB, LEVEL3, ARIN, AFRINIC, LACNIC

            '
          example: MOON-AS@RIPE
          maxLength: 100
          nullable: true
          type: string
        asn:
          description: 'The ASN of the peer.

            '
          example: 4200000023
          format: int64
          maximum: 4294967295
          minimum: 0
          type: integer
        bgp_session_type:
          description: 'The session type describes which of the both parties will
            open the

            connection. If set to passive, the customer router needs to open

            the connection. If its set to active, the route server will open

            the connection. The standard behavior on most exchanges is passive.

            '
          enum:
          - active
          - passive
          example: passive
          type: string
        billing_account:
          description: An account requires billing_information to be used as a `billing_account`.
          type: string
        consuming_account:
          description: 'The `id` of the account consuming a service.


            Used to be `owning_customer`.

            '
          example: '2381982'
          type: string
        contract_ref:
          description: 'A reference to a contract. If no specific contract is used,
            a default

            MAY be chosen by the implementer.

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        external_ref:
          description: Reference field, free to use for the API user.
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        insert_ixp_asn:
          default: true
          description: 'Insert the ASN of the exchange into the AS path. This function
            is only

            used in special cases. In 99% of all cases, it should be false.

            '
          type: boolean
        ip:
          description: 'The BGP session will be established from this IP address.

            Only IPs assigned to the corresponding network service

            config can be used.'
          type: string
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

            the API. A manager can read and update the state of entities.

            '
          example: '238189294'
          type: string
        max_prefix_v4:
          description: 'Announcing more than `max_prefix` IPv4 prefixes the bgp

            session will be droped.

            '
          example: 5000
          minimum: 0
          nullable: true
          type: integer
        max_prefix_v6:
          description: 'Announcing more than `max_prefix` IPv6 prefixes the bgp

            session will be droped.

            '
          example: 5000
          minimum: 0
          nullable: true
          type: integer
        network_feature:
          type: string
        network_service_config:
          type: string
        password:
          default: ''
          description: The cleartext BGP session password
          example: bgp-session-test-23
          maxLength: 128
          type: string
        purchase_order:
          default: ''
          description: 'Purchase Order ID which will be displayed on the invoice.

            '
          example: 'Project: DC Moon'
          maxLength: 80
          type: string
        role_assignments:
          description: 'A set of `RoleAssignment`s. See the documentation

            on the specific `required_contact_roles`,

            `nfc_required_contact_roles` or `nsc_required_contact_roles`

            on what `RoleAssignment`s to provide.

            '
          example:
          - c-impl:123
          - c-noc:331
          items:
            type: string
          type: array
        session_mode:
          description: 'Set the session mode with the routeserver.

            '
          enum:
          - public
          - collector
          example: public
          type: string
        type:
          example: route_server
          type: string
      required:
      - type
      title: PartialRouteServerNetworkFeatureConfigRequest
      type: object
    RouteServerNetworkFeatureConfigUpdate:
      allOf:
      - $ref: '#/components/schemas/RouteServerNetworkFeatureConfigUpdatePartial'
      - required:
        - managing_account
        - consuming_account
        - asn
        - session_mode
        - bgp_session_type
        - ip
        - type
        title: RouteServerNetworkFeatureConfigUpdate
        type: object
    RouteServerNetworkFeatureConfigUpdatePartial:
      description: Route Server Network Feature Config Update
      properties:
        as_set_v4:
          description: 'AS-SET of the customer for IPv4 prefix filtering.

            This is used to generate filters on the router servers.


            Only valid referenced prefixes within the AS-SET

            are allowed inbound to the route server. All other routes are

            filtered.


            This field is *required* if the route server network feature only

            supports the `af_inet` address family.

            If multiple address families are supported, it is optional if the

            `as_set_v6` is provided.


            Important: The format has to be: "AS-SET@IRR". IRR is the database

            where the AS-SET is registred. Typically used IRR''s are RADB, RIPE,

            NTTCOM, APNIC, ALTDB, LEVEL3, ARIN, AFRINIC, LACNIC

            '
          example: MOON-AS@RIPE
          maxLength: 100
          nullable: true
          type: string
        as_set_v6:
          description: 'AS-SET of the customer for IPv6. This is used to generate
            filters

            on the router servers. Only valid referenced prefixes within

            the AS-SET are allowed inbound to the route server.

            All other routes are filtered.


            This field is *required* if the route server network feature only

            supports the `af_inet6` address family.

            If multiple address families are supported, it is optional if the

            `as_set_v4` is provided.


            Important: The format has to be: "AS-SET@IRR". IRR is the database

            where the AS-SET is registred. Typically used IRR''s are RADB, RIPE,

            NTTCOM, APNIC, ALTDB, LEVEL3, ARIN, AFRINIC, LACNIC

            '
          example: MOON-AS@RIPE
          maxLength: 100
          nullable: true
          type: string
        asn:
          description: 'The ASN of the peer.

            '
          example: 4200000023
          format: int64
          maximum: 4294967295
          minimum: 0
          type: integer
        bgp_session_type:
          description: 'The session type describes which of the both parties will
            open the

            connection. If set to passive, the customer router needs to open

            the connection. If its set to active, the route server will open

            the connection. The standard behavior on most exchanges is passive.

            '
          enum:
          - active
          - passive
          example: passive
          type: string
        consuming_account:
          description: 'The `id` of the account consuming a service.


            Used to be `owning_customer`.

            '
          example: '2381982'
          type: string
        external_ref:
          description: Reference field, free to use for the API user.
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        insert_ixp_asn:
          default: true
          description: 'Insert the ASN of the exchange into the AS path. This function
            is only

            used in special cases. In 99% of all cases, it should be false.

            '
          type: boolean
        ip:
          description: 'The BGP session will be established from this IP address.

            Only IPs assigned to the corresponding network service

            config can be used.'
          type: string
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

            the API. A manager can read and update the state of entities.

            '
          example: '238189294'
          type: string
        max_prefix_v4:
          description: 'Announcing more than `max_prefix` IPv4 prefixes the bgp

            session will be droped.

            '
          example: 5000
          minimum: 0
          nullable: true
          type: integer
        max_prefix_v6:
          description: 'Announcing more than `max_prefix` IPv6 prefixes the bgp

            session will be droped.

            '
          example: 5000
          minimum: 0
          nullable: true
          type: integer
        password:
          default: ''
          description: The cleartext BGP session password
          example: bgp-session-test-23
          maxLength: 128
          type: string
        session_mode:
          description: 'Set the session mode with the routeserver.

            '
          enum:
          - public
          - collector
          example: public
          type: string
        type:
          example: route_server
          type: string
      required:
      - type
      title: PartialRouteServerNetworkFeatureConfigUpdate
      type: object
    RouteServerNetworkFeaturePartial:
      description: Route Server Network Feature
      properties:
        address_families:
          description: 'When creating a route server feature config, remember

            to specify which address family or families to use:


            If the route server network feature only supports `af_inet`,

            then the `as_set_v4` in the network feature config is required.


            If only `af_inet6` is supported, then the `as_set_v6` is required.


            If both `af_inet` and `af_inet6` are supported, either

            `as_set_v4` or `as_set_v6` is required, but both can be provided

            in the network service config.

            '
          example:
          - af_inet
          items:
            enum:
            - af_inet
            - af_inet6
            type: string
          type: array
        asn:
          minimum: 0
          type: integer
        available_bgp_session_types:
          description: 'The route server provides the following session modes.

            '
          example:
          - passive
          items:
            enum:
            - active
            - passive
            type: string
          type: array
        flags:
          description: 'A list of IXP specific feature flags. This can be used

            to see if e.g. RPKI hard filtering is available.'
          items:
            $ref: '#/components/schemas/IXPSpecificFeatureFlag'
          type: array
        fqdn:
          description: 'The FQDN of the route server.

            '
          example: rs1.moon-ix.net
          maxLength: 80
          type: string
        id:
          type: string
        ip_v4:
          description: 'IPv4 address in [dot-decimal notation](https://en.wikipedia.org/wiki/Dot-decimal_notation)

            notation.

            '
          example: 23.42.0.1
          type: string
        ip_v6:
          description: 'IPv6 address in hexadecimal colon separated notation.

            '
          example: 2001:23:42::1
          type: string
        looking_glass_url:
          description: 'The url of the looking glass.

            '
          example: https://lg.moon-ix.net/rs1
          type: string
        name:
          maxLength: 80
          type: string
        network_service:
          type: string
        nfc_required_contact_roles:
          description: 'The configuration will require at least one of each of the

            specified roles assigned to contacts.


            The role assignments is associated with the network feature

            config through the `role_assignments` list property.'
          items:
            type: string
          readOnly: true
          type: array
        required:
          type: boolean
        session_mode:
          description: 'When creating a route server feature config, remember

            to specify the same session_mode as the route server.

            '
          enum:
          - public
          - collector
          example: public
          type: string
        type:
          example: route_server
          type: string
      required:
      - type
      title: PartialRouteServerNetworkFeature
      type: object
    Stateful:
      allOf:
      - $ref: '#/components/schemas/StatefulPartial'
      - required:
        - state
        title: Stateful
        type: object
    StatefulPartial:
      description: A stateful object
      properties:
        state:
          enum:
          - requested
          - allocated
          - testing
          - production
          - production_change_pending
          - decommission_requested
          - decommissioned
          - archived
          - error
          - operator
          - scheduled
          type: string
        status:
          items:
            $ref: '#/components/schemas/Status'
          type: array
      title: PartialStateful
      type: object
    Status:
      allOf:
      - $ref: '#/components/schemas/StatusPartial'
      - required:
        - severity
        - tag
        - message
        - attrs
        - timestamp
        title: Status
        type: object
    StatusPartial:
      description: Status Message
      properties:
        attrs:
          type: object
        message:
          type: string
        severity:
          description: 'We are using syslog severity levels: 0 = Emergency,

            1 = Alert, 2 = Critical, 3 = Error, 4 = Warning,

            5 = Notice, 6 = Informational, 7 = Debug.

            '
          example: 2
          format: int32
          maximum: 7
          minimum: 0
          type: integer
        tag:
          type: string
        timestamp:
          format: date-time
          type: string
      title: PartialStatus
      type: object
    VLanConfigDot1Q:
      allOf:
      - $ref: '#/components/schemas/VLanConfigDot1QPartial'
      - required:
        - vlan
        - vlan_type
        title: VLanConfigDot1Q
        type: object
    VLanConfigDot1QPartial:
      description: A Dot1Q vlan configuration
      properties:
        vlan:
          description: 'A VLAN tag

            '
          example: 23
          format: int32
          maximum: 4094
          minimum: 1
          type: integer
        vlan_ethertype:
          default: '0x8100'
          description: The ethertype of the vlan in hexadecimal notation.
          enum:
          - '0x8100'
          - '0x88a8'
          - '0x9100'
          type: string
        vlan_type:
          example: dot1q
          type: string
      required:
      - vlan_type
      title: PartialVLanConfigDot1Q
      type: object
    VLanConfigPort:
      allOf:
      - $ref: '#/components/schemas/VLanConfigPortPartial'
      - required:
        - vlan_type
        title: VLanConfigPort
        type: object
    VLanConfigPortPartial:
      description: A Port vlan configuration
      properties:
        vlan_type:
          example: port
          type: string
      required:
      - vlan_type
      title: PartialVLanConfigPort
      type: object
    VLanConfigQinQ:
      allOf:
      - $ref: '#/components/schemas/VLanConfigQinQPartial'
      - required:
        - outer_vlan
        - inner_vlan
        - vlan_type
        title: VLanConfigQinQ
        type: object
    VLanConfigQinQPartial:
      description: A QinQ vlan configuration
      properties:
        inner_vlan:
          description: 'The inner VLAN id.

            '
          example: 200
          format: int32
          maximum: 4094
          minimum: 1
          type: integer
        outer_vlan:
          description: 'The outer VLAN id.

            '
          example: 200
          format: int32
          maximum: 4094
          minimum: 1
          type: integer
        outer_vlan_ethertype:
          default: '0x8100'
          description: The ethertype of the outer tag in hexadecimal notation.
          enum:
          - '0x8100'
          - '0x88a8'
          - '0x9100'
          type: string
        vlan_type:
          example: dot1q
          type: string
      required:
      - vlan_type
      title: PartialVLanConfigQinQ
      type: object
    VlanConfig:
      description: 'The vlan configuration defines how the service

        is made available on the connection.'
      discriminator:
        mapping:
          dot1q: '#/components/schemas/VLanConfigDot1Q'
          port: '#/components/schemas/VLanConfigPort'
          qinq: '#/components/schemas/VLanConfigQinQ'
        propertyName: vlan_type
      oneOf:
      - $ref: '#/components/schemas/VLanConfigDot1Q'
      - $ref: '#/components/schemas/VLanConfigQinQ'
      - $ref: '#/components/schemas/VLanConfigPort'
      title: VlanConfig
    VlanConfigPartial:
      description: 'The vlan configuration defines how the service

        is made available on the connection.'
      discriminator:
        mapping:
          dot1q: '#/components/schemas/VLanConfigDot1QPartial'
          port: '#/components/schemas/VLanConfigPortPartial'
          qinq: '#/components/schemas/VLanConfigQinQPartial'
        propertyName: vlan_type
      oneOf:
      - $ref: '#/components/schemas/VLanConfigDot1QPartial'
      - $ref: '#/components/schemas/VLanConfigQinQPartial'
      - $ref: '#/components/schemas/VLanConfigPortPartial'
      title: VlanConfig (partial)
  securitySchemes:
    Bearer:
      bearerFormat: JWT
      scheme: bearer
      type: http
info:
  contact:
    url: https://ix-api.net
  description: '

    This API allows to config/change/delete Internet Exchange services.


    # Filters


    When querying collections, the provided query parameters

    are validated. Unknown query parameters are ignored.

    Providing invalid filter values should yield a validation error.

    '
  title: IX-API
  version: 2.1.0
openapi: 3.0.0
paths:
  /accounts:
    get:
      description: 'Retrieve a list of `Account`s.


        This includes all accounts the currently authorized account

        is managing and the current account itself.'
      operationId: accounts_list
      parameters:
      - description: Filter by id
        explode: false
        in: query
        name: id
        required: false
        schema:
          example: id1,id2,id3
          items:
            type: string
          type: array
        style: form
      - description: Filter by state
        in: query
        name: state
        required: false
        schema:
          type: string
      - description: Filter by state__is_not
        in: query
        name: state__is_not
        required: false
        schema:
          type: string
      - description: Filter by managing_account
        in: query
        name: managing_account
        required: false
        schema:
          type: string
      - description: Filter by billable
        in: query
        name: billable
        required: false
        schema:
          type: integer
      - description: Filter by external_ref
        in: query
        name: external_ref
        required: false
        schema:
          type: string
      - description: Filter by name
        in: query
        name: name
        required: false
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Account'
                type: array
          description: 'List of: Account'
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Some fields did not validate.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
          description: ValidationError
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
      tags:
      - accounts
    post:
      description: Create a new account.
      operationId: accounts_create
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccountRequest'
        description: Account Request
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Account'
          description: Account
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Some fields did not validate.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
          description: ValidationError
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
      tags:
      - accounts
  /accounts/{id}:
    delete:
      description: 'Accounts can be deleted, when all services and configs

        are decommissioned or the account is not longer referenced

        e.g. as a `managing_account` or `billing_account`.


        Deleting an account will cascade to `contacts` and

        `role-assignments`.


        The request will immediately fail, if the above preconditions

        are not met.'
      operationId: accounts_destroy
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Account'
          description: Account
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
        '404':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 404
                    title:
                      example: Not found.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/not-found.html
                      type: string
                  type: object
          description: NotFound
      tags:
      - accounts
    get:
      description: Get a single account.
      operationId: accounts_read
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Account'
          description: Account
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
        '404':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 404
                    title:
                      example: Not found.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/not-found.html
                      type: string
                  type: object
          description: NotFound
      tags:
      - accounts
    patch:
      description: Update parts of an account.
      operationId: accounts_partial_update
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      requestBody:
        content:
          application/merge-patch+json:
            schema:
              $ref: '#/components/schemas/AccountUpdatePartial'
        description: Account Update Request
      responses:
        '202':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Account'
          description: Account
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Some fields did not validate.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
          description: ValidationError
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
        '404':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 404
                    title:
                      example: Not found.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/not-found.html
                      type: string
                  type: object
          description: NotFound
      tags:
      - accounts
    put:
      description: Update the entire account.
      operationId: accounts_update
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccountUpdate'
        description: Account Update Request
      responses:
        '202':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Account'
          description: Account
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Some fields did not validate.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
          description: ValidationError
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
        '404':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 404
                    title:
                      example: Not found.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/not-found.html
                      type: string
                  type: object
          description: NotFound
      tags:
      - accounts
  /auth/refresh:
    post:
      description: 'Reauthenticate the API user, issue a new `access_token`

        and `refresh_token` pair by providing the `refresh_token`

        in the request body.'
      operationId: auth_token_refresh
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RefreshTokenRequest'
        description: RefreshTokenRequest
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthToken'
          description: AuthToken
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Some fields did not validate.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
          description: ValidationError
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      - https://errors.ix-api.net/v2/not-authenticated.html
                      type: string
                  type: object
          description: Authentication
      security: []
      tags:
      - auth
  /auth/token:
    post:
      description: 'Authenticate an API user identified by `api_key` and

        `api_secret`.'
      operationId: auth_token_create
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AuthTokenRequest'
        description: AuthTokenRequest
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthToken'
          description: AuthToken
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Some fields did not validate.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
          description: ValidationError
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      - https://errors.ix-api.net/v2/not-authenticated.html
                      type: string
                  type: object
          description: Authentication
      security: []
      tags:
      - auth
  /connections:
    get:
      description: List all `connection`s.
      operationId: connections_list
      parameters:
      - description: Filter by id
        explode: false
        in: query
        name: id
        required: false
        schema:
          example: id1,id2,id3
          items:
            type: string
          type: array
        style: form
      - description: Filter by state
        in: query
        name: state
        required: false
        schema:
          type: string
      - description: Filter by state__is_not
        in: query
        name: state__is_not
        required: false
        schema:
          type: string
      - description: Filter by mode
        in: query
        name: mode
        required: false
        schema:
          type: string
      - description: Filter by mode__is_not
        in: query
        name: mode__is_not
        required: false
        schema:
          type: string
      - description: Filter by name
        in: query
        name: name
        required: false
        schema:
          type: string
      - description: Filter by metro_area_network
        in: query
        name: metro_area_network
        required: false
        schema:
          type: string
      - description: Filter by pop
        in: query
        name: pop
        required: false
        schema:
          type: string
      - description: Filter by facility
        in: query
        name: facility
        required: false
        schema:
          type: string
      - description: Filter by external_ref
        in: query
        name: external_ref
        required: false
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Connection'
                type: array
          description: 'List of: Connection'
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Some fields did not validate.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
          description: ValidationError
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
      tags:
      - connections
  /connections/{id}:
    get:
      description: Read a `connection`.
      operationId: connections_read
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Connection'
          description: Connection
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
        '404':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 404
                    title:
                      example: Not found.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/not-found.html
                      type: string
                  type: object
          description: NotFound
      tags:
      - connections
  /contacts:
    get:
      description: List available contacts managed by the authorized account.
      operationId: contacts_list
      parameters:
      - description: Filter by id
        explode: false
        in: query
        name: id
        required: false
        schema:
          example: id1,id2,id3
          items:
            type: string
          type: array
        style: form
      - description: Filter by managing_account
        in: query
        name: managing_account
        required: false
        schema:
          type: string
      - description: Filter by consuming_account
        in: query
        name: consuming_account
        required: false
        schema:
          type: string
      - description: Filter by external_ref
        in: query
        name: external_ref
        required: false
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Contact'
                type: array
          description: 'List of: Contact'
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Some fields did not validate.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
          description: ValidationError
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
      tags:
      - contacts
    post:
      description: Create a new contact.
      operationId: contacts_create
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContactRequest'
        description: A contact creation request
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Contact'
          description: Contact
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Some fields did not validate.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
          description: ValidationError
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
      tags:
      - contacts
  /contacts/{id}:
    delete:
      description: 'Remove a contact.


        Please note, that a contact can only be removed if

        it is not longer in use in a network service or config

        through a role assignment.'
      operationId: contacts_destroy
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Contact'
          description: Contact
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Unable to fulfill your request.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/unable-to-fulfill.html
                      type: string
                  type: object
          description: UnableToFulfill
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
        '404':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 404
                    title:
                      example: Not found.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/not-found.html
                      type: string
                  type: object
          description: NotFound
      tags:
      - contacts
    get:
      description: Get a contact by it's id
      operationId: contacts_read
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Contact'
          description: Contact
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
        '404':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 404
                    title:
                      example: Not found.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/not-found.html
                      type: string
                  type: object
          description: NotFound
      tags:
      - contacts
    patch:
      description: Update parts of a contact
      operationId: contacts_partial_update
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      requestBody:
        content:
          application/merge-patch+json:
            schema:
              $ref: '#/components/schemas/ContactRequestPartial'
        description: A contact creation request
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Contact'
          description: Contact
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Some fields did not validate.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
          description: ValidationError
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
        '404':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 404
                    title:
                      example: Not found.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/not-found.html
                      type: string
                  type: object
          description: NotFound
      tags:
      - contacts
    put:
      description: Update a contact
      operationId: contacts_update
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContactRequest'
        description: A contact creation request
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Contact'
          description: Contact
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Some fields did not validate.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
          description: ValidationError
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
        '404':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 404
                    title:
                      example: Not found.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/not-found.html
                      type: string
                  type: object
          description: NotFound
      tags:
      - contacts
  /devices:
    get:
      description: List available devices
      operationId: devices_list
      parameters:
      - description: Filter by id
        explode: false
        in: query
        name: id
        required: false
        schema:
          example: id1,id2,id3
          items:
            type: string
          type: array
        style: form
      - description: Filter by name
        in: query
        name: name
        required: false
        schema:
          type: string
      - description: Filter by capability_media_type
        in: query
        name: capability_media_type
        required: false
        schema:
          type: string
      - description: Filter by capability_speed
        in: query
        name: capability_speed
        required: false
        schema:
          type: integer
      - description: Filter by capability_speed__lt
        in: query
        name: capability_speed__lt
        required: false
        schema:
          type: integer
      - description: Filter by capability_speed__lte
        in: query
        name: capability_speed__lte
        required: false
        schema:
          type: integer
      - description: Filter by capability_speed__gt
        in: query
        name: capability_speed__gt
        required: false
        schema:
          type: integer
      - description: Filter by capability_speed__gte
        in: query
        name: capability_speed__gte
        required: false
        schema:
          type: integer
      - description: Filter by facility
        in: query
        name: facility
        required: false
        schema:
          type: string
      - description: Filter by pop
        in: query
        name: pop
        required: false
        schema:
          type: string
      - description: Filter by metro_area_network
        in: query
        name: metro_area_network
        required: false
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Device'
                type: array
          description: 'List of: Device'
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Some fields did not validate.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
          description: ValidationError
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
      tags:
      - devices
  /devices/{id}:
    get:
      description: Get a specific device identified by id
      operationId: devices_read
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Device'
          description: Device
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
        '404':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 404
                    title:
                      example: Not found.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/not-found.html
                      type: string
                  type: object
          description: NotFound
      tags:
      - devices
  /facilities:
    get:
      description: Get a (filtered) list of `facilities`.
      operationId: facilities_list
      parameters:
      - description: Filter by id
        explode: false
        in: query
        name: id
        required: false
        schema:
          example: id1,id2,id3
          items:
            type: string
          type: array
        style: form
      - description: Filter by capability_media_type
        in: query
        name: capability_media_type
        required: false
        schema:
          type: string
      - description: Filter by capability_speed
        in: query
        name: capability_speed
        required: false
        schema:
          type: integer
      - description: Filter by capability_speed__lt
        in: query
        name: capability_speed__lt
        required: false
        schema:
          type: integer
      - description: Filter by capability_speed__lte
        in: query
        name: capability_speed__lte
        required: false
        schema:
          type: integer
      - description: Filter by capability_speed__gt
        in: query
        name: capability_speed__gt
        required: false
        schema:
          type: integer
      - description: Filter by capability_speed__gte
        in: query
        name: capability_speed__gte
        required: false
        schema:
          type: integer
      - description: Filter by organisation_name
        in: query
        name: organisation_name
        required: false
        schema:
          type: string
      - description: Filter by metro_area
        in: query
        name: metro_area
        required: false
        schema:
          type: string
      - description: Filter by metro_area_network
        in: query
        name: metro_area_network
        required: false
        schema:
          type: string
      - description: Filter by address_country
        in: query
        name: address_country
        required: false
        schema:
          type: string
      - description: Filter by address_locality
        in: query
        name: address_locality
        required: false
        schema:
          type: string
      - description: Filter by postal_code
        in: query
        name: postal_code
        required: false
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Facility'
                type: array
          description: 'List of: Facility'
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Some fields did not validate.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
          description: ValidationError
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
      tags:
      - facilities
  /facilities/{id}:
    get:
      description: Retrieve a facility by id
      operationId: facilities_read
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Facility'
                type: array
          description: 'List of: Facility'
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
        '404':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 404
                    title:
                      example: Not found.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/not-found.html
                      type: string
                  type: object
          description: NotFound
      tags:
      - facilities
  /health:
    get:
      description: Get the IX-API service health status.
      operationId: health_status
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HealthResponse'
          description: Health Status Response
      tags:
      - health
  /ips:
    get:
      description: List all ip addresses (and prefixes).
      operationId: ips_list
      parameters:
      - description: Filter by id
        explode: false
        in: query
        name: id
        required: false
        schema:
          example: id1,id2,id3
          items:
            type: string
          type: array
        style: form
      - description: Filter by managing_account
        in: query
        name: managing_account
        required: false
        schema:
          type: string
      - description: Filter by consuming_account
        in: query
        name: consuming_account
        required: false
        schema:
          type: string
      - description: Filter by external_ref
        in: query
        name: external_ref
        required: false
        schema:
          type: string
      - description: Filter by network_service
        in: query
        name: network_service
        required: false
        schema:
          type: string
      - description: Filter by network_service_config
        in: query
        name: network_service_config
        required: false
        schema:
          type: string
      - description: Filter by network_feature
        in: query
        name: network_feature
        required: false
        schema:
          type: string
      - description: Filter by network_feature_config
        in: query
        name: network_feature_config
        required: false
        schema:
          type: string
      - description: Filter by version
        in: query
        name: version
        required: false
        schema:
          type: integer
      - description: Filter by fqdn
        in: query
        name: fqdn
        required: false
        schema:
          type: string
      - description: Filter by prefix_length
        in: query
        name: prefix_length
        required: false
        schema:
          type: integer
      - description: Filter by valid_not_before
        in: query
        name: valid_not_before
        required: false
        schema:
          type: string
      - description: Filter by valid_not_after
        in: query
        name: valid_not_after
        required: false
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/IpAddress'
                type: array
          description: 'List of: IP-Address'
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Some fields did not validate.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
          description: ValidationError
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
      tags:
      - ips
    post:
      description: Add an ip host address or network prefix.
      operationId: ips_create
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IpAddressRequest'
        description: IP-Address / Prefix allocation Request
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IpAddress'
          description: IP-Address
      tags:
      - ips
  /ips/{id}:
    get:
      description: Get a single ip addresses by it's id.
      operationId: ips_read
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IpAddress'
          description: IP-Address
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
        '404':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 404
                    title:
                      example: Not found.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/not-found.html
                      type: string
                  type: object
          description: NotFound
      tags:
      - ips
    patch:
      description: 'Update parts of an ip address.



        As with the `PUT` opertaion, IP addresses, where you

        don''t have update rights, will yield a `resource access denied`

        error when attempting an update.


        If the ip address was allocated for you, you might

        not be able to change anything but the `fqdn`.'
      operationId: ips_partial_update
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      requestBody:
        content:
          application/merge-patch+json:
            schema:
              $ref: '#/components/schemas/IpAddressUpdatePartial'
        description: IP-Address Update
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IpAddress'
          description: IP-Address
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Some fields did not validate.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
          description: ValidationError
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
        '404':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 404
                    title:
                      example: Not found.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/not-found.html
                      type: string
                  type: object
          description: NotFound
      tags:
      - ips
    put:
      description: 'Update an ip address object.


        You can only update

        IP addresses within your current scope. Not all

        addresses you can read you can update.


        If the ip address was allocated for you, you might

        not be able to change anything but the `fqdn`.'
      operationId: ips_update
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IpAddressUpdate'
        description: IP-Address Update
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IpAddress'
          description: IP-Address
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Some fields did not validate.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
          description: ValidationError
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
        '404':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 404
                    title:
                      example: Not found.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/not-found.html
                      type: string
                  type: object
          description: NotFound
      tags:
      - ips
  /macs:
    get:
      description: List all mac addresses managed by the authorized customer.
      operationId: macs_list
      parameters:
      - description: Filter by id
        explode: false
        in: query
        name: id
        required: false
        schema:
          example: id1,id2,id3
          items:
            type: string
          type: array
        style: form
      - description: Filter by managing_account
        in: query
        name: managing_account
        required: false
        schema:
          type: string
      - description: Filter by consuming_account
        in: query
        name: consuming_account
        required: false
        schema:
          type: string
      - description: Filter by external_ref
        in: query
        name: external_ref
        required: false
        schema:
          type: string
      - description: Filter by network_service_config
        in: query
        name: network_service_config
        required: false
        schema:
          type: string
      - description: Filter by address
        in: query
        name: address
        required: false
        schema:
          type: string
      - description: Filter by assigned_at
        in: query
        name: assigned_at
        required: false
        schema:
          type: string
      - description: Filter by valid_not_before
        in: query
        name: valid_not_before
        required: false
        schema:
          type: string
      - description: Filter by valid_not_after
        in: query
        name: valid_not_after
        required: false
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/MacAddress'
                type: array
          description: 'List of: MAC-Address'
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Some fields did not validate.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
          description: ValidationError
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
      tags:
      - macs
    post:
      description: Register a mac address.
      operationId: macs_create
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MacAddressRequest'
        description: MAC-Address Request
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MacAddress'
          description: MAC-Address
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Some fields did not validate.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
          description: ValidationError
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
      tags:
      - macs
  /macs/{id}:
    delete:
      description: Remove a mac address.
      operationId: macs_destroy
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MacAddress'
          description: MAC-Address
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Unable to fulfill your request.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/unable-to-fulfill.html
                      type: string
                  type: object
          description: UnableToFulfill
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
        '404':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 404
                    title:
                      example: Not found.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/not-found.html
                      type: string
                  type: object
          description: NotFound
      tags:
      - macs
    get:
      description: Get a single mac address by it's id.
      operationId: macs_read
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MacAddress'
          description: MAC-Address
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
        '404':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 404
                    title:
                      example: Not found.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/not-found.html
                      type: string
                  type: object
          description: NotFound
      tags:
      - macs
  /member-joining-rules:
    get:
      description: Get a list of joining rules
      operationId: member-joining-rules_list
      parameters:
      - description: Filter by id
        explode: false
        in: query
        name: id
        required: false
        schema:
          example: id1,id2,id3
          items:
            type: string
          type: array
        style: form
      - description: Filter by network_service
        in: query
        name: network_service
        required: false
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/MemberJoiningRule'
                type: array
          description: 'List of: Polymorphic Member Joining Rule'
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Some fields did not validate.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
          description: ValidationError
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
      tags:
      - member-joining-rules
    post:
      description: Create a member joining rule
      operationId: member-joining-rules_create
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MemberJoiningRuleRequest'
        description: Polymorphic Member Joining Rule Request
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MemberJoiningRule'
          description: Polymorphic Member Joining Rule
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Some fields did not validate.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
          description: ValidationError
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
      tags:
      - member-joining-rules
  /member-joining-rules/{id}:
    delete:
      description: Delete a joining rule
      operationId: member-joining-rules_destroy
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MemberJoiningRule'
          description: Polymorphic Member Joining Rule
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Unable to fulfill your request.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/unable-to-fulfill.html
                      type: string
                  type: object
          description: UnableToFulfill
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
        '404':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 404
                    title:
                      example: Not found.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/not-found.html
                      type: string
                  type: object
          description: NotFound
      tags:
      - member-joining-rules
    get:
      description: Get a single rule
      operationId: member-joining-rules_read
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MemberJoiningRule'
          description: Polymorphic Member Joining Rule
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
        '404':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 404
                    title:
                      example: Not found.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/not-found.html
                      type: string
                  type: object
          description: NotFound
      tags:
      - member-joining-rules
    patch:
      description: Partially update a joining rule
      operationId: member-joining-rules_partial_update
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      requestBody:
        content:
          application/merge-patch+json:
            schema:
              $ref: '#/components/schemas/MemberJoiningRuleUpdatePartial'
        description: Polymorphic Member Joining Rule Update
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MemberJoiningRule'
          description: Polymorphic Member Joining Rule
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Some fields did not validate.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
          description: ValidationError
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
        '404':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 404
                    title:
                      example: Not found.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/not-found.html
                      type: string
                  type: object
          description: NotFound
      tags:
      - member-joining-rules
    put:
      description: Update a joining rule
      operationId: member-joining-rules_update
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MemberJoiningRuleUpdate'
        description: Polymorphic Member Joining Rule Update
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MemberJoiningRule'
          description: Polymorphic Member Joining Rule
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Some fields did not validate.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
          description: ValidationError
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
        '404':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 404
                    title:
                      example: Not found.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/not-found.html
                      type: string
                  type: object
          description: NotFound
      tags:
      - member-joining-rules
  /metro-area-networks:
    get:
      description: List all MetroAreaNetworks
      operationId: metro-area-networks_list
      parameters:
      - description: Filter by id
        explode: false
        in: query
        name: id
        required: false
        schema:
          example: id1,id2,id3
          items:
            type: string
          type: array
        style: form
      - description: Filter by name
        in: query
        name: name
        required: false
        schema:
          type: string
      - description: Filter by metro_area
        in: query
        name: metro_area
        required: false
        schema:
          type: string
      - description: Filter by service_provider
        in: query
        name: service_provider
        required: false
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/MetroAreaNetwork'
                type: array
          description: 'List of: MetroAreaNetwork'
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Some fields did not validate.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
          description: ValidationError
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
      tags:
      - metro-area-networks
  /metro-area-networks/{id}:
    get:
      description: Retrieve a MetroAreaNetwork
      operationId: metro-area-networks_read
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MetroAreaNetwork'
          description: MetroAreaNetwork
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
        '404':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 404
                    title:
                      example: Not found.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/not-found.html
                      type: string
                  type: object
          description: NotFound
      tags:
      - metro-area-networks
  /metro-areas:
    get:
      description: List all MetroAreas
      operationId: metro-areas_list
      parameters:
      - description: Filter by id
        explode: false
        in: query
        name: id
        required: false
        schema:
          example: id1,id2,id3
          items:
            type: string
          type: array
        style: form
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/MetroArea'
                type: array
          description: 'List of: MetroArea'
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Some fields did not validate.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
          description: ValidationError
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
      tags:
      - metro-areas
  /metro-areas/{id}:
    get:
      description: Get a single MetroArea
      operationId: metro-areas_read
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/MetroArea'
                type: array
          description: 'List of: MetroArea'
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
        '404':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 404
                    title:
                      example: Not found.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/not-found.html
                      type: string
                  type: object
          description: NotFound
      tags:
      - metro-areas
  /network-feature-configs:
    get:
      description: Get all network feature configs.
      operationId: network-feature-configs_list
      parameters:
      - description: Filter by id
        explode: false
        in: query
        name: id
        required: false
        schema:
          example: id1,id2,id3
          items:
            type: string
          type: array
        style: form
      - description: Filter by state
        in: query
        name: state
        required: false
        schema:
          type: string
      - description: Filter by state__is_not
        in: query
        name: state__is_not
        required: false
        schema:
          type: string
      - description: Filter by managing_account
        in: query
        name: managing_account
        required: false
        schema:
          type: string
      - description: Filter by consuming_account
        in: query
        name: consuming_account
        required: false
        schema:
          type: string
      - description: Filter by external_ref
        in: query
        name: external_ref
        required: false
        schema:
          type: string
      - description: Filter by type
        in: query
        name: type
        required: false
        schema:
          enum:
          - route_server
          type: string
      - description: Filter by service_config
        in: query
        name: service_config
        required: false
        schema:
          type: string
      - description: Filter by network_feature
        in: query
        name: network_feature
        required: false
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/NetworkFeatureConfig'
                type: array
          description: 'List of: Polymorphic Network Feature Config'
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Some fields did not validate.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
          description: ValidationError
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
      tags:
      - network-feature-configs
    post:
      description: 'Create a configuration for a `NetworkFeature`

        defined in the `NetworkFeature`s collection.'
      operationId: network-feature-configs_create
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NetworkFeatureConfigRequest'
        description: Polymorphic Network Feature Config Request
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NetworkFeatureConfig'
          description: Polymorphic Network Feature Config
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Some fields did not validate.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
          description: ValidationError
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
      tags:
      - network-feature-configs
  /network-feature-configs/{id}:
    delete:
      description: 'Remove a network feature config.


        The network feature config will be marked as

        `decommission_requested`.

        Decommissioning a network feature config will not

        cascade to related services or service configs.'
      operationId: network-feature-configs_destroy
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      responses:
        '202':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NetworkFeatureConfig'
          description: Polymorphic Network Feature Config
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Unable to fulfill your request.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/unable-to-fulfill.html
                      type: string
                  type: object
          description: UnableToFulfill
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
        '404':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 404
                    title:
                      example: Not found.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/not-found.html
                      type: string
                  type: object
          description: NotFound
      tags:
      - network-feature-configs
    get:
      description: Get a single network feature config.
      operationId: network-feature-configs_read
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NetworkFeatureConfig'
          description: Polymorphic Network Feature Config
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
        '404':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 404
                    title:
                      example: Not found.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/not-found.html
                      type: string
                  type: object
          description: NotFound
      tags:
      - network-feature-configs
    patch:
      description: Update parts of a network feature configuration
      operationId: network-feature-configs_partial_update
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      requestBody:
        content:
          application/merge-patch+json:
            schema:
              $ref: '#/components/schemas/NetworkFeatureConfigUpdatePartial'
        description: Polymorphic Network Feauture Config Update
      responses:
        '202':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NetworkFeatureConfig'
          description: Polymorphic Network Feature Config
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Some fields did not validate.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
          description: ValidationError
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
        '404':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 404
                    title:
                      example: Not found.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/not-found.html
                      type: string
                  type: object
          description: NotFound
      tags:
      - network-feature-configs
    put:
      description: Update a network feature configuration
      operationId: network-feature-configs_update
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NetworkFeatureConfigUpdate'
        description: Polymorphic Network Feauture Config Update
      responses:
        '202':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NetworkFeatureConfig'
          description: Polymorphic Network Feature Config
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Some fields did not validate.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
          description: ValidationError
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
        '404':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 404
                    title:
                      example: Not found.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/not-found.html
                      type: string
                  type: object
          description: NotFound
      tags:
      - network-feature-configs
  /network-features:
    get:
      description: List available network features.
      operationId: network-features_list
      parameters:
      - description: Filter by id
        explode: false
        in: query
        name: id
        required: false
        schema:
          example: id1,id2,id3
          items:
            type: string
          type: array
        style: form
      - description: Filter by type
        in: query
        name: type
        required: false
        schema:
          enum:
          - route_server
          type: string
      - description: Filter by required
        in: query
        name: required
        required: false
        schema:
          type: string
      - description: Filter by network_service
        in: query
        name: network_service
        required: false
        schema:
          type: string
      - description: Filter by name
        in: query
        name: name
        required: false
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/NetworkFeature'
                type: array
          description: 'List of: Polymorphic Network Feature'
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Some fields did not validate.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
          description: ValidationError
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
      tags:
      - network-features
  /network-features/{id}:
    get:
      description: Get a single network feature by it's id.
      operationId: network-features_read
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NetworkFeature'
          description: Polymorphic Network Feature
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
        '404':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 404
                    title:
                      example: Not found.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/not-found.html
                      type: string
                  type: object
          description: NotFound
      tags:
      - network-features
  /network-service-configs:
    get:
      description: Get all `network-service-config`s.
      operationId: network-service-configs_list
      parameters:
      - description: Filter by id
        explode: false
        in: query
        name: id
        required: false
        schema:
          example: id1,id2,id3
          items:
            type: string
          type: array
        style: form
      - description: Filter by state
        in: query
        name: state
        required: false
        schema:
          type: string
      - description: Filter by state__is_not
        in: query
        name: state__is_not
        required: false
        schema:
          type: string
      - description: Filter by managing_account
        in: query
        name: managing_account
        required: false
        schema:
          type: string
      - description: Filter by consuming_account
        in: query
        name: consuming_account
        required: false
        schema:
          type: string
      - description: Filter by external_ref
        in: query
        name: external_ref
        required: false
        schema:
          type: string
      - description: Filter by type
        in: query
        name: type
        required: false
        schema:
          enum:
          - exchange_lan
          - p2p_vc
          - p2mp_vc
          - mp2mp_vc
          - cloud_vc
          type: string
      - description: Filter by inner_vlan
        in: query
        name: inner_vlan
        required: false
        schema:
          type: integer
      - description: Filter by outer_vlan
        in: query
        name: outer_vlan
        required: false
        schema:
          type: integer
      - description: Filter by capacity
        in: query
        name: capacity
        required: false
        schema:
          type: integer
      - description: Filter by network_service
        in: query
        name: network_service
        required: false
        schema:
          type: string
      - description: Filter by connection
        in: query
        name: connection
        required: false
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/NetworkServiceConfig'
                type: array
          description: 'List of: Polymorphic Network Service Config'
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Some fields did not validate.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
          description: ValidationError
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
      tags:
      - network-service-configs
    post:
      description: Create a `network-service-config`.
      operationId: network-service-configs_create
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NetworkServiceConfigRequest'
        description: Polymorhic Network Service Config Request
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NetworkServiceConfig'
          description: Polymorphic Network Service Config
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Some fields did not validate.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
          description: ValidationError
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
      tags:
      - network-service-configs
  /network-service-configs/{id}:
    delete:
      description: 'Request decommissioning the network service configuration.


        The network service config will assume the state

        `decommission_requested`.

        This will cascade to related resources like

        `network-feature-configs`.'
      operationId: network-service-configs_destroy
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      responses:
        '202':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NetworkServiceConfig'
          description: Polymorphic Network Service Config
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Unable to fulfill your request.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/unable-to-fulfill.html
                      type: string
                  type: object
          description: UnableToFulfill
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
        '404':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 404
                    title:
                      example: Not found.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/not-found.html
                      type: string
                  type: object
          description: NotFound
      tags:
      - network-service-configs
    get:
      description: Get a `network-service-config`
      operationId: network-service-configs_read
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NetworkServiceConfig'
          description: Polymorphic Network Service Config
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
        '404':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 404
                    title:
                      example: Not found.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/not-found.html
                      type: string
                  type: object
          description: NotFound
      tags:
      - network-service-configs
    patch:
      description: Update parts of an exisiting `network-service-config`.
      operationId: network-service-configs_partial_update
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      requestBody:
        content:
          application/merge-patch+json:
            schema:
              $ref: '#/components/schemas/NetworkServiceConfigUpdatePartial'
        description: Polymorphic Network Service Config
      responses:
        '202':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NetworkServiceConfig'
          description: Polymorphic Network Service Config
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Some fields did not validate.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
          description: ValidationError
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
        '404':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 404
                    title:
                      example: Not found.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/not-found.html
                      type: string
                  type: object
          description: NotFound
      tags:
      - network-service-configs
    put:
      description: Update an exisiting `network-service-config`
      operationId: network-service-configs_update
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NetworkServiceConfigUpdate'
        description: Polymorphic Network Service Config
      responses:
        '202':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NetworkServiceConfig'
          description: Polymorphic Network Service Config
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Some fields did not validate.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
          description: ValidationError
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
        '404':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 404
                    title:
                      example: Not found.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/not-found.html
                      type: string
                  type: object
          description: NotFound
      tags:
      - network-service-configs
  /network-services:
    get:
      description: List available `NetworkService`s.
      operationId: network-services_list
      parameters:
      - description: Filter by id
        explode: false
        in: query
        name: id
        required: false
        schema:
          example: id1,id2,id3
          items:
            type: string
          type: array
        style: form
      - description: Filter by state
        in: query
        name: state
        required: false
        schema:
          type: string
      - description: Filter by state__is_not
        in: query
        name: state__is_not
        required: false
        schema:
          type: string
      - description: Filter by managing_account
        in: query
        name: managing_account
        required: false
        schema:
          type: string
      - description: Filter by consuming_account
        in: query
        name: consuming_account
        required: false
        schema:
          type: string
      - description: Filter by external_ref
        in: query
        name: external_ref
        required: false
        schema:
          type: string
      - description: Filter by type
        in: query
        name: type
        required: false
        schema:
          enum:
          - exchange_lan
          - p2p_vc
          - p2mp_vc
          - mp2mp_vc
          - cloud_vc
          type: string
      - description: Filter by pop
        in: query
        name: pop
        required: false
        schema:
          type: string
      - description: Filter by product_offering
        in: query
        name: product_offering
        required: false
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/NetworkService'
                type: array
          description: 'List of: Polymorphic Network Services'
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Some fields did not validate.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
          description: ValidationError
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
      tags:
      - network-services
    post:
      description: Create a new network service
      operationId: network-services_create
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NetworkServiceRequest'
        description: Polymorphic Network Service Request
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NetworkService'
          description: Polymorphic Network Services
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Some fields did not validate.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
          description: ValidationError
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
      tags:
      - network-services
  /network-services/{id}:
    delete:
      description: 'Request decomissioning of the network service.


        The network service will enter the state of

        `decommission_requested`. The request will

        cascade to related network service and feature

        configs.'
      operationId: network-services_destroy
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      responses:
        '202':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NetworkServiceDeleteResponse'
          description: Polymorphic Network Service Request
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Unable to fulfill your request.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/unable-to-fulfill.html
                      type: string
                  type: object
          description: UnableToFulfill
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
        '404':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 404
                    title:
                      example: Not found.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/not-found.html
                      type: string
                  type: object
          description: NotFound
      tags:
      - network-services
    get:
      description: Get a specific `network-service` by id.
      operationId: network-services_read
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NetworkService'
          description: Polymorphic Network Services
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
        '404':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 404
                    title:
                      example: Not found.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/not-found.html
                      type: string
                  type: object
          description: NotFound
      tags:
      - network-services
    patch:
      description: Partially update a network service
      operationId: network-services_partial_update
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      requestBody:
        content:
          application/merge-patch+json:
            schema:
              $ref: '#/components/schemas/NetworkServiceRequestPartial'
        description: Polymorphic Network Service Request
      responses:
        '202':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NetworkService'
          description: Polymorphic Network Services
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Some fields did not validate.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
          description: ValidationError
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
        '404':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 404
                    title:
                      example: Not found.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/not-found.html
                      type: string
                  type: object
          description: NotFound
      tags:
      - network-services
    put:
      description: Update a network service
      operationId: network-services_update
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NetworkServiceRequest'
        description: Polymorphic Network Service Request
      responses:
        '202':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NetworkService'
          description: Polymorphic Network Services
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Some fields did not validate.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
          description: ValidationError
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
        '404':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 404
                    title:
                      example: Not found.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/not-found.html
                      type: string
                  type: object
          description: NotFound
      tags:
      - network-services
  /network-services/{id}/change-request:
    delete:
      description: Retract or reject a change to the network service.
      operationId: network-service-change-request_destroy
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      responses:
        '202':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NetworkServiceChangeRequest'
          description: NetworkServiceChangeRequest
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Unable to fulfill your request.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/unable-to-fulfill.html
                      type: string
                  type: object
          description: UnableToFulfill
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
        '404':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 404
                    title:
                      example: Not found.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/not-found.html
                      type: string
                  type: object
          description: NotFound
      tags:
      - network-services
    get:
      description: Get the change request.
      operationId: network-service-change-request_read
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      responses:
        '202':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NetworkServiceChangeRequest'
          description: NetworkServiceChangeRequest
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
        '404':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 404
                    title:
                      example: Not found.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/not-found.html
                      type: string
                  type: object
          description: NotFound
      tags:
      - network-services
    post:
      description: 'Request a change to the network service.


        A participant in a network service of type

        `p2p_vc` can issue a change request, expressing a

        desired change in the capacity.

        The change is accepted when all sides have configured

        the network service configs with the new bandwidth.

        These changes can sometimes require a change of the

        product offering.

        The product offering may only differ in regards to

        bandwidth.


        The network service will change it''s state from `production`

        into `production_change_pending`.


        Only one change request may be issued at a time.'
      operationId: network-service-change-request_create
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NetworkServiceChangeRequest'
        description: NetworkServiceChangeRequest
      responses:
        '202':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NetworkServiceChangeRequest'
          description: NetworkServiceChangeRequest
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Some fields did not validate.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
          description: ValidationError
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
      tags:
      - network-services
  /pops:
    get:
      description: List all PoPs
      operationId: pops_list
      parameters:
      - description: Filter by id
        explode: false
        in: query
        name: id
        required: false
        schema:
          example: id1,id2,id3
          items:
            type: string
          type: array
        style: form
      - description: Filter by facility
        in: query
        name: facility
        required: false
        schema:
          type: string
      - description: Filter by metro_area_network
        in: query
        name: metro_area_network
        required: false
        schema:
          type: string
      - description: Filter by capability_media_type
        in: query
        name: capability_media_type
        required: false
        schema:
          type: string
      - description: Filter by capability_speed
        in: query
        name: capability_speed
        required: false
        schema:
          type: integer
      - description: Filter by capability_speed__lt
        in: query
        name: capability_speed__lt
        required: false
        schema:
          type: integer
      - description: Filter by capability_speed__lte
        in: query
        name: capability_speed__lte
        required: false
        schema:
          type: integer
      - description: Filter by capability_speed__gt
        in: query
        name: capability_speed__gt
        required: false
        schema:
          type: integer
      - description: Filter by capability_speed__gte
        in: query
        name: capability_speed__gte
        required: false
        schema:
          type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/PointOfPresence'
                type: array
          description: 'List of: Point Of Presence'
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Some fields did not validate.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
          description: ValidationError
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
      tags:
      - pops
  /pops/{id}:
    get:
      description: Get a single point of presence
      operationId: pops_read
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PointOfPresence'
          description: Point Of Presence
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
        '404':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 404
                    title:
                      example: Not found.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/not-found.html
                      type: string
                  type: object
          description: NotFound
      tags:
      - pops
  /ports:
    get:
      description: List all ports.
      operationId: ports_list
      parameters:
      - description: Filter by id
        explode: false
        in: query
        name: id
        required: false
        schema:
          example: id1,id2,id3
          items:
            type: string
          type: array
        style: form
      - description: Filter by state
        in: query
        name: state
        required: false
        schema:
          type: string
      - description: Filter by state__is_not
        in: query
        name: state__is_not
        required: false
        schema:
          type: string
      - description: Filter by media_type
        in: query
        name: media_type
        required: false
        schema:
          type: string
      - description: Filter by pop
        in: query
        name: pop
        required: false
        schema:
          type: string
      - description: Filter by name
        in: query
        name: name
        required: false
        schema:
          type: string
      - description: Filter by external_ref
        in: query
        name: external_ref
        required: false
        schema:
          type: string
      - description: Filter by device
        in: query
        name: device
        required: false
        schema:
          type: string
      - description: Filter by speed
        in: query
        name: speed
        required: false
        schema:
          type: string
      - description: Filter by connection
        in: query
        name: connection
        required: false
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Port'
                type: array
          description: 'List of: Port'
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Some fields did not validate.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
          description: ValidationError
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
      tags:
      - ports
  /ports/{id}:
    get:
      description: Retrieve a port.
      operationId: ports_read
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Port'
          description: Port
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
        '404':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 404
                    title:
                      example: Not found.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/not-found.html
                      type: string
                  type: object
          description: NotFound
      tags:
      - ports
  /product-offerings:
    get:
      description: List all (filtered) products-offerings available on the platform
      operationId: product-offerings_list
      parameters:
      - description: Filter by id
        explode: false
        in: query
        name: id
        required: false
        schema:
          example: id1,id2,id3
          items:
            type: string
          type: array
        style: form
      - description: Filter by type
        in: query
        name: type
        required: false
        schema:
          enum:
          - exchange_lan
          - p2p_vc
          - mp2mp_vc
          - p2mp_vc
          - cloud_vc
          type: string
      - description: Filter by name
        in: query
        name: name
        required: false
        schema:
          type: string
      - description: Filter by handover_metro_area
        in: query
        name: handover_metro_area
        required: false
        schema:
          type: string
      - description: Filter by handover_metro_area_network
        in: query
        name: handover_metro_area_network
        required: false
        schema:
          type: string
      - description: Filter by service_metro_area
        in: query
        name: service_metro_area
        required: false
        schema:
          type: string
      - description: Filter by service_metro_area_network
        in: query
        name: service_metro_area_network
        required: false
        schema:
          type: string
      - description: Filter by service_provider
        in: query
        name: service_provider
        required: false
        schema:
          type: string
      - description: Filter by downgrade_allowed
        in: query
        name: downgrade_allowed
        required: false
        schema:
          enum:
          - 'true'
          - 'true'
          type: string
      - description: Filter by upgrade_allowed
        in: query
        name: upgrade_allowed
        required: false
        schema:
          enum:
          - 'true'
          - 'false'
          type: string
      - description: 'Find product offerings where bandwidth is

          within the range of `bandwidth_min` and `bandwidth_max`.'
        in: query
        name: bandwidth
        required: false
        schema:
          type: integer
      - description: Filter by physical_port_speed
        in: query
        name: physical_port_speed
        required: false
        schema:
          type: integer
      - description: Filter by service_provider_region
        in: query
        name: service_provider_region
        required: false
        schema:
          type: string
      - description: Filter by service_provider_pop
        in: query
        name: service_provider_pop
        required: false
        schema:
          type: string
      - description: Filter by delivery_method
        in: query
        name: delivery_method
        required: false
        schema:
          enum:
          - dedicated
          - shared
          type: string
      - description: 'For product offerings of type `cloud_vc`, if the

          `service_provider_workflow` is `provider_first` the

          `cloud_key` will be used for filtering the relevant

          offerings.'
        in: query
        name: cloud_key
        required: false
        schema:
          type: string
      - description: 'Returned objects only have properties which are

          present in the list of fields.

          The required `type` property is *implicitly* included.

          The results are *deduplicated*.

          '
        example: handover_metro_area,service_provider
        in: query
        name: fields
        required: false
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/ProductOfferingPartial'
                type: array
          description: 'List of: Polymorphic Product Offering'
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Some fields did not validate.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
          description: ValidationError
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
      tags:
      - product-offerings
  /product-offerings/{id}:
    get:
      description: Get a single products-offering by id.
      operationId: product-offerings_read
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductOffering'
          description: Polymorphic Product Offering
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
        '404':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 404
                    title:
                      example: Not found.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/not-found.html
                      type: string
                  type: object
          description: NotFound
      tags:
      - product-offerings
  /role-assignments:
    get:
      description: List all role assignments for a contact.
      operationId: role-assignments_list
      parameters:
      - description: Filter by id
        explode: false
        in: query
        name: id
        required: false
        schema:
          example: id1,id2,id3
          items:
            type: string
          type: array
        style: form
      - description: Filter by contact
        in: query
        name: contact
        required: false
        schema:
          type: string
      - description: Filter by role
        in: query
        name: role
        required: false
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/RoleAssignment'
                type: array
          description: 'List of: A role assignment for a contact'
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Some fields did not validate.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
          description: ValidationError
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
      tags:
      - role-assignments
    post:
      description: 'Assign a `Role` to a `Contact`.


        The contact needs to have all fields filled, which the

        role requires. If this is not the case a `400`

        `UnableToFulfill` will be returned.'
      operationId: role-assignments_create
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RoleAssignmentRequest'
        description: A role assignment request
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RoleAssignment'
          description: A role assignment for a contact
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Some fields did not validate.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/validation-error.html
                      - https://errors.ix-api.net/v2/unable-to-fulfill.html
                      type: string
                  type: object
          description: ValidationError
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
      tags:
      - role-assignments
  /role-assignments/{assignment_id}:
    delete:
      description: 'Remove a role assignment from a contact.


        If the contact is still in use with a given role required,

        this will yield an `UnableToFulfill` error.'
      operationId: role-assignments_destroy
      parameters:
      - description: Get by assignment_id
        in: path
        name: assignment_id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RoleAssignment'
          description: A role assignment for a contact
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Unable to fulfill your request.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/unable-to-fulfill.html
                      type: string
                  type: object
          description: UnableToFulfill
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
        '404':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 404
                    title:
                      example: Not found.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/not-found.html
                      type: string
                  type: object
          description: NotFound
      tags:
      - role-assignments
    get:
      description: Get a role assignment for a contact.
      operationId: role-assignments_read
      parameters:
      - description: Get by assignment_id
        in: path
        name: assignment_id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RoleAssignment'
          description: A role assignment for a contact
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
          description: PermissionDenied
        '404':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 404
                    title:
                      example: Not found.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/not-found.html
                      type: string
                  type: object
          description: NotFound
      tags:
      - role-assignments
  /roles:
    get:
      description: List all roles available.
      operationId: roles_list
      parameters:
      - description: Filter by id
        explode: false
        in: query
        name: id
        required: false
        schema:
          example: id1,id2,id3
          items:
            type: string
          type: array
        style: form
      - description: Filter by name
        in: query
        name: name
        required: false
        schema:
          type: string
      - description: Filter by contact
        in: query
        name: contact
        required: false
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Role'
                type: array
          description: 'List of: A role for a contact'
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
      tags:
      - roles
  /roles/{id}:
    get:
      description: Get a single `Role`.
      operationId: roles_read
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      - description: Filter by id
        explode: false
        in: query
        name: id
        required: false
        schema:
          example: id1,id2,id3
          items:
            type: string
          type: array
        style: form
      - description: Filter by name
        in: query
        name: name
        required: false
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Role'
          description: A role for a contact
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
          description: Authentication
      tags:
      - roles
security:
- Bearer: []
servers:
- url: /api/v2
tags:
- description: 'An `Account` represents an individual customer account, organization

    or partner involved with the IXP. They are used to consume

    services from an IXP.


    Accounts can have a hierarchy, i.e. an

    account can have sub-accounts. The max-depth of

    the account-hierarchy may vary by implementer, but it''s safe to

    assume an account can have sub-accounts.


    Each `Account` has a state. Only `Account`s in state `production`

    or `production_state_pending` are ready to consume services.


    There are `Contact`s associated with each account. Contacts can

    be assigned for `Role`s via `RoleAssignment`s. Depending on the

    IXP and the services the account wants to use, contacts with

    specific roles may be required.

    A contact with role `legal` is mandatory for an account to become

    operational.


    Only accounts with `billing_information` present can be used

    as a `billing_account`.'
  name: accounts
- description: 'Open an authorized session with the IX-API. This is equivalent to

    a ''login'' endpoint.


    Upon success, you will receive an `access_token` and

    a `refreh_token`. Both are JWTs and have limited lifetimes. You

    can get information like their expiry time directly by parsing

    the tokens.


    Use the `access_token` as `Bearer` in your `Authorization` header

    for getting access to the API.


    When the session (i.e. the `access_token`) expires, use the

    `refresh_token` (if it''s not yet expired) with the

    `refresh`-endpoint to reauthenticate and get a fresh `access_token`.'
  name: auth
- description: 'A `Connection` is a functional group of physical connections

    collected together into a LAG (aka trunk).


    A `connection` with only one `port` can be also configured as

    standalone which means no LAG configuration on the switch.'
  name: connections
- description: 'A `Contact` is a role undertaking a specific responsibility

    within an account, typically a department or agent of the

    customer company.


    `Contact`s are assigned multiple roles by `RoleAssignment`s.


    A contact is bound to the account by the `consuming_account` property.'
  name: contacts
- description: 'A `Device` is a network hardware device, typically a switch, which

    is located at a specified facility and inside a `PointOfPresence`.

    PoPs.


    They may be physically located at their related PoPs.'
  name: devices
- description: 'A `Facility` is a data centre, with a determined physical address,

    from which a defined set of PoPs can be accessed'
  name: facilities
- description: 'This endpoint provides a health status response implementing

    https://tools.ietf.org/id/draft-inadarei-api-health-check-04.html


    The schema describes the toplevel fields - however the

    implementation of health checks is up to the IX-API implementor.'
  name: health
- description: 'An `IP` is a IPv4 or 6 addresses, with a given validity period.

    Some services require IP addresses to work.


    When you are joining an `exchange_lan` network service

    for example, addresses on the peering lan will be assigned

    to you.'
  name: ips
- description: 'A `MAC` is a MAC addresses with a given validity period.


    Some services require MAC addresses to work.

    Please note that only *unicast* MAC addresses are allowed.

    You are not alllowed to use multicast or broadcast addresses.


    The address itself can not be updated after creation.

    However: It can be expired by changing the `valid_not_before`

    and `valid_not_after` properties.'
  name: macs
- description: 'A `MemberJoiningRule` defines a rule to allow or deny access for

    an `Account` to a access a `NetworkService`.


    Furthermore, some `NetworkService`s may only be visible if the

    querying account is listed in an allow rule.'
  name: member-joining-rules
- description: 'Services are provided directly on or can be consumed

    from inside a `MetroAreaNetwork`.


    Accounts can indicate their presence in a `MetroAreaNetwork`

    to others by adding a list of ids.'
  name: metro-area-networks
- description: 'A MetroArea exists if a `MetroAreaNetwork` or `Facility` is

    present in it.'
  name: metro-areas
- description: 'A `NetworkFeatureConfig` is a configuration for

    using a `NetworkFeature`.


    For certain `NetworkFeature`s, which are marked as required,

    one `NetworkFeatureConfig needs to be created in order to move

    the `NetworkServiceConfig` into `production`.'
  name: network-feature-configs
- description: 'A `NetworkFeature` represents additional funcationality of a single

    `NetworkService`.


    For certain `NetworkFeature`s, which are marked as required,

    one `NetworkFeatureConfig needs to be created in order to move

    the  `NetworkServiceConfig` into `production`.'
  name: network-features
- description: 'A `NetworkServiceConfig` is a customer''s configuration for usage

    of a `NetworkService`, e.g. the configuration of a (subset of a)

    connection for that customer''s traffic


    The `type` of the config determines the service you are

    configuring.


    You can find the services available to you on the platform,

    by querying the `NetworkService`s resource.


    For certain `NetworkFeature`s, which are marked as required,

    one `NetworkFeatureConfig needs to be created in order to move

    the  `NetworkServiceConfig` into `production`.'
  name: network-service-configs
- description: 'A `NetworkService` represents an instance of a `ProductOffering`.


    The exchange lan is a special case in which the `NetworkService` is

    managed by the exchange.


    All other `NetworkService`s are created and managed by an `Account`.'
  name: network-services
- description: 'A `PointOfPresence` is a technical installation within a Facility

    which is connected to a single `MetroAreaNetwork`. A single

    `MetroAreaNetwork`, however, may have multiple `PointOfPresence`s.'
  name: pops
- description: 'A `Port` is the point at which subscriber and

    IXP networks meet. A port is always associated with

    a `device` and `pop`, has a `speed` and a `media_type`.'
  name: ports
- description: 'A `ProductOffering` is an offer made by an exchange

    to be consumed by a client.'
  name: product-offerings
- description: A `Contact` can be assigned to many `Roles`.
  name: role-assignments
- description: 'A `Role` enables a `Contact` to act for a specific purpose.


    Well-defined roles are: `implementation`, `noc` and `peering`.

    An implementer may choose to support them or not or may add

    additional ones.'
  name: roles
