components:
  schemas:
    Account:
      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.

            *(Sensitive Property)*'
          example: IX:Service:23042
          maxLength: 80
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `Account`.
          example: QWNjb3VudDo0Mg==
          readOnly: true
          type: string
        legal_name:
          description: 'Legal name of the organisation.

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

            *(Sensitive Property)*

            '
          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. *(Sensitive Property)*

            '
          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
          - cancelled
          type: string
        status:
          items:
            $ref: '#/components/schemas/Status'
          type: array
      required:
      - metro_area_network_presence
      - name
      - id
      title: Account
      type: object
    AccountPatch:
      description: Account Update
      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.

            *(Sensitive Property)*'
          example: IX:Service:23042
          maxLength: 80
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `Account Update`.
          example: QWNjb3VudFBhdGNoOjQy
          readOnly: true
          type: string
        legal_name:
          description: 'Legal name of the organisation.

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

            *(Sensitive Property)*

            '
          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. *(Sensitive Property)*

            '
          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: AccountPatch
      type: object
    AccountRequest:
      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.

            *(Sensitive Property)*'
          example: IX:Service:23042
          maxLength: 80
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `Account Request`.
          example: QWNjb3VudFJlcXVlc3Q6NDI=
          readOnly: true
          type: string
        legal_name:
          description: 'Legal name of the organisation.

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

            *(Sensitive Property)*

            '
          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. *(Sensitive Property)*

            '
          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
      required:
      - address
      - name
      - id
      title: AccountRequest
      type: object
    AccountUpdate:
      description: Account Update
      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.

            *(Sensitive Property)*'
          example: IX:Service:23042
          maxLength: 80
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `Account Update`.
          example: QWNjb3VudFVwZGF0ZTo0Mg==
          readOnly: true
          type: string
        legal_name:
          description: 'Legal name of the organisation.

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

            *(Sensitive Property)*

            '
          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. *(Sensitive Property)*

            '
          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
      required:
      - address
      - metro_area_network_presence
      - name
      - id
      title: AccountUpdate
      type: object
    Address:
      description: A postal address. *(Sensitive Property)*
      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
      required:
      - street_address
      - postal_code
      - locality
      - country
      title: Address
      type: object
    Aggregate:
      description: Mapping of Aggregated Statistics
      properties:
        aggregates:
          additionalProperties:
            $ref: '#/components/schemas/AggregateStatistics'
          description: 'Aggregated statistics for a connection or service configuration.


            For the **property name** the string representation of the

            aggregate interval in ISO8601 period notation is recommended.


            For example: `PT5M`, `P1D`, `P30D`,`P1Y`.


            If a window is defined via the `start` and `end` query parameter,

            the **property name** will be `custom`.


            The available intervals can differ by implementation.

            '
          example:
            P30D:
              accuracy: 0.95
              average_ops_in: 1734882240
              average_ops_out: 173220
              average_pps_in: 1730224
              average_pps_out: 17456
              created_at: '2019-08-24T14:15:22Z'
              next_update_at: '2019-08-24T14:15:22Z'
              title: 30 Days
            PT5M:
              accuracy: 1.0
              average_ops_in: 1734882240
              average_ops_out: 173220
              average_pps_in: 1730224
              average_pps_out: 17456
              created_at: '2019-08-24T14:15:22Z'
              next_update_at: '2019-08-24T14:15:22Z'
              title: 5 Minutes
          type: object
      required:
      - aggregates
      title: Aggregate
      type: object
    AggregateStatistics:
      description: Statistics
      properties:
        accuracy:
          description: 'The accuracy is the ratio of *total aggregated samples* to

            *expected samples*.


            The expected number of samples is the size of the window

            of the aggregate, divided by the aggregation resolution.


            For example: A window of `24 h` with an aggregation resolution

            of `5 m` would yield `288` samples.


            If only `275` samples are available for aggregation, the

            accuracy would be `0.95`.

            '
          example: 0.95
          maximum: 1.0
          minimum: 0.0
          type: number
        average_dps_in:
          description: 'Average **discards per second** inbound.

            '
          example: 0.01
          minimum: 0
          type: number
        average_dps_out:
          description: 'Averages **discards per second** outbound.

            '
          example: 0.12
          minimum: 0
          type: number
        average_eps_in:
          description: 'Average **errors per second** inbound.

            '
          example: 0.32
          minimum: 0
          type: number
        average_eps_out:
          description: 'Averages **errors per second** outbound.

            '
          example: 0.01
          minimum: 0
          type: number
        average_ops_in:
          description: 'Average inbound **octets per second**.

            '
          example: 1734882240
          minimum: 0
          type: integer
        average_ops_out:
          description: 'Average outbound **octets per second**.

            '
          example: 173220
          minimum: 0
          type: integer
        average_pps_in:
          description: 'Average number of inbound **packets per second**.

            '
          example: 1730224
          minimum: 0
          type: integer
        average_pps_out:
          description: 'Average number outbound **packets per second**.

            '
          example: 17456
          minimum: 0
          type: integer
        created_at:
          description: Timestamp when the statistics were created.
          format: date-time
          type: string
        end:
          description: End of the traffic aggregation.
          format: date-time
          type: string
        maximum_in_at:
          description: Timestamp when the inbound peak occured.
          format: date-time
          type: string
        maximum_ops_in:
          description: 'Peak inbound **octets per second** during the interval.

            '
          example: 5734882240
          minimum: 0
          type: integer
        maximum_ops_out:
          description: 'Peak outbound **octets per second** during the interval.

            '
          example: 473220
          minimum: 0
          type: integer
        maximum_out_at:
          description: Timestamp when the outbound peak occured.
          format: date-time
          type: string
        maximum_pps_in:
          description: 'Peak inbound **packets per second** during the interval.

            '
          example: 1730224
          minimum: 0
          type: integer
        maximum_pps_out:
          description: 'Peak outbound **packets per second** during the interval.

            '
          example: 17456
          minimum: 0
          type: integer
        next_update_at:
          description: 'Next update of the statistical data.

            This may not correspond to the aggregate interval.'
          format: date-time
          type: string
        percentile95_ops_out:
          description: '95th percentile of outbound **octets per second**.

            '
          example: 173220
          minimum: 0
          type: integer
        percentile95_pps_in:
          description: '95th percentile of the inbound **octets per second**.

            '
          example: 1734882240
          minimum: 0
          type: integer
        percentile95_pps_out:
          description: '95th percentile of outbound **packets per second**.

            '
          example: 17456
          minimum: 0
          type: integer
        start:
          description: Start of the traffic aggregation.
          format: date-time
          type: string
        title:
          description: 'Title of the aggregated statistics.

            '
          example: 30 Days
          type: string
      required:
      - average_ops_out
      - average_ops_in
      - average_pps_out
      - average_pps_in
      - next_update_at
      - created_at
      - accuracy
      - end
      - start
      - title
      title: AggregateStatistics
      type: object
    AggregateTimeseries:
      description: Aggregated Statistics Timeseries
      properties:
        created_at:
          description: Timestamp when the statistics were created.
          format: date-time
          type: string
        fields:
          description: 'The fields used in the samples. They can be explicitly

            selected using the `fields` query parameter. The `timestamp` is

            always included.

            '
          example:
          - timestamp
          - average_pps_in
          - average_pps_out
          - average_ops_in
          - average_ops_out
          items:
            type: string
          type: array
        next_update_at:
          description: 'Next update of the statistical data.

            This may not correspond to the aggregate interval.'
          format: date-time
          type: string
        origin_timezone:
          description: 'The timezone where the data was collected in tz database

            format.

            '
          example: Europe/Amsterdam
          type: string
        precision:
          description: 'Precision indicates the sampling rate of the aggregated traffic
            data

            in seconds.

            For example if the data is aggregated over 5 minutes, the precision

            would be 300.

            '
          example: 300
          minimum: 0
          type: integer
        samples:
          description: 'A list of timeseries samples, where samples are n-tuples,
            where

            the first element is a timestamp.


            * `timestamp` (DateTime, `string`, ISO 8601, Example: `"2001-10-23T23:42:10Z"`)


            The other fields can be selected in the `fields` query from the

            aggregates. Default fields are:


            * `average_pps_in`  (`integer`)

            * `average_pps_out` (`integer`)

            * `average_ops_in` (`integer`)

            * `average_ops_out` (`integer`)


            Missing values in the timeseries are represented by `null`.'
          items:
            example:
            - '2019-08-24T14:15:22Z'
            - 120302
            - 42980203
            - 320302
            - 84990203
            items: {}
            minItems: 1
            type: array
          type: array
        title:
          description: 'Title of the timeseries.

            '
          example: 5 Minutes
          type: string
      required:
      - samples
      - fields
      - origin_timezone
      - next_update_at
      - created_at
      - precision
      - title
      title: AggregateTimeseries
      type: object
    AllowMemberJoiningRule:
      allOf:
      - $ref: '#/components/schemas/MemberJoiningRule'
      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.

            *(Sensitive Property)*

            '
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `A rule for members joining
            a private vlan`.
          example: QWxsb3dNZW1iZXJKb2luaW5nUnVsZTo0Mg==
          readOnly: 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:
          description: 'The `id` of the related `NetworkService`.


            '
          example: TmV0d29ya1NlcnZpY2U6NDI=
          type: string
      required:
      - type
      - network_service
      - id
      - consuming_account
      - managing_account
      title: AllowMemberJoiningRule
      type: object
    AllowMemberJoiningRulePatch:
      allOf:
      - $ref: '#/components/schemas/MemberJoiningRulePatch'
      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.

            *(Sensitive Property)*

            '
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `A vlan member joining rule
            update`.
          example: QWxsb3dNZW1iZXJKb2luaW5nUnVsZVBhdGNoOjQy
          readOnly: 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: AllowMemberJoiningRulePatch
      type: object
    AllowMemberJoiningRuleRequest:
      allOf:
      - $ref: '#/components/schemas/MemberJoiningRuleRequest'
      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.

            *(Sensitive Property)*

            '
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `A new vlan member joining
            rule`.
          example: QWxsb3dNZW1iZXJKb2luaW5nUnVsZVJlcXVlc3Q6NDI=
          readOnly: 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:
          description: 'The `id` of the related `NetworkService`.


            '
          example: TmV0d29ya1NlcnZpY2U6NDI=
          type: string
      required:
      - type
      - network_service
      - id
      - consuming_account
      - managing_account
      title: AllowMemberJoiningRuleRequest
      type: object
    AllowMemberJoiningRuleUpdate:
      allOf:
      - $ref: '#/components/schemas/MemberJoiningRuleUpdate'
      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.

            *(Sensitive Property)*

            '
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `A vlan member joining rule
            update`.
          example: QWxsb3dNZW1iZXJKb2luaW5nUnVsZVVwZGF0ZTo0Mg==
          readOnly: 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
      required:
      - type
      - id
      - consuming_account
      - managing_account
      title: AllowMemberJoiningRuleUpdate
      type: object
    ApiExtension:
      description: Implementation specific API extensions
      properties:
        base_url:
          description: 'Extension endpoints are available under this base url.

            '
          example: https://ixapi.ixp.example.com/v2/inet-services/
          format: uri
          type: string
        documentation_url:
          description: 'URL of the documentation homepage of the extension.

            '
          example: https://docs.ixp.example.com/ix-api/extensions/inet-services
          format: uri
          type: string
        name:
          description: 'Name of the extension.

            '
          example: iNet Services
          type: string
        publisher:
          description: 'Publisher of the extension.

            '
          example: EXAMPLE-IX
          type: string
        spec_url:
          description: 'URL of the extensions schema specifications.

            The schema format schould be OpenAPI v3.

            '
          example: https://docs.ixp.example.com/ix-api/extensions/inet-services/schema.json
          format: uri
          type: string
      required:
      - spec_url
      - base_url
      - documentation_url
      - publisher
      - name
      title: ApiExtension
      type: object
    ApiFeatures:
      description: Optional API Features
      properties:
        pagination:
          description: 'The API implementation supports pagination on `list`

            operations.'
          type: boolean
      title: ApiFeatures
      type: object
    ApiHealth:
      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
      required:
      - status
      title: ApiHealth
      type: object
    ApiImplementation:
      description: API Implementation
      properties:
        schema_version:
          description: 'Version of the implemented IX-API schema.

            '
          example: 2.0.0
          type: string
        service_version:
          description: 'Version of the API service.

            '
          example: 1.23.0
          type: string
        supported_features:
          $ref: '#/components/schemas/ApiFeatures'
        supported_network_feature_config_types:
          description: 'Array of supported network feature config types.

            '
          example:
          - route_server
          items:
            type: string
          type: array
        supported_network_feature_types:
          description: 'Array of supported network feature types.

            '
          example:
          - route_server
          items:
            type: string
          type: array
        supported_network_service_config_types:
          description: 'Array of supported network service config types.

            '
          example:
          - exchange_lan
          - p2p_vc
          - cloud_vc
          items:
            type: string
          type: array
        supported_network_service_types:
          description: 'Array of network service types, supported by the IX.

            '
          example:
          - exchange_lan
          - p2p_vc
          - cloud_vc
          items:
            type: string
          type: array
        supported_operations:
          description: 'Array of implemented operations of the ix-api schema.

            '
          example:
          - connections_list
          - connections_read
          - network_service_configs_create
          items:
            type: string
          type: array
      required:
      - supported_features
      - supported_operations
      - supported_network_feature_config_types
      - supported_network_feature_types
      - supported_network_service_config_types
      - supported_network_service_types
      - schema_version
      title: ApiImplementation
      type: object
    AuthToken:
      description: AuthToken
      properties:
        access_token:
          type: string
        refresh_token:
          type: string
      required:
      - refresh_token
      - access_token
      title: AuthToken
      type: object
    AuthTokenRequest:
      description: AuthTokenRequest
      properties:
        api_key:
          maxLength: 16
          minLength: 16
          type: string
        api_secret:
          maxLength: 86
          minLength: 86
          type: string
      required:
      - api_secret
      - api_key
      title: AuthTokenRequest
      type: object
    AvailabilityZone:
      description: AvailabilityZone
      properties:
        id:
          description: The *primary identifier* of the `AvailabilityZone`.
          example: QXZhaWxhYmlsaXR5Wm9uZTo0Mg==
          readOnly: true
          type: string
        name:
          description: 'The name (description) for the availability zone

            '
          example: Network A
          maxLength: 80
          type: string
      required:
      - name
      - id
      title: AvailabilityZone
      type: object
    BillingInformation:
      description: 'Optional information required for issuing invoices.

        Only accounts with `billing_information` present can be used

        as a `billing_account`. *(Sensitive Property)*'
      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
      required:
      - address
      - name
      title: BillingInformation
      type: object
    CancellationPolicy:
      description: Cancellation Policy
      properties:
        charged_until:
          description: "Your obligation to pay for the service will end on this date.\n\
            Typically `\u2265 decommission_at`."
          format: date
          type: string
        decommission_at:
          description: 'This field denotes the first possible cancellation

            date of the service.'
          format: date
          type: string
      required:
      - charged_until
      - decommission_at
      title: CancellationPolicy
      type: object
    CancellationRequest:
      description: Service Cancellation Request
      properties:
        decommission_at:
          description: 'An optional date for scheduling the cancellation

            and service decommissioning.'
          format: date
          type: string
      title: CancellationRequest
      type: object
    CloudConfig:
      description: 'The `CloudConfig` provides additional configuration for

        creating the `NetworkServiceConfig` on the cloud provider

        side.


        The `nsc_required_cloud_config_fields` and

        `nsc_supported_cloud_config_fields` attributes of the

        `ProductOffering` specifies which fields are required

        or can be optionally supplied.


        When creating the `NetworkServiceConfig` with a `l3_config`

        and a `routing_functions`, some required fields

        will automatically be derived from the `l3_config`

        and can be ommitted.


        Values in the `cloud_config` will have precedence

        over the `l3_config`.'
      properties:
        bfd:
          description: Enable BFD for the BGP session.
          type: boolean
        bgp_address_family:
          enum:
          - ipv4
          - ipv6
          type: string
        bgp_neighbor_address:
          description: The IP address of the BGP neighbor.
          type: string
        bgp_neighbor_address_primary:
          description: The primary IP address of the BGP neighbor.
          type: string
        bgp_neighbor_address_secondary:
          description: The secondary IP address of the BGP neighbor.
          type: string
        bgp_neighbor_asn:
          description: The ASN of the BGP neighbor.
          type: integer
        bgp_password:
          description: The password to use for BGP sessions.
          type: string
        local_address:
          description: 'The IP address of the router function instance

            in CIDR notation.'
          type: string
        local_address_primary:
          description: 'The primary IP address of the router function instance

            in CIDR notation.'
          type: string
        local_address_secondary:
          description: 'The secondary IP address of the router function instance

            in CIDR notation.'
          type: string
        local_asn:
          description: The local ASN.
          type: integer
        peering_type:
          description: 'Some `cloud_vc` network services require selecting

            a peering type.


            See the `nsc_supported_cloud_config_peering_types` attribute of the corresponding

            `ProductOffering` for valid values.'
          type: string
        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.


            The `nsc_required_cloud_config_fields` attribute of the

            `ProductOffering` will include `vlan` if `provider_vlans` are

            `multi`.'
          format: int32
          maximum: 4094
          minimum: 1
          type: integer
      title: CloudConfig
      type: object
    CloudNetworkProductOffering:
      allOf:
      - $ref: '#/components/schemas/ProductOffering'
      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
        contract_initial_notice_period:
          description: '_**Format:** ISO8601 Duration_


            The notice period for canceling the contract within

            the initial period.

            '
          example: P1M
          nullable: true
          type: string
        contract_initial_period:
          description: '_**Format:** ISO8601 Duration_


            The initial duration of the contract. The contract will be

            renewed after this period for the duration of `contract_renewal_period`.

            '
          example: P6M
          nullable: true
          type: string
        contract_renewal_notice_period:
          description: '_**Format:** ISO8601 Duration_


            The notice period denotes the time before the end of the

            `contract_renewal_period` in which the client has to inform

            the IXP in order to prevent renewal of the contract.

            '
          example: P2W
          nullable: true
          type: string
        contract_renewal_period:
          description: '_**Format:** ISO8601 Duration_


            The duration for which the contract will be renewed after

            the initial period.


            Unless the contract is canceled, it will be

            automatically renewed after the period.

            Cancellation has to be done within the

            `contract_renewal_notice_period`.

            '
          example: P3M
          type: string
        contract_terms:
          description: 'This property informally describe the contract''s notice-
            and

            renewal periods as well as additional terms.


            **Note**: This property contains informal information about

            the contract. For a structured representation see:

            `contract_initial_period`, `contract_initial_notice_period`,

            `contract_renewal_period` and `contract_renewal_notice_period`.


            **Example**: A contract with the terms

            _"initially two weeks, renewing for six month afterwards, cancelable with
            a notice period of one month after and within 5 days during the initial
            period"_

            can be represented as:

            * `contract_initial_period: "P2W"`

            * `contract_initial_notice_period: "P5D"`

            * `contract_renewal_period: "P6M"`

            * `contract_renewal_notice_period: "P1M"`

            '
          example: first 30 days free
          nullable: true
          type: string
        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
        exchange_logo:
          description: 'An URI referencing the logo of the internet exchange.

            '
          example: https://example.ix/resources/ixpLogo
          format: uri
          type: string
        handover_metro_area:
          description: 'Id of the `MetroArea`. The network service will be

            accessed from this metro area.


            In case of a `p2p_vc`, the `handover_metro_area` refers

            to the A-side of the point-to-point connection.

            The A-side is the entity which initiates the network service creation.

            '
          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.


            In case of a `p2p_vc`, the `handover_metro_area_network` refers

            to the A-side of the point-to-point connection.

            The A-side is the entity which initiates the network service creation.

            '
          example: '191239810'
          type: string
        id:
          description: The *primary identifier* of the `Cloud Network Product Offering`.
          example: Q2xvdWROZXR3b3JrUHJvZHVjdE9mZmVyaW5nOjQy
          readOnly: true
          type: string
        name:
          description: Name of the product
          maxLength: 160
          type: string
        notice_period:
          description: '**DEPRECATION NOTICE**: This property will be replaced by

            `contract_initial_period`, `contract_initial_notice_period`,

            `contract_renewal_period` and `contract_renewal_notice_period`.


            The notice period informally states constraints

            which define when the client needs to inform the

            IXP in order to prevent renewal of the contract.

            '
          example: at least 2 weeks before the end of every odd month
          nullable: true
          type: string
        nsc_required_cloud_config_fields:
          description: 'A list of required attributes in the `cloud_config` of a corresponding

            `NetworkServiceConfig`.


            For example: `"vlan"`, `"bgp_password"`, `"bgp_neighbor_address"`

            `"bgp_neighbor_asn"`, `"local_address_primary"`, ...

            '
          example:
          - bgp_neighbor_asn
          - bgp_password
          - local_address_primary
          items:
            type: string
          type: array
        nsc_required_l3_config_fields:
          description: 'A list of required attributes in the `l3_config` of a corresponding

            `NetworkServiceConfig` when used with a `routing_function`.


            For example:  `"bgp_password"`, `"bgp_neighbor_address"`

            `"bgp_neighbor_asn"`, `"local_address_primary"`, ...

            '
          example:
          - bgp_password
          - local_address_primary
          items:
            type: string
          type: array
        nsc_supported_cloud_config_fields:
          description: 'The list of fields which are supported in the `l3_config`

            when creating the network service config with a `routing_function`.


            For example:  `"vlan"`, "`peering_type`",

            `"bgp_password"`, `"bgp_neighbor_address"`, ...

            '
          example:
          - bgp_neighbor_asn
          - bgp_password
          - local_address_primary
          items:
            type: string
          type: array
        nsc_supported_cloud_config_peering_types:
          description: 'The supported peering types for the cloud network service.


            In case selecting a peering type is required, the

            `peering_type` property will be in the

            `nsc_required_cloud_config_fields` list.

            '
          example:
          - private
          - public
          - microsoft
          items:
            type: string
          type: array
        nsc_supported_l3_config_fields:
          description: 'The list of fields which are supported in the `l3_config`

            when creating the network service config with a `routing_function`.


            For example:  `"bgp_password"`, `"bgp_neighbor_address"`

            `"local_address_primary"`, ...

            '
          example:
          - bgp_password
          - local_address_primary
          items:
            type: string
          type: array
        orderable_not_after:
          description: 'This product offering will become unavailable for ordering
            after

            this point in time.'
          format: date-time
          nullable: true
          type: string
        orderable_not_before:
          description: 'This product offering becomes available for ordering after

            this point in time.'
          format: date-time
          nullable: true
          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
        product_logo:
          description: 'An URI referencing a logo for the product offered.

            '
          example: https://example.ix/resources/products/activeCloudPremium
          format: uri
          type: string
        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
          - port_reservation
          - network_service
          - network_service_config
          - routing_function
          example: network_service
          type: string
        service_metro_area:
          description: 'Id of the `MetroArea`. The service is delivered

            in this metro area.


            In case of a `p2p_vc`, the `service_metro_area` refers

            to the B-side of the point-to-point connection.

            The B-side is the accepting party.

            '
          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.


            In case of a `p2p_vc`, the `service_metro_area_network` refers

            to the B-side of the point-to-point connection.

            The B-side is the accepting party.

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

            '
          example: AWS
          type: string
        service_provider_logo:
          description: 'An URI referencing the logo of the service provider.

            '
          example: https://example.ix/resources/providerLogo
          format: uri
          type: string
        service_provider_pop:
          description: 'The datacenter id of the partner NNI to the service provider.

            It supposed to be used when identifying a location via

            the cloud provider''s APIs.

            '
          example: INX6
          nullable: true
          type: string
        service_provider_pop_name:
          description: 'The datacenter description of the partner NNI to the service
            provider.

            '
          example: Interxion FRA6, Frankfurt, DEU
          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
        upgrade_allowed:
          description: 'Indicates if the service can be migrated to

            a higher bandwidth.'
          type: boolean
      required:
      - type
      - nsc_supported_cloud_config_fields
      - nsc_required_cloud_config_fields
      - nsc_supported_cloud_config_peering_types
      - diversity
      - delivery_method
      - service_provider_workflow
      - service_provider_pop
      - service_provider_region
      - nsc_supported_l3_config_fields
      - nsc_required_l3_config_fields
      - bandwidth_max
      - bandwidth_min
      - service_metro_area
      - service_metro_area_network
      - provider_vlans
      - upgrade_allowed
      - downgrade_allowed
      - service_provider
      - physical_port_speed
      - handover_metro_area
      - handover_metro_area_network
      - resource_type
      - display_name
      - name
      - id
      title: CloudNetworkProductOffering
      type: object
    CloudNetworkProductOfferingPatch:
      allOf:
      - $ref: '#/components/schemas/ProductOfferingPatch'
      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
        contract_initial_notice_period:
          description: '_**Format:** ISO8601 Duration_


            The notice period for canceling the contract within

            the initial period.

            '
          example: P1M
          nullable: true
          type: string
        contract_initial_period:
          description: '_**Format:** ISO8601 Duration_


            The initial duration of the contract. The contract will be

            renewed after this period for the duration of `contract_renewal_period`.

            '
          example: P6M
          nullable: true
          type: string
        contract_renewal_notice_period:
          description: '_**Format:** ISO8601 Duration_


            The notice period denotes the time before the end of the

            `contract_renewal_period` in which the client has to inform

            the IXP in order to prevent renewal of the contract.

            '
          example: P2W
          nullable: true
          type: string
        contract_renewal_period:
          description: '_**Format:** ISO8601 Duration_


            The duration for which the contract will be renewed after

            the initial period.


            Unless the contract is canceled, it will be

            automatically renewed after the period.

            Cancellation has to be done within the

            `contract_renewal_notice_period`.

            '
          example: P3M
          type: string
        contract_terms:
          description: 'This property informally describe the contract''s notice-
            and

            renewal periods as well as additional terms.


            **Note**: This property contains informal information about

            the contract. For a structured representation see:

            `contract_initial_period`, `contract_initial_notice_period`,

            `contract_renewal_period` and `contract_renewal_notice_period`.


            **Example**: A contract with the terms

            _"initially two weeks, renewing for six month afterwards, cancelable with
            a notice period of one month after and within 5 days during the initial
            period"_

            can be represented as:

            * `contract_initial_period: "P2W"`

            * `contract_initial_notice_period: "P5D"`

            * `contract_renewal_period: "P6M"`

            * `contract_renewal_notice_period: "P1M"`

            '
          example: first 30 days free
          nullable: true
          type: string
        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
        exchange_logo:
          description: 'An URI referencing the logo of the internet exchange.

            '
          example: https://example.ix/resources/ixpLogo
          format: uri
          type: string
        handover_metro_area:
          description: 'Id of the `MetroArea`. The network service will be

            accessed from this metro area.


            In case of a `p2p_vc`, the `handover_metro_area` refers

            to the A-side of the point-to-point connection.

            The A-side is the entity which initiates the network service creation.

            '
          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.


            In case of a `p2p_vc`, the `handover_metro_area_network` refers

            to the A-side of the point-to-point connection.

            The A-side is the entity which initiates the network service creation.

            '
          example: '191239810'
          type: string
        id:
          description: The *primary identifier* of the `Cloud Network Product Offering`.
          example: Q2xvdWROZXR3b3JrUHJvZHVjdE9mZmVyaW5nUGF0Y2g6NDI=
          readOnly: true
          type: string
        name:
          description: Name of the product
          maxLength: 160
          type: string
        notice_period:
          description: '**DEPRECATION NOTICE**: This property will be replaced by

            `contract_initial_period`, `contract_initial_notice_period`,

            `contract_renewal_period` and `contract_renewal_notice_period`.


            The notice period informally states constraints

            which define when the client needs to inform the

            IXP in order to prevent renewal of the contract.

            '
          example: at least 2 weeks before the end of every odd month
          nullable: true
          type: string
        nsc_required_cloud_config_fields:
          description: 'A list of required attributes in the `cloud_config` of a corresponding

            `NetworkServiceConfig`.


            For example: `"vlan"`, `"bgp_password"`, `"bgp_neighbor_address"`

            `"bgp_neighbor_asn"`, `"local_address_primary"`, ...

            '
          example:
          - bgp_neighbor_asn
          - bgp_password
          - local_address_primary
          items:
            type: string
          type: array
        nsc_required_l3_config_fields:
          description: 'A list of required attributes in the `l3_config` of a corresponding

            `NetworkServiceConfig` when used with a `routing_function`.


            For example:  `"bgp_password"`, `"bgp_neighbor_address"`

            `"bgp_neighbor_asn"`, `"local_address_primary"`, ...

            '
          example:
          - bgp_password
          - local_address_primary
          items:
            type: string
          type: array
        nsc_supported_cloud_config_fields:
          description: 'The list of fields which are supported in the `l3_config`

            when creating the network service config with a `routing_function`.


            For example:  `"vlan"`, "`peering_type`",

            `"bgp_password"`, `"bgp_neighbor_address"`, ...

            '
          example:
          - bgp_neighbor_asn
          - bgp_password
          - local_address_primary
          items:
            type: string
          type: array
        nsc_supported_cloud_config_peering_types:
          description: 'The supported peering types for the cloud network service.


            In case selecting a peering type is required, the

            `peering_type` property will be in the

            `nsc_required_cloud_config_fields` list.

            '
          example:
          - private
          - public
          - microsoft
          items:
            type: string
          type: array
        nsc_supported_l3_config_fields:
          description: 'The list of fields which are supported in the `l3_config`

            when creating the network service config with a `routing_function`.


            For example:  `"bgp_password"`, `"bgp_neighbor_address"`

            `"local_address_primary"`, ...

            '
          example:
          - bgp_password
          - local_address_primary
          items:
            type: string
          type: array
        orderable_not_after:
          description: 'This product offering will become unavailable for ordering
            after

            this point in time.'
          format: date-time
          nullable: true
          type: string
        orderable_not_before:
          description: 'This product offering becomes available for ordering after

            this point in time.'
          format: date-time
          nullable: true
          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
        product_logo:
          description: 'An URI referencing a logo for the product offered.

            '
          example: https://example.ix/resources/products/activeCloudPremium
          format: uri
          type: string
        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
          - port_reservation
          - network_service
          - network_service_config
          - routing_function
          example: network_service
          type: string
        service_metro_area:
          description: 'Id of the `MetroArea`. The service is delivered

            in this metro area.


            In case of a `p2p_vc`, the `service_metro_area` refers

            to the B-side of the point-to-point connection.

            The B-side is the accepting party.

            '
          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.


            In case of a `p2p_vc`, the `service_metro_area_network` refers

            to the B-side of the point-to-point connection.

            The B-side is the accepting party.

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

            '
          example: AWS
          type: string
        service_provider_logo:
          description: 'An URI referencing the logo of the service provider.

            '
          example: https://example.ix/resources/providerLogo
          format: uri
          type: string
        service_provider_pop:
          description: 'The datacenter id of the partner NNI to the service provider.

            It supposed to be used when identifying a location via

            the cloud provider''s APIs.

            '
          example: INX6
          nullable: true
          type: string
        service_provider_pop_name:
          description: 'The datacenter description of the partner NNI to the service
            provider.

            '
          example: Interxion FRA6, Frankfurt, DEU
          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
        upgrade_allowed:
          description: 'Indicates if the service can be migrated to

            a higher bandwidth.'
          type: boolean
      title: CloudNetworkProductOfferingPatch
      type: object
    CloudNetworkService:
      allOf:
      - $ref: '#/components/schemas/NetworkService'
      description: Cloud Network Service
      properties:
        availability_zones:
          description: The availability zones the service can support.
          example:
          - QXZhaWxhYmlsaXR5Wm9uZTo0Mg==
          items:
            type: string
          type: array
        billing_account:
          description: 'An account requires billing_information to be used as a `billing_account`.

            *(Sensitive Property)*'
          example: QWNjb3VudDo0Mg==
          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
        charged_until:
          description: "The service continues incurring charges until this date.\n\
            Typically `\u2265 decommission_at`.\n\nThis field is only used when\n\
            the state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`.\n\n*(Sensitive\
            \ Property)*"
          format: date
          type: string
        cloud_key:
          description: 'The cloud key is used to specify to which user or

            existing circuit of a cloud provider this `network-service`

            should be provisioned.


            For example, for a provider like *AWS*, this would be the

            *account number* (Example: `123456789876`), or for a provider

            like Azure, this would be the service key

            (Example: `acl9edcf-f11c-4681-9c7b-6d16b2973997`)'
          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.

            *(Sensitive Property)*

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        current_billing_start_date:
          description: 'Your obligation to pay for the service will start on this
            date.


            However, this date may change after an upgrade and not reflect

            the inital start date of the service.


            *(Sensitive Property)*'
          format: date
          type: string
        decommission_at:
          description: 'The service will be decommissioned on this date.


            This field is only used when

            the state is `DECOMMISSION_REQUESTED` or

            `DECOMMISSIONED`.'
          format: date
          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.

            *(Sensitive Property)*

            '
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `Cloud Network Service`.
          example: Q2xvdWROZXR3b3JrU2VydmljZTo0Mg==
          readOnly: 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_features:
          description: 'A list of `id`s of the related `NetworkFeature`.


            '
          example:
          - TmV0d29ya0ZlYXR1cmU6NDI=
          items:
            type: string
          type: array
        nsc_product_offerings:
          description: 'An optional list of `ProductOffering` which can be used in
            the

            network service configs for this service.'
          example:
          - UHJvZHVjdE9mZmVyaW5nOjQy
          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.'
          example:
          - Um9sZTo0Mg==
          items:
            type: string
          readOnly: true
          type: array
        product_offering:
          description: 'The `id` of the related `ProductOffering`.


            '
          example: UHJvZHVjdE9mZmVyaW5nOjQy
          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.

            *(Sensitive Property)*

            '
          example: 'Project: DC Moon'
          maxLength: 80
          type: string
        state:
          enum:
          - requested
          - allocated
          - testing
          - production
          - production_change_pending
          - decommission_requested
          - decommissioned
          - archived
          - error
          - operator
          - scheduled
          - cancelled
          type: string
        status:
          items:
            $ref: '#/components/schemas/Status'
          type: array
      required:
      - type
      - cloud_key
      - provider_ref
      - diversity
      - id
      - billing_account
      - consuming_account
      - managing_account
      - product_offering
      - nsc_required_contact_roles
      - state
      title: CloudNetworkService
      type: object
    CloudNetworkServiceConfig:
      allOf:
      - $ref: '#/components/schemas/NetworkServiceConfig'
      description: Cloud Network Service Config
      properties:
        availability_zone:
          description: The availability zone that shall be used on the provider side.
          example: QXZhaWxhYmlsaXR5Wm9uZTo0Mg==
          nullable: true
          type: string
        billing_account:
          description: 'An account requires billing_information to be used as a `billing_account`.

            *(Sensitive Property)*'
          example: QWNjb3VudDo0Mg==
          type: string
        charged_until:
          description: "The service continues incurring charges until this date.\n\
            Typically `\u2265 decommission_at`.\n\nThis field is only used when\n\
            the state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`.\n\n*(Sensitive\
            \ Property)*"
          format: date
          type: string
        cloud_config:
          $ref: '#/components/schemas/CloudConfig'
        cloud_vlan:
          description: '**Deprecation Notice**: This field is deprecated and will

            be removed in favor of using the `cloud_config.vlan` property.

            The `ProductOffering` will include `vlan` in the

            `nsc_required_cloud_config_fields`, if `provider_vlans` are

            `multi`.


            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`.


            If no connection is specified, you have to provide

            a routing function.


            When a connection is provided, you also need to specify

            the `vlan_config`. The `routing_function` attribute

            may not be used. Some network services may require the

            use of the `l3_config`, please check the

            `nsc_required_l3_config_fields` attribute of the

            `ProductOffering`.


            Connections ans Routing Functions are mutually exclusive.'
          example: Q29ubmVjdGlvbjo0Mg==
          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.

            *(Sensitive Property)*

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        current_billing_start_date:
          description: 'Your obligation to pay for the service will start on this
            date.


            However, this date may change after an upgrade and not reflect

            the inital start date of the service.


            *(Sensitive Property)*'
          format: date
          type: string
        decommission_at:
          description: 'The service will be decommissioned on this date.


            This field is only used when

            the state is `DECOMMISSION_REQUESTED` or

            `DECOMMISSIONED`.'
          format: date
          type: string
        external_ref:
          description: 'Reference field, free to use for the API user.

            *(Sensitive Property)*

            '
          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:
          description: The *primary identifier* of the `Cloud Network Service Config`.
          example: Q2xvdWROZXR3b3JrU2VydmljZUNvbmZpZzo0Mg==
          readOnly: true
          type: string
        l3_config:
          $ref: '#/components/schemas/L3Config'
        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 `NetworkService`.
          example: TmV0d29ya1NlcnZpY2U6NDI=
          type: string
        product_offering:
          description: 'An optional id of a `ProductOffering`.


            Valid ids of product-offerings can be found in the

            `nsc_product_offerings` property of the `NetworkService`.'
          example: UHJvZHVjdE9mZmVyaW5nOjQy
          type: string
        purchase_order:
          default: ''
          description: 'Purchase Order ID which will be displayed on the invoice.

            *(Sensitive Property)*

            '
          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.


            Please note, that any contact role can additionally be provided.

            The presence of at least one of each required contact roles

            is necessary.

            '
          example:
          - c-impl:123
          - c-noc:331
          items:
            type: string
          type: array
        routing_function:
          description: 'The id of the `RoutingFunction` to use for this `NetworkServiceConfig`.


            If no routing function is provided, you need to provide

            the connection to use.


            When a routing function is provided, you also need to

            specify the `l3_config`. The `connection` attribute

            may not be used.


            Connections ans Routing Functions are mutually exclusive.'
          example: Um91dGluZ0Z1bmN0aW9uOjQy
          type: string
        state:
          enum:
          - requested
          - allocated
          - testing
          - production
          - production_change_pending
          - decommission_requested
          - decommissioned
          - archived
          - error
          - operator
          - scheduled
          - cancelled
          type: string
        status:
          items:
            $ref: '#/components/schemas/Status'
          type: array
        vlan_config:
          $ref: '#/components/schemas/VlanConfig'
      required:
      - type
      - handover
      - id
      - role_assignments
      - billing_account
      - consuming_account
      - managing_account
      - network_service
      - state
      title: CloudNetworkServiceConfig
      type: object
    CloudNetworkServiceConfigPatch:
      allOf:
      - $ref: '#/components/schemas/NetworkServiceConfigPatch'
      description: Cloud Network Service Config Update
      properties:
        availability_zone:
          description: The availability zone that shall be used on the provider side.
          example: QXZhaWxhYmlsaXR5Wm9uZTo0Mg==
          nullable: true
          type: string
        billing_account:
          description: 'An account requires billing_information to be used as a `billing_account`.

            *(Sensitive Property)*'
          example: QWNjb3VudDo0Mg==
          type: string
        cloud_config:
          $ref: '#/components/schemas/CloudConfig'
        cloud_vlan:
          description: '**Deprecation Notice**: This field is deprecated and will

            be removed in favor of using the `cloud_config.vlan` property.

            The `ProductOffering` will include `vlan` in the

            `nsc_required_cloud_config_fields`, if `provider_vlans` are

            `multi`.


            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`.


            If no connection is specified, you have to provide

            a routing function.


            When a connection is provided, you also need to specify

            the `vlan_config`. The `routing_function` attribute

            may not be used. Some network services may require the

            use of the `l3_config`, please check the

            `nsc_required_l3_config_fields` attribute of the

            `ProductOffering`.


            Connections ans Routing Functions are mutually exclusive.'
          example: Q29ubmVjdGlvbjo0Mg==
          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.

            *(Sensitive Property)*

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        external_ref:
          description: 'Reference field, free to use for the API user.

            *(Sensitive Property)*

            '
          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:
          description: The *primary identifier* of the `Cloud Network Service Config
            Update`.
          example: Q2xvdWROZXR3b3JrU2VydmljZUNvbmZpZ1BhdGNoOjQy
          readOnly: true
          type: string
        l3_config:
          $ref: '#/components/schemas/L3Config'
        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
        product_offering:
          description: 'An optional id of a `ProductOffering`.


            Valid ids of product-offerings can be found in the

            `nsc_product_offerings` property of the `NetworkService`.'
          example: UHJvZHVjdE9mZmVyaW5nOjQy
          type: string
        purchase_order:
          default: ''
          description: 'Purchase Order ID which will be displayed on the invoice.

            *(Sensitive Property)*

            '
          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.


            Please note, that any contact role can additionally be provided.

            The presence of at least one of each required contact roles

            is necessary.

            '
          example:
          - c-impl:123
          - c-noc:331
          items:
            type: string
          type: array
        routing_function:
          description: 'The id of the `RoutingFunction` to use for this `NetworkServiceConfig`.


            If no routing function is provided, you need to provide

            the connection to use.


            When a routing function is provided, you also need to

            specify the `l3_config`. The `connection` attribute

            may not be used.


            Connections ans Routing Functions are mutually exclusive.'
          example: Um91dGluZ0Z1bmN0aW9uOjQy
          type: string
        vlan_config:
          $ref: '#/components/schemas/VlanConfig'
      title: CloudNetworkServiceConfigPatch
      type: object
    CloudNetworkServiceConfigRequest:
      allOf:
      - $ref: '#/components/schemas/NetworkServiceConfigRequest'
      description: Cloud Network Service Config Request
      properties:
        availability_zone:
          description: The availability zone that shall be used on the provider side.
          example: QXZhaWxhYmlsaXR5Wm9uZTo0Mg==
          nullable: true
          type: string
        billing_account:
          description: 'An account requires billing_information to be used as a `billing_account`.

            *(Sensitive Property)*'
          example: QWNjb3VudDo0Mg==
          type: string
        cloud_config:
          $ref: '#/components/schemas/CloudConfig'
        cloud_vlan:
          description: '**Deprecation Notice**: This field is deprecated and will

            be removed in favor of using the `cloud_config.vlan` property.

            The `ProductOffering` will include `vlan` in the

            `nsc_required_cloud_config_fields`, if `provider_vlans` are

            `multi`.


            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`.


            If no connection is specified, you have to provide

            a routing function.


            When a connection is provided, you also need to specify

            the `vlan_config`. The `routing_function` attribute

            may not be used. Some network services may require the

            use of the `l3_config`, please check the

            `nsc_required_l3_config_fields` attribute of the

            `ProductOffering`.


            Connections ans Routing Functions are mutually exclusive.'
          example: Q29ubmVjdGlvbjo0Mg==
          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.

            *(Sensitive Property)*

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        external_ref:
          description: 'Reference field, free to use for the API user.

            *(Sensitive Property)*

            '
          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:
          description: The *primary identifier* of the `Cloud Network Service Config
            Request`.
          example: Q2xvdWROZXR3b3JrU2VydmljZUNvbmZpZ1JlcXVlc3Q6NDI=
          readOnly: true
          type: string
        l3_config:
          $ref: '#/components/schemas/L3Config'
        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.
          example: TmV0d29ya1NlcnZpY2U6NDI=
          type: string
        product_offering:
          description: 'An optional id of a `ProductOffering`.


            Valid ids of product-offerings can be found in the

            `nsc_product_offerings` property of the `NetworkService`.'
          example: UHJvZHVjdE9mZmVyaW5nOjQy
          type: string
        purchase_order:
          default: ''
          description: 'Purchase Order ID which will be displayed on the invoice.

            *(Sensitive Property)*

            '
          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.


            Please note, that any contact role can additionally be provided.

            The presence of at least one of each required contact roles

            is necessary.

            '
          example:
          - c-impl:123
          - c-noc:331
          items:
            type: string
          type: array
        routing_function:
          description: 'The id of the `RoutingFunction` to use for this `NetworkServiceConfig`.


            If no routing function is provided, you need to provide

            the connection to use.


            When a routing function is provided, you also need to

            specify the `l3_config`. The `connection` attribute

            may not be used.


            Connections ans Routing Functions are mutually exclusive.'
          example: Um91dGluZ0Z1bmN0aW9uOjQy
          type: string
        vlan_config:
          $ref: '#/components/schemas/VlanConfig'
      required:
      - type
      - handover
      - id
      - role_assignments
      - billing_account
      - network_service
      - consuming_account
      - managing_account
      title: CloudNetworkServiceConfigRequest
      type: object
    CloudNetworkServiceConfigUpdate:
      allOf:
      - $ref: '#/components/schemas/NetworkServiceConfigUpdate'
      description: Cloud Network Service Config Update
      properties:
        availability_zone:
          description: The availability zone that shall be used on the provider side.
          example: QXZhaWxhYmlsaXR5Wm9uZTo0Mg==
          nullable: true
          type: string
        billing_account:
          description: 'An account requires billing_information to be used as a `billing_account`.

            *(Sensitive Property)*'
          example: QWNjb3VudDo0Mg==
          type: string
        cloud_config:
          $ref: '#/components/schemas/CloudConfig'
        cloud_vlan:
          description: '**Deprecation Notice**: This field is deprecated and will

            be removed in favor of using the `cloud_config.vlan` property.

            The `ProductOffering` will include `vlan` in the

            `nsc_required_cloud_config_fields`, if `provider_vlans` are

            `multi`.


            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`.


            If no connection is specified, you have to provide

            a routing function.


            When a connection is provided, you also need to specify

            the `vlan_config`. The `routing_function` attribute

            may not be used. Some network services may require the

            use of the `l3_config`, please check the

            `nsc_required_l3_config_fields` attribute of the

            `ProductOffering`.


            Connections ans Routing Functions are mutually exclusive.'
          example: Q29ubmVjdGlvbjo0Mg==
          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.

            *(Sensitive Property)*

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        external_ref:
          description: 'Reference field, free to use for the API user.

            *(Sensitive Property)*

            '
          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:
          description: The *primary identifier* of the `Cloud Network Service Config
            Update`.
          example: Q2xvdWROZXR3b3JrU2VydmljZUNvbmZpZ1VwZGF0ZTo0Mg==
          readOnly: true
          type: string
        l3_config:
          $ref: '#/components/schemas/L3Config'
        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
        product_offering:
          description: 'An optional id of a `ProductOffering`.


            Valid ids of product-offerings can be found in the

            `nsc_product_offerings` property of the `NetworkService`.'
          example: UHJvZHVjdE9mZmVyaW5nOjQy
          type: string
        purchase_order:
          default: ''
          description: 'Purchase Order ID which will be displayed on the invoice.

            *(Sensitive Property)*

            '
          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.


            Please note, that any contact role can additionally be provided.

            The presence of at least one of each required contact roles

            is necessary.

            '
          example:
          - c-impl:123
          - c-noc:331
          items:
            type: string
          type: array
        routing_function:
          description: 'The id of the `RoutingFunction` to use for this `NetworkServiceConfig`.


            If no routing function is provided, you need to provide

            the connection to use.


            When a routing function is provided, you also need to

            specify the `l3_config`. The `connection` attribute

            may not be used.


            Connections ans Routing Functions are mutually exclusive.'
          example: Um91dGluZ0Z1bmN0aW9uOjQy
          type: string
        vlan_config:
          $ref: '#/components/schemas/VlanConfig'
      required:
      - type
      - handover
      - id
      - role_assignments
      - billing_account
      - consuming_account
      - managing_account
      title: CloudNetworkServiceConfigUpdate
      type: object
    CloudNetworkServicePatch:
      allOf:
      - $ref: '#/components/schemas/NetworkServicePatch'
      description: Cloud Network Service Update
      properties:
        billing_account:
          description: 'An account requires billing_information to be used as a `billing_account`.

            *(Sensitive Property)*'
          example: QWNjb3VudDo0Mg==
          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:
          description: 'The cloud key is used to specify to which user or

            existing circuit of a cloud provider this `network-service`

            should be provisioned.


            For example, for a provider like *AWS*, this would be the

            *account number* (Example: `123456789876`), or for a provider

            like Azure, this would be the service key

            (Example: `acl9edcf-f11c-4681-9c7b-6d16b2973997`)


            **Please note: *Any update to this field may be rejected if the

            service has successfully been provisioned*.**'
          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.

            *(Sensitive Property)*

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        external_ref:
          description: 'Reference field, free to use for the API user.

            *(Sensitive Property)*

            '
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `Cloud Network Service Update`.
          example: Q2xvdWROZXR3b3JrU2VydmljZVBhdGNoOjQy
          readOnly: 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:
          description: 'The `id` of the related `ProductOffering`.


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

            *(Sensitive Property)*

            '
          example: 'Project: DC Moon'
          maxLength: 80
          type: string
      title: CloudNetworkServicePatch
      type: object
    CloudNetworkServiceRequest:
      allOf:
      - $ref: '#/components/schemas/NetworkServiceRequest'
      description: Cloud Network Service Request
      properties:
        billing_account:
          description: 'An account requires billing_information to be used as a `billing_account`.

            *(Sensitive Property)*'
          example: QWNjb3VudDo0Mg==
          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:
          description: 'The cloud key is used to specify to which user or

            existing circuit of a cloud provider this `network-service`

            should be provisioned.


            For example, for a provider like *AWS*, this would be the

            *account number* (Example: `123456789876`), or for a provider

            like Azure, this would be the service key

            (Example: `acl9edcf-f11c-4681-9c7b-6d16b2973997`)'
          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.

            *(Sensitive Property)*

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        external_ref:
          description: 'Reference field, free to use for the API user.

            *(Sensitive Property)*

            '
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `Cloud Network Service Request`.
          example: Q2xvdWROZXR3b3JrU2VydmljZVJlcXVlc3Q6NDI=
          readOnly: 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:
          description: 'The `id` of the related `ProductOffering`.


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

            *(Sensitive Property)*

            '
          example: 'Project: DC Moon'
          maxLength: 80
          type: string
      required:
      - type
      - cloud_key
      - id
      - billing_account
      - consuming_account
      - managing_account
      - product_offering
      title: CloudNetworkServiceRequest
      type: object
    CloudNetworkServiceUpdate:
      allOf:
      - $ref: '#/components/schemas/NetworkServiceUpdate'
      description: Cloud Network Service Update
      properties:
        billing_account:
          description: 'An account requires billing_information to be used as a `billing_account`.

            *(Sensitive Property)*'
          example: QWNjb3VudDo0Mg==
          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:
          description: 'The cloud key is used to specify to which user or

            existing circuit of a cloud provider this `network-service`

            should be provisioned.


            For example, for a provider like *AWS*, this would be the

            *account number* (Example: `123456789876`), or for a provider

            like Azure, this would be the service key

            (Example: `acl9edcf-f11c-4681-9c7b-6d16b2973997`)


            **Please note: *Any update to this field may be rejected if the

            service has successfully been provisioned*.**'
          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.

            *(Sensitive Property)*

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        external_ref:
          description: 'Reference field, free to use for the API user.

            *(Sensitive Property)*

            '
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `Cloud Network Service Update`.
          example: Q2xvdWROZXR3b3JrU2VydmljZVVwZGF0ZTo0Mg==
          readOnly: 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:
          description: 'The `id` of the related `ProductOffering`.


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

            *(Sensitive Property)*

            '
          example: 'Project: DC Moon'
          maxLength: 80
          type: string
      required:
      - type
      - cloud_key
      - id
      - billing_account
      - consuming_account
      - managing_account
      - product_offering
      title: CloudNetworkServiceUpdate
      type: object
    Conflict:
      description: A conflict is preventing success
      properties:
        remote_resource_id:
          description: 'The id of the conflicting resource. This is in most

            cases the id of the current resource.

            '
          example: C:523589
          type: string
        remote_resource_type:
          description: 'The type of the conflicting resource.

            '
          enum:
          - accounts
          - connections
          - contacts
          - devices
          - facilities
          - ips
          - macs
          - member-joining-rules
          - metro-area-network
          - network-feature-configs
          - network-features
          - network-service-configs
          - network-services
          - pops
          - port-reservations
          - ports
          - product-offerings
          - role-assignments
          - roles
          example: contacts
          type: string
        resource_id:
          description: 'The id of the resource which has a conflict with the

            request operation on the current resource.

            '
          example: RA:2819238
          type: string
        resource_property:
          description: 'Indicates the property where the resource is in use.

            '
          example: contact
          nullable: true
          type: string
        resource_type:
          description: 'The resource type refers to an ix-api resource.

            '
          enum:
          - accounts
          - connections
          - contacts
          - devices
          - facilities
          - ips
          - macs
          - member-joining-rules
          - metro-area-network
          - network-feature-configs
          - network-features
          - network-service-configs
          - network-services
          - pops
          - port-reservations
          - ports
          - product-offerings
          - role-assignments
          - roles
          example: role-assignments
          type: string
      required:
      - remote_resource_id
      - remote_resource_type
      - resource_id
      - resource_type
      title: Conflict
      type: object
    Connection:
      description: Connection
      properties:
        billing_account:
          description: 'An account requires billing_information to be used as a `billing_account`.

            *(Sensitive Property)*'
          example: QWNjb3VudDo0Mg==
          type: string
        capacity_allocated:
          description: 'Sum of the bandwidth of all network service configs

            using the connection in Mbit/s.'
          minimum: 0
          type: integer
        capacity_allocation_limit:
          description: 'Maximum allocatable capacity of the connection in Mbit/s.

            When `null`, the exchange does not impose any limit.

            '
          example: 25000
          nullable: true
          type: integer
        charged_until:
          description: "The service continues incurring charges until this date.\n\
            Typically `\u2265 decommission_at`.\n\nThis field is only used when\n\
            the state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`.\n\n*(Sensitive\
            \ Property)*"
          format: date
          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.

            *(Sensitive Property)*

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        current_billing_start_date:
          description: 'Your obligation to pay for the service will start on this
            date.


            However, this date may change after an upgrade and not reflect

            the inital start date of the service.


            *(Sensitive Property)*'
          format: date
          type: string
        decommission_at:
          description: 'The service will be decommissioned on this date.


            This field is only used when

            the state is `DECOMMISSION_REQUESTED` or

            `DECOMMISSIONED`.'
          format: date
          type: string
        external_ref:
          description: 'Reference field, free to use for the API user.

            *(Sensitive Property)*

            '
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `Connection`.
          example: Q29ubmVjdGlvbjo0Mg==
          readOnly: 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
        metro_area:
          description: 'Optional ID of the service metro area the connection

            is provided in.'
          example: TWV0cm9BcmVhOjQy
          type: string
        metro_area_network:
          description: 'Optional ID of the service metro area network the

            connection is present on.'
          example: TWV0cm9BcmVhTmV0d29yazo0Mg==
          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
        pop:
          description: 'The ID of the point of presence (see `/pops`), where

            the physical port(s) are present.

            '
          example: pop:127388:LD3
          type: string
        port_quantity:
          description: 'The number of ports which should be allocated

            for this connection.'
          minimum: 1
          type: integer
        port_reservations:
          description: A list of `port-reservations` for this connection.
          example:
          - UG9ydDo0Mg==
          items:
            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
        product_offering:
          description: The product offering must match the type `connection`.
          example: UHJvZHVjdE9mZmVyaW5nOjQy
          type: string
        purchase_order:
          default: ''
          description: 'Purchase Order ID which will be displayed on the invoice.

            *(Sensitive Property)*

            '
          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.


            Please note, that any contact role can additionally be provided.

            The presence of at least one of each required contact roles

            is necessary.

            '
          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
          - cancelled
          type: string
        status:
          items:
            $ref: '#/components/schemas/Status'
          type: array
        subscriber_side_demarcs:
          description: 'The workflow for allocating ports is dependent on the

            `cross_connect_initiator` property of the

            `product_offering`:


            **Cross-Connect initiator: exchange**


            The subscriber needs to provide a

            list of demarc information.



            At least one needs to be provided, but not more than

            `port_quantity`.


            The content is interpreted by the exchange and may

            contain a reference to a pre-existing cross connect order

            or information required for patching in a structured

            format (e.g.

            `<pp-identifier>.<hu-identifier>.<slot-identifier>.<port-identifier>`).


            Please refer to the usage guide of the internet exchange.


            ---


            **Cross-Connect initiator: subscriber**


            This field can be omitted, when the cross connect

            initiator is the `subscriber`.'
          items:
            type: string
          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
      required:
      - port_quantity
      - outer_vlan_ethertypes
      - vlan_types
      - capacity_allocation_limit
      - capacity_allocated
      - pop
      - name
      - product_offering
      - mode
      - id
      - role_assignments
      - billing_account
      - consuming_account
      - managing_account
      - state
      title: Connection
      type: object
    ConnectionPatch:
      description: Connection Update
      properties:
        billing_account:
          description: 'An account requires billing_information to be used as a `billing_account`.

            *(Sensitive Property)*'
          example: QWNjb3VudDo0Mg==
          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.

            *(Sensitive Property)*

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        external_ref:
          description: 'Reference field, free to use for the API user.

            *(Sensitive Property)*

            '
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `Connection Update`.
          example: Q29ubmVjdGlvblBhdGNoOjQy
          readOnly: 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
        product_offering:
          description: The product offering must match the type `connection`.
          example: UHJvZHVjdE9mZmVyaW5nOjQy
          type: string
        purchase_order:
          default: ''
          description: 'Purchase Order ID which will be displayed on the invoice.

            *(Sensitive Property)*

            '
          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.


            Please note, that any contact role can additionally be provided.

            The presence of at least one of each required contact roles

            is necessary.

            '
          example:
          - c-impl:123
          - c-noc:331
          items:
            type: string
          type: array
      title: ConnectionPatch
      type: object
    ConnectionProductOffering:
      allOf:
      - $ref: '#/components/schemas/ProductOffering'
      description: Connection Product Offering
      properties:
        contract_initial_notice_period:
          description: '_**Format:** ISO8601 Duration_


            The notice period for canceling the contract within

            the initial period.

            '
          example: P1M
          nullable: true
          type: string
        contract_initial_period:
          description: '_**Format:** ISO8601 Duration_


            The initial duration of the contract. The contract will be

            renewed after this period for the duration of `contract_renewal_period`.

            '
          example: P6M
          nullable: true
          type: string
        contract_renewal_notice_period:
          description: '_**Format:** ISO8601 Duration_


            The notice period denotes the time before the end of the

            `contract_renewal_period` in which the client has to inform

            the IXP in order to prevent renewal of the contract.

            '
          example: P2W
          nullable: true
          type: string
        contract_renewal_period:
          description: '_**Format:** ISO8601 Duration_


            The duration for which the contract will be renewed after

            the initial period.


            Unless the contract is canceled, it will be

            automatically renewed after the period.

            Cancellation has to be done within the

            `contract_renewal_notice_period`.

            '
          example: P3M
          type: string
        contract_terms:
          description: 'This property informally describe the contract''s notice-
            and

            renewal periods as well as additional terms.


            **Note**: This property contains informal information about

            the contract. For a structured representation see:

            `contract_initial_period`, `contract_initial_notice_period`,

            `contract_renewal_period` and `contract_renewal_notice_period`.


            **Example**: A contract with the terms

            _"initially two weeks, renewing for six month afterwards, cancelable with
            a notice period of one month after and within 5 days during the initial
            period"_

            can be represented as:

            * `contract_initial_period: "P2W"`

            * `contract_initial_notice_period: "P5D"`

            * `contract_renewal_period: "P6M"`

            * `contract_renewal_notice_period: "P1M"`

            '
          example: first 30 days free
          nullable: true
          type: string
        cross_connect_initiator:
          description: 'A cross connect can be initiated by either the

            exchange or the subscriber.


            This property affects which side has to provide

            a LOA and demarc information.'
          enum:
          - exchange
          - subscriber
          type: string
        display_name:
          maxLength: 256
          type: string
        downgrade_allowed:
          description: 'Indicates if the service can be migrated to

            a lower bandwidth.'
          type: boolean
        exchange_logo:
          description: 'An URI referencing the logo of the internet exchange.

            '
          example: https://example.ix/resources/ixpLogo
          format: uri
          type: string
        handover_metro_area:
          description: 'Id of the `MetroArea`. The network service will be

            accessed from this metro area.


            In case of a `p2p_vc`, the `handover_metro_area` refers

            to the A-side of the point-to-point connection.

            The A-side is the entity which initiates the network service creation.

            '
          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.


            In case of a `p2p_vc`, the `handover_metro_area_network` refers

            to the A-side of the point-to-point connection.

            The A-side is the entity which initiates the network service creation.

            '
          example: '191239810'
          type: string
        handover_pop:
          description: 'The ID of the point of presence (see `/pops`), where

            the physical port will be present.

            '
          example: pop:127388:LD3
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `Connection Product Offering`.
          example: Q29ubmVjdGlvblByb2R1Y3RPZmZlcmluZzo0Mg==
          readOnly: true
          type: string
        maximum_port_quantity:
          description: 'The maximum amount of ports which can be aggregated

            in the connection. `null` means no limit.'
          minimum: 1
          nullable: true
          type: integer
        name:
          description: Name of the product
          maxLength: 160
          type: string
        notice_period:
          description: '**DEPRECATION NOTICE**: This property will be replaced by

            `contract_initial_period`, `contract_initial_notice_period`,

            `contract_renewal_period` and `contract_renewal_notice_period`.


            The notice period informally states constraints

            which define when the client needs to inform the

            IXP in order to prevent renewal of the contract.

            '
          example: at least 2 weeks before the end of every odd month
          nullable: true
          type: string
        orderable_not_after:
          description: 'This product offering will become unavailable for ordering
            after

            this point in time.'
          format: date-time
          nullable: true
          type: string
        orderable_not_before:
          description: 'This product offering becomes available for ordering after

            this point in time.'
          format: date-time
          nullable: true
          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
        product_logo:
          description: 'An URI referencing a logo for the product offered.

            '
          example: https://example.ix/resources/products/activeCloudPremium
          format: uri
          type: string
        required_contact_roles:
          description: 'The connection will require at least one of each of the

            specified roles assigned to contacts.


            The role assignments are associated with the connection

            through the `role_assignments` list property.'
          example:
          - Um9sZTo0Mg==
          items:
            type: string
          readOnly: true
          type: array
        resource_type:
          description: 'The resource type refers to an ix-api resource.

            '
          enum:
          - connection
          - port_reservation
          - network_service
          - network_service_config
          - routing_function
          example: network_service
          type: string
        service_provider:
          description: 'The name of the provider providing the service.

            '
          example: AWS
          type: string
        service_provider_logo:
          description: 'An URI referencing the logo of the service provider.

            '
          example: https://example.ix/resources/providerLogo
          format: uri
          type: string
        upgrade_allowed:
          description: 'Indicates if the service can be migrated to

            a higher bandwidth.'
          type: boolean
      required:
      - type
      - cross_connect_initiator
      - upgrade_allowed
      - downgrade_allowed
      - service_provider
      - physical_port_speed
      - handover_metro_area
      - handover_metro_area_network
      - resource_type
      - display_name
      - name
      - id
      title: ConnectionProductOffering
      type: object
    ConnectionProductOfferingPatch:
      allOf:
      - $ref: '#/components/schemas/ProductOfferingPatch'
      description: Conncetion Product Offering
      properties:
        contract_initial_notice_period:
          description: '_**Format:** ISO8601 Duration_


            The notice period for canceling the contract within

            the initial period.

            '
          example: P1M
          nullable: true
          type: string
        contract_initial_period:
          description: '_**Format:** ISO8601 Duration_


            The initial duration of the contract. The contract will be

            renewed after this period for the duration of `contract_renewal_period`.

            '
          example: P6M
          nullable: true
          type: string
        contract_renewal_notice_period:
          description: '_**Format:** ISO8601 Duration_


            The notice period denotes the time before the end of the

            `contract_renewal_period` in which the client has to inform

            the IXP in order to prevent renewal of the contract.

            '
          example: P2W
          nullable: true
          type: string
        contract_renewal_period:
          description: '_**Format:** ISO8601 Duration_


            The duration for which the contract will be renewed after

            the initial period.


            Unless the contract is canceled, it will be

            automatically renewed after the period.

            Cancellation has to be done within the

            `contract_renewal_notice_period`.

            '
          example: P3M
          type: string
        contract_terms:
          description: 'This property informally describe the contract''s notice-
            and

            renewal periods as well as additional terms.


            **Note**: This property contains informal information about

            the contract. For a structured representation see:

            `contract_initial_period`, `contract_initial_notice_period`,

            `contract_renewal_period` and `contract_renewal_notice_period`.


            **Example**: A contract with the terms

            _"initially two weeks, renewing for six month afterwards, cancelable with
            a notice period of one month after and within 5 days during the initial
            period"_

            can be represented as:

            * `contract_initial_period: "P2W"`

            * `contract_initial_notice_period: "P5D"`

            * `contract_renewal_period: "P6M"`

            * `contract_renewal_notice_period: "P1M"`

            '
          example: first 30 days free
          nullable: true
          type: string
        cross_connect_initiator:
          description: 'A cross connect can be initiated by either the

            exchange or the subscriber.


            This property affects which side has to provide

            a LOA and demarc information.'
          enum:
          - exchange
          - subscriber
          type: string
        display_name:
          maxLength: 256
          type: string
        downgrade_allowed:
          description: 'Indicates if the service can be migrated to

            a lower bandwidth.'
          type: boolean
        exchange_logo:
          description: 'An URI referencing the logo of the internet exchange.

            '
          example: https://example.ix/resources/ixpLogo
          format: uri
          type: string
        handover_metro_area:
          description: 'Id of the `MetroArea`. The network service will be

            accessed from this metro area.


            In case of a `p2p_vc`, the `handover_metro_area` refers

            to the A-side of the point-to-point connection.

            The A-side is the entity which initiates the network service creation.

            '
          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.


            In case of a `p2p_vc`, the `handover_metro_area_network` refers

            to the A-side of the point-to-point connection.

            The A-side is the entity which initiates the network service creation.

            '
          example: '191239810'
          type: string
        handover_pop:
          description: 'The ID of the point of presence (see `/pops`), where

            the physical port will be present.

            '
          example: pop:127388:LD3
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `Conncetion Product Offering`.
          example: Q29ubmVjdGlvblByb2R1Y3RPZmZlcmluZ1BhdGNoOjQy
          readOnly: true
          type: string
        maximum_port_quantity:
          description: 'The maximum amount of ports which can be aggregated

            in the connection. `null` means no limit.'
          minimum: 1
          nullable: true
          type: integer
        name:
          description: Name of the product
          maxLength: 160
          type: string
        notice_period:
          description: '**DEPRECATION NOTICE**: This property will be replaced by

            `contract_initial_period`, `contract_initial_notice_period`,

            `contract_renewal_period` and `contract_renewal_notice_period`.


            The notice period informally states constraints

            which define when the client needs to inform the

            IXP in order to prevent renewal of the contract.

            '
          example: at least 2 weeks before the end of every odd month
          nullable: true
          type: string
        orderable_not_after:
          description: 'This product offering will become unavailable for ordering
            after

            this point in time.'
          format: date-time
          nullable: true
          type: string
        orderable_not_before:
          description: 'This product offering becomes available for ordering after

            this point in time.'
          format: date-time
          nullable: true
          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
        product_logo:
          description: 'An URI referencing a logo for the product offered.

            '
          example: https://example.ix/resources/products/activeCloudPremium
          format: uri
          type: string
        required_contact_roles:
          description: 'The connection will require at least one of each of the

            specified roles assigned to contacts.


            The role assignments are associated with the connection

            through the `role_assignments` list property.'
          example:
          - Um9sZTo0Mg==
          items:
            type: string
          readOnly: true
          type: array
        resource_type:
          description: 'The resource type refers to an ix-api resource.

            '
          enum:
          - connection
          - port_reservation
          - network_service
          - network_service_config
          - routing_function
          example: network_service
          type: string
        service_provider:
          description: 'The name of the provider providing the service.

            '
          example: AWS
          type: string
        service_provider_logo:
          description: 'An URI referencing the logo of the service provider.

            '
          example: https://example.ix/resources/providerLogo
          format: uri
          type: string
        upgrade_allowed:
          description: 'Indicates if the service can be migrated to

            a higher bandwidth.'
          type: boolean
      title: ConnectionProductOfferingPatch
      type: object
    ConnectionRequest:
      description: Request a new connection
      properties:
        billing_account:
          description: 'An account requires billing_information to be used as a `billing_account`.

            *(Sensitive Property)*'
          example: QWNjb3VudDo0Mg==
          type: string
        connecting_party:
          description: 'Name of the service provider who establishes

            connectivity on your behalf.


            This is only relevant, if the cross connect initiator

            is the `subscriber` and might be `null`.


            Please refer to the usage guide of the internet exchange.'
          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.

            *(Sensitive Property)*

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        external_ref:
          description: 'Reference field, free to use for the API user.

            *(Sensitive Property)*

            '
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `Request a new connection`.
          example: Q29ubmVjdGlvblJlcXVlc3Q6NDI=
          readOnly: 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
        port_quantity:
          description: 'The number of `PortReservation`s that will be

            created for this connection.'
          minimum: 1
          type: integer
        product_offering:
          description: The product offering must match the type `connection`.
          example: UHJvZHVjdE9mZmVyaW5nOjQy
          type: string
        purchase_order:
          default: ''
          description: 'Purchase Order ID which will be displayed on the invoice.

            *(Sensitive Property)*

            '
          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.


            Please note, that any contact role can additionally be provided.

            The presence of at least one of each required contact roles

            is necessary.

            '
          example:
          - c-impl:123
          - c-noc:331
          items:
            type: string
          type: array
        subscriber_side_demarcs:
          description: 'The workflow for allocating ports is dependent on the

            `cross_connect_initiator` property of the

            `product_offering`:


            **Cross-Connect initiator: exchange**


            The subscriber needs to provide a

            list of demarc information.


            At least one needs to be provided, but not more than

            `port_quantity`.


            The content is interpreted by the exchange and may

            contain a reference to a pre-existing cross connect order

            or information required for patching in a structured

            format (e.g.

            `<pp-identifier>.<hu-identifier>.<slot-identifier>.<port-identifier>`).


            Please refer to the usage guide of the internet exchange.


            ---


            **Cross-Connect initiator: subscriber**


            This field can be omitted, when the cross connect

            initiator is the `subscriber`.'
          items:
            type: string
          type: array
      required:
      - port_quantity
      - product_offering
      - mode
      - id
      - role_assignments
      - billing_account
      - consuming_account
      - managing_account
      title: ConnectionRequest
      type: object
    ConnectionUpdate:
      description: Connection Update
      properties:
        billing_account:
          description: 'An account requires billing_information to be used as a `billing_account`.

            *(Sensitive Property)*'
          example: QWNjb3VudDo0Mg==
          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.

            *(Sensitive Property)*

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        external_ref:
          description: 'Reference field, free to use for the API user.

            *(Sensitive Property)*

            '
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `Connection Update`.
          example: Q29ubmVjdGlvblVwZGF0ZTo0Mg==
          readOnly: 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
        product_offering:
          description: The product offering must match the type `connection`.
          example: UHJvZHVjdE9mZmVyaW5nOjQy
          type: string
        purchase_order:
          default: ''
          description: 'Purchase Order ID which will be displayed on the invoice.

            *(Sensitive Property)*

            '
          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.


            Please note, that any contact role can additionally be provided.

            The presence of at least one of each required contact roles

            is necessary.

            '
          example:
          - c-impl:123
          - c-noc:331
          items:
            type: string
          type: array
      required:
      - product_offering
      - mode
      - id
      - role_assignments
      - billing_account
      - consuming_account
      - managing_account
      title: ConnectionUpdate
      type: object
    Contact:
      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.

            *(Sensitive Property)*

            '
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `Contact`.
          example: Q29udGFjdDo0Mg==
          readOnly: 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
      required:
      - id
      - consuming_account
      - managing_account
      title: Contact
      type: object
    ContactPatch:
      description: 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.

            *(Sensitive Property)*

            '
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `Contact Update`.
          example: Q29udGFjdFBhdGNoOjQy
          readOnly: 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: ContactPatch
      type: object
    ContactRequest:
      description: Contact Create 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.

            *(Sensitive Property)*

            '
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `Contact Create Request`.
          example: Q29udGFjdFJlcXVlc3Q6NDI=
          readOnly: 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
      required:
      - id
      - consuming_account
      - managing_account
      title: ContactRequest
      type: object
    ContactUpdate:
      description: 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.

            *(Sensitive Property)*

            '
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `Contact Update`.
          example: Q29udGFjdFVwZGF0ZTo0Mg==
          readOnly: 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
      required:
      - id
      - consuming_account
      - managing_account
      title: ContactUpdate
      type: object
    DenyMemberJoiningRule:
      allOf:
      - $ref: '#/components/schemas/MemberJoiningRule'
      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.

            *(Sensitive Property)*

            '
          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:
          description: 'The `id` of the related `NetworkService`.


            '
          example: TmV0d29ya1NlcnZpY2U6NDI=
          type: string
      required:
      - type
      - network_service
      - consuming_account
      - managing_account
      title: DenyMemberJoiningRule
      type: object
    DenyMemberJoiningRulePatch:
      allOf:
      - $ref: '#/components/schemas/MemberJoiningRulePatch'
      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.

            *(Sensitive Property)*

            '
          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: DenyMemberJoiningRulePatch
      type: object
    DenyMemberJoiningRuleRequest:
      allOf:
      - $ref: '#/components/schemas/MemberJoiningRuleRequest'
      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.

            *(Sensitive Property)*

            '
          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:
          description: 'The `id` of the related `NetworkService`.


            '
          example: TmV0d29ya1NlcnZpY2U6NDI=
          type: string
      required:
      - type
      - network_service
      - consuming_account
      - managing_account
      title: DenyMemberJoiningRuleRequest
      type: object
    DenyMemberJoiningRuleUpdate:
      allOf:
      - $ref: '#/components/schemas/MemberJoiningRuleUpdate'
      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.

            *(Sensitive Property)*

            '
          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
      required:
      - type
      - consuming_account
      - managing_account
      title: DenyMemberJoiningRuleUpdate
      type: object
    Device:
      description: Device
      properties:
        capabilities:
          items:
            $ref: '#/components/schemas/DeviceCapability'
          type: array
        facility:
          description: 'Identifier of the facility where the device

            is physically based.'
          example: RmFjaWxpdHk6NDI=
          readOnly: true
          type: string
        id:
          description: The *primary identifier* of the `Device`.
          example: RGV2aWNlOjQy
          readOnly: true
          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.
          example: UG9pbnRPZlByZXNlbmNlOjQy
          type: string
      required:
      - pop
      - name
      - id
      title: Device
      type: object
    DeviceCapability:
      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
      required:
      - availability
      - max_lag
      - speed
      - media_type
      title: DeviceCapability
      type: object
    DeviceConnection:
      description: Device Connection
      properties:
        capacity_max:
          format: int32
          maximum: 2147483647
          minimum: 0
          type: integer
        connected_device:
          description: 'The `id` of the related `Device`.


            '
          example: RGV2aWNlOjQy
          type: string
        device:
          description: 'The `id` of the related `Device`.


            '
          example: RGV2aWNlOjQy
          type: string
        id:
          description: The *primary identifier* of the `Device Connection`.
          example: RGV2aWNlQ29ubmVjdGlvbjo0Mg==
          readOnly: true
          type: string
      required:
      - id
      - connected_device
      - device
      - capacity_max
      title: DeviceConnection
      type: object
    Event:
      description: Event
      properties:
        account:
          description: 'The `id` of the related `Account`.


            '
          example: QWNjb3VudDo0Mg==
          readOnly: true
          type: string
        payload:
          type: object
        serial:
          type: integer
        timestamp:
          format: date-time
          type: string
      required:
      - timestamp
      - payload
      - type
      - account
      - serial
      title: Event
      type: object
    ExchangeLanNetworkProductOffering:
      allOf:
      - $ref: '#/components/schemas/ProductOffering'
      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
        contract_initial_notice_period:
          description: '_**Format:** ISO8601 Duration_


            The notice period for canceling the contract within

            the initial period.

            '
          example: P1M
          nullable: true
          type: string
        contract_initial_period:
          description: '_**Format:** ISO8601 Duration_


            The initial duration of the contract. The contract will be

            renewed after this period for the duration of `contract_renewal_period`.

            '
          example: P6M
          nullable: true
          type: string
        contract_renewal_notice_period:
          description: '_**Format:** ISO8601 Duration_


            The notice period denotes the time before the end of the

            `contract_renewal_period` in which the client has to inform

            the IXP in order to prevent renewal of the contract.

            '
          example: P2W
          nullable: true
          type: string
        contract_renewal_period:
          description: '_**Format:** ISO8601 Duration_


            The duration for which the contract will be renewed after

            the initial period.


            Unless the contract is canceled, it will be

            automatically renewed after the period.

            Cancellation has to be done within the

            `contract_renewal_notice_period`.

            '
          example: P3M
          type: string
        contract_terms:
          description: 'This property informally describe the contract''s notice-
            and

            renewal periods as well as additional terms.


            **Note**: This property contains informal information about

            the contract. For a structured representation see:

            `contract_initial_period`, `contract_initial_notice_period`,

            `contract_renewal_period` and `contract_renewal_notice_period`.


            **Example**: A contract with the terms

            _"initially two weeks, renewing for six month afterwards, cancelable with
            a notice period of one month after and within 5 days during the initial
            period"_

            can be represented as:

            * `contract_initial_period: "P2W"`

            * `contract_initial_notice_period: "P5D"`

            * `contract_renewal_period: "P6M"`

            * `contract_renewal_notice_period: "P1M"`

            '
          example: first 30 days free
          nullable: true
          type: string
        display_name:
          maxLength: 256
          type: string
        downgrade_allowed:
          description: 'Indicates if the service can be migrated to

            a lower bandwidth.'
          type: boolean
        exchange_lan_network_service:
          description: The id of the exchange lan network service.
          example: TmV0d29ya1NlcnZpY2U6NDI=
          type: string
        exchange_logo:
          description: 'An URI referencing the logo of the internet exchange.

            '
          example: https://example.ix/resources/ixpLogo
          format: uri
          type: string
        handover_metro_area:
          description: 'Id of the `MetroArea`. The network service will be

            accessed from this metro area.


            In case of a `p2p_vc`, the `handover_metro_area` refers

            to the A-side of the point-to-point connection.

            The A-side is the entity which initiates the network service creation.

            '
          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.


            In case of a `p2p_vc`, the `handover_metro_area_network` refers

            to the A-side of the point-to-point connection.

            The A-side is the entity which initiates the network service creation.

            '
          example: '191239810'
          type: string
        id:
          description: The *primary identifier* of the `Exchange Lan Network Product
            Offering`.
          example: RXhjaGFuZ2VMYW5OZXR3b3JrUHJvZHVjdE9mZmVyaW5nOjQy
          readOnly: true
          type: string
        name:
          description: Name of the product
          maxLength: 160
          type: string
        notice_period:
          description: '**DEPRECATION NOTICE**: This property will be replaced by

            `contract_initial_period`, `contract_initial_notice_period`,

            `contract_renewal_period` and `contract_renewal_notice_period`.


            The notice period informally states constraints

            which define when the client needs to inform the

            IXP in order to prevent renewal of the contract.

            '
          example: at least 2 weeks before the end of every odd month
          nullable: true
          type: string
        nsc_required_l3_config_fields:
          description: 'A list of required attributes in the `l3_config` of a corresponding

            `NetworkServiceConfig` when used with a `routing_function`.


            For example:  `"bgp_password"`, `"bgp_neighbor_address"`

            `"bgp_neighbor_asn"`, `"local_address_primary"`, ...

            '
          example:
          - bgp_password
          - local_address_primary
          items:
            type: string
          type: array
        nsc_supported_l3_config_fields:
          description: 'The list of fields which are supported in the `l3_config`

            when creating the network service config with a `routing_function`.


            For example:  `"bgp_password"`, `"bgp_neighbor_address"`

            `"local_address_primary"`, ...

            '
          example:
          - bgp_password
          - local_address_primary
          items:
            type: string
          type: array
        orderable_not_after:
          description: 'This product offering will become unavailable for ordering
            after

            this point in time.'
          format: date-time
          nullable: true
          type: string
        orderable_not_before:
          description: 'This product offering becomes available for ordering after

            this point in time.'
          format: date-time
          nullable: true
          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
        product_logo:
          description: 'An URI referencing a logo for the product offered.

            '
          example: https://example.ix/resources/products/activeCloudPremium
          format: uri
          type: string
        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
          - port_reservation
          - network_service
          - network_service_config
          - routing_function
          example: network_service
          type: string
        service_metro_area:
          description: 'Id of the `MetroArea`. The service is delivered

            in this metro area.


            In case of a `p2p_vc`, the `service_metro_area` refers

            to the B-side of the point-to-point connection.

            The B-side is the accepting party.

            '
          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.


            In case of a `p2p_vc`, the `service_metro_area_network` refers

            to the B-side of the point-to-point connection.

            The B-side is the accepting party.

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

            '
          example: AWS
          type: string
        service_provider_logo:
          description: 'An URI referencing the logo of the service provider.

            '
          example: https://example.ix/resources/providerLogo
          format: uri
          type: string
        upgrade_allowed:
          description: 'Indicates if the service can be migrated to

            a higher bandwidth.'
          type: boolean
      required:
      - type
      - exchange_lan_network_service
      - nsc_supported_l3_config_fields
      - nsc_required_l3_config_fields
      - bandwidth_max
      - bandwidth_min
      - service_metro_area
      - service_metro_area_network
      - provider_vlans
      - upgrade_allowed
      - downgrade_allowed
      - service_provider
      - physical_port_speed
      - handover_metro_area
      - handover_metro_area_network
      - resource_type
      - display_name
      - name
      - id
      title: ExchangeLanNetworkProductOffering
      type: object
    ExchangeLanNetworkProductOfferingPatch:
      allOf:
      - $ref: '#/components/schemas/ProductOfferingPatch'
      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
        contract_initial_notice_period:
          description: '_**Format:** ISO8601 Duration_


            The notice period for canceling the contract within

            the initial period.

            '
          example: P1M
          nullable: true
          type: string
        contract_initial_period:
          description: '_**Format:** ISO8601 Duration_


            The initial duration of the contract. The contract will be

            renewed after this period for the duration of `contract_renewal_period`.

            '
          example: P6M
          nullable: true
          type: string
        contract_renewal_notice_period:
          description: '_**Format:** ISO8601 Duration_


            The notice period denotes the time before the end of the

            `contract_renewal_period` in which the client has to inform

            the IXP in order to prevent renewal of the contract.

            '
          example: P2W
          nullable: true
          type: string
        contract_renewal_period:
          description: '_**Format:** ISO8601 Duration_


            The duration for which the contract will be renewed after

            the initial period.


            Unless the contract is canceled, it will be

            automatically renewed after the period.

            Cancellation has to be done within the

            `contract_renewal_notice_period`.

            '
          example: P3M
          type: string
        contract_terms:
          description: 'This property informally describe the contract''s notice-
            and

            renewal periods as well as additional terms.


            **Note**: This property contains informal information about

            the contract. For a structured representation see:

            `contract_initial_period`, `contract_initial_notice_period`,

            `contract_renewal_period` and `contract_renewal_notice_period`.


            **Example**: A contract with the terms

            _"initially two weeks, renewing for six month afterwards, cancelable with
            a notice period of one month after and within 5 days during the initial
            period"_

            can be represented as:

            * `contract_initial_period: "P2W"`

            * `contract_initial_notice_period: "P5D"`

            * `contract_renewal_period: "P6M"`

            * `contract_renewal_notice_period: "P1M"`

            '
          example: first 30 days free
          nullable: true
          type: string
        display_name:
          maxLength: 256
          type: string
        downgrade_allowed:
          description: 'Indicates if the service can be migrated to

            a lower bandwidth.'
          type: boolean
        exchange_lan_network_service:
          description: The id of the exchange lan network service.
          example: TmV0d29ya1NlcnZpY2U6NDI=
          type: string
        exchange_logo:
          description: 'An URI referencing the logo of the internet exchange.

            '
          example: https://example.ix/resources/ixpLogo
          format: uri
          type: string
        handover_metro_area:
          description: 'Id of the `MetroArea`. The network service will be

            accessed from this metro area.


            In case of a `p2p_vc`, the `handover_metro_area` refers

            to the A-side of the point-to-point connection.

            The A-side is the entity which initiates the network service creation.

            '
          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.


            In case of a `p2p_vc`, the `handover_metro_area_network` refers

            to the A-side of the point-to-point connection.

            The A-side is the entity which initiates the network service creation.

            '
          example: '191239810'
          type: string
        id:
          description: The *primary identifier* of the `Exchange Lan Network Product
            Offering`.
          example: RXhjaGFuZ2VMYW5OZXR3b3JrUHJvZHVjdE9mZmVyaW5nUGF0Y2g6NDI=
          readOnly: true
          type: string
        name:
          description: Name of the product
          maxLength: 160
          type: string
        notice_period:
          description: '**DEPRECATION NOTICE**: This property will be replaced by

            `contract_initial_period`, `contract_initial_notice_period`,

            `contract_renewal_period` and `contract_renewal_notice_period`.


            The notice period informally states constraints

            which define when the client needs to inform the

            IXP in order to prevent renewal of the contract.

            '
          example: at least 2 weeks before the end of every odd month
          nullable: true
          type: string
        nsc_required_l3_config_fields:
          description: 'A list of required attributes in the `l3_config` of a corresponding

            `NetworkServiceConfig` when used with a `routing_function`.


            For example:  `"bgp_password"`, `"bgp_neighbor_address"`

            `"bgp_neighbor_asn"`, `"local_address_primary"`, ...

            '
          example:
          - bgp_password
          - local_address_primary
          items:
            type: string
          type: array
        nsc_supported_l3_config_fields:
          description: 'The list of fields which are supported in the `l3_config`

            when creating the network service config with a `routing_function`.


            For example:  `"bgp_password"`, `"bgp_neighbor_address"`

            `"local_address_primary"`, ...

            '
          example:
          - bgp_password
          - local_address_primary
          items:
            type: string
          type: array
        orderable_not_after:
          description: 'This product offering will become unavailable for ordering
            after

            this point in time.'
          format: date-time
          nullable: true
          type: string
        orderable_not_before:
          description: 'This product offering becomes available for ordering after

            this point in time.'
          format: date-time
          nullable: true
          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
        product_logo:
          description: 'An URI referencing a logo for the product offered.

            '
          example: https://example.ix/resources/products/activeCloudPremium
          format: uri
          type: string
        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
          - port_reservation
          - network_service
          - network_service_config
          - routing_function
          example: network_service
          type: string
        service_metro_area:
          description: 'Id of the `MetroArea`. The service is delivered

            in this metro area.


            In case of a `p2p_vc`, the `service_metro_area` refers

            to the B-side of the point-to-point connection.

            The B-side is the accepting party.

            '
          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.


            In case of a `p2p_vc`, the `service_metro_area_network` refers

            to the B-side of the point-to-point connection.

            The B-side is the accepting party.

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

            '
          example: AWS
          type: string
        service_provider_logo:
          description: 'An URI referencing the logo of the service provider.

            '
          example: https://example.ix/resources/providerLogo
          format: uri
          type: string
        upgrade_allowed:
          description: 'Indicates if the service can be migrated to

            a higher bandwidth.'
          type: boolean
      title: ExchangeLanNetworkProductOfferingPatch
      type: object
    ExchangeLanNetworkService:
      allOf:
      - $ref: '#/components/schemas/NetworkService'
      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.

            *(Sensitive Property)*

            '
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `Exchange Lan Network Service`.
          example: RXhjaGFuZ2VMYW5OZXR3b3JrU2VydmljZTo0Mg==
          readOnly: true
          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:
          description: 'A list of `id`s of the related `NetworkFeature`.


            '
          example:
          - TmV0d29ya0ZlYXR1cmU6NDI=
          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.'
          example:
          - Um9sZTo0Mg==
          items:
            type: string
          readOnly: true
          type: array
        peeringdb_ixid:
          description: PeeringDB ixid
          nullable: true
          type: integer
        product_offering:
          description: '*deprecation notice*'
          example: UHJvZHVjdE9mZmVyaW5nOjQy
          type: string
        state:
          enum:
          - requested
          - allocated
          - testing
          - production
          - production_change_pending
          - decommission_requested
          - decommissioned
          - archived
          - error
          - operator
          - scheduled
          - cancelled
          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
      required:
      - type
      - subnet_v6
      - subnet_v4
      - network_features
      - metro_area_network
      - name
      - id
      - consuming_account
      - managing_account
      - nsc_required_contact_roles
      - state
      title: ExchangeLanNetworkService
      type: object
    ExchangeLanNetworkServiceConfig:
      allOf:
      - $ref: '#/components/schemas/NetworkServiceConfig'
      description: Exchange Lan Network Service Config
      properties:
        asns:
          description: 'A list of AS numbers.


            Depending on the implementation, these can be used for different

            purposes.  For example in the members list on the website, links to

            the looking glass or even generating IPv6 prefixes.'
          items:
            format: int64
            maximum: 4294967295
            minimum: 0
            type: integer
          type: array
        availability_zone:
          description: 'The availability zone that shall be used on the provider side.


            Availability Zones may not be supported for exchange_lan because by

            default they span multiple networks.


            If an availability zone is set then this refers to a circuit that

            is placed on a specific on-ramp to the exchange_lan.'
          example: QXZhaWxhYmlsaXR5Wm9uZTo0Mg==
          nullable: true
          type: string
        billing_account:
          description: 'An account requires billing_information to be used as a `billing_account`.

            *(Sensitive Property)*'
          example: QWNjb3VudDo0Mg==
          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
        charged_until:
          description: "The service continues incurring charges until this date.\n\
            Typically `\u2265 decommission_at`.\n\nThis field is only used when\n\
            the state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`.\n\n*(Sensitive\
            \ Property)*"
          format: date
          type: string
        connection:
          description: 'The id of the connection to use for this `NetworkServiceConfig`.


            If no connection is specified, you have to provide

            a routing function.


            When a connection is provided, you also need to specify

            the `vlan_config`. The `routing_function` attribute

            may not be used. Some network services may require the

            use of the `l3_config`, please check the

            `nsc_required_l3_config_fields` attribute of the

            `ProductOffering`.


            Connections ans Routing Functions are mutually exclusive.'
          example: Q29ubmVjdGlvbjo0Mg==
          type: string
        consumer_side_ready:
          description: 'You can use this optional property to signal to the

            IXP, that your equipment is set up and ready to be

            tested.'
          type: boolean
        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.

            *(Sensitive Property)*

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        current_billing_start_date:
          description: 'Your obligation to pay for the service will start on this
            date.


            However, this date may change after an upgrade and not reflect

            the inital start date of the service.


            *(Sensitive Property)*'
          format: date
          type: string
        decommission_at:
          description: 'The service will be decommissioned on this date.


            This field is only used when

            the state is `DECOMMISSION_REQUESTED` or

            `DECOMMISSIONED`.'
          format: date
          type: string
        external_ref:
          description: 'Reference field, free to use for the API user.

            *(Sensitive Property)*

            '
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `Exchange Lan Network Service
            Config`.
          example: RXhjaGFuZ2VMYW5OZXR3b3JrU2VydmljZUNvbmZpZzo0Mg==
          readOnly: 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.'
          example:
          - SXBBZGRyZXNzOjQy
          items:
            type: string
          readOnly: true
          type: array
        l3_config:
          $ref: '#/components/schemas/L3Config'
        listed:
          description: The customer wants to be featured on the member list
          type: boolean
        macs:
          description: 'A list of MAC address IDs. You may have to register the

            address using the `macs_create` operation.'
          example:
          - TWFjQWRkcmVzczo0Mg==
          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 `NetworkService`.
          example: TmV0d29ya1NlcnZpY2U6NDI=
          type: string
        product_offering:
          description: 'The product offering must match the type `exchange_lan`

            and must refer to the related network service through

            the `exchange_lan_network_service` property.'
          example: UHJvZHVjdE9mZmVyaW5nOjQy
          type: string
        purchase_order:
          default: ''
          description: 'Purchase Order ID which will be displayed on the invoice.

            *(Sensitive Property)*

            '
          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.


            Please note, that any contact role can additionally be provided.

            The presence of at least one of each required contact roles

            is necessary.

            '
          example:
          - c-impl:123
          - c-noc:331
          items:
            type: string
          type: array
        routing_function:
          description: 'The id of the `RoutingFunction` to use for this `NetworkServiceConfig`.


            If no routing function is provided, you need to provide

            the connection to use.


            When a routing function is provided, you also need to

            specify the `l3_config`. The `connection` attribute

            may not be used.


            Connections ans Routing Functions are mutually exclusive.'
          example: Um91dGluZ0Z1bmN0aW9uOjQy
          type: string
        shared_statistics:
          $ref: '#/components/schemas/SharedStatisticsConfig'
        state:
          enum:
          - requested
          - allocated
          - testing
          - production
          - production_change_pending
          - decommission_requested
          - decommissioned
          - archived
          - error
          - operator
          - scheduled
          - cancelled
          type: string
        status:
          items:
            $ref: '#/components/schemas/Status'
          type: array
        vlan_config:
          $ref: '#/components/schemas/VlanConfig'
      required:
      - type
      - product_offering
      - listed
      - asns
      - id
      - role_assignments
      - billing_account
      - consuming_account
      - managing_account
      - network_service
      - state
      title: ExchangeLanNetworkServiceConfig
      type: object
    ExchangeLanNetworkServiceConfigPatch:
      allOf:
      - $ref: '#/components/schemas/NetworkServiceConfigPatch'
      description: Exchange Lan Network Service Config Update
      properties:
        asns:
          description: 'A list of AS numbers.


            Depending on the implementation, these can be used for different

            purposes.  For example in the members list on the website, links to

            the looking glass or even generating IPv6 prefixes.'
          items:
            format: int64
            maximum: 4294967295
            minimum: 0
            type: integer
          type: array
        availability_zone:
          description: 'The availability zone that shall be used on the provider side.


            Availability Zones may not be supported for exchange_lan because by

            default they span multiple networks.


            If an availability zone is set then this refers to a circuit that

            is placed on a specific on-ramp to the exchange_lan.'
          example: QXZhaWxhYmlsaXR5Wm9uZTo0Mg==
          nullable: true
          type: string
        billing_account:
          description: 'An account requires billing_information to be used as a `billing_account`.

            *(Sensitive Property)*'
          example: QWNjb3VudDo0Mg==
          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`.


            If no connection is specified, you have to provide

            a routing function.


            When a connection is provided, you also need to specify

            the `vlan_config`. The `routing_function` attribute

            may not be used. Some network services may require the

            use of the `l3_config`, please check the

            `nsc_required_l3_config_fields` attribute of the

            `ProductOffering`.


            Connections ans Routing Functions are mutually exclusive.'
          example: Q29ubmVjdGlvbjo0Mg==
          type: string
        consumer_side_ready:
          description: 'You can use this optional property to signal to the

            IXP, that your equipment is set up and ready to be

            tested.'
          type: boolean
        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.

            *(Sensitive Property)*

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        external_ref:
          description: 'Reference field, free to use for the API user.

            *(Sensitive Property)*

            '
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `Exchange Lan Network Service
            Config Update`.
          example: RXhjaGFuZ2VMYW5OZXR3b3JrU2VydmljZUNvbmZpZ1BhdGNoOjQy
          readOnly: 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.'
          example:
          - SXBBZGRyZXNzOjQy
          items:
            type: string
          readOnly: true
          type: array
        l3_config:
          $ref: '#/components/schemas/L3Config'
        listed:
          description: The customer wants to be featured on the member list
          type: boolean
        macs:
          description: 'A list of MAC address IDs. You may have to register the

            address using the `macs_create` operation.'
          example:
          - TWFjQWRkcmVzczo0Mg==
          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.

            *(Sensitive Property)*

            '
          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.


            Please note, that any contact role can additionally be provided.

            The presence of at least one of each required contact roles

            is necessary.

            '
          example:
          - c-impl:123
          - c-noc:331
          items:
            type: string
          type: array
        routing_function:
          description: 'The id of the `RoutingFunction` to use for this `NetworkServiceConfig`.


            If no routing function is provided, you need to provide

            the connection to use.


            When a routing function is provided, you also need to

            specify the `l3_config`. The `connection` attribute

            may not be used.


            Connections ans Routing Functions are mutually exclusive.'
          example: Um91dGluZ0Z1bmN0aW9uOjQy
          type: string
        shared_statistics:
          $ref: '#/components/schemas/SharedStatisticsConfig'
        vlan_config:
          $ref: '#/components/schemas/VlanConfig'
      title: ExchangeLanNetworkServiceConfigPatch
      type: object
    ExchangeLanNetworkServiceConfigRequest:
      allOf:
      - $ref: '#/components/schemas/NetworkServiceConfigRequest'
      description: Exchange Lan Network Service Config Request
      properties:
        asns:
          description: 'A list of AS numbers.


            Depending on the implementation, these can be used for different

            purposes.  For example in the members list on the website, links to

            the looking glass or even generating IPv6 prefixes.'
          items:
            format: int64
            maximum: 4294967295
            minimum: 0
            type: integer
          type: array
        availability_zone:
          description: 'The availability zone that shall be used on the provider side.


            Availability Zones may not be supported for exchange_lan because by

            default they span multiple networks.


            If an availability zone is set then this refers to a circuit that

            is placed on a specific on-ramp to the exchange_lan.'
          example: QXZhaWxhYmlsaXR5Wm9uZTo0Mg==
          nullable: true
          type: string
        billing_account:
          description: 'An account requires billing_information to be used as a `billing_account`.

            *(Sensitive Property)*'
          example: QWNjb3VudDo0Mg==
          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`.


            If no connection is specified, you have to provide

            a routing function.


            When a connection is provided, you also need to specify

            the `vlan_config`. The `routing_function` attribute

            may not be used. Some network services may require the

            use of the `l3_config`, please check the

            `nsc_required_l3_config_fields` attribute of the

            `ProductOffering`.


            Connections ans Routing Functions are mutually exclusive.'
          example: Q29ubmVjdGlvbjo0Mg==
          type: string
        consumer_side_ready:
          description: 'You can use this optional property to signal to the

            IXP, that your equipment is set up and ready to be

            tested.'
          type: boolean
        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.

            *(Sensitive Property)*

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        external_ref:
          description: 'Reference field, free to use for the API user.

            *(Sensitive Property)*

            '
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `Exchange Lan Network Service
            Config Request`.
          example: RXhjaGFuZ2VMYW5OZXR3b3JrU2VydmljZUNvbmZpZ1JlcXVlc3Q6NDI=
          readOnly: 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.'
          example:
          - SXBBZGRyZXNzOjQy
          items:
            type: string
          readOnly: true
          type: array
        l3_config:
          $ref: '#/components/schemas/L3Config'
        listed:
          description: The customer wants to be featured on the member list
          type: boolean
        macs:
          description: 'A list of MAC address IDs. You may have to register the

            address using the `macs_create` operation.'
          example:
          - TWFjQWRkcmVzczo0Mg==
          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.
          example: TmV0d29ya1NlcnZpY2U6NDI=
          type: string
        product_offering:
          description: 'The product offering must match the type `exchange_lan`

            and must refer to the related network service through

            the `exchange_lan_network_service` property.'
          example: UHJvZHVjdE9mZmVyaW5nOjQy
          type: string
        purchase_order:
          default: ''
          description: 'Purchase Order ID which will be displayed on the invoice.

            *(Sensitive Property)*

            '
          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.


            Please note, that any contact role can additionally be provided.

            The presence of at least one of each required contact roles

            is necessary.

            '
          example:
          - c-impl:123
          - c-noc:331
          items:
            type: string
          type: array
        routing_function:
          description: 'The id of the `RoutingFunction` to use for this `NetworkServiceConfig`.


            If no routing function is provided, you need to provide

            the connection to use.


            When a routing function is provided, you also need to

            specify the `l3_config`. The `connection` attribute

            may not be used.


            Connections ans Routing Functions are mutually exclusive.'
          example: Um91dGluZ0Z1bmN0aW9uOjQy
          type: string
        shared_statistics:
          $ref: '#/components/schemas/SharedStatisticsConfig'
        vlan_config:
          $ref: '#/components/schemas/VlanConfig'
      required:
      - type
      - product_offering
      - listed
      - asns
      - id
      - role_assignments
      - billing_account
      - network_service
      - consuming_account
      - managing_account
      title: ExchangeLanNetworkServiceConfigRequest
      type: object
    ExchangeLanNetworkServiceConfigUpdate:
      allOf:
      - $ref: '#/components/schemas/NetworkServiceConfigUpdate'
      description: Exchange Lan Network Service Config Update
      properties:
        asns:
          description: 'A list of AS numbers.


            Depending on the implementation, these can be used for different

            purposes.  For example in the members list on the website, links to

            the looking glass or even generating IPv6 prefixes.'
          items:
            format: int64
            maximum: 4294967295
            minimum: 0
            type: integer
          type: array
        availability_zone:
          description: 'The availability zone that shall be used on the provider side.


            Availability Zones may not be supported for exchange_lan because by

            default they span multiple networks.


            If an availability zone is set then this refers to a circuit that

            is placed on a specific on-ramp to the exchange_lan.'
          example: QXZhaWxhYmlsaXR5Wm9uZTo0Mg==
          nullable: true
          type: string
        billing_account:
          description: 'An account requires billing_information to be used as a `billing_account`.

            *(Sensitive Property)*'
          example: QWNjb3VudDo0Mg==
          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`.


            If no connection is specified, you have to provide

            a routing function.


            When a connection is provided, you also need to specify

            the `vlan_config`. The `routing_function` attribute

            may not be used. Some network services may require the

            use of the `l3_config`, please check the

            `nsc_required_l3_config_fields` attribute of the

            `ProductOffering`.


            Connections ans Routing Functions are mutually exclusive.'
          example: Q29ubmVjdGlvbjo0Mg==
          type: string
        consumer_side_ready:
          description: 'You can use this optional property to signal to the

            IXP, that your equipment is set up and ready to be

            tested.'
          type: boolean
        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.

            *(Sensitive Property)*

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        external_ref:
          description: 'Reference field, free to use for the API user.

            *(Sensitive Property)*

            '
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `Exchange Lan Network Service
            Config Update`.
          example: RXhjaGFuZ2VMYW5OZXR3b3JrU2VydmljZUNvbmZpZ1VwZGF0ZTo0Mg==
          readOnly: 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.'
          example:
          - SXBBZGRyZXNzOjQy
          items:
            type: string
          readOnly: true
          type: array
        l3_config:
          $ref: '#/components/schemas/L3Config'
        listed:
          description: The customer wants to be featured on the member list
          type: boolean
        macs:
          description: 'A list of MAC address IDs. You may have to register the

            address using the `macs_create` operation.'
          example:
          - TWFjQWRkcmVzczo0Mg==
          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.

            *(Sensitive Property)*

            '
          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.


            Please note, that any contact role can additionally be provided.

            The presence of at least one of each required contact roles

            is necessary.

            '
          example:
          - c-impl:123
          - c-noc:331
          items:
            type: string
          type: array
        routing_function:
          description: 'The id of the `RoutingFunction` to use for this `NetworkServiceConfig`.


            If no routing function is provided, you need to provide

            the connection to use.


            When a routing function is provided, you also need to

            specify the `l3_config`. The `connection` attribute

            may not be used.


            Connections ans Routing Functions are mutually exclusive.'
          example: Um91dGluZ0Z1bmN0aW9uOjQy
          type: string
        shared_statistics:
          $ref: '#/components/schemas/SharedStatisticsConfig'
        vlan_config:
          $ref: '#/components/schemas/VlanConfig'
      required:
      - type
      - listed
      - asns
      - id
      - role_assignments
      - billing_account
      - consuming_account
      - managing_account
      title: ExchangeLanNetworkServiceConfigUpdate
      type: object
    Facility:
      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:
          description: The *primary identifier* of the `Facility`.
          example: RmFjaWxpdHk6NDI=
          readOnly: true
          type: string
        latitude:
          description: 'Latitude of the facility''s location.

            '
          example: 52.437879
          type: number
        longitude:
          description: 'Longitude of the facility''s location.

            '
          example: 13.650965
          type: number
        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 reachable from the `Facility`.
          example:
          - UG9pbnRPZlByZXNlbmNlOjQy
          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
      required:
      - pops
      - organisation_name
      - street_address
      - postal_code
      - address_region
      - address_locality
      - address_country
      - metro_area
      - name
      - id
      title: Facility
      type: object
    IXPSpecificFeatureFlag:
      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
        mandatory:
          description: 'This feature will always be enabled, even if not provided
            in

            the corresponding config''s list of `flags`.

            '
          type: boolean
        name:
          description: 'The name of the feature flag.

            '
          example: RPKI-HARD-FILTER
          maxLength: 40
          type: string
      required:
      - mandatory
      - description
      - name
      title: IXPSpecificFeatureFlag
      type: object
    IXPSpecificFeatureFlagConfig:
      description: IXP-Specific Feature Flag Configuration
      properties:
        enabled:
          description: 'Enable the feature.


            *Mandatory features can not be disabled*.'
          type: boolean
        name:
          description: 'The name of the feature flag.

            '
          example: RPKI-HARD-FILTER
          maxLength: 40
          type: string
      required:
      - enabled
      - name
      title: IXPSpecificFeatureFlagConfig
      type: object
    IpAddress:
      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.

            *(Sensitive Property)*

            '
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        fqdn:
          maxLength: 100
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `IP-Address`.
          example: SXBBZGRyZXNzOjQy
          readOnly: 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.

            '
          enum:
          - 4
          - 6
          example: 4
          type: integer
      required:
      - prefix_length
      - address
      - version
      - id
      - consuming_account
      - managing_account
      title: IpAddress
      type: object
    IpAddressPatch:
      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.

            *(Sensitive Property)*

            '
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        fqdn:
          maxLength: 100
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `IP-Address Update`.
          example: SXBBZGRyZXNzUGF0Y2g6NDI=
          readOnly: 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.

            '
          enum:
          - 4
          - 6
          example: 4
          type: integer
      title: IpAddressPatch
      type: object
    IpAddressRequest:
      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.

            *(Sensitive Property)*

            '
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        fqdn:
          maxLength: 100
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `IP-Address / Prefix allocation
            Request`.
          example: SXBBZGRyZXNzUmVxdWVzdDo0Mg==
          readOnly: 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.

            '
          enum:
          - 4
          - 6
          example: 4
          type: integer
      required:
      - prefix_length
      - address
      - version
      - id
      - consuming_account
      - managing_account
      title: IpAddressRequest
      type: object
    IpAddressShort:
      description: IP-Address
      properties:
        address:
          description: 'The IP address in the following format:

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

            - IPv6: hexadecimal colon separated notation

            '
          example: fd42:2342::1
          type: string
        version:
          description: 'The version of the internet protocol.

            '
          enum:
          - 4
          - 6
          example: 6
          type: integer
      required:
      - address
      - version
      title: IpAddressShort
      type: object
    IpAddressUpdate:
      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.

            *(Sensitive Property)*

            '
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        fqdn:
          maxLength: 100
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `IP-Address Update`.
          example: SXBBZGRyZXNzVXBkYXRlOjQy
          readOnly: 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.

            '
          enum:
          - 4
          - 6
          example: 4
          type: integer
      required:
      - prefix_length
      - address
      - version
      - id
      - consuming_account
      - managing_account
      title: IpAddressUpdate
      type: object
    L3Config:
      description: 'The layer 3 configuration for the NetworkServiceConfig.


        It is **required** when a `routing_function` is provided.

        It may be required with a `connection`, depending on the

        `ProductOffering`.


        Please check the `nsc_required_l3_config_fields` attribute

        of the corresponding `ProductOffering` to see which fields

        are required.


        For additional optional fields, please check the

        `nsc_supported_l3_config_fields` attribute of the `ProductOffering`.'
      properties:
        bfd:
          description: Enable BFD for the BGP session.
          type: boolean
        bgp_address_family:
          enum:
          - ipv4
          - ipv6
          type: string
        bgp_neighbor_address:
          description: The IP address of the BGP neighbor.
          type: string
        bgp_neighbor_address_primary:
          description: The primary IP address of the BGP neighbor.
          type: string
        bgp_neighbor_address_secondary:
          description: The secondary IP address of the BGP neighbor.
          type: string
        bgp_neighbor_asn:
          description: The ASN of the BGP neighbor.
          type: integer
        bgp_password:
          description: The password to use for BGP sessions.
          type: string
        local_address:
          description: 'The IP address of the router function instance

            in CIDR notation.'
          type: string
        local_address_primary:
          description: 'The primary IP address of the router function instance

            in CIDR notation.'
          type: string
        local_address_secondary:
          description: 'The secondary IP address of the router function instance

            in CIDR notation.'
          type: string
        local_asn:
          description: The local ASN.
          type: integer
      title: L3Config
      type: object
    MP2MPNetworkProductOffering:
      allOf:
      - $ref: '#/components/schemas/ProductOffering'
      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
        contract_initial_notice_period:
          description: '_**Format:** ISO8601 Duration_


            The notice period for canceling the contract within

            the initial period.

            '
          example: P1M
          nullable: true
          type: string
        contract_initial_period:
          description: '_**Format:** ISO8601 Duration_


            The initial duration of the contract. The contract will be

            renewed after this period for the duration of `contract_renewal_period`.

            '
          example: P6M
          nullable: true
          type: string
        contract_renewal_notice_period:
          description: '_**Format:** ISO8601 Duration_


            The notice period denotes the time before the end of the

            `contract_renewal_period` in which the client has to inform

            the IXP in order to prevent renewal of the contract.

            '
          example: P2W
          nullable: true
          type: string
        contract_renewal_period:
          description: '_**Format:** ISO8601 Duration_


            The duration for which the contract will be renewed after

            the initial period.


            Unless the contract is canceled, it will be

            automatically renewed after the period.

            Cancellation has to be done within the

            `contract_renewal_notice_period`.

            '
          example: P3M
          type: string
        contract_terms:
          description: 'This property informally describe the contract''s notice-
            and

            renewal periods as well as additional terms.


            **Note**: This property contains informal information about

            the contract. For a structured representation see:

            `contract_initial_period`, `contract_initial_notice_period`,

            `contract_renewal_period` and `contract_renewal_notice_period`.


            **Example**: A contract with the terms

            _"initially two weeks, renewing for six month afterwards, cancelable with
            a notice period of one month after and within 5 days during the initial
            period"_

            can be represented as:

            * `contract_initial_period: "P2W"`

            * `contract_initial_notice_period: "P5D"`

            * `contract_renewal_period: "P6M"`

            * `contract_renewal_notice_period: "P1M"`

            '
          example: first 30 days free
          nullable: true
          type: string
        display_name:
          maxLength: 256
          type: string
        downgrade_allowed:
          description: 'Indicates if the service can be migrated to

            a lower bandwidth.'
          type: boolean
        exchange_logo:
          description: 'An URI referencing the logo of the internet exchange.

            '
          example: https://example.ix/resources/ixpLogo
          format: uri
          type: string
        handover_metro_area:
          description: 'Id of the `MetroArea`. The network service will be

            accessed from this metro area.


            In case of a `p2p_vc`, the `handover_metro_area` refers

            to the A-side of the point-to-point connection.

            The A-side is the entity which initiates the network service creation.

            '
          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.


            In case of a `p2p_vc`, the `handover_metro_area_network` refers

            to the A-side of the point-to-point connection.

            The A-side is the entity which initiates the network service creation.

            '
          example: '191239810'
          type: string
        id:
          description: The *primary identifier* of the `MP2MP Network Product Offering`.
          example: TVAyTVBOZXR3b3JrUHJvZHVjdE9mZmVyaW5nOjQy
          readOnly: true
          type: string
        name:
          description: Name of the product
          maxLength: 160
          type: string
        notice_period:
          description: '**DEPRECATION NOTICE**: This property will be replaced by

            `contract_initial_period`, `contract_initial_notice_period`,

            `contract_renewal_period` and `contract_renewal_notice_period`.


            The notice period informally states constraints

            which define when the client needs to inform the

            IXP in order to prevent renewal of the contract.

            '
          example: at least 2 weeks before the end of every odd month
          nullable: true
          type: string
        nsc_required_l3_config_fields:
          description: 'A list of required attributes in the `l3_config` of a corresponding

            `NetworkServiceConfig` when used with a `routing_function`.


            For example:  `"bgp_password"`, `"bgp_neighbor_address"`

            `"bgp_neighbor_asn"`, `"local_address_primary"`, ...

            '
          example:
          - bgp_password
          - local_address_primary
          items:
            type: string
          type: array
        nsc_supported_l3_config_fields:
          description: 'The list of fields which are supported in the `l3_config`

            when creating the network service config with a `routing_function`.


            For example:  `"bgp_password"`, `"bgp_neighbor_address"`

            `"local_address_primary"`, ...

            '
          example:
          - bgp_password
          - local_address_primary
          items:
            type: string
          type: array
        orderable_not_after:
          description: 'This product offering will become unavailable for ordering
            after

            this point in time.'
          format: date-time
          nullable: true
          type: string
        orderable_not_before:
          description: 'This product offering becomes available for ordering after

            this point in time.'
          format: date-time
          nullable: true
          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
        product_logo:
          description: 'An URI referencing a logo for the product offered.

            '
          example: https://example.ix/resources/products/activeCloudPremium
          format: uri
          type: string
        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
          - port_reservation
          - network_service
          - network_service_config
          - routing_function
          example: network_service
          type: string
        service_metro_area:
          description: 'Id of the `MetroArea`. The service is delivered

            in this metro area.


            In case of a `p2p_vc`, the `service_metro_area` refers

            to the B-side of the point-to-point connection.

            The B-side is the accepting party.

            '
          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.


            In case of a `p2p_vc`, the `service_metro_area_network` refers

            to the B-side of the point-to-point connection.

            The B-side is the accepting party.

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

            '
          example: AWS
          type: string
        service_provider_logo:
          description: 'An URI referencing the logo of the service provider.

            '
          example: https://example.ix/resources/providerLogo
          format: uri
          type: string
        upgrade_allowed:
          description: 'Indicates if the service can be migrated to

            a higher bandwidth.'
          type: boolean
      required:
      - type
      - nsc_supported_l3_config_fields
      - nsc_required_l3_config_fields
      - bandwidth_max
      - bandwidth_min
      - service_metro_area
      - service_metro_area_network
      - provider_vlans
      - upgrade_allowed
      - downgrade_allowed
      - service_provider
      - physical_port_speed
      - handover_metro_area
      - handover_metro_area_network
      - resource_type
      - display_name
      - name
      - id
      title: MP2MPNetworkProductOffering
      type: object
    MP2MPNetworkProductOfferingPatch:
      allOf:
      - $ref: '#/components/schemas/ProductOfferingPatch'
      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
        contract_initial_notice_period:
          description: '_**Format:** ISO8601 Duration_


            The notice period for canceling the contract within

            the initial period.

            '
          example: P1M
          nullable: true
          type: string
        contract_initial_period:
          description: '_**Format:** ISO8601 Duration_


            The initial duration of the contract. The contract will be

            renewed after this period for the duration of `contract_renewal_period`.

            '
          example: P6M
          nullable: true
          type: string
        contract_renewal_notice_period:
          description: '_**Format:** ISO8601 Duration_


            The notice period denotes the time before the end of the

            `contract_renewal_period` in which the client has to inform

            the IXP in order to prevent renewal of the contract.

            '
          example: P2W
          nullable: true
          type: string
        contract_renewal_period:
          description: '_**Format:** ISO8601 Duration_


            The duration for which the contract will be renewed after

            the initial period.


            Unless the contract is canceled, it will be

            automatically renewed after the period.

            Cancellation has to be done within the

            `contract_renewal_notice_period`.

            '
          example: P3M
          type: string
        contract_terms:
          description: 'This property informally describe the contract''s notice-
            and

            renewal periods as well as additional terms.


            **Note**: This property contains informal information about

            the contract. For a structured representation see:

            `contract_initial_period`, `contract_initial_notice_period`,

            `contract_renewal_period` and `contract_renewal_notice_period`.


            **Example**: A contract with the terms

            _"initially two weeks, renewing for six month afterwards, cancelable with
            a notice period of one month after and within 5 days during the initial
            period"_

            can be represented as:

            * `contract_initial_period: "P2W"`

            * `contract_initial_notice_period: "P5D"`

            * `contract_renewal_period: "P6M"`

            * `contract_renewal_notice_period: "P1M"`

            '
          example: first 30 days free
          nullable: true
          type: string
        display_name:
          maxLength: 256
          type: string
        downgrade_allowed:
          description: 'Indicates if the service can be migrated to

            a lower bandwidth.'
          type: boolean
        exchange_logo:
          description: 'An URI referencing the logo of the internet exchange.

            '
          example: https://example.ix/resources/ixpLogo
          format: uri
          type: string
        handover_metro_area:
          description: 'Id of the `MetroArea`. The network service will be

            accessed from this metro area.


            In case of a `p2p_vc`, the `handover_metro_area` refers

            to the A-side of the point-to-point connection.

            The A-side is the entity which initiates the network service creation.

            '
          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.


            In case of a `p2p_vc`, the `handover_metro_area_network` refers

            to the A-side of the point-to-point connection.

            The A-side is the entity which initiates the network service creation.

            '
          example: '191239810'
          type: string
        id:
          description: The *primary identifier* of the `MP2MP Network Product Offering`.
          example: TVAyTVBOZXR3b3JrUHJvZHVjdE9mZmVyaW5nUGF0Y2g6NDI=
          readOnly: true
          type: string
        name:
          description: Name of the product
          maxLength: 160
          type: string
        notice_period:
          description: '**DEPRECATION NOTICE**: This property will be replaced by

            `contract_initial_period`, `contract_initial_notice_period`,

            `contract_renewal_period` and `contract_renewal_notice_period`.


            The notice period informally states constraints

            which define when the client needs to inform the

            IXP in order to prevent renewal of the contract.

            '
          example: at least 2 weeks before the end of every odd month
          nullable: true
          type: string
        nsc_required_l3_config_fields:
          description: 'A list of required attributes in the `l3_config` of a corresponding

            `NetworkServiceConfig` when used with a `routing_function`.


            For example:  `"bgp_password"`, `"bgp_neighbor_address"`

            `"bgp_neighbor_asn"`, `"local_address_primary"`, ...

            '
          example:
          - bgp_password
          - local_address_primary
          items:
            type: string
          type: array
        nsc_supported_l3_config_fields:
          description: 'The list of fields which are supported in the `l3_config`

            when creating the network service config with a `routing_function`.


            For example:  `"bgp_password"`, `"bgp_neighbor_address"`

            `"local_address_primary"`, ...

            '
          example:
          - bgp_password
          - local_address_primary
          items:
            type: string
          type: array
        orderable_not_after:
          description: 'This product offering will become unavailable for ordering
            after

            this point in time.'
          format: date-time
          nullable: true
          type: string
        orderable_not_before:
          description: 'This product offering becomes available for ordering after

            this point in time.'
          format: date-time
          nullable: true
          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
        product_logo:
          description: 'An URI referencing a logo for the product offered.

            '
          example: https://example.ix/resources/products/activeCloudPremium
          format: uri
          type: string
        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
          - port_reservation
          - network_service
          - network_service_config
          - routing_function
          example: network_service
          type: string
        service_metro_area:
          description: 'Id of the `MetroArea`. The service is delivered

            in this metro area.


            In case of a `p2p_vc`, the `service_metro_area` refers

            to the B-side of the point-to-point connection.

            The B-side is the accepting party.

            '
          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.


            In case of a `p2p_vc`, the `service_metro_area_network` refers

            to the B-side of the point-to-point connection.

            The B-side is the accepting party.

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

            '
          example: AWS
          type: string
        service_provider_logo:
          description: 'An URI referencing the logo of the service provider.

            '
          example: https://example.ix/resources/providerLogo
          format: uri
          type: string
        upgrade_allowed:
          description: 'Indicates if the service can be migrated to

            a higher bandwidth.'
          type: boolean
      title: MP2MPNetworkProductOfferingPatch
      type: object
    MP2MPNetworkService:
      allOf:
      - $ref: '#/components/schemas/NetworkService'
      description: MP2MP Network Service
      properties:
        billing_account:
          description: 'An account requires billing_information to be used as a `billing_account`.

            *(Sensitive Property)*'
          example: QWNjb3VudDo0Mg==
          type: string
        charged_until:
          description: "The service continues incurring charges until this date.\n\
            Typically `\u2265 decommission_at`.\n\nThis field is only used when\n\
            the state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`.\n\n*(Sensitive\
            \ Property)*"
          format: date
          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.

            *(Sensitive Property)*

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        current_billing_start_date:
          description: 'Your obligation to pay for the service will start on this
            date.


            However, this date may change after an upgrade and not reflect

            the inital start date of the service.


            *(Sensitive Property)*'
          format: date
          type: string
        decommission_at:
          description: 'The service will be decommissioned on this date.


            This field is only used when

            the state is `DECOMMISSION_REQUESTED` or

            `DECOMMISSIONED`.'
          format: date
          type: string
        display_name:
          description: 'Name of the multi-point to multi-point virtual circuit.


            It is visible to all parties allowed to connect

            to this virtual circuit.


            It is intended for humans to make sense of, for example:

            "Financial Clearance LAN".

            '
          example: Closed User Group Finance
          type: string
        external_ref:
          description: 'Reference field, free to use for the API user.

            *(Sensitive Property)*

            '
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `MP2MP Network Service`.
          example: TVAyTVBOZXR3b3JrU2VydmljZTo0Mg==
          readOnly: true
          type: string
        mac_acl_protection:
          description: 'When enabled, only MAC addresses in the referenced in the
            network

            service config''s `macs` property are allowed to send and receive

            traffic on this network service.'
          type: boolean
        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:
          description: 'A list of `id`s of the related `MemberJoiningRule`.


            '
          example:
          - TWVtYmVySm9pbmluZ1J1bGU6NDI=
          items:
            type: string
          type: array
        network_features:
          description: 'A list of `id`s of the related `NetworkFeature`.


            '
          example:
          - TmV0d29ya0ZlYXR1cmU6NDI=
          items:
            type: string
          type: array
        nsc_product_offerings:
          description: 'An optional list of `ProductOffering` which can be used in
            the

            network service configs for this service.'
          example:
          - UHJvZHVjdE9mZmVyaW5nOjQy
          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.'
          example:
          - Um9sZTo0Mg==
          items:
            type: string
          readOnly: true
          type: array
        product_offering:
          description: 'The `id` of the related `ProductOffering`.


            '
          example: UHJvZHVjdE9mZmVyaW5nOjQy
          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 `display_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.

            *(Sensitive Property)*

            '
          example: 'Project: DC Moon'
          maxLength: 80
          type: string
        state:
          enum:
          - requested
          - allocated
          - testing
          - production
          - production_change_pending
          - decommission_requested
          - decommissioned
          - archived
          - error
          - operator
          - scheduled
          - cancelled
          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
      required:
      - type
      - network_features
      - member_joining_rules
      - id
      - billing_account
      - consuming_account
      - managing_account
      - product_offering
      - nsc_required_contact_roles
      - state
      title: MP2MPNetworkService
      type: object
    MP2MPNetworkServiceConfig:
      allOf:
      - $ref: '#/components/schemas/NetworkServiceConfig'
      description: MP2MP Network Service Config
      properties:
        asns:
          description: 'A list of AS numbers.


            Depending on the implementation, these can be used for different

            purposes.  For example in the members list on the website, links to

            the looking glass or even generating IPv6 prefixes.'
          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`.

            *(Sensitive Property)*'
          example: QWNjb3VudDo0Mg==
          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
        charged_until:
          description: "The service continues incurring charges until this date.\n\
            Typically `\u2265 decommission_at`.\n\nThis field is only used when\n\
            the state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`.\n\n*(Sensitive\
            \ Property)*"
          format: date
          type: string
        connection:
          description: 'The id of the connection to use for this `NetworkServiceConfig`.


            If no connection is specified, you have to provide

            a routing function.


            When a connection is provided, you also need to specify

            the `vlan_config`. The `routing_function` attribute

            may not be used. Some network services may require the

            use of the `l3_config`, please check the

            `nsc_required_l3_config_fields` attribute of the

            `ProductOffering`.


            Connections ans Routing Functions are mutually exclusive.'
          example: Q29ubmVjdGlvbjo0Mg==
          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.

            *(Sensitive Property)*

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        current_billing_start_date:
          description: 'Your obligation to pay for the service will start on this
            date.


            However, this date may change after an upgrade and not reflect

            the inital start date of the service.


            *(Sensitive Property)*'
          format: date
          type: string
        decommission_at:
          description: 'The service will be decommissioned on this date.


            This field is only used when

            the state is `DECOMMISSION_REQUESTED` or

            `DECOMMISSIONED`.'
          format: date
          type: string
        external_ref:
          description: 'Reference field, free to use for the API user.

            *(Sensitive Property)*

            '
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `MP2MP Network Service Config`.
          example: TVAyTVBOZXR3b3JrU2VydmljZUNvbmZpZzo0Mg==
          readOnly: 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.'
          example:
          - SXBBZGRyZXNzOjQy
          items:
            type: string
          readOnly: true
          type: array
        l3_config:
          $ref: '#/components/schemas/L3Config'
        macs:
          description: 'A list of MAC address IDs. You may have to register the

            address using the `macs_create` operation.'
          example:
          - TWFjQWRkcmVzczo0Mg==
          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 `NetworkService`.
          example: TmV0d29ya1NlcnZpY2U6NDI=
          type: string
        product_offering:
          description: 'An optional id of a `ProductOffering`.


            Valid ids of product-offerings can be found in the

            `nsc_product_offerings` property of the `NetworkService`.'
          example: UHJvZHVjdE9mZmVyaW5nOjQy
          type: string
        purchase_order:
          default: ''
          description: 'Purchase Order ID which will be displayed on the invoice.

            *(Sensitive Property)*

            '
          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.


            Please note, that any contact role can additionally be provided.

            The presence of at least one of each required contact roles

            is necessary.

            '
          example:
          - c-impl:123
          - c-noc:331
          items:
            type: string
          type: array
        routing_function:
          description: 'The id of the `RoutingFunction` to use for this `NetworkServiceConfig`.


            If no routing function is provided, you need to provide

            the connection to use.


            When a routing function is provided, you also need to

            specify the `l3_config`. The `connection` attribute

            may not be used.


            Connections ans Routing Functions are mutually exclusive.'
          example: Um91dGluZ0Z1bmN0aW9uOjQy
          type: string
        state:
          enum:
          - requested
          - allocated
          - testing
          - production
          - production_change_pending
          - decommission_requested
          - decommissioned
          - archived
          - error
          - operator
          - scheduled
          - cancelled
          type: string
        status:
          items:
            $ref: '#/components/schemas/Status'
          type: array
        vlan_config:
          $ref: '#/components/schemas/VlanConfig'
      required:
      - type
      - id
      - role_assignments
      - billing_account
      - consuming_account
      - managing_account
      - network_service
      - state
      title: MP2MPNetworkServiceConfig
      type: object
    MP2MPNetworkServiceConfigPatch:
      allOf:
      - $ref: '#/components/schemas/NetworkServiceConfigPatch'
      description: MP2MP Network Service Config Update
      properties:
        asns:
          description: 'A list of AS numbers.


            Depending on the implementation, these can be used for different

            purposes.  For example in the members list on the website, links to

            the looking glass or even generating IPv6 prefixes.'
          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`.

            *(Sensitive Property)*'
          example: QWNjb3VudDo0Mg==
          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`.


            If no connection is specified, you have to provide

            a routing function.


            When a connection is provided, you also need to specify

            the `vlan_config`. The `routing_function` attribute

            may not be used. Some network services may require the

            use of the `l3_config`, please check the

            `nsc_required_l3_config_fields` attribute of the

            `ProductOffering`.


            Connections ans Routing Functions are mutually exclusive.'
          example: Q29ubmVjdGlvbjo0Mg==
          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.

            *(Sensitive Property)*

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        external_ref:
          description: 'Reference field, free to use for the API user.

            *(Sensitive Property)*

            '
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `MP2MP Network Service Config
            Update`.
          example: TVAyTVBOZXR3b3JrU2VydmljZUNvbmZpZ1BhdGNoOjQy
          readOnly: 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.'
          example:
          - SXBBZGRyZXNzOjQy
          items:
            type: string
          readOnly: true
          type: array
        l3_config:
          $ref: '#/components/schemas/L3Config'
        macs:
          description: 'A list of MAC address IDs. You may have to register the

            address using the `macs_create` operation.'
          example:
          - TWFjQWRkcmVzczo0Mg==
          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
        product_offering:
          description: 'An optional id of a `ProductOffering`.


            Valid ids of product-offerings can be found in the

            `nsc_product_offerings` property of the `NetworkService`.'
          example: UHJvZHVjdE9mZmVyaW5nOjQy
          type: string
        purchase_order:
          default: ''
          description: 'Purchase Order ID which will be displayed on the invoice.

            *(Sensitive Property)*

            '
          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.


            Please note, that any contact role can additionally be provided.

            The presence of at least one of each required contact roles

            is necessary.

            '
          example:
          - c-impl:123
          - c-noc:331
          items:
            type: string
          type: array
        routing_function:
          description: 'The id of the `RoutingFunction` to use for this `NetworkServiceConfig`.


            If no routing function is provided, you need to provide

            the connection to use.


            When a routing function is provided, you also need to

            specify the `l3_config`. The `connection` attribute

            may not be used.


            Connections ans Routing Functions are mutually exclusive.'
          example: Um91dGluZ0Z1bmN0aW9uOjQy
          type: string
        vlan_config:
          $ref: '#/components/schemas/VlanConfig'
      title: MP2MPNetworkServiceConfigPatch
      type: object
    MP2MPNetworkServiceConfigRequest:
      allOf:
      - $ref: '#/components/schemas/NetworkServiceConfigRequest'
      description: MP2MP Network Service Config Request
      properties:
        asns:
          description: 'A list of AS numbers.


            Depending on the implementation, these can be used for different

            purposes.  For example in the members list on the website, links to

            the looking glass or even generating IPv6 prefixes.'
          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`.

            *(Sensitive Property)*'
          example: QWNjb3VudDo0Mg==
          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`.


            If no connection is specified, you have to provide

            a routing function.


            When a connection is provided, you also need to specify

            the `vlan_config`. The `routing_function` attribute

            may not be used. Some network services may require the

            use of the `l3_config`, please check the

            `nsc_required_l3_config_fields` attribute of the

            `ProductOffering`.


            Connections ans Routing Functions are mutually exclusive.'
          example: Q29ubmVjdGlvbjo0Mg==
          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.

            *(Sensitive Property)*

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        external_ref:
          description: 'Reference field, free to use for the API user.

            *(Sensitive Property)*

            '
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `MP2MP Network Service Config
            Request`.
          example: TVAyTVBOZXR3b3JrU2VydmljZUNvbmZpZ1JlcXVlc3Q6NDI=
          readOnly: 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.'
          example:
          - SXBBZGRyZXNzOjQy
          items:
            type: string
          readOnly: true
          type: array
        l3_config:
          $ref: '#/components/schemas/L3Config'
        macs:
          description: 'A list of MAC address IDs. You may have to register the

            address using the `macs_create` operation.'
          example:
          - TWFjQWRkcmVzczo0Mg==
          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.
          example: TmV0d29ya1NlcnZpY2U6NDI=
          type: string
        product_offering:
          description: 'An optional id of a `ProductOffering`.


            Valid ids of product-offerings can be found in the

            `nsc_product_offerings` property of the `NetworkService`.'
          example: UHJvZHVjdE9mZmVyaW5nOjQy
          type: string
        purchase_order:
          default: ''
          description: 'Purchase Order ID which will be displayed on the invoice.

            *(Sensitive Property)*

            '
          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.


            Please note, that any contact role can additionally be provided.

            The presence of at least one of each required contact roles

            is necessary.

            '
          example:
          - c-impl:123
          - c-noc:331
          items:
            type: string
          type: array
        routing_function:
          description: 'The id of the `RoutingFunction` to use for this `NetworkServiceConfig`.


            If no routing function is provided, you need to provide

            the connection to use.


            When a routing function is provided, you also need to

            specify the `l3_config`. The `connection` attribute

            may not be used.


            Connections ans Routing Functions are mutually exclusive.'
          example: Um91dGluZ0Z1bmN0aW9uOjQy
          type: string
        vlan_config:
          $ref: '#/components/schemas/VlanConfig'
      required:
      - type
      - id
      - role_assignments
      - billing_account
      - network_service
      - consuming_account
      - managing_account
      title: MP2MPNetworkServiceConfigRequest
      type: object
    MP2MPNetworkServiceConfigUpdate:
      allOf:
      - $ref: '#/components/schemas/NetworkServiceConfigUpdate'
      description: MP2MP Network Service Config Update
      properties:
        asns:
          description: 'A list of AS numbers.


            Depending on the implementation, these can be used for different

            purposes.  For example in the members list on the website, links to

            the looking glass or even generating IPv6 prefixes.'
          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`.

            *(Sensitive Property)*'
          example: QWNjb3VudDo0Mg==
          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`.


            If no connection is specified, you have to provide

            a routing function.


            When a connection is provided, you also need to specify

            the `vlan_config`. The `routing_function` attribute

            may not be used. Some network services may require the

            use of the `l3_config`, please check the

            `nsc_required_l3_config_fields` attribute of the

            `ProductOffering`.


            Connections ans Routing Functions are mutually exclusive.'
          example: Q29ubmVjdGlvbjo0Mg==
          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.

            *(Sensitive Property)*

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        external_ref:
          description: 'Reference field, free to use for the API user.

            *(Sensitive Property)*

            '
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `MP2MP Network Service Config
            Update`.
          example: TVAyTVBOZXR3b3JrU2VydmljZUNvbmZpZ1VwZGF0ZTo0Mg==
          readOnly: 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.'
          example:
          - SXBBZGRyZXNzOjQy
          items:
            type: string
          readOnly: true
          type: array
        l3_config:
          $ref: '#/components/schemas/L3Config'
        macs:
          description: 'A list of MAC address IDs. You may have to register the

            address using the `macs_create` operation.'
          example:
          - TWFjQWRkcmVzczo0Mg==
          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
        product_offering:
          description: 'An optional id of a `ProductOffering`.


            Valid ids of product-offerings can be found in the

            `nsc_product_offerings` property of the `NetworkService`.'
          example: UHJvZHVjdE9mZmVyaW5nOjQy
          type: string
        purchase_order:
          default: ''
          description: 'Purchase Order ID which will be displayed on the invoice.

            *(Sensitive Property)*

            '
          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.


            Please note, that any contact role can additionally be provided.

            The presence of at least one of each required contact roles

            is necessary.

            '
          example:
          - c-impl:123
          - c-noc:331
          items:
            type: string
          type: array
        routing_function:
          description: 'The id of the `RoutingFunction` to use for this `NetworkServiceConfig`.


            If no routing function is provided, you need to provide

            the connection to use.


            When a routing function is provided, you also need to

            specify the `l3_config`. The `connection` attribute

            may not be used.


            Connections ans Routing Functions are mutually exclusive.'
          example: Um91dGluZ0Z1bmN0aW9uOjQy
          type: string
        vlan_config:
          $ref: '#/components/schemas/VlanConfig'
      required:
      - type
      - id
      - role_assignments
      - billing_account
      - consuming_account
      - managing_account
      title: MP2MPNetworkServiceConfigUpdate
      type: object
    MP2MPNetworkServicePatch:
      allOf:
      - $ref: '#/components/schemas/NetworkServicePatch'
      description: MP2MP Network Service Update
      properties:
        billing_account:
          description: 'An account requires billing_information to be used as a `billing_account`.

            *(Sensitive Property)*'
          example: QWNjb3VudDo0Mg==
          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.

            *(Sensitive Property)*

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        display_name:
          description: 'Name of the multi-point to multi-point virtual circuit.


            It is visible to all parties allowed to connect

            to this virtual circuit.


            It is intended for humans to make sense of, for example:

            "Financial Clearance LAN".

            '
          example: Closed User Group Finance
          type: string
        external_ref:
          description: 'Reference field, free to use for the API user.

            *(Sensitive Property)*

            '
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `MP2MP Network Service Update`.
          example: TVAyTVBOZXR3b3JrU2VydmljZVBhdGNoOjQy
          readOnly: 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:
          description: 'The `id` of the related `ProductOffering`.


            '
          example: UHJvZHVjdE9mZmVyaW5nOjQy
          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 `display_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.

            *(Sensitive Property)*

            '
          example: 'Project: DC Moon'
          maxLength: 80
          type: string
        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
      title: MP2MPNetworkServicePatch
      type: object
    MP2MPNetworkServiceRequest:
      allOf:
      - $ref: '#/components/schemas/NetworkServiceRequest'
      description: MP2MP Network Service Request
      properties:
        billing_account:
          description: 'An account requires billing_information to be used as a `billing_account`.

            *(Sensitive Property)*'
          example: QWNjb3VudDo0Mg==
          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.

            *(Sensitive Property)*

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        display_name:
          description: 'Name of the multi-point to multi-point virtual circuit.


            It is visible to all parties allowed to connect

            to this virtual circuit.


            It is intended for humans to make sense of, for example:

            "Financial Clearance LAN".

            '
          example: Closed User Group Finance
          type: string
        external_ref:
          description: 'Reference field, free to use for the API user.

            *(Sensitive Property)*

            '
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `MP2MP Network Service Request`.
          example: TVAyTVBOZXR3b3JrU2VydmljZVJlcXVlc3Q6NDI=
          readOnly: 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:
          description: 'The `id` of the related `ProductOffering`.


            '
          example: UHJvZHVjdE9mZmVyaW5nOjQy
          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 `display_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.

            *(Sensitive Property)*

            '
          example: 'Project: DC Moon'
          maxLength: 80
          type: string
        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
      required:
      - type
      - id
      - billing_account
      - consuming_account
      - managing_account
      - product_offering
      title: MP2MPNetworkServiceRequest
      type: object
    MP2MPNetworkServiceUpdate:
      allOf:
      - $ref: '#/components/schemas/NetworkServiceUpdate'
      description: MP2MP Network Service Update
      properties:
        billing_account:
          description: 'An account requires billing_information to be used as a `billing_account`.

            *(Sensitive Property)*'
          example: QWNjb3VudDo0Mg==
          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.

            *(Sensitive Property)*

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        display_name:
          description: 'Name of the multi-point to multi-point virtual circuit.


            It is visible to all parties allowed to connect

            to this virtual circuit.


            It is intended for humans to make sense of, for example:

            "Financial Clearance LAN".

            '
          example: Closed User Group Finance
          type: string
        external_ref:
          description: 'Reference field, free to use for the API user.

            *(Sensitive Property)*

            '
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `MP2MP Network Service Update`.
          example: TVAyTVBOZXR3b3JrU2VydmljZVVwZGF0ZTo0Mg==
          readOnly: 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:
          description: 'The `id` of the related `ProductOffering`.


            '
          example: UHJvZHVjdE9mZmVyaW5nOjQy
          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 `display_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.

            *(Sensitive Property)*

            '
          example: 'Project: DC Moon'
          maxLength: 80
          type: string
        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
      required:
      - type
      - id
      - billing_account
      - consuming_account
      - managing_account
      - product_offering
      title: MP2MPNetworkServiceUpdate
      type: object
    MacAddress:
      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.

            *(Sensitive Property)*

            '
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `MAC-Address`.
          example: TWFjQWRkcmVzczo0Mg==
          readOnly: 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:
          description: 'When a mac address is assigned to an NSC, and the current
            datetime

            is before this value, the MAC address *can* be used on the peering platform.


            Afterwards, it is supposed to be unassigned from the NSC and cannot

            any longer be used on the peering platform.


            If the value is null or the property does not exist, the MAC address

            is valid indefinitely. The value may not be in the past.'
          format: date-time
          nullable: true
          type: string
        valid_not_before:
          description: 'When a mac address is assigned to a NSC, and the current

            datetime is before this value, then the MAC address *cannot*

            be used on the peering platform.


            Afterwards, it is supposed to be available. If the value is

            `null` or the property does not exist, the mac address is

            valid from the creation date.'
          format: date-time
          nullable: true
          type: string
      required:
      - address
      - id
      - consuming_account
      - managing_account
      title: MacAddress
      type: object
    MacAddressRequest:
      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.

            *(Sensitive Property)*

            '
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `MAC-Address Request`.
          example: TWFjQWRkcmVzc1JlcXVlc3Q6NDI=
          readOnly: 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:
          description: 'When a mac address is assigned to an NSC, and the current
            datetime

            is before this value, the MAC address *can* be used on the peering platform.


            Afterwards, it is supposed to be unassigned from the NSC and cannot

            any longer be used on the peering platform.


            If the value is null or the property does not exist, the MAC address

            is valid indefinitely. The value may not be in the past.'
          format: date-time
          nullable: true
          type: string
        valid_not_before:
          description: 'When a mac address is assigned to a NSC, and the current

            datetime is before this value, then the MAC address *cannot*

            be used on the peering platform.


            Afterwards, it is supposed to be available. If the value is

            `null` or the property does not exist, the mac address is

            valid from the creation date.'
          format: date-time
          nullable: true
          type: string
      required:
      - address
      - id
      - consuming_account
      - managing_account
      title: MacAddressRequest
      type: object
    MemberJoiningRule:
      description: MemberJoiningRule
      discriminator:
        mapping:
          allow: '#/components/schemas/AllowMemberJoiningRule'
          deny: '#/components/schemas/DenyMemberJoiningRule'
        propertyName: type
      properties:
        type:
          type: string
      required:
      - type
      title: MemberJoiningRule
      type: object
    MemberJoiningRulePatch:
      description: MemberJoiningRulePatch
      discriminator:
        mapping:
          allow: '#/components/schemas/AllowMemberJoiningRulePatch'
          deny: '#/components/schemas/DenyMemberJoiningRulePatch'
        propertyName: type
      properties:
        type:
          type: string
      required:
      - type
      title: MemberJoiningRulePatch
      type: object
    MemberJoiningRuleRequest:
      description: MemberJoiningRuleRequest
      discriminator:
        mapping:
          allow: '#/components/schemas/AllowMemberJoiningRuleRequest'
          deny: '#/components/schemas/DenyMemberJoiningRuleRequest'
        propertyName: type
      properties:
        type:
          type: string
      required:
      - type
      title: MemberJoiningRuleRequest
      type: object
    MemberJoiningRuleUpdate:
      description: MemberJoiningRuleUpdate
      discriminator:
        mapping:
          allow: '#/components/schemas/AllowMemberJoiningRuleUpdate'
          deny: '#/components/schemas/DenyMemberJoiningRuleUpdate'
        propertyName: type
      properties:
        type:
          type: string
      required:
      - type
      title: MemberJoiningRuleUpdate
      type: object
    MetroArea:
      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.
          example:
          - RmFjaWxpdHk6NDI=
          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:
          description: The *primary identifier* of the `MetroArea`.
          example: TWV0cm9BcmVhOjQy
          readOnly: true
          type: string
        metro_area_networks:
          description: List of networks in the metro area.
          example:
          - TWV0cm9BcmVhTmV0d29yazo0Mg==
          items:
            type: string
          type: array
        un_locode:
          description: 'The UN/LOCODE for identifying the metro area.

            '
          example: DE FRA
          maxLength: 6
          type: string
      required:
      - metro_area_networks
      - facilities
      - display_name
      - iata_code
      - un_locode
      - id
      title: MetroArea
      type: object
    MetroAreaNetwork:
      description: MetroAreaNetwork
      properties:
        id:
          description: The *primary identifier* of the `MetroAreaNetwork`.
          example: TWV0cm9BcmVhTmV0d29yazo0Mg==
          readOnly: true
          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.
          example:
          - UG9pbnRPZlByZXNlbmNlOjQy
          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
      required:
      - pops
      - service_provider
      - metro_area
      - name
      - id
      title: MetroAreaNetwork
      type: object
    NetworkFeature:
      description: NetworkFeature
      discriminator:
        mapping:
          route_server: '#/components/schemas/RouteServerNetworkFeature'
        propertyName: type
      properties:
        type:
          type: string
      required:
      - type
      title: NetworkFeature
      type: object
    NetworkFeatureConfig:
      description: NetworkFeatureConfig
      discriminator:
        mapping:
          route_server: '#/components/schemas/RouteServerNetworkFeatureConfig'
        propertyName: type
      properties:
        type:
          type: string
      required:
      - type
      title: NetworkFeatureConfig
      type: object
    NetworkFeatureConfigPatch:
      description: NetworkFeatureConfigPatch
      discriminator:
        mapping:
          route_server: '#/components/schemas/RouteServerNetworkFeatureConfigPatch'
        propertyName: type
      properties:
        type:
          type: string
      required:
      - type
      title: NetworkFeatureConfigPatch
      type: object
    NetworkFeatureConfigRequest:
      description: NetworkFeatureConfigRequest
      discriminator:
        mapping:
          route_server: '#/components/schemas/RouteServerNetworkFeatureConfigRequest'
        propertyName: type
      properties:
        type:
          type: string
      required:
      - type
      title: NetworkFeatureConfigRequest
      type: object
    NetworkFeatureConfigUpdate:
      description: NetworkFeatureConfigUpdate
      discriminator:
        mapping:
          route_server: '#/components/schemas/RouteServerNetworkFeatureConfigUpdate'
        propertyName: type
      properties:
        type:
          type: string
      required:
      - type
      title: NetworkFeatureConfigUpdate
      type: object
    NetworkService:
      description: NetworkService
      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
      properties:
        type:
          type: string
      required:
      - type
      title: NetworkService
      type: object
    NetworkServiceChangeRequest:
      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.'
          example: UHJvZHVjdE9mZmVyaW5nOjQy
          type: string
      required:
      - product_offering
      title: NetworkServiceChangeRequest
      type: object
    NetworkServiceConfig:
      description: NetworkServiceConfig
      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
      properties:
        type:
          type: string
      required:
      - type
      title: NetworkServiceConfig
      type: object
    NetworkServiceConfigAggregate:
      description: Statistics for NetworkServiceConfig
      properties:
        aggregates:
          additionalProperties:
            $ref: '#/components/schemas/NetworkServiceConfigAggregateStatistics'
          description: 'Aggregated statistics for a connection or service configuration.


            For the **property name** the string representation of the

            aggregate interval in ISO8601 period notation is recommended.


            For example: `PT5M`, `P1D`, `P30D`,`P1Y`.


            If a window is defined via the `start` and `end` query parameter,

            the **property name** will be `custom`.


            The available intervals can differ by implementation.

            '
          example:
            P30D:
              accuracy: 0.95
              average_ops_in: 1734882240
              average_ops_out: 173220
              average_pps_in: 1730224
              average_pps_out: 17456
              created_at: '2019-08-24T14:15:22Z'
              next_update_at: '2019-08-24T14:15:22Z'
              title: 30 Days
            PT5M:
              accuracy: 1.0
              average_ops_in: 1734882240
              average_ops_out: 173220
              average_pps_in: 1730224
              average_pps_out: 17456
              created_at: '2019-08-24T14:15:22Z'
              next_update_at: '2019-08-24T14:15:22Z'
              title: 5 Minutes
          type: object
      required:
      - aggregates
      title: NetworkServiceConfigAggregate
      type: object
    NetworkServiceConfigAggregateStatistics:
      description: AggregateStatistics for NetworkServiceConfig
      properties:
        accuracy:
          description: 'The accuracy is the ratio of *total aggregated samples* to

            *expected samples*.


            The expected number of samples is the size of the window

            of the aggregate, divided by the aggregation resolution.


            For example: A window of `24 h` with an aggregation resolution

            of `5 m` would yield `288` samples.


            If only `275` samples are available for aggregation, the

            accuracy would be `0.95`.

            '
          example: 0.95
          maximum: 1.0
          minimum: 0.0
          type: number
        average_dps_in:
          description: 'Average **discards per second** inbound.

            '
          example: 0.01
          minimum: 0
          type: number
        average_dps_out:
          description: 'Averages **discards per second** outbound.

            '
          example: 0.12
          minimum: 0
          type: number
        average_eps_in:
          description: 'Average **errors per second** inbound.

            '
          example: 0.32
          minimum: 0
          type: number
        average_eps_out:
          description: 'Averages **errors per second** outbound.

            '
          example: 0.01
          minimum: 0
          type: number
        average_ops_in:
          description: 'Average inbound **octets per second**.

            '
          example: 1734882240
          minimum: 0
          type: integer
        average_ops_out:
          description: 'Average outbound **octets per second**.

            '
          example: 173220
          minimum: 0
          type: integer
        average_pps_in:
          description: 'Average number of inbound **packets per second**.

            '
          example: 1730224
          minimum: 0
          type: integer
        average_pps_out:
          description: 'Average number outbound **packets per second**.

            '
          example: 17456
          minimum: 0
          type: integer
        created_at:
          description: Timestamp when the statistics were created.
          format: date-time
          type: string
        end:
          description: End of the traffic aggregation.
          format: date-time
          type: string
        maximum_in_at:
          description: Timestamp when the inbound peak occured.
          format: date-time
          type: string
        maximum_ops_in:
          description: 'Peak inbound **octets per second** during the interval.

            '
          example: 5734882240
          minimum: 0
          type: integer
        maximum_ops_out:
          description: 'Peak outbound **octets per second** during the interval.

            '
          example: 473220
          minimum: 0
          type: integer
        maximum_out_at:
          description: Timestamp when the outbound peak occured.
          format: date-time
          type: string
        maximum_pps_in:
          description: 'Peak inbound **packets per second** during the interval.

            '
          example: 1730224
          minimum: 0
          type: integer
        maximum_pps_out:
          description: 'Peak outbound **packets per second** during the interval.

            '
          example: 17456
          minimum: 0
          type: integer
        next_update_at:
          description: 'Next update of the statistical data.

            This may not correspond to the aggregate interval.'
          format: date-time
          type: string
        nsc_available_capacity:
          description: 'The capacity left on the `NetworkServiceConfig` in

            **megabits per second** (Mbps).

            '
          example: 23000
          minimum: 0
          type: integer
        nsc_available_capacity_change_perc:
          description: 'The percentage change of the available capacity since

            the last update.

            '
          example: -13.2
          type: number
        percentile95_ops_out:
          description: '95th percentile of outbound **octets per second**.

            '
          example: 173220
          minimum: 0
          type: integer
        percentile95_pps_in:
          description: '95th percentile of the inbound **octets per second**.

            '
          example: 1734882240
          minimum: 0
          type: integer
        percentile95_pps_out:
          description: '95th percentile of outbound **packets per second**.

            '
          example: 17456
          minimum: 0
          type: integer
        start:
          description: Start of the traffic aggregation.
          format: date-time
          type: string
        title:
          description: 'Title of the aggregated statistics.

            '
          example: 30 Days
          type: string
      required:
      - average_ops_out
      - average_ops_in
      - average_pps_out
      - average_pps_in
      - next_update_at
      - created_at
      - accuracy
      - end
      - start
      - title
      title: NetworkServiceConfigAggregateStatistics
      type: object
    NetworkServiceConfigPatch:
      description: NetworkServiceConfigPatch
      discriminator:
        mapping:
          cloud_vc: '#/components/schemas/CloudNetworkServiceConfigPatch'
          exchange_lan: '#/components/schemas/ExchangeLanNetworkServiceConfigPatch'
          mp2mp_vc: '#/components/schemas/MP2MPNetworkServiceConfigPatch'
          p2mp_vc: '#/components/schemas/P2MPNetworkServiceConfigPatch'
          p2p_vc: '#/components/schemas/P2PNetworkServiceConfigPatch'
        propertyName: type
      properties:
        type:
          type: string
      required:
      - type
      title: NetworkServiceConfigPatch
      type: object
    NetworkServiceConfigRequest:
      description: NetworkServiceConfigRequest
      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
      properties:
        type:
          type: string
      required:
      - type
      title: NetworkServiceConfigRequest
      type: object
    NetworkServiceConfigUpdate:
      description: NetworkServiceConfigUpdate
      discriminator:
        mapping:
          cloud_vc: '#/components/schemas/CloudNetworkServiceConfigUpdate'
          exchange_lan: '#/components/schemas/ExchangeLanNetworkServiceConfigUpdate'
          mp2mp_vc: '#/components/schemas/MP2MPNetworkServiceConfigUpdate'
          p2mp_vc: '#/components/schemas/P2MPNetworkServiceConfigUpdate'
          p2p_vc: '#/components/schemas/P2PNetworkServiceConfigUpdate'
        propertyName: type
      properties:
        type:
          type: string
      required:
      - type
      title: NetworkServiceConfigUpdate
      type: object
    NetworkServiceDeleteResponse:
      description: NetworkServiceDeleteResponse
      discriminator:
        mapping:
          cloud_vc: '#/components/schemas/CloudNetworkService'
          mp2mp_vc: '#/components/schemas/MP2MPNetworkService'
          p2mp_vc: '#/components/schemas/P2MPNetworkService'
          p2p_vc: '#/components/schemas/P2PNetworkService'
        propertyName: type
      properties:
        type:
          type: string
      required:
      - type
      title: NetworkServiceDeleteResponse
      type: object
    NetworkServicePatch:
      description: NetworkServicePatch
      discriminator:
        mapping:
          cloud_vc: '#/components/schemas/CloudNetworkServicePatch'
          mp2mp_vc: '#/components/schemas/MP2MPNetworkServicePatch'
          p2mp_vc: '#/components/schemas/P2MPNetworkServicePatch'
          p2p_vc: '#/components/schemas/P2PNetworkServicePatch'
        propertyName: type
      properties:
        type:
          type: string
      required:
      - type
      title: NetworkServicePatch
      type: object
    NetworkServiceRequest:
      description: NetworkServiceRequest
      discriminator:
        mapping:
          cloud_vc: '#/components/schemas/CloudNetworkServiceRequest'
          mp2mp_vc: '#/components/schemas/MP2MPNetworkServiceRequest'
          p2mp_vc: '#/components/schemas/P2MPNetworkServiceRequest'
          p2p_vc: '#/components/schemas/P2PNetworkServiceRequest'
        propertyName: type
      properties:
        type:
          type: string
      required:
      - type
      title: NetworkServiceRequest
      type: object
    NetworkServiceUpdate:
      description: NetworkServiceUpdate
      discriminator:
        mapping:
          cloud_vc: '#/components/schemas/CloudNetworkServiceUpdate'
          mp2mp_vc: '#/components/schemas/MP2MPNetworkServiceUpdate'
          p2mp_vc: '#/components/schemas/P2MPNetworkServiceUpdate'
          p2p_vc: '#/components/schemas/P2PNetworkServiceUpdate'
        propertyName: type
      properties:
        type:
          type: string
      required:
      - type
      title: NetworkServiceUpdate
      type: object
    P2MPNetworkProductOffering:
      allOf:
      - $ref: '#/components/schemas/ProductOffering'
      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
        contract_initial_notice_period:
          description: '_**Format:** ISO8601 Duration_


            The notice period for canceling the contract within

            the initial period.

            '
          example: P1M
          nullable: true
          type: string
        contract_initial_period:
          description: '_**Format:** ISO8601 Duration_


            The initial duration of the contract. The contract will be

            renewed after this period for the duration of `contract_renewal_period`.

            '
          example: P6M
          nullable: true
          type: string
        contract_renewal_notice_period:
          description: '_**Format:** ISO8601 Duration_


            The notice period denotes the time before the end of the

            `contract_renewal_period` in which the client has to inform

            the IXP in order to prevent renewal of the contract.

            '
          example: P2W
          nullable: true
          type: string
        contract_renewal_period:
          description: '_**Format:** ISO8601 Duration_


            The duration for which the contract will be renewed after

            the initial period.


            Unless the contract is canceled, it will be

            automatically renewed after the period.

            Cancellation has to be done within the

            `contract_renewal_notice_period`.

            '
          example: P3M
          type: string
        contract_terms:
          description: 'This property informally describe the contract''s notice-
            and

            renewal periods as well as additional terms.


            **Note**: This property contains informal information about

            the contract. For a structured representation see:

            `contract_initial_period`, `contract_initial_notice_period`,

            `contract_renewal_period` and `contract_renewal_notice_period`.


            **Example**: A contract with the terms

            _"initially two weeks, renewing for six month afterwards, cancelable with
            a notice period of one month after and within 5 days during the initial
            period"_

            can be represented as:

            * `contract_initial_period: "P2W"`

            * `contract_initial_notice_period: "P5D"`

            * `contract_renewal_period: "P6M"`

            * `contract_renewal_notice_period: "P1M"`

            '
          example: first 30 days free
          nullable: true
          type: string
        display_name:
          maxLength: 256
          type: string
        downgrade_allowed:
          description: 'Indicates if the service can be migrated to

            a lower bandwidth.'
          type: boolean
        exchange_logo:
          description: 'An URI referencing the logo of the internet exchange.

            '
          example: https://example.ix/resources/ixpLogo
          format: uri
          type: string
        handover_metro_area:
          description: 'Id of the `MetroArea`. The network service will be

            accessed from this metro area.


            In case of a `p2p_vc`, the `handover_metro_area` refers

            to the A-side of the point-to-point connection.

            The A-side is the entity which initiates the network service creation.

            '
          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.


            In case of a `p2p_vc`, the `handover_metro_area_network` refers

            to the A-side of the point-to-point connection.

            The A-side is the entity which initiates the network service creation.

            '
          example: '191239810'
          type: string
        id:
          description: The *primary identifier* of the `P2MP Network Product Offering`.
          example: UDJNUE5ldHdvcmtQcm9kdWN0T2ZmZXJpbmc6NDI=
          readOnly: true
          type: string
        name:
          description: Name of the product
          maxLength: 160
          type: string
        notice_period:
          description: '**DEPRECATION NOTICE**: This property will be replaced by

            `contract_initial_period`, `contract_initial_notice_period`,

            `contract_renewal_period` and `contract_renewal_notice_period`.


            The notice period informally states constraints

            which define when the client needs to inform the

            IXP in order to prevent renewal of the contract.

            '
          example: at least 2 weeks before the end of every odd month
          nullable: true
          type: string
        nsc_required_l3_config_fields:
          description: 'A list of required attributes in the `l3_config` of a corresponding

            `NetworkServiceConfig` when used with a `routing_function`.


            For example:  `"bgp_password"`, `"bgp_neighbor_address"`

            `"bgp_neighbor_asn"`, `"local_address_primary"`, ...

            '
          example:
          - bgp_password
          - local_address_primary
          items:
            type: string
          type: array
        nsc_supported_l3_config_fields:
          description: 'The list of fields which are supported in the `l3_config`

            when creating the network service config with a `routing_function`.


            For example:  `"bgp_password"`, `"bgp_neighbor_address"`

            `"local_address_primary"`, ...

            '
          example:
          - bgp_password
          - local_address_primary
          items:
            type: string
          type: array
        orderable_not_after:
          description: 'This product offering will become unavailable for ordering
            after

            this point in time.'
          format: date-time
          nullable: true
          type: string
        orderable_not_before:
          description: 'This product offering becomes available for ordering after

            this point in time.'
          format: date-time
          nullable: true
          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
        product_logo:
          description: 'An URI referencing a logo for the product offered.

            '
          example: https://example.ix/resources/products/activeCloudPremium
          format: uri
          type: string
        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
          - port_reservation
          - network_service
          - network_service_config
          - routing_function
          example: network_service
          type: string
        service_metro_area:
          description: 'Id of the `MetroArea`. The service is delivered

            in this metro area.


            In case of a `p2p_vc`, the `service_metro_area` refers

            to the B-side of the point-to-point connection.

            The B-side is the accepting party.

            '
          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.


            In case of a `p2p_vc`, the `service_metro_area_network` refers

            to the B-side of the point-to-point connection.

            The B-side is the accepting party.

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

            '
          example: AWS
          type: string
        service_provider_logo:
          description: 'An URI referencing the logo of the service provider.

            '
          example: https://example.ix/resources/providerLogo
          format: uri
          type: string
        upgrade_allowed:
          description: 'Indicates if the service can be migrated to

            a higher bandwidth.'
          type: boolean
      required:
      - type
      - nsc_supported_l3_config_fields
      - nsc_required_l3_config_fields
      - bandwidth_max
      - bandwidth_min
      - service_metro_area
      - service_metro_area_network
      - provider_vlans
      - upgrade_allowed
      - downgrade_allowed
      - service_provider
      - physical_port_speed
      - handover_metro_area
      - handover_metro_area_network
      - resource_type
      - display_name
      - name
      - id
      title: P2MPNetworkProductOffering
      type: object
    P2MPNetworkProductOfferingPatch:
      allOf:
      - $ref: '#/components/schemas/ProductOfferingPatch'
      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
        contract_initial_notice_period:
          description: '_**Format:** ISO8601 Duration_


            The notice period for canceling the contract within

            the initial period.

            '
          example: P1M
          nullable: true
          type: string
        contract_initial_period:
          description: '_**Format:** ISO8601 Duration_


            The initial duration of the contract. The contract will be

            renewed after this period for the duration of `contract_renewal_period`.

            '
          example: P6M
          nullable: true
          type: string
        contract_renewal_notice_period:
          description: '_**Format:** ISO8601 Duration_


            The notice period denotes the time before the end of the

            `contract_renewal_period` in which the client has to inform

            the IXP in order to prevent renewal of the contract.

            '
          example: P2W
          nullable: true
          type: string
        contract_renewal_period:
          description: '_**Format:** ISO8601 Duration_


            The duration for which the contract will be renewed after

            the initial period.


            Unless the contract is canceled, it will be

            automatically renewed after the period.

            Cancellation has to be done within the

            `contract_renewal_notice_period`.

            '
          example: P3M
          type: string
        contract_terms:
          description: 'This property informally describe the contract''s notice-
            and

            renewal periods as well as additional terms.


            **Note**: This property contains informal information about

            the contract. For a structured representation see:

            `contract_initial_period`, `contract_initial_notice_period`,

            `contract_renewal_period` and `contract_renewal_notice_period`.


            **Example**: A contract with the terms

            _"initially two weeks, renewing for six month afterwards, cancelable with
            a notice period of one month after and within 5 days during the initial
            period"_

            can be represented as:

            * `contract_initial_period: "P2W"`

            * `contract_initial_notice_period: "P5D"`

            * `contract_renewal_period: "P6M"`

            * `contract_renewal_notice_period: "P1M"`

            '
          example: first 30 days free
          nullable: true
          type: string
        display_name:
          maxLength: 256
          type: string
        downgrade_allowed:
          description: 'Indicates if the service can be migrated to

            a lower bandwidth.'
          type: boolean
        exchange_logo:
          description: 'An URI referencing the logo of the internet exchange.

            '
          example: https://example.ix/resources/ixpLogo
          format: uri
          type: string
        handover_metro_area:
          description: 'Id of the `MetroArea`. The network service will be

            accessed from this metro area.


            In case of a `p2p_vc`, the `handover_metro_area` refers

            to the A-side of the point-to-point connection.

            The A-side is the entity which initiates the network service creation.

            '
          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.


            In case of a `p2p_vc`, the `handover_metro_area_network` refers

            to the A-side of the point-to-point connection.

            The A-side is the entity which initiates the network service creation.

            '
          example: '191239810'
          type: string
        id:
          description: The *primary identifier* of the `P2MP Network Product Offering`.
          example: UDJNUE5ldHdvcmtQcm9kdWN0T2ZmZXJpbmdQYXRjaDo0Mg==
          readOnly: true
          type: string
        name:
          description: Name of the product
          maxLength: 160
          type: string
        notice_period:
          description: '**DEPRECATION NOTICE**: This property will be replaced by

            `contract_initial_period`, `contract_initial_notice_period`,

            `contract_renewal_period` and `contract_renewal_notice_period`.


            The notice period informally states constraints

            which define when the client needs to inform the

            IXP in order to prevent renewal of the contract.

            '
          example: at least 2 weeks before the end of every odd month
          nullable: true
          type: string
        nsc_required_l3_config_fields:
          description: 'A list of required attributes in the `l3_config` of a corresponding

            `NetworkServiceConfig` when used with a `routing_function`.


            For example:  `"bgp_password"`, `"bgp_neighbor_address"`

            `"bgp_neighbor_asn"`, `"local_address_primary"`, ...

            '
          example:
          - bgp_password
          - local_address_primary
          items:
            type: string
          type: array
        nsc_supported_l3_config_fields:
          description: 'The list of fields which are supported in the `l3_config`

            when creating the network service config with a `routing_function`.


            For example:  `"bgp_password"`, `"bgp_neighbor_address"`

            `"local_address_primary"`, ...

            '
          example:
          - bgp_password
          - local_address_primary
          items:
            type: string
          type: array
        orderable_not_after:
          description: 'This product offering will become unavailable for ordering
            after

            this point in time.'
          format: date-time
          nullable: true
          type: string
        orderable_not_before:
          description: 'This product offering becomes available for ordering after

            this point in time.'
          format: date-time
          nullable: true
          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
        product_logo:
          description: 'An URI referencing a logo for the product offered.

            '
          example: https://example.ix/resources/products/activeCloudPremium
          format: uri
          type: string
        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
          - port_reservation
          - network_service
          - network_service_config
          - routing_function
          example: network_service
          type: string
        service_metro_area:
          description: 'Id of the `MetroArea`. The service is delivered

            in this metro area.


            In case of a `p2p_vc`, the `service_metro_area` refers

            to the B-side of the point-to-point connection.

            The B-side is the accepting party.

            '
          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.


            In case of a `p2p_vc`, the `service_metro_area_network` refers

            to the B-side of the point-to-point connection.

            The B-side is the accepting party.

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

            '
          example: AWS
          type: string
        service_provider_logo:
          description: 'An URI referencing the logo of the service provider.

            '
          example: https://example.ix/resources/providerLogo
          format: uri
          type: string
        upgrade_allowed:
          description: 'Indicates if the service can be migrated to

            a higher bandwidth.'
          type: boolean
      title: P2MPNetworkProductOfferingPatch
      type: object
    P2MPNetworkService:
      allOf:
      - $ref: '#/components/schemas/NetworkService'
      description: P2MP Network Service
      properties:
        billing_account:
          description: 'An account requires billing_information to be used as a `billing_account`.

            *(Sensitive Property)*'
          example: QWNjb3VudDo0Mg==
          type: string
        charged_until:
          description: "The service continues incurring charges until this date.\n\
            Typically `\u2265 decommission_at`.\n\nThis field is only used when\n\
            the state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`.\n\n*(Sensitive\
            \ Property)*"
          format: date
          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.

            *(Sensitive Property)*

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        current_billing_start_date:
          description: 'Your obligation to pay for the service will start on this
            date.


            However, this date may change after an upgrade and not reflect

            the inital start date of the service.


            *(Sensitive Property)*'
          format: date
          type: string
        decommission_at:
          description: 'The service will be decommissioned on this date.


            This field is only used when

            the state is `DECOMMISSION_REQUESTED` or

            `DECOMMISSIONED`.'
          format: date
          type: string
        display_name:
          description: 'Name of the point to multi-point virtual circuit.


            It is visible to all parties allowed to connect

            to this virtual circuit.


            It is intended for humans to make sense of.

            '
          example: E-Tree Customer
          type: string
        external_ref:
          description: 'Reference field, free to use for the API user.

            *(Sensitive Property)*

            '
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `P2MP Network Service`.
          example: UDJNUE5ldHdvcmtTZXJ2aWNlOjQy
          readOnly: 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
        member_joining_rules:
          description: 'A list of `id`s of the related `MemberJoiningRule`.


            '
          example:
          - TWVtYmVySm9pbmluZ1J1bGU6NDI=
          items:
            type: string
          type: array
        network_features:
          description: 'A list of `id`s of the related `NetworkFeature`.


            '
          example:
          - TmV0d29ya0ZlYXR1cmU6NDI=
          items:
            type: string
          type: array
        nsc_product_offerings:
          description: 'An optional list of `ProductOffering` which can be used in
            the

            network service configs for this service.'
          example:
          - UHJvZHVjdE9mZmVyaW5nOjQy
          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.'
          example:
          - Um9sZTo0Mg==
          items:
            type: string
          readOnly: true
          type: array
        product_offering:
          description: 'The `id` of the related `ProductOffering`.


            '
          example: UHJvZHVjdE9mZmVyaW5nOjQy
          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.

            *(Sensitive Property)*

            '
          example: 'Project: DC Moon'
          maxLength: 80
          type: string
        state:
          enum:
          - requested
          - allocated
          - testing
          - production
          - production_change_pending
          - decommission_requested
          - decommissioned
          - archived
          - error
          - operator
          - scheduled
          - cancelled
          type: string
        status:
          items:
            $ref: '#/components/schemas/Status'
          type: array
      required:
      - type
      - member_joining_rules
      - network_features
      - id
      - billing_account
      - consuming_account
      - managing_account
      - product_offering
      - nsc_required_contact_roles
      - state
      title: P2MPNetworkService
      type: object
    P2MPNetworkServiceConfig:
      allOf:
      - $ref: '#/components/schemas/NetworkServiceConfig'
      description: P2MP Network Service Config
      properties:
        billing_account:
          description: 'An account requires billing_information to be used as a `billing_account`.

            *(Sensitive Property)*'
          example: QWNjb3VudDo0Mg==
          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
        charged_until:
          description: "The service continues incurring charges until this date.\n\
            Typically `\u2265 decommission_at`.\n\nThis field is only used when\n\
            the state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`.\n\n*(Sensitive\
            \ Property)*"
          format: date
          type: string
        connection:
          description: 'The id of the connection to use for this `NetworkServiceConfig`.


            If no connection is specified, you have to provide

            a routing function.


            When a connection is provided, you also need to specify

            the `vlan_config`. The `routing_function` attribute

            may not be used. Some network services may require the

            use of the `l3_config`, please check the

            `nsc_required_l3_config_fields` attribute of the

            `ProductOffering`.


            Connections ans Routing Functions are mutually exclusive.'
          example: Q29ubmVjdGlvbjo0Mg==
          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.

            *(Sensitive Property)*

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        current_billing_start_date:
          description: 'Your obligation to pay for the service will start on this
            date.


            However, this date may change after an upgrade and not reflect

            the inital start date of the service.


            *(Sensitive Property)*'
          format: date
          type: string
        decommission_at:
          description: 'The service will be decommissioned on this date.


            This field is only used when

            the state is `DECOMMISSION_REQUESTED` or

            `DECOMMISSIONED`.'
          format: date
          type: string
        external_ref:
          description: 'Reference field, free to use for the API user.

            *(Sensitive Property)*

            '
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `P2MP Network Service Config`.
          example: UDJNUE5ldHdvcmtTZXJ2aWNlQ29uZmlnOjQy
          readOnly: true
          type: string
        l3_config:
          $ref: '#/components/schemas/L3Config'
        macs:
          description: 'A list of MAC address IDs. You may have to register the

            address using the `macs_create` operation.'
          example:
          - TWFjQWRkcmVzczo0Mg==
          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 `NetworkService`.
          example: TmV0d29ya1NlcnZpY2U6NDI=
          type: string
        product_offering:
          description: 'An optional id of a `ProductOffering`.


            Valid ids of product-offerings can be found in the

            `nsc_product_offerings` property of the `NetworkService`.'
          example: UHJvZHVjdE9mZmVyaW5nOjQy
          type: string
        purchase_order:
          default: ''
          description: 'Purchase Order ID which will be displayed on the invoice.

            *(Sensitive Property)*

            '
          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.


            Please note, that any contact role can additionally be provided.

            The presence of at least one of each required contact roles

            is necessary.

            '
          example:
          - c-impl:123
          - c-noc:331
          items:
            type: string
          type: array
        routing_function:
          description: 'The id of the `RoutingFunction` to use for this `NetworkServiceConfig`.


            If no routing function is provided, you need to provide

            the connection to use.


            When a routing function is provided, you also need to

            specify the `l3_config`. The `connection` attribute

            may not be used.


            Connections ans Routing Functions are mutually exclusive.'
          example: Um91dGluZ0Z1bmN0aW9uOjQy
          type: string
        state:
          enum:
          - requested
          - allocated
          - testing
          - production
          - production_change_pending
          - decommission_requested
          - decommissioned
          - archived
          - error
          - operator
          - scheduled
          - cancelled
          type: string
        status:
          items:
            $ref: '#/components/schemas/Status'
          type: array
        vlan_config:
          $ref: '#/components/schemas/VlanConfig'
      required:
      - type
      - network_service
      - state
      - id
      - role_assignments
      - billing_account
      - consuming_account
      - managing_account
      title: P2MPNetworkServiceConfig
      type: object
    P2MPNetworkServiceConfigPatch:
      allOf:
      - $ref: '#/components/schemas/NetworkServiceConfigPatch'
      description: P2MP Network Service Config Update
      properties:
        billing_account:
          description: 'An account requires billing_information to be used as a `billing_account`.

            *(Sensitive Property)*'
          example: QWNjb3VudDo0Mg==
          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`.


            If no connection is specified, you have to provide

            a routing function.


            When a connection is provided, you also need to specify

            the `vlan_config`. The `routing_function` attribute

            may not be used. Some network services may require the

            use of the `l3_config`, please check the

            `nsc_required_l3_config_fields` attribute of the

            `ProductOffering`.


            Connections ans Routing Functions are mutually exclusive.'
          example: Q29ubmVjdGlvbjo0Mg==
          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.

            *(Sensitive Property)*

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        external_ref:
          description: 'Reference field, free to use for the API user.

            *(Sensitive Property)*

            '
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `P2MP Network Service Config
            Update`.
          example: UDJNUE5ldHdvcmtTZXJ2aWNlQ29uZmlnUGF0Y2g6NDI=
          readOnly: true
          type: string
        l3_config:
          $ref: '#/components/schemas/L3Config'
        macs:
          description: 'A list of MAC address IDs. You may have to register the

            address using the `macs_create` operation.'
          example:
          - TWFjQWRkcmVzczo0Mg==
          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
        product_offering:
          description: 'An optional id of a `ProductOffering`.


            Valid ids of product-offerings can be found in the

            `nsc_product_offerings` property of the `NetworkService`.'
          example: UHJvZHVjdE9mZmVyaW5nOjQy
          type: string
        purchase_order:
          default: ''
          description: 'Purchase Order ID which will be displayed on the invoice.

            *(Sensitive Property)*

            '
          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.


            Please note, that any contact role can additionally be provided.

            The presence of at least one of each required contact roles

            is necessary.

            '
          example:
          - c-impl:123
          - c-noc:331
          items:
            type: string
          type: array
        routing_function:
          description: 'The id of the `RoutingFunction` to use for this `NetworkServiceConfig`.


            If no routing function is provided, you need to provide

            the connection to use.


            When a routing function is provided, you also need to

            specify the `l3_config`. The `connection` attribute

            may not be used.


            Connections ans Routing Functions are mutually exclusive.'
          example: Um91dGluZ0Z1bmN0aW9uOjQy
          type: string
        vlan_config:
          $ref: '#/components/schemas/VlanConfig'
      title: P2MPNetworkServiceConfigPatch
      type: object
    P2MPNetworkServiceConfigRequest:
      allOf:
      - $ref: '#/components/schemas/NetworkServiceConfigRequest'
      description: P2MP Network Service Config Request
      properties:
        billing_account:
          description: 'An account requires billing_information to be used as a `billing_account`.

            *(Sensitive Property)*'
          example: QWNjb3VudDo0Mg==
          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`.


            If no connection is specified, you have to provide

            a routing function.


            When a connection is provided, you also need to specify

            the `vlan_config`. The `routing_function` attribute

            may not be used. Some network services may require the

            use of the `l3_config`, please check the

            `nsc_required_l3_config_fields` attribute of the

            `ProductOffering`.


            Connections ans Routing Functions are mutually exclusive.'
          example: Q29ubmVjdGlvbjo0Mg==
          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.

            *(Sensitive Property)*

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        external_ref:
          description: 'Reference field, free to use for the API user.

            *(Sensitive Property)*

            '
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `P2MP Network Service Config
            Request`.
          example: UDJNUE5ldHdvcmtTZXJ2aWNlQ29uZmlnUmVxdWVzdDo0Mg==
          readOnly: true
          type: string
        l3_config:
          $ref: '#/components/schemas/L3Config'
        macs:
          description: 'A list of MAC address IDs. You may have to register the

            address using the `macs_create` operation.'
          example:
          - TWFjQWRkcmVzczo0Mg==
          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.
          example: TmV0d29ya1NlcnZpY2U6NDI=
          type: string
        product_offering:
          description: 'An optional id of a `ProductOffering`.


            Valid ids of product-offerings can be found in the

            `nsc_product_offerings` property of the `NetworkService`.'
          example: UHJvZHVjdE9mZmVyaW5nOjQy
          type: string
        purchase_order:
          default: ''
          description: 'Purchase Order ID which will be displayed on the invoice.

            *(Sensitive Property)*

            '
          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.


            Please note, that any contact role can additionally be provided.

            The presence of at least one of each required contact roles

            is necessary.

            '
          example:
          - c-impl:123
          - c-noc:331
          items:
            type: string
          type: array
        routing_function:
          description: 'The id of the `RoutingFunction` to use for this `NetworkServiceConfig`.


            If no routing function is provided, you need to provide

            the connection to use.


            When a routing function is provided, you also need to

            specify the `l3_config`. The `connection` attribute

            may not be used.


            Connections ans Routing Functions are mutually exclusive.'
          example: Um91dGluZ0Z1bmN0aW9uOjQy
          type: string
        vlan_config:
          $ref: '#/components/schemas/VlanConfig'
      required:
      - type
      - network_service
      - id
      - role_assignments
      - billing_account
      - consuming_account
      - managing_account
      title: P2MPNetworkServiceConfigRequest
      type: object
    P2MPNetworkServiceConfigUpdate:
      allOf:
      - $ref: '#/components/schemas/NetworkServiceConfigUpdate'
      description: P2MP Network Service Config Update
      properties:
        billing_account:
          description: 'An account requires billing_information to be used as a `billing_account`.

            *(Sensitive Property)*'
          example: QWNjb3VudDo0Mg==
          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`.


            If no connection is specified, you have to provide

            a routing function.


            When a connection is provided, you also need to specify

            the `vlan_config`. The `routing_function` attribute

            may not be used. Some network services may require the

            use of the `l3_config`, please check the

            `nsc_required_l3_config_fields` attribute of the

            `ProductOffering`.


            Connections ans Routing Functions are mutually exclusive.'
          example: Q29ubmVjdGlvbjo0Mg==
          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.

            *(Sensitive Property)*

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        external_ref:
          description: 'Reference field, free to use for the API user.

            *(Sensitive Property)*

            '
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `P2MP Network Service Config
            Update`.
          example: UDJNUE5ldHdvcmtTZXJ2aWNlQ29uZmlnVXBkYXRlOjQy
          readOnly: true
          type: string
        l3_config:
          $ref: '#/components/schemas/L3Config'
        macs:
          description: 'A list of MAC address IDs. You may have to register the

            address using the `macs_create` operation.'
          example:
          - TWFjQWRkcmVzczo0Mg==
          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
        product_offering:
          description: 'An optional id of a `ProductOffering`.


            Valid ids of product-offerings can be found in the

            `nsc_product_offerings` property of the `NetworkService`.'
          example: UHJvZHVjdE9mZmVyaW5nOjQy
          type: string
        purchase_order:
          default: ''
          description: 'Purchase Order ID which will be displayed on the invoice.

            *(Sensitive Property)*

            '
          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.


            Please note, that any contact role can additionally be provided.

            The presence of at least one of each required contact roles

            is necessary.

            '
          example:
          - c-impl:123
          - c-noc:331
          items:
            type: string
          type: array
        routing_function:
          description: 'The id of the `RoutingFunction` to use for this `NetworkServiceConfig`.


            If no routing function is provided, you need to provide

            the connection to use.


            When a routing function is provided, you also need to

            specify the `l3_config`. The `connection` attribute

            may not be used.


            Connections ans Routing Functions are mutually exclusive.'
          example: Um91dGluZ0Z1bmN0aW9uOjQy
          type: string
        vlan_config:
          $ref: '#/components/schemas/VlanConfig'
      required:
      - type
      - id
      - role_assignments
      - billing_account
      - consuming_account
      - managing_account
      title: P2MPNetworkServiceConfigUpdate
      type: object
    P2MPNetworkServicePatch:
      allOf:
      - $ref: '#/components/schemas/NetworkServicePatch'
      description: P2MP Network Service Update
      properties:
        billing_account:
          description: 'An account requires billing_information to be used as a `billing_account`.

            *(Sensitive Property)*'
          example: QWNjb3VudDo0Mg==
          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.

            *(Sensitive Property)*

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        display_name:
          description: 'Name of the point to multi-point virtual circuit.


            It is visible to all parties allowed to connect

            to this virtual circuit.


            It is intended for humans to make sense of.

            '
          example: E-Tree Customer
          type: string
        external_ref:
          description: 'Reference field, free to use for the API user.

            *(Sensitive Property)*

            '
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `P2MP Network Service Update`.
          example: UDJNUE5ldHdvcmtTZXJ2aWNlUGF0Y2g6NDI=
          readOnly: 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:
          description: 'The `id` of the related `ProductOffering`.


            '
          example: UHJvZHVjdE9mZmVyaW5nOjQy
          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.

            *(Sensitive Property)*

            '
          example: 'Project: DC Moon'
          maxLength: 80
          type: string
      title: P2MPNetworkServicePatch
      type: object
    P2MPNetworkServiceRequest:
      allOf:
      - $ref: '#/components/schemas/NetworkServiceRequest'
      description: P2MP Network Service Request
      properties:
        billing_account:
          description: 'An account requires billing_information to be used as a `billing_account`.

            *(Sensitive Property)*'
          example: QWNjb3VudDo0Mg==
          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.

            *(Sensitive Property)*

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        display_name:
          description: 'Name of the point to multi-point virtual circuit.


            It is visible to all parties allowed to connect

            to this virtual circuit.


            It is intended for humans to make sense of.

            '
          example: E-Tree Customer
          type: string
        external_ref:
          description: 'Reference field, free to use for the API user.

            *(Sensitive Property)*

            '
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `P2MP Network Service Request`.
          example: UDJNUE5ldHdvcmtTZXJ2aWNlUmVxdWVzdDo0Mg==
          readOnly: 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:
          description: 'The `id` of the related `ProductOffering`.


            '
          example: UHJvZHVjdE9mZmVyaW5nOjQy
          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.

            *(Sensitive Property)*

            '
          example: 'Project: DC Moon'
          maxLength: 80
          type: string
      required:
      - type
      - id
      - billing_account
      - consuming_account
      - managing_account
      - product_offering
      title: P2MPNetworkServiceRequest
      type: object
    P2MPNetworkServiceUpdate:
      allOf:
      - $ref: '#/components/schemas/NetworkServiceUpdate'
      description: P2MP Network Service Update
      properties:
        billing_account:
          description: 'An account requires billing_information to be used as a `billing_account`.

            *(Sensitive Property)*'
          example: QWNjb3VudDo0Mg==
          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.

            *(Sensitive Property)*

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        display_name:
          description: 'Name of the point to multi-point virtual circuit.


            It is visible to all parties allowed to connect

            to this virtual circuit.


            It is intended for humans to make sense of.

            '
          example: E-Tree Customer
          type: string
        external_ref:
          description: 'Reference field, free to use for the API user.

            *(Sensitive Property)*

            '
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `P2MP Network Service Update`.
          example: UDJNUE5ldHdvcmtTZXJ2aWNlVXBkYXRlOjQy
          readOnly: 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:
          description: 'The `id` of the related `ProductOffering`.


            '
          example: UHJvZHVjdE9mZmVyaW5nOjQy
          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.

            *(Sensitive Property)*

            '
          example: 'Project: DC Moon'
          maxLength: 80
          type: string
      required:
      - type
      - id
      - billing_account
      - consuming_account
      - managing_account
      - product_offering
      title: P2MPNetworkServiceUpdate
      type: object
    P2PNetworkProductOffering:
      allOf:
      - $ref: '#/components/schemas/ProductOffering'
      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
        contract_initial_notice_period:
          description: '_**Format:** ISO8601 Duration_


            The notice period for canceling the contract within

            the initial period.

            '
          example: P1M
          nullable: true
          type: string
        contract_initial_period:
          description: '_**Format:** ISO8601 Duration_


            The initial duration of the contract. The contract will be

            renewed after this period for the duration of `contract_renewal_period`.

            '
          example: P6M
          nullable: true
          type: string
        contract_renewal_notice_period:
          description: '_**Format:** ISO8601 Duration_


            The notice period denotes the time before the end of the

            `contract_renewal_period` in which the client has to inform

            the IXP in order to prevent renewal of the contract.

            '
          example: P2W
          nullable: true
          type: string
        contract_renewal_period:
          description: '_**Format:** ISO8601 Duration_


            The duration for which the contract will be renewed after

            the initial period.


            Unless the contract is canceled, it will be

            automatically renewed after the period.

            Cancellation has to be done within the

            `contract_renewal_notice_period`.

            '
          example: P3M
          type: string
        contract_terms:
          description: 'This property informally describe the contract''s notice-
            and

            renewal periods as well as additional terms.


            **Note**: This property contains informal information about

            the contract. For a structured representation see:

            `contract_initial_period`, `contract_initial_notice_period`,

            `contract_renewal_period` and `contract_renewal_notice_period`.


            **Example**: A contract with the terms

            _"initially two weeks, renewing for six month afterwards, cancelable with
            a notice period of one month after and within 5 days during the initial
            period"_

            can be represented as:

            * `contract_initial_period: "P2W"`

            * `contract_initial_notice_period: "P5D"`

            * `contract_renewal_period: "P6M"`

            * `contract_renewal_notice_period: "P1M"`

            '
          example: first 30 days free
          nullable: true
          type: string
        display_name:
          maxLength: 256
          type: string
        downgrade_allowed:
          description: 'Indicates if the service can be migrated to

            a lower bandwidth.'
          type: boolean
        exchange_logo:
          description: 'An URI referencing the logo of the internet exchange.

            '
          example: https://example.ix/resources/ixpLogo
          format: uri
          type: string
        handover_metro_area:
          description: 'Id of the `MetroArea`. The network service will be

            accessed from this metro area.


            In case of a `p2p_vc`, the `handover_metro_area` refers

            to the A-side of the point-to-point connection.

            The A-side is the entity which initiates the network service creation.

            '
          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.


            In case of a `p2p_vc`, the `handover_metro_area_network` refers

            to the A-side of the point-to-point connection.

            The A-side is the entity which initiates the network service creation.

            '
          example: '191239810'
          type: string
        id:
          description: The *primary identifier* of the `P2P Network Product Offering`.
          example: UDJQTmV0d29ya1Byb2R1Y3RPZmZlcmluZzo0Mg==
          readOnly: true
          type: string
        name:
          description: Name of the product
          maxLength: 160
          type: string
        notice_period:
          description: '**DEPRECATION NOTICE**: This property will be replaced by

            `contract_initial_period`, `contract_initial_notice_period`,

            `contract_renewal_period` and `contract_renewal_notice_period`.


            The notice period informally states constraints

            which define when the client needs to inform the

            IXP in order to prevent renewal of the contract.

            '
          example: at least 2 weeks before the end of every odd month
          nullable: true
          type: string
        nsc_required_l3_config_fields:
          description: 'A list of required attributes in the `l3_config` of a corresponding

            `NetworkServiceConfig` when used with a `routing_function`.


            For example:  `"bgp_password"`, `"bgp_neighbor_address"`

            `"bgp_neighbor_asn"`, `"local_address_primary"`, ...

            '
          example:
          - bgp_password
          - local_address_primary
          items:
            type: string
          type: array
        nsc_supported_l3_config_fields:
          description: 'The list of fields which are supported in the `l3_config`

            when creating the network service config with a `routing_function`.


            For example:  `"bgp_password"`, `"bgp_neighbor_address"`

            `"local_address_primary"`, ...

            '
          example:
          - bgp_password
          - local_address_primary
          items:
            type: string
          type: array
        orderable_not_after:
          description: 'This product offering will become unavailable for ordering
            after

            this point in time.'
          format: date-time
          nullable: true
          type: string
        orderable_not_before:
          description: 'This product offering becomes available for ordering after

            this point in time.'
          format: date-time
          nullable: true
          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
        product_logo:
          description: 'An URI referencing a logo for the product offered.

            '
          example: https://example.ix/resources/products/activeCloudPremium
          format: uri
          type: string
        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
          - port_reservation
          - network_service
          - network_service_config
          - routing_function
          example: network_service
          type: string
        service_metro_area:
          description: 'Id of the `MetroArea`. The service is delivered

            in this metro area.


            In case of a `p2p_vc`, the `service_metro_area` refers

            to the B-side of the point-to-point connection.

            The B-side is the accepting party.

            '
          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.


            In case of a `p2p_vc`, the `service_metro_area_network` refers

            to the B-side of the point-to-point connection.

            The B-side is the accepting party.

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

            '
          example: AWS
          type: string
        service_provider_logo:
          description: 'An URI referencing the logo of the service provider.

            '
          example: https://example.ix/resources/providerLogo
          format: uri
          type: string
        upgrade_allowed:
          description: 'Indicates if the service can be migrated to

            a higher bandwidth.'
          type: boolean
      required:
      - type
      - nsc_supported_l3_config_fields
      - nsc_required_l3_config_fields
      - bandwidth_max
      - bandwidth_min
      - service_metro_area
      - service_metro_area_network
      - provider_vlans
      - upgrade_allowed
      - downgrade_allowed
      - service_provider
      - physical_port_speed
      - handover_metro_area
      - handover_metro_area_network
      - resource_type
      - display_name
      - name
      - id
      title: P2PNetworkProductOffering
      type: object
    P2PNetworkProductOfferingPatch:
      allOf:
      - $ref: '#/components/schemas/ProductOfferingPatch'
      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
        contract_initial_notice_period:
          description: '_**Format:** ISO8601 Duration_


            The notice period for canceling the contract within

            the initial period.

            '
          example: P1M
          nullable: true
          type: string
        contract_initial_period:
          description: '_**Format:** ISO8601 Duration_


            The initial duration of the contract. The contract will be

            renewed after this period for the duration of `contract_renewal_period`.

            '
          example: P6M
          nullable: true
          type: string
        contract_renewal_notice_period:
          description: '_**Format:** ISO8601 Duration_


            The notice period denotes the time before the end of the

            `contract_renewal_period` in which the client has to inform

            the IXP in order to prevent renewal of the contract.

            '
          example: P2W
          nullable: true
          type: string
        contract_renewal_period:
          description: '_**Format:** ISO8601 Duration_


            The duration for which the contract will be renewed after

            the initial period.


            Unless the contract is canceled, it will be

            automatically renewed after the period.

            Cancellation has to be done within the

            `contract_renewal_notice_period`.

            '
          example: P3M
          type: string
        contract_terms:
          description: 'This property informally describe the contract''s notice-
            and

            renewal periods as well as additional terms.


            **Note**: This property contains informal information about

            the contract. For a structured representation see:

            `contract_initial_period`, `contract_initial_notice_period`,

            `contract_renewal_period` and `contract_renewal_notice_period`.


            **Example**: A contract with the terms

            _"initially two weeks, renewing for six month afterwards, cancelable with
            a notice period of one month after and within 5 days during the initial
            period"_

            can be represented as:

            * `contract_initial_period: "P2W"`

            * `contract_initial_notice_period: "P5D"`

            * `contract_renewal_period: "P6M"`

            * `contract_renewal_notice_period: "P1M"`

            '
          example: first 30 days free
          nullable: true
          type: string
        display_name:
          maxLength: 256
          type: string
        downgrade_allowed:
          description: 'Indicates if the service can be migrated to

            a lower bandwidth.'
          type: boolean
        exchange_logo:
          description: 'An URI referencing the logo of the internet exchange.

            '
          example: https://example.ix/resources/ixpLogo
          format: uri
          type: string
        handover_metro_area:
          description: 'Id of the `MetroArea`. The network service will be

            accessed from this metro area.


            In case of a `p2p_vc`, the `handover_metro_area` refers

            to the A-side of the point-to-point connection.

            The A-side is the entity which initiates the network service creation.

            '
          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.


            In case of a `p2p_vc`, the `handover_metro_area_network` refers

            to the A-side of the point-to-point connection.

            The A-side is the entity which initiates the network service creation.

            '
          example: '191239810'
          type: string
        id:
          description: The *primary identifier* of the `P2P Network Product Offering`.
          example: UDJQTmV0d29ya1Byb2R1Y3RPZmZlcmluZ1BhdGNoOjQy
          readOnly: true
          type: string
        name:
          description: Name of the product
          maxLength: 160
          type: string
        notice_period:
          description: '**DEPRECATION NOTICE**: This property will be replaced by

            `contract_initial_period`, `contract_initial_notice_period`,

            `contract_renewal_period` and `contract_renewal_notice_period`.


            The notice period informally states constraints

            which define when the client needs to inform the

            IXP in order to prevent renewal of the contract.

            '
          example: at least 2 weeks before the end of every odd month
          nullable: true
          type: string
        nsc_required_l3_config_fields:
          description: 'A list of required attributes in the `l3_config` of a corresponding

            `NetworkServiceConfig` when used with a `routing_function`.


            For example:  `"bgp_password"`, `"bgp_neighbor_address"`

            `"bgp_neighbor_asn"`, `"local_address_primary"`, ...

            '
          example:
          - bgp_password
          - local_address_primary
          items:
            type: string
          type: array
        nsc_supported_l3_config_fields:
          description: 'The list of fields which are supported in the `l3_config`

            when creating the network service config with a `routing_function`.


            For example:  `"bgp_password"`, `"bgp_neighbor_address"`

            `"local_address_primary"`, ...

            '
          example:
          - bgp_password
          - local_address_primary
          items:
            type: string
          type: array
        orderable_not_after:
          description: 'This product offering will become unavailable for ordering
            after

            this point in time.'
          format: date-time
          nullable: true
          type: string
        orderable_not_before:
          description: 'This product offering becomes available for ordering after

            this point in time.'
          format: date-time
          nullable: true
          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
        product_logo:
          description: 'An URI referencing a logo for the product offered.

            '
          example: https://example.ix/resources/products/activeCloudPremium
          format: uri
          type: string
        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
          - port_reservation
          - network_service
          - network_service_config
          - routing_function
          example: network_service
          type: string
        service_metro_area:
          description: 'Id of the `MetroArea`. The service is delivered

            in this metro area.


            In case of a `p2p_vc`, the `service_metro_area` refers

            to the B-side of the point-to-point connection.

            The B-side is the accepting party.

            '
          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.


            In case of a `p2p_vc`, the `service_metro_area_network` refers

            to the B-side of the point-to-point connection.

            The B-side is the accepting party.

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

            '
          example: AWS
          type: string
        service_provider_logo:
          description: 'An URI referencing the logo of the service provider.

            '
          example: https://example.ix/resources/providerLogo
          format: uri
          type: string
        upgrade_allowed:
          description: 'Indicates if the service can be migrated to

            a higher bandwidth.'
          type: boolean
      title: P2PNetworkProductOfferingPatch
      type: object
    P2PNetworkService:
      allOf:
      - $ref: '#/components/schemas/NetworkService'
      description: P2P Network Service
      properties:
        availability_zones:
          description: The availability zones for the service.
          example:
          - QXZhaWxhYmlsaXR5Wm9uZTo0Mg==
          items:
            type: string
          type: array
        billing_account:
          description: 'An account requires billing_information to be used as a `billing_account`.

            *(Sensitive Property)*'
          example: QWNjb3VudDo0Mg==
          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
        charged_until:
          description: "The service continues incurring charges until this date.\n\
            Typically `\u2265 decommission_at`.\n\nThis field is only used when\n\
            the state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`.\n\n*(Sensitive\
            \ Property)*"
          format: date
          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.

            *(Sensitive Property)*

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        current_billing_start_date:
          description: 'Your obligation to pay for the service will start on this
            date.


            However, this date may change after an upgrade and not reflect

            the inital start date of the service.


            *(Sensitive Property)*'
          format: date
          type: string
        decommission_at:
          description: 'The service will be decommissioned on this date.


            This field is only used when

            the state is `DECOMMISSION_REQUESTED` or

            `DECOMMISSIONED`.'
          format: date
          type: string
        display_name:
          description: 'Name of the point to point virtual circuit.


            It is visible to all parties allowed to connect

            to this virtual circuit.


            It is intended for humans to make sense of.

            '
          example: E-Line Customer
          type: string
        external_ref:
          description: 'Reference field, free to use for the API user.

            *(Sensitive Property)*

            '
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `P2P Network Service`.
          example: UDJQTmV0d29ya1NlcnZpY2U6NDI=
          readOnly: 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
        nsc_product_offerings:
          description: 'An optional list of `ProductOffering` which can be used in
            the

            network service configs for this service.'
          example:
          - UHJvZHVjdE9mZmVyaW5nOjQy
          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.'
          example:
          - Um9sZTo0Mg==
          items:
            type: string
          readOnly: true
          type: array
        product_offering:
          description: 'The `id` of the related `ProductOffering`.


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

            *(Sensitive Property)*

            '
          example: 'Project: DC Moon'
          maxLength: 80
          type: string
        state:
          enum:
          - requested
          - allocated
          - testing
          - production
          - production_change_pending
          - decommission_requested
          - decommissioned
          - archived
          - error
          - operator
          - scheduled
          - cancelled
          type: string
        status:
          items:
            $ref: '#/components/schemas/Status'
          type: array
      required:
      - type
      - joining_member_account
      - id
      - billing_account
      - consuming_account
      - managing_account
      - product_offering
      - nsc_required_contact_roles
      - state
      title: P2PNetworkService
      type: object
    P2PNetworkServiceConfig:
      allOf:
      - $ref: '#/components/schemas/NetworkServiceConfig'
      description: P2P Network Service Config
      properties:
        billing_account:
          description: 'An account requires billing_information to be used as a `billing_account`.

            *(Sensitive Property)*'
          example: QWNjb3VudDo0Mg==
          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
        charged_until:
          description: "The service continues incurring charges until this date.\n\
            Typically `\u2265 decommission_at`.\n\nThis field is only used when\n\
            the state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`.\n\n*(Sensitive\
            \ Property)*"
          format: date
          type: string
        connection:
          description: 'The id of the connection to use for this `NetworkServiceConfig`.


            If no connection is specified, you have to provide

            a routing function.


            When a connection is provided, you also need to specify

            the `vlan_config`. The `routing_function` attribute

            may not be used. Some network services may require the

            use of the `l3_config`, please check the

            `nsc_required_l3_config_fields` attribute of the

            `ProductOffering`.


            Connections ans Routing Functions are mutually exclusive.'
          example: Q29ubmVjdGlvbjo0Mg==
          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.

            *(Sensitive Property)*

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        current_billing_start_date:
          description: 'Your obligation to pay for the service will start on this
            date.


            However, this date may change after an upgrade and not reflect

            the inital start date of the service.


            *(Sensitive Property)*'
          format: date
          type: string
        decommission_at:
          description: 'The service will be decommissioned on this date.


            This field is only used when

            the state is `DECOMMISSION_REQUESTED` or

            `DECOMMISSIONED`.'
          format: date
          type: string
        external_ref:
          description: 'Reference field, free to use for the API user.

            *(Sensitive Property)*

            '
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `P2P Network Service Config`.
          example: UDJQTmV0d29ya1NlcnZpY2VDb25maWc6NDI=
          readOnly: true
          type: string
        l3_config:
          $ref: '#/components/schemas/L3Config'
        macs:
          description: 'A list of MAC address IDs. You may have to register the

            address using the `macs_create` operation.'
          example:
          - TWFjQWRkcmVzczo0Mg==
          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 `NetworkService`.
          example: TmV0d29ya1NlcnZpY2U6NDI=
          type: string
        product_offering:
          description: 'An optional id of a `ProductOffering`.


            Valid ids of product-offerings can be found in the

            `nsc_product_offerings` property of the `NetworkService`.'
          example: UHJvZHVjdE9mZmVyaW5nOjQy
          type: string
        purchase_order:
          default: ''
          description: 'Purchase Order ID which will be displayed on the invoice.

            *(Sensitive Property)*

            '
          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.


            Please note, that any contact role can additionally be provided.

            The presence of at least one of each required contact roles

            is necessary.

            '
          example:
          - c-impl:123
          - c-noc:331
          items:
            type: string
          type: array
        routing_function:
          description: 'The id of the `RoutingFunction` to use for this `NetworkServiceConfig`.


            If no routing function is provided, you need to provide

            the connection to use.


            When a routing function is provided, you also need to

            specify the `l3_config`. The `connection` attribute

            may not be used.


            Connections ans Routing Functions are mutually exclusive.'
          example: Um91dGluZ0Z1bmN0aW9uOjQy
          type: string
        state:
          enum:
          - requested
          - allocated
          - testing
          - production
          - production_change_pending
          - decommission_requested
          - decommissioned
          - archived
          - error
          - operator
          - scheduled
          - cancelled
          type: string
        status:
          items:
            $ref: '#/components/schemas/Status'
          type: array
        vlan_config:
          $ref: '#/components/schemas/VlanConfig'
      required:
      - type
      - id
      - role_assignments
      - billing_account
      - consuming_account
      - managing_account
      - network_service
      - state
      title: P2PNetworkServiceConfig
      type: object
    P2PNetworkServiceConfigPatch:
      allOf:
      - $ref: '#/components/schemas/NetworkServiceConfigPatch'
      description: P2P Network Service Config Update
      properties:
        billing_account:
          description: 'An account requires billing_information to be used as a `billing_account`.

            *(Sensitive Property)*'
          example: QWNjb3VudDo0Mg==
          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`.


            If no connection is specified, you have to provide

            a routing function.


            When a connection is provided, you also need to specify

            the `vlan_config`. The `routing_function` attribute

            may not be used. Some network services may require the

            use of the `l3_config`, please check the

            `nsc_required_l3_config_fields` attribute of the

            `ProductOffering`.


            Connections ans Routing Functions are mutually exclusive.'
          example: Q29ubmVjdGlvbjo0Mg==
          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.

            *(Sensitive Property)*

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        external_ref:
          description: 'Reference field, free to use for the API user.

            *(Sensitive Property)*

            '
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `P2P Network Service Config
            Update`.
          example: UDJQTmV0d29ya1NlcnZpY2VDb25maWdQYXRjaDo0Mg==
          readOnly: true
          type: string
        l3_config:
          $ref: '#/components/schemas/L3Config'
        macs:
          description: 'A list of MAC address IDs. You may have to register the

            address using the `macs_create` operation.'
          example:
          - TWFjQWRkcmVzczo0Mg==
          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
        product_offering:
          description: 'An optional id of a `ProductOffering`.


            Valid ids of product-offerings can be found in the

            `nsc_product_offerings` property of the `NetworkService`.'
          example: UHJvZHVjdE9mZmVyaW5nOjQy
          type: string
        purchase_order:
          default: ''
          description: 'Purchase Order ID which will be displayed on the invoice.

            *(Sensitive Property)*

            '
          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.


            Please note, that any contact role can additionally be provided.

            The presence of at least one of each required contact roles

            is necessary.

            '
          example:
          - c-impl:123
          - c-noc:331
          items:
            type: string
          type: array
        routing_function:
          description: 'The id of the `RoutingFunction` to use for this `NetworkServiceConfig`.


            If no routing function is provided, you need to provide

            the connection to use.


            When a routing function is provided, you also need to

            specify the `l3_config`. The `connection` attribute

            may not be used.


            Connections ans Routing Functions are mutually exclusive.'
          example: Um91dGluZ0Z1bmN0aW9uOjQy
          type: string
        vlan_config:
          $ref: '#/components/schemas/VlanConfig'
      title: P2PNetworkServiceConfigPatch
      type: object
    P2PNetworkServiceConfigRequest:
      allOf:
      - $ref: '#/components/schemas/NetworkServiceConfigRequest'
      description: P2P Network Service Config Request
      properties:
        billing_account:
          description: 'An account requires billing_information to be used as a `billing_account`.

            *(Sensitive Property)*'
          example: QWNjb3VudDo0Mg==
          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`.


            If no connection is specified, you have to provide

            a routing function.


            When a connection is provided, you also need to specify

            the `vlan_config`. The `routing_function` attribute

            may not be used. Some network services may require the

            use of the `l3_config`, please check the

            `nsc_required_l3_config_fields` attribute of the

            `ProductOffering`.


            Connections ans Routing Functions are mutually exclusive.'
          example: Q29ubmVjdGlvbjo0Mg==
          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.

            *(Sensitive Property)*

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        external_ref:
          description: 'Reference field, free to use for the API user.

            *(Sensitive Property)*

            '
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `P2P Network Service Config
            Request`.
          example: UDJQTmV0d29ya1NlcnZpY2VDb25maWdSZXF1ZXN0OjQy
          readOnly: true
          type: string
        l3_config:
          $ref: '#/components/schemas/L3Config'
        macs:
          description: 'A list of MAC address IDs. You may have to register the

            address using the `macs_create` operation.'
          example:
          - TWFjQWRkcmVzczo0Mg==
          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.
          example: TmV0d29ya1NlcnZpY2U6NDI=
          type: string
        product_offering:
          description: 'An optional id of a `ProductOffering`.


            Valid ids of product-offerings can be found in the

            `nsc_product_offerings` property of the `NetworkService`.'
          example: UHJvZHVjdE9mZmVyaW5nOjQy
          type: string
        purchase_order:
          default: ''
          description: 'Purchase Order ID which will be displayed on the invoice.

            *(Sensitive Property)*

            '
          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.


            Please note, that any contact role can additionally be provided.

            The presence of at least one of each required contact roles

            is necessary.

            '
          example:
          - c-impl:123
          - c-noc:331
          items:
            type: string
          type: array
        routing_function:
          description: 'The id of the `RoutingFunction` to use for this `NetworkServiceConfig`.


            If no routing function is provided, you need to provide

            the connection to use.


            When a routing function is provided, you also need to

            specify the `l3_config`. The `connection` attribute

            may not be used.


            Connections ans Routing Functions are mutually exclusive.'
          example: Um91dGluZ0Z1bmN0aW9uOjQy
          type: string
        vlan_config:
          $ref: '#/components/schemas/VlanConfig'
      required:
      - type
      - id
      - role_assignments
      - billing_account
      - network_service
      - consuming_account
      - managing_account
      title: P2PNetworkServiceConfigRequest
      type: object
    P2PNetworkServiceConfigUpdate:
      allOf:
      - $ref: '#/components/schemas/NetworkServiceConfigUpdate'
      description: P2P Network Service Config Update
      properties:
        billing_account:
          description: 'An account requires billing_information to be used as a `billing_account`.

            *(Sensitive Property)*'
          example: QWNjb3VudDo0Mg==
          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`.


            If no connection is specified, you have to provide

            a routing function.


            When a connection is provided, you also need to specify

            the `vlan_config`. The `routing_function` attribute

            may not be used. Some network services may require the

            use of the `l3_config`, please check the

            `nsc_required_l3_config_fields` attribute of the

            `ProductOffering`.


            Connections ans Routing Functions are mutually exclusive.'
          example: Q29ubmVjdGlvbjo0Mg==
          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.

            *(Sensitive Property)*

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        external_ref:
          description: 'Reference field, free to use for the API user.

            *(Sensitive Property)*

            '
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `P2P Network Service Config
            Update`.
          example: UDJQTmV0d29ya1NlcnZpY2VDb25maWdVcGRhdGU6NDI=
          readOnly: true
          type: string
        l3_config:
          $ref: '#/components/schemas/L3Config'
        macs:
          description: 'A list of MAC address IDs. You may have to register the

            address using the `macs_create` operation.'
          example:
          - TWFjQWRkcmVzczo0Mg==
          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
        product_offering:
          description: 'An optional id of a `ProductOffering`.


            Valid ids of product-offerings can be found in the

            `nsc_product_offerings` property of the `NetworkService`.'
          example: UHJvZHVjdE9mZmVyaW5nOjQy
          type: string
        purchase_order:
          default: ''
          description: 'Purchase Order ID which will be displayed on the invoice.

            *(Sensitive Property)*

            '
          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.


            Please note, that any contact role can additionally be provided.

            The presence of at least one of each required contact roles

            is necessary.

            '
          example:
          - c-impl:123
          - c-noc:331
          items:
            type: string
          type: array
        routing_function:
          description: 'The id of the `RoutingFunction` to use for this `NetworkServiceConfig`.


            If no routing function is provided, you need to provide

            the connection to use.


            When a routing function is provided, you also need to

            specify the `l3_config`. The `connection` attribute

            may not be used.


            Connections ans Routing Functions are mutually exclusive.'
          example: Um91dGluZ0Z1bmN0aW9uOjQy
          type: string
        vlan_config:
          $ref: '#/components/schemas/VlanConfig'
      required:
      - type
      - id
      - role_assignments
      - billing_account
      - consuming_account
      - managing_account
      title: P2PNetworkServiceConfigUpdate
      type: object
    P2PNetworkServicePatch:
      allOf:
      - $ref: '#/components/schemas/NetworkServicePatch'
      description: P2P Network Service Update
      properties:
        availability_zones:
          description: The availability zones for the service.
          example:
          - QXZhaWxhYmlsaXR5Wm9uZTo0Mg==
          items:
            type: string
          type: array
        billing_account:
          description: 'An account requires billing_information to be used as a `billing_account`.

            *(Sensitive Property)*'
          example: QWNjb3VudDo0Mg==
          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.

            *(Sensitive Property)*

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        display_name:
          description: 'Name of the point to point virtual circuit.


            It is visible to all parties allowed to connect

            to this virtual circuit.


            It is intended for humans to make sense of.

            '
          example: E-Line Customer
          type: string
        external_ref:
          description: 'Reference field, free to use for the API user.

            *(Sensitive Property)*

            '
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `P2P Network Service Update`.
          example: UDJQTmV0d29ya1NlcnZpY2VQYXRjaDo0Mg==
          readOnly: 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:
          description: 'The `id` of the related `ProductOffering`.


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

            *(Sensitive Property)*

            '
          example: 'Project: DC Moon'
          maxLength: 80
          type: string
      title: P2PNetworkServicePatch
      type: object
    P2PNetworkServiceRequest:
      allOf:
      - $ref: '#/components/schemas/NetworkServiceRequest'
      description: P2P Network Service Request
      properties:
        availability_zones:
          description: The availability zones for the service.
          example:
          - QXZhaWxhYmlsaXR5Wm9uZTo0Mg==
          items:
            type: string
          type: array
        billing_account:
          description: 'An account requires billing_information to be used as a `billing_account`.

            *(Sensitive Property)*'
          example: QWNjb3VudDo0Mg==
          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.

            *(Sensitive Property)*

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        display_name:
          description: 'Name of the point to point virtual circuit.


            It is visible to all parties allowed to connect

            to this virtual circuit.


            It is intended for humans to make sense of.

            '
          example: E-Line Customer
          type: string
        external_ref:
          description: 'Reference field, free to use for the API user.

            *(Sensitive Property)*

            '
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `P2P Network Service Request`.
          example: UDJQTmV0d29ya1NlcnZpY2VSZXF1ZXN0OjQy
          readOnly: 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:
          description: 'The `id` of the related `ProductOffering`.


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

            *(Sensitive Property)*

            '
          example: 'Project: DC Moon'
          maxLength: 80
          type: string
      required:
      - type
      - joining_member_account
      - id
      - billing_account
      - consuming_account
      - managing_account
      - product_offering
      title: P2PNetworkServiceRequest
      type: object
    P2PNetworkServiceUpdate:
      allOf:
      - $ref: '#/components/schemas/NetworkServiceUpdate'
      description: P2P Network Service Update
      properties:
        availability_zones:
          description: The availability zones for the service.
          example:
          - QXZhaWxhYmlsaXR5Wm9uZTo0Mg==
          items:
            type: string
          type: array
        billing_account:
          description: 'An account requires billing_information to be used as a `billing_account`.

            *(Sensitive Property)*'
          example: QWNjb3VudDo0Mg==
          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.

            *(Sensitive Property)*

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        display_name:
          description: 'Name of the point to point virtual circuit.


            It is visible to all parties allowed to connect

            to this virtual circuit.


            It is intended for humans to make sense of.

            '
          example: E-Line Customer
          type: string
        external_ref:
          description: 'Reference field, free to use for the API user.

            *(Sensitive Property)*

            '
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `P2P Network Service Update`.
          example: UDJQTmV0d29ya1NlcnZpY2VVcGRhdGU6NDI=
          readOnly: 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:
          description: 'The `id` of the related `ProductOffering`.


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

            *(Sensitive Property)*

            '
          example: 'Project: DC Moon'
          maxLength: 80
          type: string
      required:
      - type
      - joining_member_account
      - id
      - billing_account
      - consuming_account
      - managing_account
      - product_offering
      title: P2PNetworkServiceUpdate
      type: object
    Peer:
      description: MAC-, IP-Address and ASN of the peer.
      properties:
        asn:
          description: 'The ASN of the peer.

            '
          example: 65534
          minimum: 0
          type: integer
        ip:
          $ref: '#/components/schemas/IpAddressShort'
        mac_address:
          description: 'Unicast MAC address, formatted hexadecimal values with colons.

            '
          example: 42:23:bc:8e:b8:b0
          type: string
      required:
      - mac_address
      title: Peer
      type: object
    PeerAggregate:
      description: PeerStatistics
      properties:
        aggregates:
          additionalProperties:
            $ref: '#/components/schemas/NetworkServiceConfigAggregateStatistics'
          description: 'Aggregated statistics for a connection or service configuration.


            For the **property name** the string representation of the

            aggregate interval in ISO8601 period notation is recommended.


            For example: `PT5M`, `P1D`, `P30D`,`P1Y`.


            If a window is defined via the `start` and `end` query parameter,

            the **property name** will be `custom`.


            The available intervals can differ by implementation.

            '
          example:
            P30D:
              accuracy: 0.95
              average_ops_in: 1734882240
              average_ops_out: 173220
              average_pps_in: 1730224
              average_pps_out: 17456
              created_at: '2019-08-24T14:15:22Z'
              next_update_at: '2019-08-24T14:15:22Z'
              title: 30 Days
            PT5M:
              accuracy: 1.0
              average_ops_in: 1734882240
              average_ops_out: 173220
              average_pps_in: 1730224
              average_pps_out: 17456
              created_at: '2019-08-24T14:15:22Z'
              next_update_at: '2019-08-24T14:15:22Z'
              title: 5 Minutes
          type: object
        peer:
          $ref: '#/components/schemas/Peer'
      required:
      - peer
      - aggregates
      title: PeerAggregate
      type: object
    PeerRTT:
      description: Peer RTT Statistics
      properties:
        asn:
          description: 'The Autonomous System Number (ASN) of the peer.

            '
          example: 65535
          type: integer
        ip:
          description: 'The IP address of the peer.

            For IPv6 addresses the canonical form is used.

            '
          example: 10.2.3.42
          type: string
        loss:
          description: 'Ratio of *transmitted packets* to *received packets*:

            `loss = 1.0 - (rx / tx)`.

            '
          example: 0.1
          maximum: 1.0
          minimum: 0.0
          type: number
        neighbor:
          description: 'The name of the peer.

            '
          example: FastPackets LLC
          type: string
        rtt_avg_ms:
          description: 'The average RTT in milliseconds.

            '
          example: 0.495
          minimum: 0.0
          type: number
        rtt_max_ms:
          description: 'The maximum RTT in milliseconds.

            '
          example: 0.522
          minimum: 0.0
          type: number
        rtt_mdev_ms:
          description: 'The median RTT in milliseconds.

            Standard deviation in milliseconds.

            '
          example: 0.032
          minimum: 0.0
          type: number
        rtt_min_ms:
          description: 'The minimum RTT in milliseconds.

            '
          example: 0.35
          minimum: 0.0
          type: number
        rx:
          description: 'The number of probe packets *received*

            within the duration of the measurement.

            '
          example: 9
          minimum: 0
          type: integer
        serial:
          description: 'The `serial` is an incrementing counter. You can use it

            to poll for changes.

            '
          example: 1730823490
          type: integer
        time_ms:
          description: 'The total duration of the measurement in

            milliseconds.

            '
          example: 16000
          minimum: 0
          type: integer
        timestamp:
          description: The date and time when the RTT statistic was measured.
          format: date-time
          type: string
        tx:
          description: 'The number of probe packets *transmitted*

            within the duration of the measurement.

            '
          example: 10
          minimum: 0
          type: integer
      required:
      - serial
      - timestamp
      - ip
      - neighbor
      - rtt_mdev_ms
      - rtt_max_ms
      - rtt_avg_ms
      - rtt_min_ms
      - loss
      - rx
      - tx
      - time_ms
      title: PeerRTT
      type: object
    PeerTimeseries:
      description: PeerStatistics Timeseries
      properties:
        created_at:
          description: Timestamp when the statistics were created.
          format: date-time
          type: string
        fields:
          description: 'The fields used in the samples. They can be explicitly

            selected using the `fields` query parameter. The `timestamp` is

            always included.

            '
          example:
          - timestamp
          - average_pps_in
          - average_pps_out
          - average_ops_in
          - average_ops_out
          items:
            type: string
          type: array
        next_update_at:
          description: 'Next update of the statistical data.

            This may not correspond to the aggregate interval.'
          format: date-time
          type: string
        origin_timezone:
          description: 'The timezone where the data was collected in tz database

            format.

            '
          example: Europe/Amsterdam
          type: string
        peer:
          $ref: '#/components/schemas/Peer'
        precision:
          description: 'Precision indicates the sampling rate of the aggregated traffic
            data

            in seconds.

            For example if the data is aggregated over 5 minutes, the precision

            would be 300.

            '
          example: 300
          minimum: 0
          type: integer
        samples:
          description: 'A list of timeseries samples, where samples are n-tuples,
            where

            the first element is a timestamp.


            * `timestamp` (DateTime, `string`, ISO 8601, Example: `"2001-10-23T23:42:10Z"`)


            The other fields can be selected in the `fields` query from the

            aggregates. Default fields are:


            * `average_pps_in`  (`integer`)

            * `average_pps_out` (`integer`)

            * `average_ops_in` (`integer`)

            * `average_ops_out` (`integer`)


            Missing values in the timeseries are represented by `null`.'
          items:
            example:
            - '2019-08-24T14:15:22Z'
            - 120302
            - 42980203
            - 320302
            - 84990203
            items: {}
            minItems: 1
            type: array
          type: array
        title:
          description: 'Title of the timeseries.

            '
          example: 5 Minutes
          type: string
      required:
      - peer
      - samples
      - fields
      - origin_timezone
      - next_update_at
      - created_at
      - precision
      - title
      title: PeerTimeseries
      type: object
    PointOfPresence:
      description: Point Of Presence
      properties:
        availability_zone:
          description: Availability zone of the pop.
          example: QXZhaWxhYmlsaXR5Wm9uZTo0Mg==
          nullable: true
          type: string
        devices:
          description: 'A list of `id`s of the related `Device`.


            '
          example:
          - RGV2aWNlOjQy
          items:
            type: string
          type: array
        facility:
          description: The pop is located in this `Facility`.
          example: RmFjaWxpdHk6NDI=
          type: string
        id:
          description: The *primary identifier* of the `Point Of Presence`.
          example: UG9pbnRPZlByZXNlbmNlOjQy
          readOnly: true
          type: string
        metro_area_network:
          description: 'The `id` of the related `MetroAreaNetwork`.


            '
          example: TWV0cm9BcmVhTmV0d29yazo0Mg==
          type: string
        name:
          maxLength: 40
          type: string
      required:
      - id
      - devices
      - metro_area_network
      - facility
      - name
      title: PointOfPresence
      type: object
    Port:
      description: Port
      properties:
        billing_account:
          description: 'An account requires billing_information to be used as a `billing_account`.

            *(Sensitive Property)*'
          example: QWNjb3VudDo0Mg==
          type: string
        connection:
          description: 'The `id` of the related `Connection`.


            '
          example: Q29ubmVjdGlvbjo0Mg==
          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.

            *(Sensitive Property)*

            '
          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.

            *(Sensitive Property)*

            '
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `Port`.
          example: UG9ydDo0Mg==
          readOnly: 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 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
        operational_state:
          description: The operational state of the port.
          enum:
          - up
          - down
          - error
          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.

            *(Sensitive Property)*

            '
          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.


            Please note, that any contact role can additionally be provided.

            The presence of at least one of each required contact roles

            is necessary.

            '
          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
          - cancelled
          type: string
        status:
          items:
            $ref: '#/components/schemas/Status'
          type: array
      required:
      - pop
      - device
      - media_type
      - id
      - role_assignments
      - billing_account
      - consuming_account
      - managing_account
      - state
      title: Port
      type: object
    PortReservation:
      description: A PortReservation
      properties:
        charged_until:
          description: "The service continues incurring charges until this date.\n\
            Typically `\u2265 decommission_at`.\n\nThis field is only used when\n\
            the state is `DECOMMISSION_REQUESTED` or\n`DECOMMISSIONED`.\n\n*(Sensitive\
            \ Property)*"
          format: date
          type: string
        connecting_party:
          description: 'Name of the service provider who establishes

            connectivity on your behalf.


            This is only relevant, if the cross connect initiator

            is the `subscriber`.


            Please refer to the usage guide of the internet exchange.'
          nullable: true
          type: string
        connection:
          description: The `Port` will become part of this connection.
          example: Q29ubmVjdGlvbjo0Mg==
          type: string
        contract_ref:
          description: 'A reference to a contract. If no specific contract is used,

            a default MAY be chosen by the implementer.

            *(Sensitive Property)*

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        cross_connect_id:
          description: An optional identifier of a cross connect.
          type: string
        current_billing_start_date:
          description: 'Your obligation to pay for the service will start on this
            date.


            However, this date may change after an upgrade and not reflect

            the inital start date of the service.


            *(Sensitive Property)*'
          format: date
          type: string
        decommission_at:
          description: 'The service will be decommissioned on this date.


            This field is only used when

            the state is `DECOMMISSION_REQUESTED` or

            `DECOMMISSIONED`.'
          format: date
          type: string
        exchange_side_demarc:
          description: 'Exchange side demarc information. This field will only

            be filled in when the port state is `allocated` or

            in `production`.


            Otherwise this field will be `null`.'
          nullable: true
          type: string
        external_ref:
          description: 'Reference field, free to use for the API user.

            *(Sensitive Property)*

            '
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `A PortReservation`.
          example: UG9ydFJlc2VydmF0aW9uOjQy
          readOnly: true
          type: string
        port:
          description: 'This field will be null, until a port will

            be allocated.'
          example: UG9ydDo0Mg==
          nullable: true
          type: string
        purchase_order:
          default: ''
          description: 'Purchase Order ID which will be displayed on the invoice.

            *(Sensitive Property)*

            '
          example: 'Project: DC Moon'
          maxLength: 80
          type: string
        state:
          enum:
          - requested
          - allocated
          - testing
          - production
          - production_change_pending
          - decommission_requested
          - decommissioned
          - archived
          - error
          - operator
          - scheduled
          - cancelled
          type: string
        status:
          items:
            $ref: '#/components/schemas/Status'
          type: array
        subscriber_side_demarc:
          description: 'In an exchange initiated scenario, this field will

            indicated one of the provided `subscriber_side_demarcs`

            from the connection.'
          type: string
      required:
      - connection
      - id
      - state
      title: PortReservation
      type: object
    PortReservationPatch:
      description: PortReservation Update
      properties:
        connecting_party:
          description: 'Name of the service provider who establishes

            connectivity on your behalf.


            This is only relevant, if the cross connect initiator

            is the `subscriber`.


            Please refer to the usage guide of the internet exchange.'
          nullable: true
          type: string
        contract_ref:
          description: 'A reference to a contract. If no specific contract is used,

            a default MAY be chosen by the implementer.

            *(Sensitive Property)*

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        cross_connect_id:
          description: An optional identifier of a cross connect.
          type: string
        external_ref:
          description: 'Reference field, free to use for the API user.

            *(Sensitive Property)*

            '
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `PortReservation Update`.
          example: UG9ydFJlc2VydmF0aW9uUGF0Y2g6NDI=
          readOnly: true
          type: string
        purchase_order:
          default: ''
          description: 'Purchase Order ID which will be displayed on the invoice.

            *(Sensitive Property)*

            '
          example: 'Project: DC Moon'
          maxLength: 80
          type: string
        subscriber_side_demarc:
          description: 'In an exchange initiated scenario, this field will

            indicated one of the provided `subscriber_side_demarcs`

            from the connection.'
          type: string
      title: PortReservationPatch
      type: object
    PortReservationRequest:
      description: A PortReservation
      properties:
        connecting_party:
          description: 'Name of the service provider who establishes

            connectivity on your behalf.


            This is only relevant, if the cross connect initiator

            is the `subscriber`.


            Please refer to the usage guide of the internet exchange.'
          nullable: true
          type: string
        connection:
          description: A connection is required for port allocation.
          example: Q29ubmVjdGlvbjo0Mg==
          type: string
        contract_ref:
          description: 'A reference to a contract. If no specific contract is used,

            a default MAY be chosen by the implementer.

            *(Sensitive Property)*

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        cross_connect_id:
          description: An optional identifier of a cross connect.
          type: string
        external_ref:
          description: 'Reference field, free to use for the API user.

            *(Sensitive Property)*

            '
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `A PortReservation`.
          example: UG9ydFJlc2VydmF0aW9uUmVxdWVzdDo0Mg==
          readOnly: true
          type: string
        purchase_order:
          default: ''
          description: 'Purchase Order ID which will be displayed on the invoice.

            *(Sensitive Property)*

            '
          example: 'Project: DC Moon'
          maxLength: 80
          type: string
        subscriber_side_demarc:
          description: 'In an exchange initiated scenario, this field will

            indicated one of the provided `subscriber_side_demarcs`

            from the connection.'
          type: string
      required:
      - connection
      - id
      title: PortReservationRequest
      type: object
    PortReservationUpdate:
      description: PortReservation Update
      properties:
        connecting_party:
          description: 'Name of the service provider who establishes

            connectivity on your behalf.


            This is only relevant, if the cross connect initiator

            is the `subscriber`.


            Please refer to the usage guide of the internet exchange.'
          nullable: true
          type: string
        contract_ref:
          description: 'A reference to a contract. If no specific contract is used,

            a default MAY be chosen by the implementer.

            *(Sensitive Property)*

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        cross_connect_id:
          description: An optional identifier of a cross connect.
          type: string
        external_ref:
          description: 'Reference field, free to use for the API user.

            *(Sensitive Property)*

            '
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `PortReservation Update`.
          example: UG9ydFJlc2VydmF0aW9uVXBkYXRlOjQy
          readOnly: true
          type: string
        purchase_order:
          default: ''
          description: 'Purchase Order ID which will be displayed on the invoice.

            *(Sensitive Property)*

            '
          example: 'Project: DC Moon'
          maxLength: 80
          type: string
        subscriber_side_demarc:
          description: 'In an exchange initiated scenario, this field will

            indicated one of the provided `subscriber_side_demarcs`

            from the connection.'
          type: string
      required:
      - id
      title: PortReservationUpdate
      type: object
    PortStatistics:
      description: Port Statistics
      properties:
        aggregates:
          additionalProperties:
            $ref: '#/components/schemas/AggregateStatistics'
          description: 'Aggregated statistics for a connection or service configuration.


            For the **property name** the string representation of the

            aggregate interval in ISO8601 period notation is recommended.


            For example: `PT5M`, `P1D`, `P30D`,`P1Y`.


            If a window is defined via the `start` and `end` query parameter,

            the **property name** will be `custom`.


            The available intervals can differ by implementation.

            '
          example:
            P30D:
              accuracy: 0.95
              average_ops_in: 1734882240
              average_ops_out: 173220
              average_pps_in: 1730224
              average_pps_out: 17456
              created_at: '2019-08-24T14:15:22Z'
              next_update_at: '2019-08-24T14:15:22Z'
              title: 30 Days
            PT5M:
              accuracy: 1.0
              average_ops_in: 1734882240
              average_ops_out: 173220
              average_pps_in: 1730224
              average_pps_out: 17456
              created_at: '2019-08-24T14:15:22Z'
              next_update_at: '2019-08-24T14:15:22Z'
              title: 5 Minutes
          type: object
        light_levels_rx:
          description: 'A list of light levels in **dBm** for each channel.

            '
          example:
          - -2.92
          - -3.89
          items:
            type: number
          type: array
        light_levels_tx:
          description: 'A list of light levels in **dBm** for each channel.

            '
          example:
          - -5.92
          - -5.29
          items:
            type: number
          type: array
      required:
      - light_levels_rx
      - light_levels_tx
      - aggregates
      title: PortStatistics
      type: object
    ProblemResponse:
      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
      required:
      - type
      title: ProblemResponse
      type: object
    ProductOffering:
      description: ProductOffering
      discriminator:
        mapping:
          cloud_vc: '#/components/schemas/CloudNetworkProductOffering'
          connection: '#/components/schemas/ConnectionProductOffering'
          exchange_lan: '#/components/schemas/ExchangeLanNetworkProductOffering'
          mp2mp_vc: '#/components/schemas/MP2MPNetworkProductOffering'
          p2mp_vc: '#/components/schemas/P2MPNetworkProductOffering'
          p2p_vc: '#/components/schemas/P2PNetworkProductOffering'
          routing_function: '#/components/schemas/RoutingFunctionProductOffering'
        propertyName: type
      properties:
        type:
          type: string
      required:
      - type
      title: ProductOffering
      type: object
    ProductOfferingPatch:
      description: ProductOfferingPatch
      discriminator:
        mapping:
          cloud_vc: '#/components/schemas/CloudNetworkProductOfferingPatch'
          connection: '#/components/schemas/ConnectionProductOfferingPatch'
          exchange_lan: '#/components/schemas/ExchangeLanNetworkProductOfferingPatch'
          mp2mp_vc: '#/components/schemas/MP2MPNetworkProductOfferingPatch'
          p2mp_vc: '#/components/schemas/P2MPNetworkProductOfferingPatch'
          p2p_vc: '#/components/schemas/P2PNetworkProductOfferingPatch'
          routing_function: '#/components/schemas/RoutingFunctionProductOfferingPatch'
        propertyName: type
      properties:
        type:
          type: string
      required:
      - type
      title: ProductOfferingPatch
      type: object
    RefreshTokenRequest:
      description: RefreshTokenRequest
      properties:
        refresh_token:
          type: string
      required:
      - refresh_token
      title: RefreshTokenRequest
      type: object
    Role:
      description: Role for a Contact
      properties:
        id:
          description: The *primary identifier* of the `Role for a Contact`.
          example: Um9sZTo0Mg==
          readOnly: true
          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
      required:
      - id
      - required_fields
      - name
      title: Role
      type: object
    RoleAssignment:
      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:
          description: The *primary identifier* of the `A role assignment for a contact`.
          example: Um9sZUFzc2lnbm1lbnQ6NDI=
          readOnly: true
          type: string
        role:
          description: 'The `id` of a role the contact is assigned to.

            '
          example: role:23
          type: string
      required:
      - id
      - contact
      - role
      title: RoleAssignment
      type: object
    RoleAssignmentPatch:
      description: A role assignment 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: RoleAssignmentPatch
      type: object
    RoleAssignmentRequest:
      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
      required:
      - contact
      - role
      title: RoleAssignmentRequest
      type: object
    RoleAssignmentUpdate:
      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
      required:
      - contact
      - role
      title: RoleAssignmentUpdate
      type: object
    RolePatch:
      description: 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: RolePatch
      type: object
    RoleRequest:
      description: Create 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
      required:
      - required_fields
      - name
      title: RoleRequest
      type: object
    RoleUpdate:
      description: 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
      required:
      - required_fields
      - name
      title: RoleUpdate
      type: object
    RouteServerNetworkFeature:
      allOf:
      - $ref: '#/components/schemas/NetworkFeature'
      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:
          description: The *primary identifier* of the `Route Server Network Feature`.
          example: Um91dGVTZXJ2ZXJOZXR3b3JrRmVhdHVyZTo0Mg==
          readOnly: true
          type: string
        ip_v4:
          description: 'IPv4 address in [dot-decimal notation](https://en.wikipedia.org/wiki/Dot-decimal_notation)

            notation.


            This field is only set if the `address_families` include `af_inet`.

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


            This field is only set if the `address_families` include `af_inet6`.

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

            '
          example: https://lg.moon-ix.net/rs1
          format: uri
          type: string
        name:
          maxLength: 80
          type: string
        network_service:
          description: 'The `id` of the related `NetworkService`.


            '
          example: TmV0d29ya1NlcnZpY2U6NDI=
          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.'
          example:
          - Um9sZTo0Mg==
          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
      required:
      - type
      - available_bgp_session_types
      - session_mode
      - address_families
      - fqdn
      - asn
      - flags
      - nfc_required_contact_roles
      - network_service
      - required
      - name
      - id
      title: RouteServerNetworkFeature
      type: object
    RouteServerNetworkFeatureConfig:
      allOf:
      - $ref: '#/components/schemas/NetworkFeatureConfig'
      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`.

            *(Sensitive Property)*'
          example: QWNjb3VudDo0Mg==
          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.

            *(Sensitive Property)*

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        external_ref:
          description: 'Reference field, free to use for the API user.

            *(Sensitive Property)*

            '
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        flags:
          description: 'A list of IXP specific feature flag configs. This can be used

            to enable or disable a specific feature flag.'
          items:
            $ref: '#/components/schemas/IXPSpecificFeatureFlagConfig'
          type: array
        id:
          description: The *primary identifier* of the `Route Server Network Feature
            Config`.
          example: Um91dGVTZXJ2ZXJOZXR3b3JrRmVhdHVyZUNvbmZpZzo0Mg==
          readOnly: 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,

            referenced by ID.


            Only IDs of IPs assigned to the corresponding network service

            config can be used.'
          example: SXBBZGRyZXNzOjQy
          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:
          description: 'The `id` of the related `NetworkFeature`.


            '
          example: TmV0d29ya0ZlYXR1cmU6NDI=
          type: string
        network_service_config:
          description: 'The `id` of the related `NetworkServiceConfig`.


            '
          example: TmV0d29ya1NlcnZpY2VDb25maWc6NDI=
          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.

            *(Sensitive Property)*

            '
          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.


            Please note, that any contact role can additionally be provided.

            The presence of at least one of each required contact roles

            is necessary.

            '
          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
          - cancelled
          type: string
        status:
          items:
            $ref: '#/components/schemas/Status'
          type: array
      required:
      - type
      - ip
      - bgp_session_type
      - session_mode
      - asn
      - role_assignments
      - network_service_config
      - network_feature
      - id
      - billing_account
      - consuming_account
      - managing_account
      - state
      title: RouteServerNetworkFeatureConfig
      type: object
    RouteServerNetworkFeatureConfigPatch:
      allOf:
      - $ref: '#/components/schemas/NetworkFeatureConfigPatch'
      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.

            *(Sensitive Property)*

            '
          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,

            referenced by ID.


            Only IDs of IPs assigned to the corresponding network service

            config can be used.'
          example: SXBBZGRyZXNzOjQy
          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
      title: RouteServerNetworkFeatureConfigPatch
      type: object
    RouteServerNetworkFeatureConfigRequest:
      allOf:
      - $ref: '#/components/schemas/NetworkFeatureConfigRequest'
      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`.

            *(Sensitive Property)*'
          example: QWNjb3VudDo0Mg==
          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.

            *(Sensitive Property)*

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        external_ref:
          description: 'Reference field, free to use for the API user.

            *(Sensitive Property)*

            '
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        flags:
          description: 'A list of IXP specific feature flag configs. This can be used

            to enable or disable a specific feature flag.'
          items:
            $ref: '#/components/schemas/IXPSpecificFeatureFlagConfig'
          type: array
        id:
          description: The *primary identifier* of the `Route Server Network Feature
            Config Request`.
          example: Um91dGVTZXJ2ZXJOZXR3b3JrRmVhdHVyZUNvbmZpZ1JlcXVlc3Q6NDI=
          readOnly: 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,

            referenced by ID.


            Only IDs of IPs assigned to the corresponding network service

            config can be used.'
          example: SXBBZGRyZXNzOjQy
          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:
          description: 'The `id` of the related `NetworkFeature`.


            '
          example: TmV0d29ya0ZlYXR1cmU6NDI=
          type: string
        network_service_config:
          description: 'The `id` of the related `NetworkServiceConfig`.


            '
          example: TmV0d29ya1NlcnZpY2VDb25maWc6NDI=
          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.

            *(Sensitive Property)*

            '
          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.


            Please note, that any contact role can additionally be provided.

            The presence of at least one of each required contact roles

            is necessary.

            '
          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
      required:
      - type
      - ip
      - bgp_session_type
      - session_mode
      - asn
      - role_assignments
      - network_service_config
      - network_feature
      - id
      - billing_account
      - consuming_account
      - managing_account
      title: RouteServerNetworkFeatureConfigRequest
      type: object
    RouteServerNetworkFeatureConfigUpdate:
      allOf:
      - $ref: '#/components/schemas/NetworkFeatureConfigUpdate'
      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.

            *(Sensitive Property)*

            '
          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,

            referenced by ID.


            Only IDs of IPs assigned to the corresponding network service

            config can be used.'
          example: SXBBZGRyZXNzOjQy
          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
      required:
      - type
      - ip
      - bgp_session_type
      - session_mode
      - asn
      - consuming_account
      - managing_account
      title: RouteServerNetworkFeatureConfigUpdate
      type: object
    RoutingFunction:
      description: Routing Function
      properties:
        asn:
          description: 'Any routing function instance needs to be

            assigned a 2-byte or 4-byte ASN of the

            customer''s choice. There is no restriction on

            private or public ASNs.'
          type: integer
        billing_account:
          description: 'An account requires billing_information to be used as a `billing_account`.

            *(Sensitive Property)*'
          example: QWNjb3VudDo0Mg==
          type: string
        capacity:
          description: 'The desired upper bound of the capacity for

            the routing function.'
          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.

            *(Sensitive Property)*

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        external_ref:
          description: 'Reference field, free to use for the API user.

            *(Sensitive Property)*

            '
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `Routing Function`.
          example: Um91dGluZ0Z1bmN0aW9uOjQy
          readOnly: 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:
          description: 'The product offering to be used for the

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

            *(Sensitive Property)*

            '
          example: 'Project: DC Moon'
          maxLength: 80
          type: string
        state:
          enum:
          - requested
          - allocated
          - testing
          - production
          - production_change_pending
          - decommission_requested
          - decommissioned
          - archived
          - error
          - operator
          - scheduled
          - cancelled
          type: string
        status:
          items:
            $ref: '#/components/schemas/Status'
          type: array
      required:
      - asn
      - product_offering
      - id
      - billing_account
      - consuming_account
      - managing_account
      - state
      title: RoutingFunction
      type: object
    RoutingFunctionPatch:
      description: Routing Function Patch
      properties:
        asn:
          description: 'Any routing function instance needs to be

            assigned a 2-byte or 4-byte ASN of the

            customer''s choice. There is no restriction on

            private or public ASNs.'
          type: integer
        billing_account:
          description: 'An account requires billing_information to be used as a `billing_account`.

            *(Sensitive Property)*'
          example: QWNjb3VudDo0Mg==
          type: string
        capacity:
          description: 'The desired upper bound of the capacity for

            the routing function.'
          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.

            *(Sensitive Property)*

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        external_ref:
          description: 'Reference field, free to use for the API user.

            *(Sensitive Property)*

            '
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `Routing Function Patch`.
          example: Um91dGluZ0Z1bmN0aW9uUGF0Y2g6NDI=
          readOnly: 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:
          description: 'The product offering to be used for the

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

            *(Sensitive Property)*

            '
          example: 'Project: DC Moon'
          maxLength: 80
          type: string
      title: RoutingFunctionPatch
      type: object
    RoutingFunctionProductOffering:
      allOf:
      - $ref: '#/components/schemas/ProductOffering'
      description: Routing Function Product Offering
      properties:
        bandwidth_max:
          description: The maximum bandwidth of the routing service in Mbit/s.
          minimum: 0
          type: integer
        bandwidth_min:
          description: The minimum bandwidth of the routing service in Mbit/s.
          minimum: 0
          type: integer
        contract_initial_notice_period:
          description: '_**Format:** ISO8601 Duration_


            The notice period for canceling the contract within

            the initial period.

            '
          example: P1M
          nullable: true
          type: string
        contract_initial_period:
          description: '_**Format:** ISO8601 Duration_


            The initial duration of the contract. The contract will be

            renewed after this period for the duration of `contract_renewal_period`.

            '
          example: P6M
          nullable: true
          type: string
        contract_renewal_notice_period:
          description: '_**Format:** ISO8601 Duration_


            The notice period denotes the time before the end of the

            `contract_renewal_period` in which the client has to inform

            the IXP in order to prevent renewal of the contract.

            '
          example: P2W
          nullable: true
          type: string
        contract_renewal_period:
          description: '_**Format:** ISO8601 Duration_


            The duration for which the contract will be renewed after

            the initial period.


            Unless the contract is canceled, it will be

            automatically renewed after the period.

            Cancellation has to be done within the

            `contract_renewal_notice_period`.

            '
          example: P3M
          type: string
        contract_terms:
          description: 'This property informally describe the contract''s notice-
            and

            renewal periods as well as additional terms.


            **Note**: This property contains informal information about

            the contract. For a structured representation see:

            `contract_initial_period`, `contract_initial_notice_period`,

            `contract_renewal_period` and `contract_renewal_notice_period`.


            **Example**: A contract with the terms

            _"initially two weeks, renewing for six month afterwards, cancelable with
            a notice period of one month after and within 5 days during the initial
            period"_

            can be represented as:

            * `contract_initial_period: "P2W"`

            * `contract_initial_notice_period: "P5D"`

            * `contract_renewal_period: "P6M"`

            * `contract_renewal_notice_period: "P1M"`

            '
          example: first 30 days free
          nullable: true
          type: string
        display_name:
          maxLength: 256
          type: string
        downgrade_allowed:
          description: 'Indicates if the service can be migrated to

            a lower bandwidth.'
          type: boolean
        exchange_logo:
          description: 'An URI referencing the logo of the internet exchange.

            '
          example: https://example.ix/resources/ixpLogo
          format: uri
          type: string
        handover_metro_area:
          description: 'Id of the `MetroArea`. The network service will be

            accessed from this metro area.


            In case of a `p2p_vc`, the `handover_metro_area` refers

            to the A-side of the point-to-point connection.

            The A-side is the entity which initiates the network service creation.

            '
          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.


            In case of a `p2p_vc`, the `handover_metro_area_network` refers

            to the A-side of the point-to-point connection.

            The A-side is the entity which initiates the network service creation.

            '
          example: '191239810'
          type: string
        id:
          description: The *primary identifier* of the `Routing Function Product Offering`.
          example: Um91dGluZ0Z1bmN0aW9uUHJvZHVjdE9mZmVyaW5nOjQy
          readOnly: true
          type: string
        name:
          description: Name of the product
          maxLength: 160
          type: string
        notice_period:
          description: '**DEPRECATION NOTICE**: This property will be replaced by

            `contract_initial_period`, `contract_initial_notice_period`,

            `contract_renewal_period` and `contract_renewal_notice_period`.


            The notice period informally states constraints

            which define when the client needs to inform the

            IXP in order to prevent renewal of the contract.

            '
          example: at least 2 weeks before the end of every odd month
          nullable: true
          type: string
        orderable_not_after:
          description: 'This product offering will become unavailable for ordering
            after

            this point in time.'
          format: date-time
          nullable: true
          type: string
        orderable_not_before:
          description: 'This product offering becomes available for ordering after

            this point in time.'
          format: date-time
          nullable: true
          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
        product_logo:
          description: 'An URI referencing a logo for the product offered.

            '
          example: https://example.ix/resources/products/activeCloudPremium
          format: uri
          type: string
        resource_type:
          description: 'The resource type refers to an ix-api resource.

            '
          enum:
          - connection
          - port_reservation
          - network_service
          - network_service_config
          - routing_function
          example: network_service
          type: string
        service_provider:
          description: 'The name of the provider providing the service.

            '
          example: AWS
          type: string
        service_provider_logo:
          description: 'An URI referencing the logo of the service provider.

            '
          example: https://example.ix/resources/providerLogo
          format: uri
          type: string
        upgrade_allowed:
          description: 'Indicates if the service can be migrated to

            a higher bandwidth.'
          type: boolean
      required:
      - type
      - bandwidth_max
      - bandwidth_min
      - upgrade_allowed
      - downgrade_allowed
      - service_provider
      - physical_port_speed
      - handover_metro_area
      - handover_metro_area_network
      - resource_type
      - display_name
      - name
      - id
      title: RoutingFunctionProductOffering
      type: object
    RoutingFunctionProductOfferingPatch:
      allOf:
      - $ref: '#/components/schemas/ProductOfferingPatch'
      description: Routing Function Product Offering
      properties:
        bandwidth_max:
          description: The maximum bandwidth of the routing service in Mbit/s.
          minimum: 0
          type: integer
        bandwidth_min:
          description: The minimum bandwidth of the routing service in Mbit/s.
          minimum: 0
          type: integer
        contract_initial_notice_period:
          description: '_**Format:** ISO8601 Duration_


            The notice period for canceling the contract within

            the initial period.

            '
          example: P1M
          nullable: true
          type: string
        contract_initial_period:
          description: '_**Format:** ISO8601 Duration_


            The initial duration of the contract. The contract will be

            renewed after this period for the duration of `contract_renewal_period`.

            '
          example: P6M
          nullable: true
          type: string
        contract_renewal_notice_period:
          description: '_**Format:** ISO8601 Duration_


            The notice period denotes the time before the end of the

            `contract_renewal_period` in which the client has to inform

            the IXP in order to prevent renewal of the contract.

            '
          example: P2W
          nullable: true
          type: string
        contract_renewal_period:
          description: '_**Format:** ISO8601 Duration_


            The duration for which the contract will be renewed after

            the initial period.


            Unless the contract is canceled, it will be

            automatically renewed after the period.

            Cancellation has to be done within the

            `contract_renewal_notice_period`.

            '
          example: P3M
          type: string
        contract_terms:
          description: 'This property informally describe the contract''s notice-
            and

            renewal periods as well as additional terms.


            **Note**: This property contains informal information about

            the contract. For a structured representation see:

            `contract_initial_period`, `contract_initial_notice_period`,

            `contract_renewal_period` and `contract_renewal_notice_period`.


            **Example**: A contract with the terms

            _"initially two weeks, renewing for six month afterwards, cancelable with
            a notice period of one month after and within 5 days during the initial
            period"_

            can be represented as:

            * `contract_initial_period: "P2W"`

            * `contract_initial_notice_period: "P5D"`

            * `contract_renewal_period: "P6M"`

            * `contract_renewal_notice_period: "P1M"`

            '
          example: first 30 days free
          nullable: true
          type: string
        display_name:
          maxLength: 256
          type: string
        downgrade_allowed:
          description: 'Indicates if the service can be migrated to

            a lower bandwidth.'
          type: boolean
        exchange_logo:
          description: 'An URI referencing the logo of the internet exchange.

            '
          example: https://example.ix/resources/ixpLogo
          format: uri
          type: string
        handover_metro_area:
          description: 'Id of the `MetroArea`. The network service will be

            accessed from this metro area.


            In case of a `p2p_vc`, the `handover_metro_area` refers

            to the A-side of the point-to-point connection.

            The A-side is the entity which initiates the network service creation.

            '
          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.


            In case of a `p2p_vc`, the `handover_metro_area_network` refers

            to the A-side of the point-to-point connection.

            The A-side is the entity which initiates the network service creation.

            '
          example: '191239810'
          type: string
        id:
          description: The *primary identifier* of the `Routing Function Product Offering`.
          example: Um91dGluZ0Z1bmN0aW9uUHJvZHVjdE9mZmVyaW5nUGF0Y2g6NDI=
          readOnly: true
          type: string
        name:
          description: Name of the product
          maxLength: 160
          type: string
        notice_period:
          description: '**DEPRECATION NOTICE**: This property will be replaced by

            `contract_initial_period`, `contract_initial_notice_period`,

            `contract_renewal_period` and `contract_renewal_notice_period`.


            The notice period informally states constraints

            which define when the client needs to inform the

            IXP in order to prevent renewal of the contract.

            '
          example: at least 2 weeks before the end of every odd month
          nullable: true
          type: string
        orderable_not_after:
          description: 'This product offering will become unavailable for ordering
            after

            this point in time.'
          format: date-time
          nullable: true
          type: string
        orderable_not_before:
          description: 'This product offering becomes available for ordering after

            this point in time.'
          format: date-time
          nullable: true
          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
        product_logo:
          description: 'An URI referencing a logo for the product offered.

            '
          example: https://example.ix/resources/products/activeCloudPremium
          format: uri
          type: string
        resource_type:
          description: 'The resource type refers to an ix-api resource.

            '
          enum:
          - connection
          - port_reservation
          - network_service
          - network_service_config
          - routing_function
          example: network_service
          type: string
        service_provider:
          description: 'The name of the provider providing the service.

            '
          example: AWS
          type: string
        service_provider_logo:
          description: 'An URI referencing the logo of the service provider.

            '
          example: https://example.ix/resources/providerLogo
          format: uri
          type: string
        upgrade_allowed:
          description: 'Indicates if the service can be migrated to

            a higher bandwidth.'
          type: boolean
      title: RoutingFunctionProductOfferingPatch
      type: object
    RoutingFunctionRequest:
      description: Routing Function Request
      properties:
        asn:
          description: 'Any routing function instance needs to be

            assigned a 2-byte or 4-byte ASN of the

            customer''s choice. There is no restriction on

            private or public ASNs.'
          type: integer
        billing_account:
          description: 'An account requires billing_information to be used as a `billing_account`.

            *(Sensitive Property)*'
          example: QWNjb3VudDo0Mg==
          type: string
        capacity:
          description: 'The desired upper bound of the capacity for

            the routing function.'
          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.

            *(Sensitive Property)*

            '
          example: contract:31824
          maxLength: 128
          nullable: true
          type: string
        external_ref:
          description: 'Reference field, free to use for the API user.

            *(Sensitive Property)*

            '
          example: IX:Service:23042
          maxLength: 128
          nullable: true
          type: string
        id:
          description: The *primary identifier* of the `Routing Function Request`.
          example: Um91dGluZ0Z1bmN0aW9uUmVxdWVzdDo0Mg==
          readOnly: 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:
          description: 'The product offering to be used for the

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

            *(Sensitive Property)*

            '
          example: 'Project: DC Moon'
          maxLength: 80
          type: string
      required:
      - asn
      - product_offering
      - id
      - billing_account
      - consuming_account
      - managing_account
      title: RoutingFunctionRequest
      type: object
    SharedStatisticsConfig:
      description: 'Configure sharing of sensitive statistics with

        other members of the exchange.


        Provide a list of account IDs of members who should

        be able to access certain statistics.'
      properties:
        nsc_available_capacity:
          description: 'A list of acccont IDs who can see

            `nsc_available_capacity` and `nsc_available_capacity_change_perc`

            on the `NetworkServiceConfig` statistics.

            '
          example:
          - '238189294'
          - '2978418'
          items:
            type: string
          type: array
      required:
      - nsc_available_capacity
      title: SharedStatisticsConfig
      type: object
    Status:
      description: Status Message
      properties:
        attrs:
          description: 'Optional machine readable key value pairs

            supplementing the message.


            A custom, detailed or localized error messagen can

            be presented to the user, derived from the `tag` and `attrs`.

            '
          example:
            mac: 02:42:23:42:a0:bc
          type: object
        message:
          description: 'A human readable message, describing the problem

            and may contain hints for resolution.

            '
          example: The peer sent an ARP reply for an IP addresses that has not been
            assigned to them.
          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:
          description: 'A machine readable message identifier.

            '
          example: proxy_arp_detected
          type: string
        timestamp:
          description: The time and date when the event occured.
          format: date-time
          type: string
      required:
      - timestamp
      - message
      - tag
      - severity
      title: Status
      type: object
    VLanConfigDot1Q:
      allOf:
      - $ref: '#/components/schemas/VlanConfig'
      description: A Dot1Q vlan configuration
      properties:
        vlan:
          description: 'A VLAN tag. If `null`, the IXP will auto-select

            a valid vlan-id.

            '
          example: 23
          format: int32
          maximum: 4094
          minimum: 1
          nullable: true
          type: integer
        vlan_ethertype:
          default: '0x8100'
          description: The ethertype of the vlan in hexadecimal notation.
          enum:
          - '0x8100'
          - '0x88a8'
          - '0x9100'
          type: string
      required:
      - vlan_type
      title: VLanConfigDot1Q
      type: object
    VLanConfigPort:
      allOf:
      - $ref: '#/components/schemas/VlanConfig'
      description: A Port vlan configuration
      properties: {}
      required:
      - vlan_type
      title: VLanConfigPort
      type: object
    VLanConfigQinQ:
      allOf:
      - $ref: '#/components/schemas/VlanConfig'
      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.

            If `null`, the IXP will auto-select

            a valid vlan-id.

            '
          example: 200
          format: int32
          maximum: 4094
          minimum: 1
          nullable: true
          type: integer
        outer_vlan_ethertype:
          default: '0x8100'
          description: The ethertype of the outer tag in hexadecimal notation.
          enum:
          - '0x8100'
          - '0x88a8'
          - '0x9100'
          type: string
      required:
      - vlan_type
      - inner_vlan
      title: VLanConfigQinQ
      type: object
    ValidationErrorProperty:
      description: A failed validation
      properties:
        name:
          type: string
        reason:
          type: string
      required:
      - reason
      - name
      title: ValidationErrorProperty
      type: object
    VlanConfig:
      description: VlanConfig
      discriminator:
        mapping:
          dot1q: '#/components/schemas/VLanConfigDot1Q'
          port: '#/components/schemas/VLanConfigPort'
          qinq: '#/components/schemas/VLanConfigQinQ'
        propertyName: vlan_type
      properties:
        vlan_type:
          type: string
      required:
      - vlan_type
      title: VlanConfig
      type: object
  securitySchemes:
    Bearer:
      bearerFormat: JWT
      scheme: bearer
      type: http
    OAuth:
      description: '

        This API uses OAuth 2.

        We suggest to use the scope: `ix-api` but

        it is up to the implementers to decide the details.

        This includes what flows to support.

        '
      flows:
        authorizationCode:
          authorizationUrl: https://auth.example-ix/see-implementation-guide
          scopes:
            ix-api: access the IX-API
          tokenUrl: https://auth.example-ix/see-implementation-guide
        clientCredentials:
          scopes:
            ix-api: access the IX-API
          tokenUrl: https://auth.example-ix/see-implementation-guide
        implicit:
          authorizationUrl: https://auth.example-ix/see-implementation-guide
          scopes:
            ix-api: access the IX-API
        password:
          scopes:
            ix-api: access the IX-API
          tokenUrl: https://auth.example-ix/see-implementation-guide
      type: oauth2
info:
  contact:
    url: https://ix-api.net
  description: '

    This API allows to configure/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.


    When multiple filters are provided, the result must match all filters.


    # Pagination


    Pagination is an *optional* feature of the IX-API and can be used on

    every collection endpoint. Use the

    <a href="#operation/api_implementation_read">`api_implementation_read`</a>

    operation to discover if it is available.


    Pagination needs to be initiated by the client by providing the

    `page_limit` query parameter.


    ### Query Parameters


    Pagination is controlled using the following query parameters:


    | Parameter | Description |

    | ------ | ------ |

    | `page_offset` | The offset of the first item in the collection. **Default:**
    `0` |

    | `page_limit` | The maximum number of items in the response |

    | `page_token` | **OPTIONAL**: The token from the initial response.<br /> If invalid
    a `ValidationError` with HTTP status `400` will be returned |



    ### Paginated Response


    If the collection is paginated, the HTTP status code of the response

    will be `206 Partial Content` and pagination metadata is provided

    in the response headers:


    | Header | Description |

    | ------ | ------ |

    | `X-Pagination-Limit` | Maximum number of items returned |

    | `X-Pagination-Offset` | Current offset of the first item in the collection |

    | `X-Pagination-Items` | Total number of items in the collection |

    | `X-Pagination-Pages` | Total number of pages |

    | `X-Pagination-Page` | Current page |

    | `X-Pagination-Token` | An identifier that changes when the collection changes
    between requests |

    | `X-Pagination-Next` | Path to the next page of the collection |


    The `X-Pagination-Token` can be used to check if the result set has changed

    between requests. If the token has changed, the client may re-query

    the collection from the beginning, to ensure that no items are missed.

    If you are tracking changes to the collection, the token can be implemented as

    a combination of the time of most recent insert or update with the total number

    of items.


    The `X-Pagination-Next` header contains the URL path to the next page of the

    collection, including all other query parameters:

    `/collection?filter=foo&param=bar&page_offset=100&page_limit=50&page_token=MTIzMTM5MDEyMDg0NQ==`.

    The path is relative the API base path (e.g. `/api/v2`). This can be used

    as a cursor to navigate the collection.


    # State

    A lot of resources are stateful, indicated by the presence of

    a `state` property, to support the

    inherently asynchronous nature of provisioning, deployment and

    on-boarding processes.


    The following table describes the meaning of each state:


    | State | Meaning |

    | ------ | ------ |

    | requested | Resource has been requested by the customer but not yet fully reserved
    (sub-resources required) |

    | allocated | All resources required for service are reserved |

    | testing | The resource is provisioned and is currently being tested |

    | production | The resource is active and can be used by the customer |

    | production_change_pending | The resource is active but the customer has requested
    a change that is awaiting completion |

    | decommission_requested | The resource is active but the customer has requested
    disconnection that is awaiting completion |

    | decommissioned | The resource has been de-provisioned and billing is terminated
    or scheduled for termination |

    | archived | The resource was "deleted/purged" and is not listed unless explicitly
    requested in the filter (i.e. `?state=archived`). |

    | error | The resource has experienced error during provisioning or after is has
    been activated |

    | cancelled | The request for a service was cancelled before provisioning was
    completed |

    | operator | Human intervention is needed |

    | scheduled | The service has been scheduled for provisioning |


    Please note, that not all implementers _HAVE_ to implement

    all the listed states.


    *Sidenote:* If the deleted operation is applied to an object in

    state `decommissioned` the object will move to state archived.


    # Sensitive Properties


    Some properties contain sensitive information and should be redacted when

    the resource is made available users outside the authorized scope.


    This is for example the case when an `Account` is flagged as `discoverable`,

    it becomes available to other API users. In this case only: `id`, `name`

    and `metro_area_network_presence` should be exposed.


    If a property is `required` and needs to be redacted, a zero value

    should be used. For strings this would be an empty string `""`,

    for numeric values `0` and booleans `false`.


    Shared resources with sensitive properties: `Account`, `NetworkService`

    '
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
  title: IX-API
  version: 2.7.0
openapi: 3.0.0
paths:
  /account:
    get:
      description: Get the currently authenticated `Account`.
      operationId: account_read
      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
  /accounts:
    get:
      description: 'Retrieve a list of `Account`s.


        This includes all accounts the currently authorized account

        is managing and the current account itself.


        Also `discoverable` accounts will be included, however

        sensitive properties, like `address` or `external_ref` will

        either not be present or redacted.'
      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: 'The maximum number of items in the response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_limit
        required: false
        schema:
          type: integer
      - description: 'The offset of the first item in the response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_offset
        required: false
        schema:
          type: integer
      - description: 'The pagination token from the initial response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_token
        required: false
        schema:
          type: string
      - 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**'
        '206':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Account'
                type: array
          description: 'Paginated List of: **Account**'
          headers:
            X-Pagination-Items:
              description: Total number of items in the collection
              schema:
                type: integer
            X-Pagination-Limit:
              description: The maximum number of items returned
              schema:
                type: integer
            X-Pagination-Next:
              description: Path to the next page in the collection
              schema:
                type: string
            X-Pagination-Offset:
              description: Current offset of the first item in the collection
              schema:
                type: integer
            X-Pagination-Page:
              description: Current page
              schema:
                type: integer
            X-Pagination-Pages:
              description: Total number of pages
              schema:
                type: integer
            X-Pagination-Token:
              description: An identifier that changes when the collection changes
                between requests.
              schema:
                type: string
        '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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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**'
        '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:
      - 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 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/AccountPatch'
        description: '**Account Update**'
      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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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: '**DEPRECATION NOTICE**: This operation will be removed in favor

        of using `PATCH` for all updates.


        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**'
      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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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
  /availability-zones:
    get:
      description: List all availability zones available on the platform.
      operationId: availability_zones_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: 'The maximum number of items in the response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_limit
        required: false
        schema:
          type: integer
      - description: 'The offset of the first item in the response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_offset
        required: false
        schema:
          type: integer
      - description: 'The pagination token from the initial response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_token
        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/AvailabilityZone'
                type: array
          description: 'List of: **AvailabilityZone**'
        '206':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/AvailabilityZone'
                type: array
          description: 'Paginated List of: **AvailabilityZone**'
          headers:
            X-Pagination-Items:
              description: Total number of items in the collection
              schema:
                type: integer
            X-Pagination-Limit:
              description: The maximum number of items returned
              schema:
                type: integer
            X-Pagination-Next:
              description: Path to the next page in the collection
              schema:
                type: string
            X-Pagination-Offset:
              description: Current offset of the first item in the collection
              schema:
                type: integer
            X-Pagination-Page:
              description: Current page
              schema:
                type: integer
            X-Pagination-Pages:
              description: Total number of pages
              schema:
                type: integer
            X-Pagination-Token:
              description: An identifier that changes when the collection changes
                between requests.
              schema:
                type: string
        '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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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:
      - availability-zones
  /availability-zones/{id}:
    get:
      description: Get a single availability zone by id.
      operationId: availability_zones_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/AvailabilityZone'
          description: '**AvailabilityZone**'
        '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:
      - availability-zones
  /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: 'The maximum number of items in the response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_limit
        required: false
        schema:
          type: integer
      - description: 'The offset of the first item in the response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_offset
        required: false
        schema:
          type: integer
      - description: 'The pagination token from the initial response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_token
        required: false
        schema:
          type: string
      - 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 the ID of the managing [account](#tag/accounts).
        in: query
        name: managing_account
        required: false
        schema:
          type: string
      - description: Filter by the ID of the consuming [account](#tag/accounts).
        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 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 connections by ID of the metro_area
        in: query
        name: metro_area
        required: false
        schema:
          type: string
      - description: Filter connections by ID of the 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 role_assignments
        explode: false
        in: query
        name: role_assignments
        required: false
        schema:
          example: id1,id2,id3
          items:
            type: string
          type: array
        style: form
      - description: Filter by contacts
        explode: false
        in: query
        name: contacts
        required: false
        schema:
          example: id1,id2,id3
          items:
            type: string
          type: array
        style: form
      - description: 'Filter connections that can be used in a network service

          config for the service identified by ID'
        in: query
        name: supported_network_service
        required: false
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Connection'
                type: array
          description: 'List of: **Connection**'
        '206':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Connection'
                type: array
          description: 'Paginated List of: **Connection**'
          headers:
            X-Pagination-Items:
              description: Total number of items in the collection
              schema:
                type: integer
            X-Pagination-Limit:
              description: The maximum number of items returned
              schema:
                type: integer
            X-Pagination-Next:
              description: Path to the next page in the collection
              schema:
                type: string
            X-Pagination-Offset:
              description: Current offset of the first item in the collection
              schema:
                type: integer
            X-Pagination-Page:
              description: Current page
              schema:
                type: integer
            X-Pagination-Pages:
              description: Total number of pages
              schema:
                type: integer
            X-Pagination-Token:
              description: An identifier that changes when the collection changes
                between requests.
              schema:
                type: string
        '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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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
    post:
      description: 'Create a new `connection` and request ports

        allocation.


        Two workflows for allocating ports is supported and

        dependent on the `cross_connect_initiator` property

        of the corresponding `product-offering`:


        When the initiator is the `subscriber`, a Letter Of

        Authorization (LOA) can

        be downloaded from the `/connection/<id>/loa`

        resource. In case the `exchange` is the initiator,

        the LOA can be uploaded to this resource.


        Creating a connection will also create

        PortReservations. See the `port_quantity` and

        `subscriber_side_demarcs` attributes for details.


        Please refer to the internet exchange''s api usage

        guide for implementation specific details.'
      operationId: connections_create
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConnectionRequest'
        description: '**Request a new connection**'
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Connection'
          description: '**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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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}:
    delete:
      description: 'Request decommissioning the connection.


        The cancellation policy of the connection applies

        here and is independent from the

        policy of the network-service and network-service-config

        using the connection.


        The connection will assume the state

        `decommission_requested`.


        Associated `port-reservation` will be also

        marked for decommissining and ports will

        be deallocated.


        The decommissioning request will *not* cascade

        to network services and configs.'
      operationId: connections_destroy
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CancellationRequest'
        description: '**Service Cancellation Request**'
      responses:
        '202':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Connection'
          description: '**Connection**'
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Requested cancellation date outside of notice period.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/cancellation-policy-error.html
                      - https://errors.ix-api.net/v2/unable-to-fulfill.html
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
                - properties:
                    charged_until:
                      description: "The date until the service is payed for.\nTypically\
                        \ `\u2265 decommission_at`."
                      format: date
                      type: string
                    decommission_at:
                      description: 'This field denotes the first possible cancellation

                        date of the service.


                        See the service `cancellation-policy` for details.'
                      format: date
                      type: string
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  type: object
          description: CancellationPolicyError
        '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
    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
    patch:
      description: Update a connection.
      operationId: connections_partial_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/ConnectionPatch'
        description: '**Connection Update**'
      responses:
        '202':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Connection'
          description: '**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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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:
      - connections
    put:
      description: '**DEPRECATION NOTICE**: This operation will be removed in favor

        of using `PATCH` for all updates.


        Update a connection.'
      operationId: connections_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/ConnectionUpdate'
        description: '**Connection Update**'
      responses:
        '202':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Connection'
          description: '**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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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:
      - connections
  /connections/{id}/cancellation-policy:
    get:
      description: 'The cancellation-policy can be queried to answer

        the questions:


        If I cancel my subscription, *when will it be technically

        decommissioned*?

        If I cancel my subscription, *until what date will I be charged*?


        When the query parameter `decommision_at` is not provided

        it will provide the first possible cancellation date

        and charge period if cancelled at above date.


        The granularity of the date field is a day, the start and end

        of which are to be interpreted by the IXP (some may use UTC,

        some may use their local time zone).'
      operationId: connections_cancellation_policy_read
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      - description: 'By providing a date in the format `YYYY-MM-DD` you can

          query the policy what would happen if you request a

          decommissioning on this date.'
        in: query
        name: decommission_at
        required: false
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CancellationPolicy'
          description: '**Cancellation Policy**'
        '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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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:
      - connections
  /connections/{id}/loa:
    get:
      description: 'Download the *Letter Of Authorization* associated with the `connection`.

        In case of a *subscriber initiated cross-connect*,

        it will be provided by the exchange.'
      operationId: connections_loa_download
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      responses:
        '200':
          content:
            application/octet-stream:
              schema:
                format: binary
                type: string
            application/pdf:
              schema:
                format: binary
                type: string
            text/plain:
              schema:
                type: string
          description: A Letter Of Authorization
        '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
    post:
      description: 'Upload a *Letter Of Authorization* for this

        `connection`.


        The LOA is valid for the entire connection and must

        include all ports.'
      operationId: connections_loa_upload
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      requestBody:
        content:
          application/octet-stream:
            schema:
              format: binary
              type: string
          application/pdf:
            schema:
              format: binary
              type: string
          text/plain:
            schema:
              type: string
        description: A Letter Of Authorization
      responses:
        '200':
          description: The upload was successful
        '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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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:
      - connections
  /connections/{id}/statistics:
    get:
      description: 'Read a `Connection`s aggregated statistics.



        A `start` and `end` query parameter can be used to

        retrieve the aggregated traffic for a given window.

        In this case the key of the returned statistics is `custom`.


        With a given `start` and `end` window, the resolution for

        the aggregated data is chosen by the implementation.


        You need to check the `accuracy` attribute of the aggregate,

        to see if the data can be used for the desired

        usecase. The `accuracy` is the ratio of *total samples* to

        *expected samples*.


        If no `start` or `end` parameter is given, a sliding window

        is assumed and key value pairs of resolutions and aggregated

        statistics are returned.'
      operationId: connections_statistics_read
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      - description: Beginning of the traffic aggregation.
        in: query
        name: start
        required: false
        schema:
          format: date-time
          type: string
      - description: 'End of the traffic aggregation.

          Default is `now`.'
        in: query
        name: end
        required: false
        schema:
          format: date-time
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Aggregate'
          description: '**Mapping of Aggregated Statistics**'
        '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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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:
      - connections
  /connections/{id}/statistics/{aggregate}/timeseries:
    get:
      description: 'Read a `Connection`s aggregated timeseries.

        The resolution is defined by the aggregate.'
      operationId: connections_statistics_timeseries_read
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      - description: Get by aggregate
        in: path
        name: aggregate
        required: true
        schema:
          description: ''
          title: ''
          type: string
      - description: Start of the timeseries.
        in: query
        name: start
        required: false
        schema:
          format: date-time
          type: string
      - description: 'End of the timeseries.


          Default: `now`'
        in: query
        name: end
        required: false
        schema:
          format: date-time
          type: string
      - description: 'Select fields from the aggregates to export as a timeseries.


          Default: `average_pps_in,average_pps_out,average_ops_in,average_ops_out`'
        in: query
        name: fields
        required: false
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AggregateTimeseries'
          description: '**Aggregated Statistics Timeseries**'
        '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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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:
      - 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: 'The maximum number of items in the response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_limit
        required: false
        schema:
          type: integer
      - description: 'The offset of the first item in the response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_offset
        required: false
        schema:
          type: integer
      - description: 'The pagination token from the initial response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_token
        required: false
        schema:
          type: string
      - description: Filter by the ID of the managing [account](#tag/accounts).
        in: query
        name: managing_account
        required: false
        schema:
          type: string
      - description: Filter by the ID of the consuming [account](#tag/accounts).
        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**'
        '206':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Contact'
                type: array
          description: 'Paginated List of: **Contact**'
          headers:
            X-Pagination-Items:
              description: Total number of items in the collection
              schema:
                type: integer
            X-Pagination-Limit:
              description: The maximum number of items returned
              schema:
                type: integer
            X-Pagination-Next:
              description: Path to the next page in the collection
              schema:
                type: string
            X-Pagination-Offset:
              description: Current offset of the first item in the collection
              schema:
                type: integer
            X-Pagination-Page:
              description: Current page
              schema:
                type: integer
            X-Pagination-Pages:
              description: Total number of pages
              schema:
                type: integer
            X-Pagination-Token:
              description: An identifier that changes when the collection changes
                between requests.
              schema:
                type: string
        '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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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: '**Contact Create 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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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
        '409':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 409
                    title:
                      example: There is a conflict preventing success
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/conflict.html
                      type: string
                  type: object
                - properties:
                    conflict:
                      items:
                        $ref: '#/components/schemas/Conflict'
                      type: array
                  type: object
          description: ConstraintViolation
      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 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/ContactPatch'
        description: '**Contact Update**'
      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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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: '**DEPRECATION NOTICE**: This operation will be removed in favor

        of using `PATCH` for all updates.


        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/ContactUpdate'
        description: '**Contact Update**'
      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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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: 'The maximum number of items in the response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_limit
        required: false
        schema:
          type: integer
      - description: 'The offset of the first item in the response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_offset
        required: false
        schema:
          type: integer
      - description: 'The pagination token from the initial response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_token
        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 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 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**'
        '206':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Device'
                type: array
          description: 'Paginated List of: **Device**'
          headers:
            X-Pagination-Items:
              description: Total number of items in the collection
              schema:
                type: integer
            X-Pagination-Limit:
              description: The maximum number of items returned
              schema:
                type: integer
            X-Pagination-Next:
              description: Path to the next page in the collection
              schema:
                type: string
            X-Pagination-Offset:
              description: Current offset of the first item in the collection
              schema:
                type: integer
            X-Pagination-Page:
              description: Current page
              schema:
                type: integer
            X-Pagination-Pages:
              description: Total number of pages
              schema:
                type: integer
            X-Pagination-Token:
              description: An identifier that changes when the collection changes
                between requests.
              schema:
                type: string
        '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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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
  /extensions:
    get:
      description: List provider extensions to the IX-API.
      operationId: api_extensions_list
      parameters:
      - description: 'The maximum number of items in the response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_limit
        required: false
        schema:
          type: integer
      - description: 'The offset of the first item in the response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_offset
        required: false
        schema:
          type: integer
      - description: 'The pagination token from the initial response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_token
        required: false
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/ApiExtension'
                type: array
          description: 'List of: **Implementation specific API extensions**'
        '206':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/ApiExtension'
                type: array
          description: 'Paginated List of: **Implementation specific API extensions**'
          headers:
            X-Pagination-Items:
              description: Total number of items in the collection
              schema:
                type: integer
            X-Pagination-Limit:
              description: The maximum number of items returned
              schema:
                type: integer
            X-Pagination-Next:
              description: Path to the next page in the collection
              schema:
                type: string
            X-Pagination-Offset:
              description: Current offset of the first item in the collection
              schema:
                type: integer
            X-Pagination-Page:
              description: Current page
              schema:
                type: integer
            X-Pagination-Pages:
              description: Total number of pages
              schema:
                type: integer
            X-Pagination-Token:
              description: An identifier that changes when the collection changes
                between requests.
              schema:
                type: string
        '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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  type: object
          description: ValidationError
      tags:
      - extensions
  /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: 'The maximum number of items in the response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_limit
        required: false
        schema:
          type: integer
      - description: 'The offset of the first item in the response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_offset
        required: false
        schema:
          type: integer
      - description: 'The pagination token from the initial response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_token
        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 capability_media_type
        in: query
        name: capability_media_type
        required: false
        schema:
          type: string
      - 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**'
        '206':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Facility'
                type: array
          description: 'Paginated List of: **Facility**'
          headers:
            X-Pagination-Items:
              description: Total number of items in the collection
              schema:
                type: integer
            X-Pagination-Limit:
              description: The maximum number of items returned
              schema:
                type: integer
            X-Pagination-Next:
              description: Path to the next page in the collection
              schema:
                type: string
            X-Pagination-Offset:
              description: Current offset of the first item in the collection
              schema:
                type: integer
            X-Pagination-Page:
              description: Current page
              schema:
                type: integer
            X-Pagination-Pages:
              description: Total number of pages
              schema:
                type: integer
            X-Pagination-Token:
              description: An identifier that changes when the collection changes
                between requests.
              schema:
                type: string
        '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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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:
                $ref: '#/components/schemas/Facility'
          description: '**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: api_health_read
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiHealth'
          description: '**Health Status Response**'
      tags:
      - health
  /implementation:
    get:
      description: Get the API implementation details.
      operationId: api_implementation_read
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiImplementation'
          description: '**API Implementation**'
      tags:
      - implementation
  /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: 'The maximum number of items in the response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_limit
        required: false
        schema:
          type: integer
      - description: 'The offset of the first item in the response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_offset
        required: false
        schema:
          type: integer
      - description: 'The pagination token from the initial response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_token
        required: false
        schema:
          type: string
      - description: Filter by the ID of the managing [account](#tag/accounts).
        in: query
        name: managing_account
        required: false
        schema:
          type: string
      - description: Filter by the ID of the consuming [account](#tag/accounts).
        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**'
        '206':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/IpAddress'
                type: array
          description: 'Paginated List of: **IP-Address**'
          headers:
            X-Pagination-Items:
              description: Total number of items in the collection
              schema:
                type: integer
            X-Pagination-Limit:
              description: The maximum number of items returned
              schema:
                type: integer
            X-Pagination-Next:
              description: Path to the next page in the collection
              schema:
                type: string
            X-Pagination-Offset:
              description: Current offset of the first item in the collection
              schema:
                type: integer
            X-Pagination-Page:
              description: Current page
              schema:
                type: integer
            X-Pagination-Pages:
              description: Total number of pages
              schema:
                type: integer
            X-Pagination-Token:
              description: An identifier that changes when the collection changes
                between requests.
              schema:
                type: string
        '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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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**'
        '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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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
  /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 an ip address.


        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_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/IpAddressPatch'
        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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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: '**DEPRECATION NOTICE**: This operation will be removed in favor

        of using `PATCH` for all updates.


        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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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: 'The maximum number of items in the response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_limit
        required: false
        schema:
          type: integer
      - description: 'The offset of the first item in the response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_offset
        required: false
        schema:
          type: integer
      - description: 'The pagination token from the initial response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_token
        required: false
        schema:
          type: string
      - description: Filter by the ID of the managing [account](#tag/accounts).
        in: query
        name: managing_account
        required: false
        schema:
          type: string
      - description: Filter by the ID of the consuming [account](#tag/accounts).
        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 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**'
        '206':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/MacAddress'
                type: array
          description: 'Paginated List of: **MAC-Address**'
          headers:
            X-Pagination-Items:
              description: Total number of items in the collection
              schema:
                type: integer
            X-Pagination-Limit:
              description: The maximum number of items returned
              schema:
                type: integer
            X-Pagination-Next:
              description: Path to the next page in the collection
              schema:
                type: string
            X-Pagination-Offset:
              description: Current offset of the first item in the collection
              schema:
                type: integer
            X-Pagination-Page:
              description: Current page
              schema:
                type: integer
            X-Pagination-Pages:
              description: Total number of pages
              schema:
                type: integer
            X-Pagination-Token:
              description: An identifier that changes when the collection changes
                between requests.
              schema:
                type: string
        '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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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: 'The maximum number of items in the response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_limit
        required: false
        schema:
          type: integer
      - description: 'The offset of the first item in the response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_offset
        required: false
        schema:
          type: integer
      - description: 'The pagination token from the initial response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_token
        required: false
        schema:
          type: string
      - description: Filter by the ID of the managing [account](#tag/accounts).
        in: query
        name: managing_account
        required: false
        schema:
          type: string
      - description: Filter by the ID of the consuming [account](#tag/accounts).
        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
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/MemberJoiningRule'
                type: array
          description: 'List of: **Polymorphic Member Joining Rule**'
        '206':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/MemberJoiningRule'
                type: array
          description: 'Paginated List of: **Polymorphic Member Joining Rule**'
          headers:
            X-Pagination-Items:
              description: Total number of items in the collection
              schema:
                type: integer
            X-Pagination-Limit:
              description: The maximum number of items returned
              schema:
                type: integer
            X-Pagination-Next:
              description: Path to the next page in the collection
              schema:
                type: string
            X-Pagination-Offset:
              description: Current offset of the first item in the collection
              schema:
                type: integer
            X-Pagination-Page:
              description: Current page
              schema:
                type: integer
            X-Pagination-Pages:
              description: Total number of pages
              schema:
                type: integer
            X-Pagination-Token:
              description: An identifier that changes when the collection changes
                between requests.
              schema:
                type: string
        '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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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: 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/MemberJoiningRulePatch'
        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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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: '**DEPRECATION NOTICE**: This operation will be removed in favor

        of using `PATCH` for all updates.


        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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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: 'The maximum number of items in the response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_limit
        required: false
        schema:
          type: integer
      - description: 'The offset of the first item in the response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_offset
        required: false
        schema:
          type: integer
      - description: 'The pagination token from the initial response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_token
        required: false
        schema:
          type: string
      - 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**'
        '206':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/MetroAreaNetwork'
                type: array
          description: 'Paginated List of: **MetroAreaNetwork**'
          headers:
            X-Pagination-Items:
              description: Total number of items in the collection
              schema:
                type: integer
            X-Pagination-Limit:
              description: The maximum number of items returned
              schema:
                type: integer
            X-Pagination-Next:
              description: Path to the next page in the collection
              schema:
                type: string
            X-Pagination-Offset:
              description: Current offset of the first item in the collection
              schema:
                type: integer
            X-Pagination-Page:
              description: Current page
              schema:
                type: integer
            X-Pagination-Pages:
              description: Total number of pages
              schema:
                type: integer
            X-Pagination-Token:
              description: An identifier that changes when the collection changes
                between requests.
              schema:
                type: string
        '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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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
      - description: 'The maximum number of items in the response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_limit
        required: false
        schema:
          type: integer
      - description: 'The offset of the first item in the response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_offset
        required: false
        schema:
          type: integer
      - description: 'The pagination token from the initial response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_token
        required: false
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/MetroArea'
                type: array
          description: 'List of: **MetroArea**'
        '206':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/MetroArea'
                type: array
          description: 'Paginated List of: **MetroArea**'
          headers:
            X-Pagination-Items:
              description: Total number of items in the collection
              schema:
                type: integer
            X-Pagination-Limit:
              description: The maximum number of items returned
              schema:
                type: integer
            X-Pagination-Next:
              description: Path to the next page in the collection
              schema:
                type: string
            X-Pagination-Offset:
              description: Current offset of the first item in the collection
              schema:
                type: integer
            X-Pagination-Page:
              description: Current page
              schema:
                type: integer
            X-Pagination-Pages:
              description: Total number of pages
              schema:
                type: integer
            X-Pagination-Token:
              description: An identifier that changes when the collection changes
                between requests.
              schema:
                type: string
        '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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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:
                $ref: '#/components/schemas/MetroArea'
          description: '**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: 'The maximum number of items in the response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_limit
        required: false
        schema:
          type: integer
      - description: 'The offset of the first item in the response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_offset
        required: false
        schema:
          type: integer
      - description: 'The pagination token from the initial response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_token
        required: false
        schema:
          type: string
      - 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 the ID of the managing [account](#tag/accounts).
        in: query
        name: managing_account
        required: false
        schema:
          type: string
      - description: Filter by the ID of the consuming [account](#tag/accounts).
        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 the id of the NetworkServiceConfig the

          feature configuration is related to.


          **DEPRECATION NOTICE**: Use `network_service_config` instead.'
        in: query
        name: service_config
        required: false
        schema:
          type: string
      - description: 'Filter by the id of the NetworkServiceConfig the

          feature configuration is related to.'
        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 role_assignments
        explode: false
        in: query
        name: role_assignments
        required: false
        schema:
          example: id1,id2,id3
          items:
            type: string
          type: array
        style: form
      - description: Filter by contacts
        explode: false
        in: query
        name: contacts
        required: false
        schema:
          example: id1,id2,id3
          items:
            type: string
          type: array
        style: form
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/NetworkFeatureConfig'
                type: array
          description: 'List of: **Polymorphic Network Feature Config**'
        '206':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/NetworkFeatureConfig'
                type: array
          description: 'Paginated List of: **Polymorphic Network Feature Config**'
          headers:
            X-Pagination-Items:
              description: Total number of items in the collection
              schema:
                type: integer
            X-Pagination-Limit:
              description: The maximum number of items returned
              schema:
                type: integer
            X-Pagination-Next:
              description: Path to the next page in the collection
              schema:
                type: string
            X-Pagination-Offset:
              description: Current offset of the first item in the collection
              schema:
                type: integer
            X-Pagination-Page:
              description: Current page
              schema:
                type: integer
            X-Pagination-Pages:
              description: Total number of pages
              schema:
                type: integer
            X-Pagination-Token:
              description: An identifier that changes when the collection changes
                between requests.
              schema:
                type: string
        '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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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 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/NetworkFeatureConfigPatch'
        description: '**Polymorphic Network Feauture Config Patch**'
      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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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: '**DEPRECATION NOTICE**: This operation will be removed in favor

        of using `PATCH` for all updates.


        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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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: 'The maximum number of items in the response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_limit
        required: false
        schema:
          type: integer
      - description: 'The offset of the first item in the response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_offset
        required: false
        schema:
          type: integer
      - description: 'The pagination token from the initial response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_token
        required: false
        schema:
          type: string
      - 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**'
        '206':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/NetworkFeature'
                type: array
          description: 'Paginated List of: **Polymorphic Network Feature**'
          headers:
            X-Pagination-Items:
              description: Total number of items in the collection
              schema:
                type: integer
            X-Pagination-Limit:
              description: The maximum number of items returned
              schema:
                type: integer
            X-Pagination-Next:
              description: Path to the next page in the collection
              schema:
                type: string
            X-Pagination-Offset:
              description: Current offset of the first item in the collection
              schema:
                type: integer
            X-Pagination-Page:
              description: Current page
              schema:
                type: integer
            X-Pagination-Pages:
              description: Total number of pages
              schema:
                type: integer
            X-Pagination-Token:
              description: An identifier that changes when the collection changes
                between requests.
              schema:
                type: string
        '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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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: 'The maximum number of items in the response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_limit
        required: false
        schema:
          type: integer
      - description: 'The offset of the first item in the response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_offset
        required: false
        schema:
          type: integer
      - description: 'The pagination token from the initial response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_token
        required: false
        schema:
          type: string
      - 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 the ID of the managing [account](#tag/accounts).
        in: query
        name: managing_account
        required: false
        schema:
          type: string
      - description: Filter by the ID of the consuming [account](#tag/accounts).
        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
      - description: Filter by product_offering
        in: query
        name: product_offering
        required: false
        schema:
          type: string
      - description: Filter by role_assignments
        explode: false
        in: query
        name: role_assignments
        required: false
        schema:
          example: id1,id2,id3
          items:
            type: string
          type: array
        style: form
      - description: Filter by contacts
        explode: false
        in: query
        name: contacts
        required: false
        schema:
          example: id1,id2,id3
          items:
            type: string
          type: array
        style: form
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/NetworkServiceConfig'
                type: array
          description: 'List of: **Polymorphic Network Service Config**'
        '206':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/NetworkServiceConfig'
                type: array
          description: 'Paginated List of: **Polymorphic Network Service Config**'
          headers:
            X-Pagination-Items:
              description: Total number of items in the collection
              schema:
                type: integer
            X-Pagination-Limit:
              description: The maximum number of items returned
              schema:
                type: integer
            X-Pagination-Next:
              description: Path to the next page in the collection
              schema:
                type: string
            X-Pagination-Offset:
              description: Current offset of the first item in the collection
              schema:
                type: integer
            X-Pagination-Page:
              description: Current page
              schema:
                type: integer
            X-Pagination-Pages:
              description: Total number of pages
              schema:
                type: integer
            X-Pagination-Token:
              description: An identifier that changes when the collection changes
                between requests.
              schema:
                type: string
        '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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CancellationRequest'
        description: '**Service Cancellation Request**'
      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: Requested cancellation date outside of notice period.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/cancellation-policy-error.html
                      - https://errors.ix-api.net/v2/unable-to-fulfill.html
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
                - properties:
                    charged_until:
                      description: "The date until the service is payed for.\nTypically\
                        \ `\u2265 decommission_at`."
                      format: date
                      type: string
                    decommission_at:
                      description: 'This field denotes the first possible cancellation

                        date of the service.


                        See the service `cancellation-policy` for details.'
                      format: date
                      type: string
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  type: object
          description: CancellationPolicyError
        '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 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/NetworkServiceConfigPatch'
        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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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: '**DEPRECATION NOTICE**: This operation will be removed in favor

        of using `PATCH` for all updates.


        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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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-service-configs/{id}/cancellation-policy:
    get:
      description: 'The cancellation-policy can be queried to answer

        the questions:


        If I cancel my subscription, *when will it be technically

        decommissioned*?

        If I cancel my subscription, *until what date will I be charged*?


        When the query parameter `decommision_at` is not provided

        it will provide the first possible cancellation date

        and charge period if cancelled at above date.


        The granularity of the date field is a day, the start and end

        of which are to be interpreted by the IXP (some may use UTC,

        some may use their local time zone).'
      operationId: network_service_config_cancellation_policy_read
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      - description: 'By providing a date in the format `YYYY-MM-DD` you can

          query the policy what would happen if you request a

          decommissioning on this date.'
        in: query
        name: decommission_at
        required: false
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CancellationPolicy'
          description: '**Cancellation Policy**'
        '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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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-service-configs/{id}/peer-statistics:
    get:
      description: "Read the aggregated peer to peer statistics in relation\n    \
        \        to the peer represented by the\n            `NetworkServiceConfig`.\n\
        \            This operation will return a list of aggregated statistics.\n\
        \nA `start` and `end` query parameter can be used to\nretrieve the aggregated\
        \ traffic for a given window.\nIn this case the key of the returned statistics\
        \ is `custom`.\n\nWith a given `start` and `end` window, the resolution for\n\
        the aggregated data is chosen by the implementation.\n\nYou need to check\
        \ the `accuracy` attribute of the aggregate,\nto see if the data can be used\
        \ for the desired\nusecase. The `accuracy` is the ratio of *total samples*\
        \ to\n*expected samples*.\n\nIf no `start` or `end` parameter is given, a\
        \ sliding window\nis assumed and key value pairs of resolutions and aggregated\n\
        statistics are returned."
      operationId: network_service_configs_peer_statistics_read
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      - description: Beginning of the traffic aggregation.
        in: query
        name: start
        required: false
        schema:
          format: date-time
          type: string
      - description: 'End of the traffic aggregation.

          Default is `now`.'
        in: query
        name: end
        required: false
        schema:
          format: date-time
          type: string
      - description: Filter by asn
        in: query
        name: asn
        required: false
        schema:
          type: integer
      - description: Filter by mac_address
        in: query
        name: mac_address
        required: false
        schema:
          type: string
      - description: Filter by ip_address
        in: query
        name: ip_address
        required: false
        schema:
          type: string
      - description: Filter by ip_version
        in: query
        name: ip_version
        required: false
        schema:
          type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/PeerAggregate'
                type: array
          description: 'List of: **PeerStatistics**'
        '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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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-service-configs/{id}/peer-statistics/{aggregate}/timeseries:
    get:
      description: 'Read peer to peer aggregated timeseries.

        The resolution is defined by the aggregate.


        This operation will return a list of timeseries for each peer.'
      operationId: network_service_configs_peer_statistics_timeseries_read
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      - description: Get by aggregate
        in: path
        name: aggregate
        required: true
        schema:
          description: ''
          title: ''
          type: string
      - description: Start of the timeseries.
        in: query
        name: start
        required: false
        schema:
          format: date-time
          type: string
      - description: 'End of the timeseries.


          Default: `now`'
        in: query
        name: end
        required: false
        schema:
          format: date-time
          type: string
      - description: 'Select fields from the aggregates to export as a timeseries.


          Default: `average_pps_in,average_pps_out,average_ops_in,average_ops_out`'
        in: query
        name: fields
        required: false
        schema:
          type: string
      - description: Filter by asn
        in: query
        name: asn
        required: false
        schema:
          type: integer
      - description: Filter by mac_address
        in: query
        name: mac_address
        required: false
        schema:
          type: string
      - description: Filter by ip_address
        in: query
        name: ip_address
        required: false
        schema:
          type: string
      - description: Filter by ip_version
        in: query
        name: ip_version
        required: false
        schema:
          type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/PeerTimeseries'
                type: array
          description: 'List of: **PeerStatistics Timeseries**'
        '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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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-service-configs/{id}/statistics:
    get:
      description: 'Read the aggregated statistics of a `NetworkServiceConfig`.


        A `start` and `end` query parameter can be used to

        retrieve the aggregated traffic for a given window.

        In this case the key of the returned statistics is `custom`.


        With a given `start` and `end` window, the resolution for

        the aggregated data is chosen by the implementation.


        You need to check the `accuracy` attribute of the aggregate,

        to see if the data can be used for the desired

        usecase. The `accuracy` is the ratio of *total samples* to

        *expected samples*.


        If no `start` or `end` parameter is given, a sliding window

        is assumed and key value pairs of resolutions and aggregated

        statistics are returned.'
      operationId: network_service_configs_statistics_read
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      - description: Beginning of the traffic aggregation.
        in: query
        name: start
        required: false
        schema:
          format: date-time
          type: string
      - description: 'End of the traffic aggregation.

          Default is `now`.'
        in: query
        name: end
        required: false
        schema:
          format: date-time
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NetworkServiceConfigAggregate'
          description: '**Statistics for NetworkServiceConfig**'
        '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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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-service-configs/{id}/statistics/{aggregate}/timeseries:
    get:
      description: 'Read a `NetworkServiceConfig`s aggregated timeseries.

        The resolution is defined by the aggregate.'
      operationId: network_service_configs_statistics_timeseries_read
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      - description: Get by aggregate
        in: path
        name: aggregate
        required: true
        schema:
          description: ''
          title: ''
          type: string
      - description: Start of the timeseries.
        in: query
        name: start
        required: false
        schema:
          format: date-time
          type: string
      - description: 'End of the timeseries.


          Default: `now`'
        in: query
        name: end
        required: false
        schema:
          format: date-time
          type: string
      - description: 'Select fields from the aggregates to export as a timeseries.


          Default: `average_pps_in,average_pps_out,average_ops_in,average_ops_out`'
        in: query
        name: fields
        required: false
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AggregateTimeseries'
          description: '**Aggregated Statistics Timeseries**'
        '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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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: 'The maximum number of items in the response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_limit
        required: false
        schema:
          type: integer
      - description: 'The offset of the first item in the response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_offset
        required: false
        schema:
          type: integer
      - description: 'The pagination token from the initial response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_token
        required: false
        schema:
          type: string
      - 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 the ID of the managing [account](#tag/accounts).
        in: query
        name: managing_account
        required: false
        schema:
          type: string
      - description: Filter by the ID of the consuming [account](#tag/accounts).
        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**'
        '206':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/NetworkService'
                type: array
          description: 'Paginated List of: **Polymorphic Network Services**'
          headers:
            X-Pagination-Items:
              description: Total number of items in the collection
              schema:
                type: integer
            X-Pagination-Limit:
              description: The maximum number of items returned
              schema:
                type: integer
            X-Pagination-Next:
              description: Path to the next page in the collection
              schema:
                type: string
            X-Pagination-Offset:
              description: Current offset of the first item in the collection
              schema:
                type: integer
            X-Pagination-Page:
              description: Current page
              schema:
                type: integer
            X-Pagination-Pages:
              description: Total number of pages
              schema:
                type: integer
            X-Pagination-Token:
              description: An identifier that changes when the collection changes
                between requests.
              schema:
                type: string
        '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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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.


        An *optional request body* can be provided to request

        a specific service termination date.


        If no date is given in the request body, it is assumed to

        be the earliest possible date.


        Possible values for `decommission_at` can be queried

        through the `network_service_cancellation_policy_read`

        operation.


        The response will contain the dates on which the

        changes will be effected.'
      operationId: network_services_destroy
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CancellationRequest'
        description: '**Service Cancellation 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: Requested cancellation date outside of notice period.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/cancellation-policy-error.html
                      - https://errors.ix-api.net/v2/unable-to-fulfill.html
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
                - properties:
                    charged_until:
                      description: "The date until the service is payed for.\nTypically\
                        \ `\u2265 decommission_at`."
                      format: date
                      type: string
                    decommission_at:
                      description: 'This field denotes the first possible cancellation

                        date of the service.


                        See the service `cancellation-policy` for details.'
                      format: date
                      type: string
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  type: object
          description: CancellationPolicyError
        '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: 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/NetworkServicePatch'
        description: '**Polymorphic Network Service Patch**'
      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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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: '**DEPRECATION NOTICE**: This operation will be removed in favor

        of using `PATCH` for all updates.


        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/NetworkServiceUpdate'
        description: '**Polymorphic Network Service Update**'
      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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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}/cancellation-policy:
    get:
      description: 'The cancellation-policy can be queried to answer

        the questions:


        If I cancel my service, *when will it be technically

        decommissioned*?

        If I cancel my service, *until what date will I be charged*?


        When the query parameter `decommision_at` is not provided

        it will provide the first possible cancellation date

        and charge period if cancelled at above date.


        The granularity of the date field is a day, the start and end

        of which are to be interpreted by the IXP (some may use UTC,

        some may use their local time zone).'
      operationId: network_service_cancellation_policy_read
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      - description: 'By providing a date in the format `YYYY-MM-DD` you can

          query the policy what would happen if you request a

          decommissioning on this date.'
        in: query
        name: decommission_at
        required: false
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CancellationPolicy'
          description: '**Cancellation Policy**'
        '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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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.


        The B-side participant in a peer-to-peer network service

        (`p2p_vc`) can issue a change request, expressing a

        desired change in the capacity.


        The change is accepted when the A-side has configured

        the network service and config with the new bandwidth.

        This is done using the `network_service_update`,

        `network_service_partial_update`,

        `network_service_config_update` or

        `network_service_config_partial_update` operations by

        the A-side.


        These changes can sometimes require a change of the

        product offering. The product offering may only

        differ in bandwidth.


        The network service will change its state from `production`

        into `production_change_pending`.


        A change can by rejected (by the A-side) or retracted

        (by the B-side) using the

        `network_service_change_request_destroy` operation.


        Only one change request may be issued at a time.


        A change request by the A-side is not a valid request

        and will be rejected.'
      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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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}/rtt-statistics:
    get:
      description: 'Get **rtt statistics** from neighbors consuming this network

        service. You can filter by `asn` and peer `ip`.


        If the `NetworkService` does not support RTT statistics,

        a `404` error response will be returned.


        ### Receiving Updates

        To poll for updates, you can provide a `serial` to the

        `after` parameter in order to only receive

        results with a serial greater than the one

        provided. All of the above filters can be applied

        here and allow for receiving updates for a specific peer.


        If no `serial` is provided the latest RTT statistics are returned.


        ### Event Streaming

        This endpoint supports streaming updates using

        [**Server Sent Events**](https://html.spec.whatwg.org/multipage/server-sent-events.html#server-sent-events).


        To subscribe to events, negotiate the response content

        using the HTTP header: `Accept: text/event-stream`.


        Filteres are applied as above.'
      operationId: network_services_statistics_rtt_read
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      - description: Show only results from this `ASN`.
        in: query
        name: asn
        required: false
        schema:
          type: string
      - description: Show only results from this `IP`.
        in: query
        name: ip
        required: false
        schema:
          type: string
      - description: 'Show only results with a `serial` greater than

          `after`.'
        in: query
        name: after
        required: false
        schema:
          type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/PeerRTT'
                type: array
            text/event-stream:
              examples:
                streamExample:
                  value: '

                    data: {"serial": 421233, "asn": 42000001, "ip": "fd42:1000::1",
                    ...}

                    id: 421233


                    data: {"serial": 421234, "asn": 42000002, "ip": "fd42:1000::1",
                    ...}

                    id: 421234

                    '
              schema:
                description: '

                  A stream of Server Sent Events is returned.

                  The measurement result is encoded as JSON.


                  ### Example:


                  ```

                  data: {"serial": 42834781723, "timestamp": "2019-08-24T14:15:22Z",
                  "asn": 42000001, ...}

                  id: 42834781723


                  data: {"serial": 42834781724, "timestamp": "2019-08-24T14:16:22Z",
                  "asn": 42000002, ...}

                  id: 42834781724


                  ...

                  ```


                  For more information on how to use server sent events, see:

                  https://html.spec.whatwg.org/multipage/server-sent-events.html#server-sent-events


                  '
                type: string
          description: 'List of: **Peer RTT Statistics**'
        '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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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}/statistics:
    get:
      description: 'Read a `NetworkService`s aggregated statistics.



        A `start` and `end` query parameter can be used to

        retrieve the aggregated traffic for a given window.

        In this case the key of the returned statistics is `custom`.


        With a given `start` and `end` window, the resolution for

        the aggregated data is chosen by the implementation.


        You need to check the `accuracy` attribute of the aggregate,

        to see if the data can be used for the desired

        usecase. The `accuracy` is the ratio of *total samples* to

        *expected samples*.


        If no `start` or `end` parameter is given, a sliding window

        is assumed and key value pairs of resolutions and aggregated

        statistics are returned.'
      operationId: network_services_statistics_read
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      - description: Beginning of the traffic aggregation.
        in: query
        name: start
        required: false
        schema:
          format: date-time
          type: string
      - description: 'End of the traffic aggregation.

          Default is `now`.'
        in: query
        name: end
        required: false
        schema:
          format: date-time
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Aggregate'
          description: '**Mapping of Aggregated Statistics**'
        '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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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}/statistics/{aggregate}/timeseries:
    get:
      description: 'Read a `NetworkService`s aggregated timeseries.

        The resolution is defined by the aggregate.'
      operationId: network_services_statistics_timeseries_read
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      - description: Get by aggregate
        in: path
        name: aggregate
        required: true
        schema:
          description: ''
          title: ''
          type: string
      - description: Start of the timeseries.
        in: query
        name: start
        required: false
        schema:
          format: date-time
          type: string
      - description: 'End of the timeseries.


          Default: `now`'
        in: query
        name: end
        required: false
        schema:
          format: date-time
          type: string
      - description: 'Select fields from the aggregates to export as a timeseries.


          Default: `average_pps_in,average_pps_out,average_ops_in,average_ops_out`'
        in: query
        name: fields
        required: false
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AggregateTimeseries'
          description: '**Aggregated Statistics Timeseries**'
        '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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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
  /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: 'The maximum number of items in the response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_limit
        required: false
        schema:
          type: integer
      - description: 'The offset of the first item in the response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_offset
        required: false
        schema:
          type: integer
      - description: 'The pagination token from the initial response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_token
        required: false
        schema:
          type: string
      - 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**'
        '206':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/PointOfPresence'
                type: array
          description: 'Paginated List of: **Point Of Presence**'
          headers:
            X-Pagination-Items:
              description: Total number of items in the collection
              schema:
                type: integer
            X-Pagination-Limit:
              description: The maximum number of items returned
              schema:
                type: integer
            X-Pagination-Next:
              description: Path to the next page in the collection
              schema:
                type: string
            X-Pagination-Offset:
              description: Current offset of the first item in the collection
              schema:
                type: integer
            X-Pagination-Page:
              description: Current page
              schema:
                type: integer
            X-Pagination-Pages:
              description: Total number of pages
              schema:
                type: integer
            X-Pagination-Token:
              description: An identifier that changes when the collection changes
                between requests.
              schema:
                type: string
        '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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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
  /port-reservations:
    get:
      description: List all port reservations.
      operationId: port_reservations_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: 'The maximum number of items in the response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_limit
        required: false
        schema:
          type: integer
      - description: 'The offset of the first item in the response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_offset
        required: false
        schema:
          type: integer
      - description: 'The pagination token from the initial response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_token
        required: false
        schema:
          type: string
      - 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 connection
        in: query
        name: connection
        required: false
        schema:
          type: string
      - description: Filter by port
        in: query
        name: port
        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/PortReservation'
                type: array
          description: 'List of: **A PortReservation**'
        '206':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/PortReservation'
                type: array
          description: 'Paginated List of: **A PortReservation**'
          headers:
            X-Pagination-Items:
              description: Total number of items in the collection
              schema:
                type: integer
            X-Pagination-Limit:
              description: The maximum number of items returned
              schema:
                type: integer
            X-Pagination-Next:
              description: Path to the next page in the collection
              schema:
                type: string
            X-Pagination-Offset:
              description: Current offset of the first item in the collection
              schema:
                type: integer
            X-Pagination-Page:
              description: Current page
              schema:
                type: integer
            X-Pagination-Pages:
              description: Total number of pages
              schema:
                type: integer
            X-Pagination-Token:
              description: An identifier that changes when the collection changes
                between requests.
              schema:
                type: string
        '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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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:
      - port-reservations
    post:
      description: 'Create a new `PortReservation`.


        Two workflows for allocating ports is supported and

        dependent on the `cross_connect_initiator` property

        of the corresponding `product-offering`:


        Individual LOAs can be uploaded and downloaded for

        each PortAllocation using the endpoint

        `/port-reservations/{id}/loa`.


        Please refer to the internet exchange''s api usage

        guide for implementation specific details.'
      operationId: port_reservations_create
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PortReservationRequest'
        description: '**A PortReservation**'
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PortReservation'
          description: '**A PortReservation**'
        '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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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:
      - port-reservations
  /port-reservations/{id}:
    delete:
      description: 'Request decommissioning the port-reservation.

        The associated `port` will be deallocated and

        removed from the `connection`.'
      operationId: port_reservations_destroy
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CancellationRequest'
        description: '**Service Cancellation Request**'
      responses:
        '202':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PortReservation'
          description: '**A PortReservation**'
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Requested cancellation date outside of notice period.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/cancellation-policy-error.html
                      - https://errors.ix-api.net/v2/unable-to-fulfill.html
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
                - properties:
                    charged_until:
                      description: "The date until the service is payed for.\nTypically\
                        \ `\u2265 decommission_at`."
                      format: date
                      type: string
                    decommission_at:
                      description: 'This field denotes the first possible cancellation

                        date of the service.


                        See the service `cancellation-policy` for details.'
                      format: date
                      type: string
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  type: object
          description: CancellationPolicyError
        '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:
      - port-reservations
    get:
      description: Retrieve a `PortReservation`.
      operationId: port_reservations_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/PortReservation'
          description: '**A PortReservation**'
        '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:
      - port-reservations
    patch:
      description: Update a port reservation.
      operationId: port_reservations_partial_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/PortReservationPatch'
        description: '**PortReservation Update**'
      responses:
        '202':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PortReservation'
          description: '**A PortReservation**'
        '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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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:
      - port-reservations
    put:
      description: '**DEPRECATION NOTICE**: This operation will be removed in favor

        of using `PATCH` for all updates.


        Update a port reservation.'
      operationId: port_reservations_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/PortReservationUpdate'
        description: '**PortReservation Update**'
      responses:
        '202':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PortReservation'
          description: '**A PortReservation**'
        '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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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:
      - port-reservations
  /port-reservations/{id}/cancellation-policy:
    get:
      description: 'The cancellation-policy can be queried to answer

        the questions:


        If I cancel my subscription, *when will it be technically

        decommissioned*?

        If I cancel my subscription, *until what date will I be charged*?


        When the query parameter `decommision_at` is not provided

        it will provide the first possible cancellation date

        and charge period if cancelled at above date.


        The granularity of the date field is a day, the start and end

        of which are to be interpreted by the IXP (some may use UTC,

        some may use their local time zone).'
      operationId: port_reservation_cancellation_policy_read
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      - description: 'By providing a date in the format `YYYY-MM-DD` you can

          query the policy what would happen if you request a

          decommissioning on this date.'
        in: query
        name: decommission_at
        required: false
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CancellationPolicy'
          description: '**Cancellation Policy**'
        '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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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:
      - port-reservations
  /port-reservations/{id}/loa:
    get:
      description: 'Download the *Letter Of Authorization* associated

        with the port-reservation.


        In case of a *subscriber initiated cross-connect*,

        it will be provided by the exchange.'
      operationId: port_reservations_loa_download
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      responses:
        '200':
          content:
            application/octet-stream:
              schema:
                format: binary
                type: string
            application/pdf:
              schema:
                format: binary
                type: string
            text/plain:
              schema:
                type: string
          description: A Letter Of Authorization
        '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:
      - port-reservations
    post:
      description: 'Upload a *Letter Of Authorization* for this

        `PortReservation`.'
      operationId: port_reservations_loa_upload
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      requestBody:
        content:
          application/octet-stream:
            schema:
              format: binary
              type: string
          application/pdf:
            schema:
              format: binary
              type: string
          text/plain:
            schema:
              type: string
        description: A Letter Of Authorization
      responses:
        '200':
          description: The upload was successful
        '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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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:
      - port-reservations
  /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: 'The maximum number of items in the response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_limit
        required: false
        schema:
          type: integer
      - description: 'The offset of the first item in the response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_offset
        required: false
        schema:
          type: integer
      - description: 'The pagination token from the initial response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_token
        required: false
        schema:
          type: string
      - 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 the ID of the managing [account](#tag/accounts).
        in: query
        name: managing_account
        required: false
        schema:
          type: string
      - description: Filter by the ID of the consuming [account](#tag/accounts).
        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 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 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**'
        '206':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Port'
                type: array
          description: 'Paginated List of: **Port**'
          headers:
            X-Pagination-Items:
              description: Total number of items in the collection
              schema:
                type: integer
            X-Pagination-Limit:
              description: The maximum number of items returned
              schema:
                type: integer
            X-Pagination-Next:
              description: Path to the next page in the collection
              schema:
                type: string
            X-Pagination-Offset:
              description: Current offset of the first item in the collection
              schema:
                type: integer
            X-Pagination-Page:
              description: Current page
              schema:
                type: integer
            X-Pagination-Pages:
              description: Total number of pages
              schema:
                type: integer
            X-Pagination-Token:
              description: An identifier that changes when the collection changes
                between requests.
              schema:
                type: string
        '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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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
  /ports/{id}/statistics:
    get:
      description: 'Read a `Port`s aggregated statistics.



        A `start` and `end` query parameter can be used to

        retrieve the aggregated traffic for a given window.

        In this case the key of the returned statistics is `custom`.


        With a given `start` and `end` window, the resolution for

        the aggregated data is chosen by the implementation.


        You need to check the `accuracy` attribute of the aggregate,

        to see if the data can be used for the desired

        usecase. The `accuracy` is the ratio of *total samples* to

        *expected samples*.


        If no `start` or `end` parameter is given, a sliding window

        is assumed and key value pairs of resolutions and aggregated

        statistics are returned.'
      operationId: ports_statistics_read
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      - description: Beginning of the traffic aggregation.
        in: query
        name: start
        required: false
        schema:
          format: date-time
          type: string
      - description: 'End of the traffic aggregation.

          Default is `now`.'
        in: query
        name: end
        required: false
        schema:
          format: date-time
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PortStatistics'
          description: '**Port Statistics**'
        '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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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:
      - ports
  /ports/{id}/statistics/{aggregate}/timeseries:
    get:
      description: 'Read a `Port`s aggregated timeseries.

        The resolution is defined by the aggregate.'
      operationId: ports_statistics_timeseries_read
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      - description: Get by aggregate
        in: path
        name: aggregate
        required: true
        schema:
          description: ''
          title: ''
          type: string
      - description: Start of the timeseries.
        in: query
        name: start
        required: false
        schema:
          format: date-time
          type: string
      - description: 'End of the timeseries.


          Default: `now`'
        in: query
        name: end
        required: false
        schema:
          format: date-time
          type: string
      - description: 'Select fields from the aggregates to export as a timeseries.


          Default: `average_pps_in,average_pps_out,average_ops_in,average_ops_out`'
        in: query
        name: fields
        required: false
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AggregateTimeseries'
          description: '**Aggregated Statistics Timeseries**'
        '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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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:
      - 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: 'The maximum number of items in the response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_limit
        required: false
        schema:
          type: integer
      - description: 'The offset of the first item in the response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_offset
        required: false
        schema:
          type: integer
      - description: 'The pagination token from the initial response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_token
        required: false
        schema:
          type: string
      - description: Filter by type
        in: query
        name: type
        required: false
        schema:
          enum:
          - connection
          - exchange_lan
          - p2p_vc
          - mp2mp_vc
          - p2mp_vc
          - cloud_vc
          - routing_function
          type: string
      - description: Filter by resource_type
        in: query
        name: resource_type
        required: false
        schema:
          enum:
          - connection
          - port_reservation
          - network_service
          - network_service_config
          - routing_function
          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 handover_pop
        in: query
        name: handover_pop
        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'
          - 'false'
          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: Filter by contract_initial_period
        in: query
        name: contract_initial_period
        required: false
        schema:
          type: string
      - description: Filter by contract_initial_notice_period
        in: query
        name: contract_initial_notice_period
        required: false
        schema:
          type: string
      - description: Filter by contract_renewal_period
        in: query
        name: contract_renewal_period
        required: false
        schema:
          type: string
      - description: Filter by contract_renewal_notice_period
        in: query
        name: contract_renewal_notice_period
        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/ProductOfferingPatch'
                type: array
          description: 'List of: **Polymorphic Product Offering**'
        '206':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/ProductOfferingPatch'
                type: array
          description: 'Paginated List of: **Polymorphic Product Offering**'
          headers:
            X-Pagination-Items:
              description: Total number of items in the collection
              schema:
                type: integer
            X-Pagination-Limit:
              description: The maximum number of items returned
              schema:
                type: integer
            X-Pagination-Next:
              description: Path to the next page in the collection
              schema:
                type: string
            X-Pagination-Offset:
              description: Current offset of the first item in the collection
              schema:
                type: integer
            X-Pagination-Page:
              description: Current page
              schema:
                type: integer
            X-Pagination-Pages:
              description: Total number of pages
              schema:
                type: integer
            X-Pagination-Token:
              description: An identifier that changes when the collection changes
                between requests.
              schema:
                type: string
        '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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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: 'The maximum number of items in the response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_limit
        required: false
        schema:
          type: integer
      - description: 'The offset of the first item in the response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_offset
        required: false
        schema:
          type: integer
      - description: 'The pagination token from the initial response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_token
        required: false
        schema:
          type: string
      - 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**'
        '206':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/RoleAssignment'
                type: array
          description: 'Paginated List of: **A role assignment for a contact**'
          headers:
            X-Pagination-Items:
              description: Total number of items in the collection
              schema:
                type: integer
            X-Pagination-Limit:
              description: The maximum number of items returned
              schema:
                type: integer
            X-Pagination-Next:
              description: Path to the next page in the collection
              schema:
                type: string
            X-Pagination-Offset:
              description: Current offset of the first item in the collection
              schema:
                type: integer
            X-Pagination-Page:
              description: Current page
              schema:
                type: integer
            X-Pagination-Pages:
              description: Total number of pages
              schema:
                type: integer
            X-Pagination-Token:
              description: An identifier that changes when the collection changes
                between requests.
              schema:
                type: string
        '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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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/{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 id
        in: path
        name: 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
        '409':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 409
                    title:
                      example: There is a conflict preventing success
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/conflict.html
                      type: string
                  type: object
                - properties:
                    conflict:
                      items:
                        $ref: '#/components/schemas/Conflict'
                      type: array
                  type: object
          description: ConstraintViolation
      tags:
      - role-assignments
    get:
      description: Get a role assignment for a contact.
      operationId: role_assignments_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/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: 'The maximum number of items in the response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_limit
        required: false
        schema:
          type: integer
      - description: 'The offset of the first item in the response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_offset
        required: false
        schema:
          type: integer
      - description: 'The pagination token from the initial response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_token
        required: false
        schema:
          type: string
      - 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: **Role for a Contact**'
        '206':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Role'
                type: array
          description: 'Paginated List of: **Role for a Contact**'
          headers:
            X-Pagination-Items:
              description: Total number of items in the collection
              schema:
                type: integer
            X-Pagination-Limit:
              description: The maximum number of items returned
              schema:
                type: integer
            X-Pagination-Next:
              description: Path to the next page in the collection
              schema:
                type: string
            X-Pagination-Offset:
              description: Current offset of the first item in the collection
              schema:
                type: integer
            X-Pagination-Page:
              description: Current page
              schema:
                type: integer
            X-Pagination-Pages:
              description: Total number of pages
              schema:
                type: integer
            X-Pagination-Token:
              description: An identifier that changes when the collection changes
                between requests.
              schema:
                type: string
        '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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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:
      - 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
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Role'
          description: '**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
  /routing-functions:
    get:
      description: Get a list of routing functions
      operationId: routing_functions_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: 'The maximum number of items in the response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_limit
        required: false
        schema:
          type: integer
      - description: 'The offset of the first item in the response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_offset
        required: false
        schema:
          type: integer
      - description: 'The pagination token from the initial response.

          [*(Pagination)*](#section/Pagination)'
        in: query
        name: page_token
        required: false
        schema:
          type: string
      - 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 the ID of the managing [account](#tag/accounts).
        in: query
        name: managing_account
        required: false
        schema:
          type: string
      - description: Filter by the ID of the consuming [account](#tag/accounts).
        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 asn
        in: query
        name: asn
        required: false
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/RoutingFunction'
                type: array
          description: 'List of: **Routing Function**'
        '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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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:
      - routing-functions
    post:
      description: Create a routing function
      operationId: routing_functions_create
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RoutingFunctionRequest'
        description: '**Routing Function Request**'
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RoutingFunction'
          description: '**Routing Function**'
        '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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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:
      - routing-functions
  /routing-functions/{id}:
    delete:
      description: 'Request decomissioning the routing function.


        The cancellation policy of the routing function applies

        here and is independent from the

        policy of the network-service and network-service-config

        using the routing function.


        The routing function will assume the state

        `decommission_requested`.


        The decommissioning request will *not* cascade

        to network services and configs.'
      operationId: routing_functions_destroy
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CancellationRequest'
        description: '**Service Cancellation Request**'
      responses:
        '202':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RoutingFunction'
          description: '**Routing Function**'
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Requested cancellation date outside of notice period.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/cancellation-policy-error.html
                      - https://errors.ix-api.net/v2/unable-to-fulfill.html
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
                - properties:
                    charged_until:
                      description: "The date until the service is payed for.\nTypically\
                        \ `\u2265 decommission_at`."
                      format: date
                      type: string
                    decommission_at:
                      description: 'This field denotes the first possible cancellation

                        date of the service.


                        See the service `cancellation-policy` for details.'
                      format: date
                      type: string
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  type: object
          description: CancellationPolicyError
        '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:
      - routing-functions
    get:
      description: Get a single routing function instance.
      operationId: routing_functions_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/RoutingFunction'
          description: '**Routing Function**'
        '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:
      - routing-functions
    patch:
      description: Update a routing function
      operationId: routing_functions_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/RoutingFunctionPatch'
        description: '**Routing Function Patch**'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RoutingFunction'
          description: '**Routing Function**'
        '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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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:
      - routing-functions
  /routing-functions/{id}/cancellation-policy:
    get:
      description: 'The cancellation-policy can be queried to answer

        the questions:


        If I cancel my subscription, *when will it be technically

        decommissioned*?

        If I cancel my subscription, *until what date will I be charged*?


        When the query parameter `decommision_at` is not provided

        it will provide the first possible cancellation date

        and charge period if cancelled at above date.


        The granularity of the date field is a day, the start and end

        of which are to be interpreted by the IXP (some may use UTC,

        some may use their local time zone).'
      operationId: routing_functions_cancellation_policy_read
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      - description: 'By providing a date in the format `YYYY-MM-DD` you can

          query the policy what would happen if you request a

          decommissioning on this date.'
        in: query
        name: decommission_at
        required: false
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CancellationPolicy'
          description: '**Cancellation Policy**'
        '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
                - properties:
                    properties:
                      description: 'A list of failed validations identified by the

                        property `name` giving a `reason` why it failed.'
                      items:
                        $ref: '#/components/schemas/ValidationErrorProperty'
                      type: array
                  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:
      - routing-functions
security:
- OAuth:
  - ix-api
- 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_change_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`.


    *Sensitive Properties*: Please note, that an `Account` is a shared

    resource and fields marked as *sensitive* should be redacted.'
  name: accounts
- description: '**DEPRECATION NOTICE:**

    Providing the method of authentication is up to the implementer.

    We suggest using OAuth 2.


    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: 'An `AvailabilityZone` is a grouping of network resources that have

    the same maintenance scheduling which does not overlap with the

    maintenance schedule for any other `AvailabilityZone`.'
  name: availability-zones
- description: 'A `Connection` is a functional group of physical

    ports collected together into a LAG (aka trunk).


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

    configured as standalone which means no link aggregation

    is configured on the switch.


    Ports will be allocated when creating a connection.

    The number of ports is determined by the

    `port_quantity` property.

    The `port_quantity` can be updated later by creating

    new or deleting `PortReservation`s for this `Connection`.'
  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: 'The extensions endpoint provides information about

    additional implementation specific extensions that are not

    officially part of the IX-API standard.'
  name: extensions
- 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: 'This endpoint provides information about the IX-API

    implementation of the exchange.


    You can find the implemented schema version and

    supported types and operations here.'
  name: implementation
- 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.


    Setting the above two parameters supports maintenance windows

    in which the MAC addresses overlap for certain period of time.

    The implementation of the maintenance windows is dependent on

    the specific exchange. While some IXPs allow them, the business

    of other IXPs may reject them.


    If both values are set `valid_not_after` may not be before

    `valid_not_before`.'
  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`.


    *Sensitive Properties*: Please note, that a `NetworkService` may be a shared

    resource and fields marked as *sensitive* should be redacted.'
  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 `PortReservation` expresses the intent to include

    a `Port` in a connection.


    Decommissining a `port-reservation` will lead to the

    removal of the port from the lag.


    Please note that individual cancellation policies

    might apply.'
  name: port-reservations
- 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


    - `legal` signing terms and conditions for the account as a whole, authorized
    person allowed to sign on behalf of the company

    - `implementation` technical contact for deployment and de-commissioning

    - `noc` technical contact for troubleshooting the services

    - `peering` contact authorized to accept peering requests

    - `billing` contact that receives invoices


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

    additional ones.'
  name: roles
- description: 'Routing functions instances add routing functionality

    implemented as VPRNs at the IXP.


    A routing function instance joins two or more independent services

    into a single routing domain, providing connectivity between all of

    the services attached.


    To create routing function, need to select a product offering,

    which will determine the service metro area network where

    the function will be deployed.'
  name: routing-functions
