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:
          maxLength: 80
          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:
      - name
      - metro_area_network_presence
      - 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
        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
        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:
      - name
      - address
      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
        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:
      - name
      - metro_area_network_presence
      - address
      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:
      - country
      - locality
      - postal_code
      - street_address
      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 aggregate interval as a

            string representation is used. For example: `5m`, `1d`, `30d`,

            `1y`.


            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:
            30d:
              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'
              precision: 3600
              title: 30 Days
              total_samples: 720
            5m:
              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'
              precision: 300
              title: 5 Minutes
              total_samples: 1
          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:
      - title
      - start
      - end
      - accuracy
      - created_at
      - next_update_at
      - average_pps_in
      - average_pps_out
      - average_ops_in
      - average_ops_out
      title: AggregateStatistics
      type: object
    AggregateTimeseries:
      description: Aggregated Statistics Timeseries
      properties:
        created_at:
          description: Timestamp when the statistics were created.
          format: date-time
          type: string
        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:
      - title
      - precision
      - created_at
      - next_update_at
      - origin_timezone
      - samples
      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:
          type: string
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

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

            '
          example: '238189294'
          type: string
        network_service:
          type: string
        type:
          example: allow
          type: string
      required:
      - managing_account
      - consuming_account
      - id
      - network_service
      - type
      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
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

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

            '
          example: '238189294'
          type: string
        type:
          example: allow
          type: string
      required:
      - type
      title: 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
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

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

            '
          example: '238189294'
          type: string
        network_service:
          type: string
        type:
          example: allow
          type: string
      required:
      - managing_account
      - consuming_account
      - network_service
      - type
      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
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

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

            '
          example: '238189294'
          type: string
        type:
          example: allow
          type: string
      required:
      - managing_account
      - consuming_account
      - type
      title: AllowMemberJoiningRuleUpdate
      type: object
    ApiExtensions:
      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:
      - name
      - publisher
      - documentation_url
      - base_url
      - spec_url
      title: ApiExtensions
      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_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:
      - schema_version
      - supported_network_service_types
      - supported_network_service_config_types
      - supported_network_feature_types
      - supported_network_feature_config_types
      - supported_operations
      title: ApiImplementation
      type: object
    AuthToken:
      description: AuthToken
      properties:
        access_token:
          type: string
        refresh_token:
          type: string
      required:
      - access_token
      - refresh_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_key
      - api_secret
      title: AuthTokenRequest
      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:
      - name
      - address
      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:
      - decommission_at
      - charged_until
      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
    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_terms:
          description: 'The contract terms informally describe the contract period
            and

            renewals.

            '
          example: 2 weeks and 1 day, renewing every 37 days afterwards, first 66
            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:
          maxLength: 80
          type: string
        name:
          description: Name of the product
          maxLength: 160
          type: string
        notice_period:
          description: '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
        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
          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 description of the partner NNI to the service
            provider.

            '
          example: pop:127388:LD3
          nullable: true
          type: string
        service_provider_region:
          description: 'The service provider offers the network service for a

            specific region.

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

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

            the product-offerings.


            If the workflow is `exchange_first` the IX will create

            the cloud circuit on the provider side.

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

            a higher bandwidth.'
          type: boolean
      required:
      - id
      - name
      - display_name
      - resource_type
      - handover_metro_area_network
      - handover_metro_area
      - physical_port_speed
      - service_provider
      - downgrade_allowed
      - upgrade_allowed
      - provider_vlans
      - service_metro_area_network
      - service_metro_area
      - bandwidth_min
      - bandwidth_max
      - service_provider_region
      - service_provider_pop
      - service_provider_workflow
      - delivery_method
      - diversity
      - type
      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_terms:
          description: 'The contract terms informally describe the contract period
            and

            renewals.

            '
          example: 2 weeks and 1 day, renewing every 37 days afterwards, first 66
            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:
          maxLength: 80
          type: string
        name:
          description: Name of the product
          maxLength: 160
          type: string
        notice_period:
          description: '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
        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
          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 description of the partner NNI to the service
            provider.

            '
          example: pop:127388:LD3
          nullable: true
          type: string
        service_provider_region:
          description: 'The service provider offers the network service for a

            specific region.

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

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

            the product-offerings.


            If the workflow is `exchange_first` the IX will create

            the cloud circuit on the provider side.

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

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

            *(Sensitive Property)*'
          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:
          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:
          type: string
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

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

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

            specified roles assigned to contacts.


            The `RoleAssignment` is associated through the

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

            workflow, the `provider_ref` will be a reference

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

            a virtual circuit.)


            The `provider_ref` is managed by the exchange and its

            meaning may vary between different cloud services.

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

            *(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
        type:
          example: cloud_vc
          type: string
      required:
      - state
      - id
      - product_offering
      - managing_account
      - consuming_account
      - billing_account
      - cloud_key
      - diversity
      - provider_ref
      - type
      title: CloudNetworkService
      type: object
    CloudNetworkServiceConfig:
      allOf:
      - $ref: '#/components/schemas/NetworkServiceConfig'
      description: Cloud Network Service Config
      properties:
        billing_account:
          description: 'An account requires billing_information to be used as a `billing_account`.

            *(Sensitive Property)*'
          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_vlan:
          description: 'If the `provider_vlans` property of the `ProductOffering`
            is

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

            provider side.


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

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

            service provider side are presented as tags within any vlans specified

            in `vlan_config`.)


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

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


            Used to be `owning_customer`.

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

            a default MAY be chosen by the implementer.

            *(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:
          maxLength: 80
          type: string
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

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

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

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

            *(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
        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
        type:
          example: cloud_vc
          type: string
        vlan_config:
          $ref: '#/components/schemas/VlanConfig'
      required:
      - state
      - id
      - network_service
      - managing_account
      - consuming_account
      - billing_account
      - role_assignments
      - connection
      - vlan_config
      - handover
      - cloud_vlan
      - type
      title: CloudNetworkServiceConfig
      type: object
    CloudNetworkServiceConfigPatch:
      allOf:
      - $ref: '#/components/schemas/NetworkServiceConfigPatch'
      description: Cloud Network Service Config Update
      properties:
        billing_account:
          description: 'An account requires billing_information to be used as a `billing_account`.

            *(Sensitive Property)*'
          type: string
        cloud_vlan:
          description: 'If the `provider_vlans` property of the `ProductOffering`
            is

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

            provider side.


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

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

            service provider side are presented as tags within any vlans specified

            in `vlan_config`.)


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

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


            Used to be `owning_customer`.

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

            a default MAY be chosen by the implementer.

            *(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
        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
        type:
          example: cloud_vc
          type: string
        vlan_config:
          $ref: '#/components/schemas/VlanConfig'
      required:
      - type
      title: CloudNetworkServiceConfigPatch
      type: object
    CloudNetworkServiceConfigRequest:
      allOf:
      - $ref: '#/components/schemas/NetworkServiceConfigRequest'
      description: Cloud Network Service Config Request
      properties:
        billing_account:
          description: 'An account requires billing_information to be used as a `billing_account`.

            *(Sensitive Property)*'
          type: string
        cloud_vlan:
          description: 'If the `provider_vlans` property of the `ProductOffering`
            is

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

            provider side.


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

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

            service provider side are presented as tags within any vlans specified

            in `vlan_config`.)


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

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


            Used to be `owning_customer`.

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

            a default MAY be chosen by the implementer.

            *(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
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

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

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

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

            *(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
        type:
          example: cloud_vc
          type: string
        vlan_config:
          $ref: '#/components/schemas/VlanConfig'
      required:
      - managing_account
      - consuming_account
      - network_service
      - billing_account
      - role_assignments
      - connection
      - vlan_config
      - handover
      - cloud_vlan
      - type
      title: CloudNetworkServiceConfigRequest
      type: object
    CloudNetworkServiceConfigUpdate:
      allOf:
      - $ref: '#/components/schemas/NetworkServiceConfigUpdate'
      description: Cloud Network Service Config Update
      properties:
        billing_account:
          description: 'An account requires billing_information to be used as a `billing_account`.

            *(Sensitive Property)*'
          type: string
        cloud_vlan:
          description: 'If the `provider_vlans` property of the `ProductOffering`
            is

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

            provider side.


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

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

            service provider side are presented as tags within any vlans specified

            in `vlan_config`.)


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

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


            Used to be `owning_customer`.

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

            a default MAY be chosen by the implementer.

            *(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
        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
        type:
          example: cloud_vc
          type: string
        vlan_config:
          $ref: '#/components/schemas/VlanConfig'
      required:
      - managing_account
      - consuming_account
      - vlan_config
      - billing_account
      - role_assignments
      - connection
      - handover
      - cloud_vlan
      - type
      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)*'
          type: string
        capacity:
          description: 'The capacity of the service in Mbps. When null,

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


            Used to be `owning_customer`.

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

            a default MAY be chosen by the implementer.

            *(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
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

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

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

            *(Sensitive Property)*

            '
          example: 'Project: DC Moon'
          maxLength: 80
          type: string
        type:
          example: cloud_vc
          type: string
      required:
      - type
      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)*'
          type: string
        capacity:
          description: 'The capacity of the service in Mbps. When null,

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


            Used to be `owning_customer`.

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

            a default MAY be chosen by the implementer.

            *(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
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

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

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

            *(Sensitive Property)*

            '
          example: 'Project: DC Moon'
          maxLength: 80
          type: string
        type:
          example: cloud_vc
          type: string
      required:
      - product_offering
      - managing_account
      - consuming_account
      - billing_account
      - cloud_key
      - type
      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)*'
          type: string
        capacity:
          description: 'The capacity of the service in Mbps. When null,

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


            Used to be `owning_customer`.

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

            a default MAY be chosen by the implementer.

            *(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
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

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

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

            *(Sensitive Property)*

            '
          example: 'Project: DC Moon'
          maxLength: 80
          type: string
        type:
          example: cloud_vc
          type: string
      required:
      - product_offering
      - managing_account
      - consuming_account
      - billing_account
      - cloud_key
      - type
      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:
      - resource_type
      - resource_id
      - resource_property
      - remote_resource_type
      - remote_resource_id
      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)*'
          type: string
        capacity_allocated:
          description: 'Sum of the bandwidth of all network services 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:
          maxLength: 80
          type: string
        lacp_timeout:
          description: 'This sets the LACP Timeout mode. Both ends of the connections
            need

            to be configured the same.

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

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

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


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

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

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

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

            any bundling.

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

            '
          example:
          - '0x8100'
          items:
            default: '0x8100'
            enum:
            - '0x8100'
            - '0x88a8'
            - '0x9100'
            type: string
          type: array
        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.
          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`.
          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:
      - state
      - managing_account
      - consuming_account
      - billing_account
      - role_assignments
      - mode
      - product_offering
      - id
      - name
      - pop
      - capacity_allocated
      - capacity_allocation_limit
      - vlan_types
      - outer_vlan_ethertypes
      - port_quantity
      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)*'
          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
        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`.
          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_terms:
          description: 'The contract terms informally describe the contract period
            and

            renewals.

            '
          example: 2 weeks and 1 day, renewing every 37 days afterwards, first 66
            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:
          maxLength: 80
          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: '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.'
          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
          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
        type:
          example: connection
          type: string
        upgrade_allowed:
          description: 'Indicates if the service can be migrated to

            a higher bandwidth.'
          type: boolean
      required:
      - id
      - name
      - display_name
      - resource_type
      - handover_metro_area_network
      - handover_metro_area
      - physical_port_speed
      - service_provider
      - downgrade_allowed
      - upgrade_allowed
      - cross_connect_initiator
      - type
      title: ConnectionProductOffering
      type: object
    ConnectionProductOfferingPatch:
      allOf:
      - $ref: '#/components/schemas/ProductOfferingPatch'
      description: Conncetion Product Offering
      properties:
        contract_terms:
          description: 'The contract terms informally describe the contract period
            and

            renewals.

            '
          example: 2 weeks and 1 day, renewing every 37 days afterwards, first 66
            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:
          maxLength: 80
          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: '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.'
          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
          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
        type:
          example: connection
          type: string
        upgrade_allowed:
          description: 'Indicates if the service can be migrated to

            a higher bandwidth.'
          type: boolean
      required:
      - type
      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)*'
          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
        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`.
          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:
      - managing_account
      - consuming_account
      - billing_account
      - role_assignments
      - mode
      - product_offering
      - port_quantity
      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)*'
          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
        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`.
          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:
      - managing_account
      - consuming_account
      - billing_account
      - role_assignments
      - mode
      - product_offering
      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:
          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:
      - managing_account
      - consuming_account
      - id
      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
        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
        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:
      - managing_account
      - consuming_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
        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:
      - managing_account
      - consuming_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
        id:
          type: string
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

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

            '
          example: '238189294'
          type: string
        network_service:
          type: string
        type:
          example: deny
          type: string
      required:
      - managing_account
      - consuming_account
      - id
      - network_service
      - type
      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
        type:
          example: deny
          type: string
      required:
      - type
      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:
          type: string
        type:
          example: deny
          type: string
      required:
      - managing_account
      - consuming_account
      - network_service
      - type
      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
        type:
          example: deny
          type: string
      required:
      - managing_account
      - consuming_account
      - type
      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.'
          readOnly: true
          type: string
        id:
          maxLength: 80
          type: string
        name:
          description: 'Name of the device

            '
          example: edge2.moon.space-ix.net
          maxLength: 180
          type: string
        pop:
          description: The `PointOfPresence` the device is in.
          type: string
      required:
      - name
      - pop
      - 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
      title: DeviceCapability
      type: object
    DeviceConnection:
      description: Device Connection
      properties:
        capacity_max:
          format: int32
          maximum: 2147483647
          minimum: 0
          type: integer
        connected_device:
          type: string
        device:
          type: string
        id:
          maxLength: 80
          type: string
      required:
      - capacity_max
      - device
      - connected_device
      - id
      title: DeviceConnection
      type: object
    Event:
      description: Event
      properties:
        account:
          readOnly: true
          type: string
        payload:
          type: object
        serial:
          type: integer
        timestamp:
          format: date-time
          type: string
        type:
          type: string
      required:
      - serial
      - type
      - payload
      - timestamp
      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_terms:
          description: 'The contract terms informally describe the contract period
            and

            renewals.

            '
          example: 2 weeks and 1 day, renewing every 37 days afterwards, first 66
            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.
          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:
          maxLength: 80
          type: string
        name:
          description: Name of the product
          maxLength: 160
          type: string
        notice_period:
          description: '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
        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
          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
        type:
          example: exchange_lan
          type: string
        upgrade_allowed:
          description: 'Indicates if the service can be migrated to

            a higher bandwidth.'
          type: boolean
      required:
      - id
      - name
      - display_name
      - resource_type
      - handover_metro_area_network
      - handover_metro_area
      - physical_port_speed
      - service_provider
      - downgrade_allowed
      - upgrade_allowed
      - provider_vlans
      - service_metro_area_network
      - service_metro_area
      - bandwidth_min
      - bandwidth_max
      - exchange_lan_network_service
      - type
      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_terms:
          description: 'The contract terms informally describe the contract period
            and

            renewals.

            '
          example: 2 weeks and 1 day, renewing every 37 days afterwards, first 66
            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.
          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:
          maxLength: 80
          type: string
        name:
          description: Name of the product
          maxLength: 160
          type: string
        notice_period:
          description: '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
        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
          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
        type:
          example: exchange_lan
          type: string
        upgrade_allowed:
          description: 'Indicates if the service can be migrated to

            a higher bandwidth.'
          type: boolean
      required:
      - type
      title: 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:
          type: string
        ixfdb_ixid:
          description: id of ixfdb
          nullable: true
          type: integer
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

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

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

            the exchange lan network service is directly provided.


            Same as `service_metro_area_network` on the related

            `ProductOffering`.

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

            specified roles assigned to contacts.


            The `RoleAssignment` is associated through the

            `role_assignments` list property of the network service configuration.'
          items:
            type: string
          readOnly: true
          type: array
        peeringdb_ixid:
          description: PeeringDB ixid
          nullable: true
          type: integer
        product_offering:
          description: '*deprecation notice*'
          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
        type:
          example: exchange_lan
          type: string
      required:
      - state
      - id
      - managing_account
      - consuming_account
      - name
      - metro_area_network
      - network_features
      - subnet_v4
      - subnet_v6
      - type
      title: ExchangeLanNetworkService
      type: object
    ExchangeLanNetworkServiceConfig:
      allOf:
      - $ref: '#/components/schemas/NetworkServiceConfig'
      description: Exchange Lan Network Service Config
      properties:
        asns:
          items:
            format: int64
            maximum: 4294967295
            minimum: 0
            type: integer
          type: array
        billing_account:
          description: 'An account requires billing_information to be used as a `billing_account`.

            *(Sensitive Property)*'
          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`.
          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:
          maxLength: 80
          type: string
        ips:
          description: 'A list of ip-address IDs.


            Allocation of IP Addresses might be deferred depending on

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

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

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

            '
          example:
          - '12356'
          - '43829'
          items:
            type: string
          readOnly: true
          type: array
        network_service:
          description: The id of the configured network service.
          type: string
        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.'
          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
        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
        type:
          example: exchange_lan
          type: string
        vlan_config:
          $ref: '#/components/schemas/VlanConfig'
      required:
      - state
      - id
      - network_service
      - managing_account
      - consuming_account
      - billing_account
      - role_assignments
      - connection
      - vlan_config
      - asns
      - listed
      - product_offering
      - type
      title: ExchangeLanNetworkServiceConfig
      type: object
    ExchangeLanNetworkServiceConfigPatch:
      allOf:
      - $ref: '#/components/schemas/NetworkServiceConfigPatch'
      description: Exchange Lan Network Service Config Update
      properties:
        asns:
          items:
            format: int64
            maximum: 4294967295
            minimum: 0
            type: integer
          type: array
        billing_account:
          description: 'An account requires billing_information to be used as a `billing_account`.

            *(Sensitive Property)*'
          type: string
        capacity:
          description: 'The capacity of the service in Mbps. If set to Null,

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

            not rate-limited.


            An exchange may choose to constrain the available capacity range

            of a `ProductOffering`.


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

            of the `Connection`.


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


            Used to be `owning_customer`.

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

            a default MAY be chosen by the implementer.

            *(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
        ips:
          description: 'A list of ip-address IDs.


            Allocation of IP Addresses might be deferred depending on

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

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

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

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

            *(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
        type:
          example: exchange_lan
          type: string
        vlan_config:
          $ref: '#/components/schemas/VlanConfig'
      required:
      - type
      title: ExchangeLanNetworkServiceConfigPatch
      type: object
    ExchangeLanNetworkServiceConfigRequest:
      allOf:
      - $ref: '#/components/schemas/NetworkServiceConfigRequest'
      description: Exchange Lan Network Service Config Request
      properties:
        asns:
          items:
            format: int64
            maximum: 4294967295
            minimum: 0
            type: integer
          type: array
        billing_account:
          description: 'An account requires billing_information to be used as a `billing_account`.

            *(Sensitive Property)*'
          type: string
        capacity:
          description: 'The capacity of the service in Mbps. If set to Null,

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

            not rate-limited.


            An exchange may choose to constrain the available capacity range

            of a `ProductOffering`.


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

            of the `Connection`.


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


            Used to be `owning_customer`.

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

            a default MAY be chosen by the implementer.

            *(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
        ips:
          description: 'A list of ip-address IDs.


            Allocation of IP Addresses might be deferred depending on

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

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

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

            '
          example:
          - '12356'
          - '43829'
          items:
            type: string
          readOnly: true
          type: array
        network_service:
          description: The id of the `NetworkService` to configure.
          type: string
        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.'
          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
        type:
          example: exchange_lan
          type: string
        vlan_config:
          $ref: '#/components/schemas/VlanConfig'
      required:
      - managing_account
      - consuming_account
      - network_service
      - billing_account
      - role_assignments
      - connection
      - vlan_config
      - asns
      - listed
      - product_offering
      - type
      title: ExchangeLanNetworkServiceConfigRequest
      type: object
    ExchangeLanNetworkServiceConfigUpdate:
      allOf:
      - $ref: '#/components/schemas/NetworkServiceConfigUpdate'
      description: Exchange Lan Network Service Config Update
      properties:
        asns:
          items:
            format: int64
            maximum: 4294967295
            minimum: 0
            type: integer
          type: array
        billing_account:
          description: 'An account requires billing_information to be used as a `billing_account`.

            *(Sensitive Property)*'
          type: string
        capacity:
          description: 'The capacity of the service in Mbps. If set to Null,

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

            not rate-limited.


            An exchange may choose to constrain the available capacity range

            of a `ProductOffering`.


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

            of the `Connection`.


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


            Used to be `owning_customer`.

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

            a default MAY be chosen by the implementer.

            *(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
        ips:
          description: 'A list of ip-address IDs.


            Allocation of IP Addresses might be deferred depending on

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

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

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

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

            *(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
        type:
          example: exchange_lan
          type: string
        vlan_config:
          $ref: '#/components/schemas/VlanConfig'
      required:
      - managing_account
      - consuming_account
      - vlan_config
      - billing_account
      - role_assignments
      - connection
      - asns
      - listed
      - type
      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:
          maxLength: 80
          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`.
          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:
      - name
      - metro_area
      - address_country
      - address_locality
      - address_region
      - postal_code
      - street_address
      - organisation_name
      - pops
      - 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:
      - name
      - description
      - mandatory
      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:
      - name
      - enabled
      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:
          maxLength: 80
          type: string
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

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

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

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

            '
          example: 4
          type: integer
      required:
      - managing_account
      - consuming_account
      - version
      - address
      - prefix_length
      - id
      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
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

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

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

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

            '
          example: 4
          type: integer
      title: 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
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

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

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

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

            '
          example: 4
          type: integer
      required:
      - managing_account
      - consuming_account
      - version
      - address
      - prefix_length
      title: IpAddressRequest
      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
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

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

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

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

            '
          example: 4
          type: integer
      required:
      - managing_account
      - consuming_account
      - version
      - address
      - prefix_length
      title: IpAddressUpdate
      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_terms:
          description: 'The contract terms informally describe the contract period
            and

            renewals.

            '
          example: 2 weeks and 1 day, renewing every 37 days afterwards, first 66
            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:
          maxLength: 80
          type: string
        name:
          description: Name of the product
          maxLength: 160
          type: string
        notice_period:
          description: '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
        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
          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
        type:
          example: mp2mp_vc
          type: string
        upgrade_allowed:
          description: 'Indicates if the service can be migrated to

            a higher bandwidth.'
          type: boolean
      required:
      - id
      - name
      - display_name
      - resource_type
      - handover_metro_area_network
      - handover_metro_area
      - physical_port_speed
      - service_provider
      - downgrade_allowed
      - upgrade_allowed
      - provider_vlans
      - service_metro_area_network
      - service_metro_area
      - bandwidth_min
      - bandwidth_max
      - type
      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_terms:
          description: 'The contract terms informally describe the contract period
            and

            renewals.

            '
          example: 2 weeks and 1 day, renewing every 37 days afterwards, first 66
            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:
          maxLength: 80
          type: string
        name:
          description: Name of the product
          maxLength: 160
          type: string
        notice_period:
          description: '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
        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
          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
        type:
          example: mp2mp_vc
          type: string
        upgrade_allowed:
          description: 'Indicates if the service can be migrated to

            a higher bandwidth.'
          type: boolean
      required:
      - type
      title: 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)*'
          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:
          type: string
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

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

            '
          example: '238189294'
          type: string
        member_joining_rules:
          items:
            type: string
          type: array
        network_features:
          items:
            type: string
          type: array
        nsc_product_offerings:
          description: 'An optional list of `ProductOffering`s which can be used in
            the

            network service configs for this service.'
          items:
            type: string
          type: array
        nsc_required_contact_roles:
          description: 'The configuration will require at least one of each of the

            specified roles assigned to contacts.


            The `RoleAssignment` is associated through the

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

            by everyone on the exchange unless denied by

            a member-joining-rule.


            Public network services are visible to other

            members of the IXP, however only `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
        type:
          example: mp2mp_vc
          type: string
      required:
      - state
      - id
      - product_offering
      - managing_account
      - consuming_account
      - billing_account
      - member_joining_rules
      - network_features
      - type
      title: MP2MPNetworkService
      type: object
    MP2MPNetworkServiceConfig:
      allOf:
      - $ref: '#/components/schemas/NetworkServiceConfig'
      description: MP2MP Network Service Config
      properties:
        billing_account:
          description: 'An account requires billing_information to be used as a `billing_account`.

            *(Sensitive Property)*'
          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`.
          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:
          maxLength: 80
          type: string
        macs:
          items:
            type: string
          type: array
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

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

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

            '
          example:
          - '12356'
          - '43829'
          items:
            type: string
          readOnly: true
          type: array
        network_service:
          description: The id of the configured network service.
          type: string
        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`.'
          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
        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
        type:
          example: mp2mp_vc
          type: string
        vlan_config:
          $ref: '#/components/schemas/VlanConfig'
      required:
      - state
      - id
      - network_service
      - managing_account
      - consuming_account
      - billing_account
      - role_assignments
      - connection
      - vlan_config
      - type
      title: MP2MPNetworkServiceConfig
      type: object
    MP2MPNetworkServiceConfigPatch:
      allOf:
      - $ref: '#/components/schemas/NetworkServiceConfigPatch'
      description: MP2MP Network Service Config Update
      properties:
        billing_account:
          description: 'An account requires billing_information to be used as a `billing_account`.

            *(Sensitive Property)*'
          type: string
        capacity:
          description: 'The capacity of the service in Mbps. If set to Null,

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

            not rate-limited.


            An exchange may choose to constrain the available capacity range

            of a `ProductOffering`.


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

            of the `Connection`.


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


            Used to be `owning_customer`.

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

            a default MAY be chosen by the implementer.

            *(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
        macs:
          items:
            type: string
          type: array
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

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

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

            '
          example:
          - '12356'
          - '43829'
          items:
            type: string
          readOnly: true
          type: array
        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`.'
          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
        type:
          example: mp2mp_vc
          type: string
        vlan_config:
          $ref: '#/components/schemas/VlanConfig'
      required:
      - type
      title: MP2MPNetworkServiceConfigPatch
      type: object
    MP2MPNetworkServiceConfigRequest:
      allOf:
      - $ref: '#/components/schemas/NetworkServiceConfigRequest'
      description: MP2MP Network Service Config Request
      properties:
        billing_account:
          description: 'An account requires billing_information to be used as a `billing_account`.

            *(Sensitive Property)*'
          type: string
        capacity:
          description: 'The capacity of the service in Mbps. If set to Null,

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

            not rate-limited.


            An exchange may choose to constrain the available capacity range

            of a `ProductOffering`.


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

            of the `Connection`.


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


            Used to be `owning_customer`.

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

            a default MAY be chosen by the implementer.

            *(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
        macs:
          items:
            type: string
          type: array
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

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

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

            '
          example:
          - '12356'
          - '43829'
          items:
            type: string
          readOnly: true
          type: array
        network_service:
          description: The id of the `NetworkService` to configure.
          type: string
        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`.'
          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
        type:
          example: mp2mp_vc
          type: string
        vlan_config:
          $ref: '#/components/schemas/VlanConfig'
      required:
      - managing_account
      - consuming_account
      - network_service
      - billing_account
      - role_assignments
      - connection
      - vlan_config
      - type
      title: MP2MPNetworkServiceConfigRequest
      type: object
    MP2MPNetworkServiceConfigUpdate:
      allOf:
      - $ref: '#/components/schemas/NetworkServiceConfigUpdate'
      description: MP2MP Network Service Config Update
      properties:
        billing_account:
          description: 'An account requires billing_information to be used as a `billing_account`.

            *(Sensitive Property)*'
          type: string
        capacity:
          description: 'The capacity of the service in Mbps. If set to Null,

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

            not rate-limited.


            An exchange may choose to constrain the available capacity range

            of a `ProductOffering`.


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

            of the `Connection`.


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


            Used to be `owning_customer`.

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

            a default MAY be chosen by the implementer.

            *(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
        macs:
          items:
            type: string
          type: array
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

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

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

            '
          example:
          - '12356'
          - '43829'
          items:
            type: string
          readOnly: true
          type: array
        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`.'
          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
        type:
          example: mp2mp_vc
          type: string
        vlan_config:
          $ref: '#/components/schemas/VlanConfig'
      required:
      - managing_account
      - consuming_account
      - vlan_config
      - billing_account
      - role_assignments
      - connection
      - type
      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)*'
          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
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

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

            '
          example: '238189294'
          type: string
        product_offering:
          type: string
        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
        type:
          example: mp2mp_vc
          type: string
      required:
      - type
      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)*'
          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
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

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

            '
          example: '238189294'
          type: string
        product_offering:
          type: string
        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
        type:
          example: mp2mp_vc
          type: string
      required:
      - product_offering
      - managing_account
      - consuming_account
      - billing_account
      - type
      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)*'
          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
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

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

            '
          example: '238189294'
          type: string
        product_offering:
          type: string
        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
        type:
          example: mp2mp_vc
          type: string
      required:
      - product_offering
      - managing_account
      - consuming_account
      - billing_account
      - type
      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:
          maxLength: 80
          type: string
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

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

            '
          example: '238189294'
          type: string
        valid_not_after:
          format: date-time
          nullable: true
          type: string
        valid_not_before:
          format: date-time
          nullable: true
          type: string
      required:
      - managing_account
      - consuming_account
      - address
      - id
      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
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

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

            '
          example: '238189294'
          type: string
        valid_not_after:
          format: date-time
          nullable: true
          type: string
        valid_not_before:
          format: date-time
          nullable: true
          type: string
      required:
      - managing_account
      - consuming_account
      - address
      title: MacAddressRequest
      type: object
    MemberJoiningRule:
      description: Polymorphic Member Joining Rule
      discriminator:
        mapping:
          allow: '#/components/schemas/AllowMemberJoiningRule'
          deny: '#/components/schemas/DenyMemberJoiningRule'
        propertyName: type
      oneOf:
      - $ref: '#/components/schemas/AllowMemberJoiningRule'
      - $ref: '#/components/schemas/DenyMemberJoiningRule'
      title: MemberJoiningRule
      type: object
    MemberJoiningRulePatch:
      description: Polymorphic Member Joining Rule Update
      discriminator:
        mapping:
          allow: '#/components/schemas/AllowMemberJoiningRulePatch'
          deny: '#/components/schemas/DenyMemberJoiningRulePatch'
        propertyName: type
      oneOf:
      - $ref: '#/components/schemas/AllowMemberJoiningRulePatch'
      - $ref: '#/components/schemas/DenyMemberJoiningRulePatch'
      title: MemberJoiningRulePatch
      type: object
    MemberJoiningRuleRequest:
      description: Polymorphic Member Joining Rule Request
      discriminator:
        mapping:
          allow: '#/components/schemas/AllowMemberJoiningRuleRequest'
          deny: '#/components/schemas/DenyMemberJoiningRuleRequest'
        propertyName: type
      oneOf:
      - $ref: '#/components/schemas/AllowMemberJoiningRuleRequest'
      - $ref: '#/components/schemas/DenyMemberJoiningRuleRequest'
      title: MemberJoiningRuleRequest
      type: object
    MemberJoiningRuleUpdate:
      description: Polymorphic Member Joining Rule Update
      discriminator:
        mapping:
          allow: '#/components/schemas/AllowMemberJoiningRuleUpdate'
          deny: '#/components/schemas/DenyMemberJoiningRuleUpdate'
        propertyName: type
      oneOf:
      - $ref: '#/components/schemas/AllowMemberJoiningRuleUpdate'
      - $ref: '#/components/schemas/DenyMemberJoiningRuleUpdate'
      title: MemberJoiningRuleUpdate
      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.
          items:
            type: string
          type: array
        iata_code:
          description: 'The three letter IATA airport code for identiying the

            metro area.

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

            '
          example: DE FRA
          maxLength: 6
          type: string
      required:
      - id
      - un_locode
      - iata_code
      - display_name
      - facilities
      - metro_area_networks
      title: MetroArea
      type: object
    MetroAreaNetwork:
      description: MetroAreaNetwork
      properties:
        id:
          maxLength: 80
          type: string
        metro_area:
          description: 'The id of the metro area.

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

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

            Usually the exchange.

            '
          example: MY-IX
          maxLength: 128
          type: string
      required:
      - name
      - metro_area
      - service_provider
      - pops
      - id
      title: MetroAreaNetwork
      type: object
    NetworkFeature:
      description: Polymorphic Network Feature
      discriminator:
        mapping:
          route_server: '#/components/schemas/RouteServerNetworkFeature'
        propertyName: type
      oneOf:
      - $ref: '#/components/schemas/RouteServerNetworkFeature'
      title: NetworkFeature
      type: object
    NetworkFeatureConfig:
      description: Polymorphic Network Feature Config
      discriminator:
        mapping:
          route_server: '#/components/schemas/RouteServerNetworkFeatureConfig'
        propertyName: type
      oneOf:
      - $ref: '#/components/schemas/RouteServerNetworkFeatureConfig'
      title: NetworkFeatureConfig
      type: object
    NetworkFeatureConfigPatch:
      description: Polymorphic Network Feauture Config Patch
      discriminator:
        mapping:
          route_server: '#/components/schemas/RouteServerNetworkFeatureConfigPatch'
        propertyName: type
      oneOf:
      - $ref: '#/components/schemas/RouteServerNetworkFeatureConfigPatch'
      title: NetworkFeatureConfigPatch
      type: object
    NetworkFeatureConfigRequest:
      description: Polymorphic Network Feature Config Request
      discriminator:
        mapping:
          route_server: '#/components/schemas/RouteServerNetworkFeatureConfigRequest'
        propertyName: type
      oneOf:
      - $ref: '#/components/schemas/RouteServerNetworkFeatureConfigRequest'
      title: NetworkFeatureConfigRequest
      type: object
    NetworkFeatureConfigUpdate:
      description: Polymorphic Network Feauture Config Update
      discriminator:
        mapping:
          route_server: '#/components/schemas/RouteServerNetworkFeatureConfigUpdate'
        propertyName: type
      oneOf:
      - $ref: '#/components/schemas/RouteServerNetworkFeatureConfigUpdate'
      title: NetworkFeatureConfigUpdate
      type: object
    NetworkService:
      description: Polymorphic Network Services
      discriminator:
        mapping:
          cloud_vc: '#/components/schemas/CloudNetworkService'
          exchange_lan: '#/components/schemas/ExchangeLanNetworkService'
          mp2mp_vc: '#/components/schemas/MP2MPNetworkService'
          p2mp_vc: '#/components/schemas/P2MPNetworkService'
          p2p_vc: '#/components/schemas/P2PNetworkService'
        propertyName: type
      oneOf:
      - $ref: '#/components/schemas/ExchangeLanNetworkService'
      - $ref: '#/components/schemas/P2PNetworkService'
      - $ref: '#/components/schemas/P2MPNetworkService'
      - $ref: '#/components/schemas/MP2MPNetworkService'
      - $ref: '#/components/schemas/CloudNetworkService'
      title: NetworkService
      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.'
          type: string
      required:
      - product_offering
      title: NetworkServiceChangeRequest
      type: object
    NetworkServiceConfig:
      description: Polymorphic Network Service Config
      discriminator:
        mapping:
          cloud_vc: '#/components/schemas/CloudNetworkServiceConfig'
          exchange_lan: '#/components/schemas/ExchangeLanNetworkServiceConfig'
          mp2mp_vc: '#/components/schemas/MP2MPNetworkServiceConfig'
          p2mp_vc: '#/components/schemas/P2MPNetworkServiceConfig'
          p2p_vc: '#/components/schemas/P2PNetworkServiceConfig'
        propertyName: type
      oneOf:
      - $ref: '#/components/schemas/ExchangeLanNetworkServiceConfig'
      - $ref: '#/components/schemas/P2PNetworkServiceConfig'
      - $ref: '#/components/schemas/P2MPNetworkServiceConfig'
      - $ref: '#/components/schemas/MP2MPNetworkServiceConfig'
      - $ref: '#/components/schemas/CloudNetworkServiceConfig'
      title: NetworkServiceConfig
      type: object
    NetworkServiceConfigPatch:
      description: Polymorphic Network Service Config
      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
      oneOf:
      - $ref: '#/components/schemas/ExchangeLanNetworkServiceConfigPatch'
      - $ref: '#/components/schemas/P2PNetworkServiceConfigPatch'
      - $ref: '#/components/schemas/P2MPNetworkServiceConfigPatch'
      - $ref: '#/components/schemas/MP2MPNetworkServiceConfigPatch'
      - $ref: '#/components/schemas/CloudNetworkServiceConfigPatch'
      title: NetworkServiceConfigPatch
      type: object
    NetworkServiceConfigRequest:
      description: Polymorhic Network Service Config Request
      discriminator:
        mapping:
          cloud_vc: '#/components/schemas/CloudNetworkServiceConfigRequest'
          exchange_lan: '#/components/schemas/ExchangeLanNetworkServiceConfigRequest'
          mp2mp_vc: '#/components/schemas/MP2MPNetworkServiceConfigRequest'
          p2mp_vc: '#/components/schemas/P2MPNetworkServiceConfigRequest'
          p2p_vc: '#/components/schemas/P2PNetworkServiceConfigRequest'
        propertyName: type
      oneOf:
      - $ref: '#/components/schemas/ExchangeLanNetworkServiceConfigRequest'
      - $ref: '#/components/schemas/P2PNetworkServiceConfigRequest'
      - $ref: '#/components/schemas/P2MPNetworkServiceConfigRequest'
      - $ref: '#/components/schemas/MP2MPNetworkServiceConfigRequest'
      - $ref: '#/components/schemas/CloudNetworkServiceConfigRequest'
      title: NetworkServiceConfigRequest
      type: object
    NetworkServiceConfigUpdate:
      description: Polymorphic Network Service Config
      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
      oneOf:
      - $ref: '#/components/schemas/ExchangeLanNetworkServiceConfigUpdate'
      - $ref: '#/components/schemas/P2PNetworkServiceConfigUpdate'
      - $ref: '#/components/schemas/P2MPNetworkServiceConfigUpdate'
      - $ref: '#/components/schemas/MP2MPNetworkServiceConfigUpdate'
      - $ref: '#/components/schemas/CloudNetworkServiceConfigUpdate'
      title: NetworkServiceConfigUpdate
      type: object
    NetworkServiceDeleteResponse:
      description: Polymorphic Network Service Request
      discriminator:
        mapping:
          cloud_vc: '#/components/schemas/CloudNetworkService'
          mp2mp_vc: '#/components/schemas/MP2MPNetworkService'
          p2mp_vc: '#/components/schemas/P2MPNetworkService'
          p2p_vc: '#/components/schemas/P2PNetworkService'
        propertyName: type
      oneOf:
      - $ref: '#/components/schemas/P2PNetworkService'
      - $ref: '#/components/schemas/P2MPNetworkService'
      - $ref: '#/components/schemas/MP2MPNetworkService'
      - $ref: '#/components/schemas/CloudNetworkService'
      title: NetworkServiceDeleteResponse
      type: object
    NetworkServicePatch:
      description: Polymorphic Network Service Patch
      discriminator:
        mapping:
          cloud_vc: '#/components/schemas/CloudNetworkServicePatch'
          mp2mp_vc: '#/components/schemas/MP2MPNetworkServicePatch'
          p2mp_vc: '#/components/schemas/P2MPNetworkServicePatch'
          p2p_vc: '#/components/schemas/P2PNetworkServicePatch'
        propertyName: type
      oneOf:
      - $ref: '#/components/schemas/P2PNetworkServicePatch'
      - $ref: '#/components/schemas/P2MPNetworkServicePatch'
      - $ref: '#/components/schemas/MP2MPNetworkServicePatch'
      - $ref: '#/components/schemas/CloudNetworkServicePatch'
      title: NetworkServicePatch
      type: object
    NetworkServiceRequest:
      description: Polymorphic Network Service Request
      discriminator:
        mapping:
          cloud_vc: '#/components/schemas/CloudNetworkServiceRequest'
          mp2mp_vc: '#/components/schemas/MP2MPNetworkServiceRequest'
          p2mp_vc: '#/components/schemas/P2MPNetworkServiceRequest'
          p2p_vc: '#/components/schemas/P2PNetworkServiceRequest'
        propertyName: type
      oneOf:
      - $ref: '#/components/schemas/P2PNetworkServiceRequest'
      - $ref: '#/components/schemas/P2MPNetworkServiceRequest'
      - $ref: '#/components/schemas/MP2MPNetworkServiceRequest'
      - $ref: '#/components/schemas/CloudNetworkServiceRequest'
      title: NetworkServiceRequest
      type: object
    NetworkServiceUpdate:
      description: Polymorphic Network Service Update
      discriminator:
        mapping:
          cloud_vc: '#/components/schemas/CloudNetworkServiceUpdate'
          mp2mp_vc: '#/components/schemas/MP2MPNetworkServiceUpdate'
          p2mp_vc: '#/components/schemas/P2MPNetworkServiceUpdate'
          p2p_vc: '#/components/schemas/P2PNetworkServiceUpdate'
        propertyName: type
      oneOf:
      - $ref: '#/components/schemas/P2PNetworkServiceUpdate'
      - $ref: '#/components/schemas/P2MPNetworkServiceUpdate'
      - $ref: '#/components/schemas/MP2MPNetworkServiceUpdate'
      - $ref: '#/components/schemas/CloudNetworkServiceUpdate'
      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_terms:
          description: 'The contract terms informally describe the contract period
            and

            renewals.

            '
          example: 2 weeks and 1 day, renewing every 37 days afterwards, first 66
            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:
          maxLength: 80
          type: string
        name:
          description: Name of the product
          maxLength: 160
          type: string
        notice_period:
          description: '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
        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
          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
        type:
          example: p2mp_vc
          type: string
        upgrade_allowed:
          description: 'Indicates if the service can be migrated to

            a higher bandwidth.'
          type: boolean
      required:
      - id
      - name
      - display_name
      - resource_type
      - handover_metro_area_network
      - handover_metro_area
      - physical_port_speed
      - service_provider
      - downgrade_allowed
      - upgrade_allowed
      - provider_vlans
      - service_metro_area_network
      - service_metro_area
      - bandwidth_min
      - bandwidth_max
      - type
      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_terms:
          description: 'The contract terms informally describe the contract period
            and

            renewals.

            '
          example: 2 weeks and 1 day, renewing every 37 days afterwards, first 66
            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:
          maxLength: 80
          type: string
        name:
          description: Name of the product
          maxLength: 160
          type: string
        notice_period:
          description: '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
        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
          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
        type:
          example: p2mp_vc
          type: string
        upgrade_allowed:
          description: 'Indicates if the service can be migrated to

            a higher bandwidth.'
          type: boolean
      required:
      - type
      title: 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)*'
          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:
          type: string
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

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

            '
          example: '238189294'
          type: string
        member_joining_rules:
          items:
            type: string
          type: array
        network_features:
          items:
            type: string
          type: array
        nsc_product_offerings:
          description: 'An optional list of `ProductOffering`s which can be used in
            the

            network service configs for this service.'
          items:
            type: string
          type: array
        nsc_required_contact_roles:
          description: 'The configuration will require at least one of each of the

            specified roles assigned to contacts.


            The `RoleAssignment` is associated through the

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

            by everyone on the exchange unless denied by

            a member-joining-rule.


            Public network services are visible to other

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

            `product_offering`, `consuming_account` and

            `managing_account` are made

            available.


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

            *(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
        type:
          example: p2mp_vc
          type: string
      required:
      - state
      - id
      - product_offering
      - managing_account
      - consuming_account
      - billing_account
      - network_features
      - member_joining_rules
      - type
      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)*'
          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`.
          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:
          maxLength: 80
          type: string
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

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

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

            '
          example:
          - '12356'
          - '43829'
          items:
            type: string
          readOnly: true
          type: array
        network_service:
          description: The id of the configured network service.
          type: string
        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`.'
          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
        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
        type:
          example: p2mp_vc
          type: string
        vlan_config:
          $ref: '#/components/schemas/VlanConfig'
      required:
      - managing_account
      - consuming_account
      - billing_account
      - role_assignments
      - connection
      - vlan_config
      - state
      - id
      - network_service
      - type
      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)*'
          type: string
        capacity:
          description: 'The capacity of the service in Mbps. If set to Null,

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

            not rate-limited.


            An exchange may choose to constrain the available capacity range

            of a `ProductOffering`.


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

            of the `Connection`.


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


            Used to be `owning_customer`.

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

            a default MAY be chosen by the implementer.

            *(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
        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`.'
          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
        type:
          example: p2mp_vc
          type: string
        vlan_config:
          $ref: '#/components/schemas/VlanConfig'
      required:
      - type
      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)*'
          type: string
        capacity:
          description: 'The capacity of the service in Mbps. If set to Null,

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

            not rate-limited.


            An exchange may choose to constrain the available capacity range

            of a `ProductOffering`.


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

            of the `Connection`.


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


            Used to be `owning_customer`.

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

            a default MAY be chosen by the implementer.

            *(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
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

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

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

            '
          example:
          - '12356'
          - '43829'
          items:
            type: string
          readOnly: true
          type: array
        network_service:
          description: The id of the `NetworkService` to configure.
          type: string
        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`.'
          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
        type:
          example: p2mp_vc
          type: string
        vlan_config:
          $ref: '#/components/schemas/VlanConfig'
      required:
      - managing_account
      - consuming_account
      - network_service
      - billing_account
      - role_assignments
      - connection
      - vlan_config
      - type
      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)*'
          type: string
        capacity:
          description: 'The capacity of the service in Mbps. If set to Null,

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

            not rate-limited.


            An exchange may choose to constrain the available capacity range

            of a `ProductOffering`.


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

            of the `Connection`.


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


            Used to be `owning_customer`.

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

            a default MAY be chosen by the implementer.

            *(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
        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`.'
          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
        type:
          example: p2mp_vc
          type: string
        vlan_config:
          $ref: '#/components/schemas/VlanConfig'
      required:
      - managing_account
      - consuming_account
      - billing_account
      - role_assignments
      - connection
      - vlan_config
      - type
      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)*'
          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
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

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

            '
          example: '238189294'
          type: string
        product_offering:
          type: string
        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
        type:
          example: p2mp_vc
          type: string
      required:
      - type
      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)*'
          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
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

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

            '
          example: '238189294'
          type: string
        product_offering:
          type: string
        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
        type:
          example: p2mp_vc
          type: string
      required:
      - product_offering
      - managing_account
      - consuming_account
      - billing_account
      - type
      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)*'
          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
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

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

            '
          example: '238189294'
          type: string
        product_offering:
          type: string
        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
        type:
          example: p2mp_vc
          type: string
      required:
      - product_offering
      - managing_account
      - consuming_account
      - billing_account
      - type
      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_terms:
          description: 'The contract terms informally describe the contract period
            and

            renewals.

            '
          example: 2 weeks and 1 day, renewing every 37 days afterwards, first 66
            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:
          maxLength: 80
          type: string
        name:
          description: Name of the product
          maxLength: 160
          type: string
        notice_period:
          description: '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
        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
          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
        type:
          example: p2p_vc
          type: string
        upgrade_allowed:
          description: 'Indicates if the service can be migrated to

            a higher bandwidth.'
          type: boolean
      required:
      - id
      - name
      - display_name
      - resource_type
      - handover_metro_area_network
      - handover_metro_area
      - physical_port_speed
      - service_provider
      - downgrade_allowed
      - upgrade_allowed
      - provider_vlans
      - service_metro_area_network
      - service_metro_area
      - bandwidth_min
      - bandwidth_max
      - type
      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_terms:
          description: 'The contract terms informally describe the contract period
            and

            renewals.

            '
          example: 2 weeks and 1 day, renewing every 37 days afterwards, first 66
            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:
          maxLength: 80
          type: string
        name:
          description: Name of the product
          maxLength: 160
          type: string
        notice_period:
          description: '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
        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
          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
        type:
          example: p2p_vc
          type: string
        upgrade_allowed:
          description: 'Indicates if the service can be migrated to

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

            *(Sensitive Property)*'
          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:
          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`s which can be used in
            the

            network service configs for this service.'
          items:
            type: string
          type: array
        nsc_required_contact_roles:
          description: 'The configuration will require at least one of each of the

            specified roles assigned to contacts.


            The `RoleAssignment` is associated through the

            `role_assignments` list property of the network service configuration.'
          items:
            type: string
          readOnly: true
          type: array
        product_offering:
          type: string
        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
        type:
          example: p2p_vc
          type: string
      required:
      - state
      - id
      - product_offering
      - managing_account
      - consuming_account
      - billing_account
      - joining_member_account
      - type
      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)*'
          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`.
          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:
          maxLength: 80
          type: string
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

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

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

            '
          example:
          - '12356'
          - '43829'
          items:
            type: string
          readOnly: true
          type: array
        network_service:
          description: The id of the configured network service.
          type: string
        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`.'
          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
        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
        type:
          example: p2p_vc
          type: string
        vlan_config:
          $ref: '#/components/schemas/VlanConfig'
      required:
      - state
      - id
      - network_service
      - managing_account
      - consuming_account
      - billing_account
      - role_assignments
      - connection
      - vlan_config
      - type
      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)*'
          type: string
        capacity:
          description: 'The capacity of the service in Mbps. If set to Null,

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

            not rate-limited.


            An exchange may choose to constrain the available capacity range

            of a `ProductOffering`.


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

            of the `Connection`.


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


            Used to be `owning_customer`.

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

            a default MAY be chosen by the implementer.

            *(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
        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`.'
          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
        type:
          example: p2p_vc
          type: string
        vlan_config:
          $ref: '#/components/schemas/VlanConfig'
      required:
      - type
      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)*'
          type: string
        capacity:
          description: 'The capacity of the service in Mbps. If set to Null,

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

            not rate-limited.


            An exchange may choose to constrain the available capacity range

            of a `ProductOffering`.


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

            of the `Connection`.


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


            Used to be `owning_customer`.

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

            a default MAY be chosen by the implementer.

            *(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
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

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

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

            '
          example:
          - '12356'
          - '43829'
          items:
            type: string
          readOnly: true
          type: array
        network_service:
          description: The id of the `NetworkService` to configure.
          type: string
        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`.'
          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
        type:
          example: p2p_vc
          type: string
        vlan_config:
          $ref: '#/components/schemas/VlanConfig'
      required:
      - managing_account
      - consuming_account
      - network_service
      - billing_account
      - role_assignments
      - connection
      - vlan_config
      - type
      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)*'
          type: string
        capacity:
          description: 'The capacity of the service in Mbps. If set to Null,

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

            not rate-limited.


            An exchange may choose to constrain the available capacity range

            of a `ProductOffering`.


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

            of the `Connection`.


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


            Used to be `owning_customer`.

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

            a default MAY be chosen by the implementer.

            *(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
        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`.'
          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
        type:
          example: p2p_vc
          type: string
        vlan_config:
          $ref: '#/components/schemas/VlanConfig'
      required:
      - managing_account
      - consuming_account
      - vlan_config
      - billing_account
      - role_assignments
      - connection
      - type
      title: P2PNetworkServiceConfigUpdate
      type: object
    P2PNetworkServicePatch:
      allOf:
      - $ref: '#/components/schemas/NetworkServicePatch'
      description: P2P Network Service Update
      properties:
        billing_account:
          description: 'An account requires billing_information to be used as a `billing_account`.

            *(Sensitive Property)*'
          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
        joining_member_account:
          description: 'The account of the B-side member joining the virtual circuit.

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

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

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

            *(Sensitive Property)*

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

            *(Sensitive Property)*'
          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
        joining_member_account:
          description: 'The account of the B-side member joining the virtual circuit.

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

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

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

            *(Sensitive Property)*

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

            *(Sensitive Property)*'
          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
        joining_member_account:
          description: 'The account of the B-side member joining the virtual circuit.

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

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

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

            *(Sensitive Property)*

            '
          example: 'Project: DC Moon'
          maxLength: 80
          type: string
        type:
          example: p2p_vc
          type: string
      required:
      - product_offering
      - managing_account
      - consuming_account
      - billing_account
      - joining_member_account
      - type
      title: P2PNetworkServiceUpdate
      type: object
    PointOfPresence:
      description: Point Of Presence
      properties:
        devices:
          items:
            type: string
          type: array
        facility:
          description: The pop is located in this `Facility`.
          type: string
        id:
          maxLength: 80
          type: string
        metro_area_network:
          type: string
        name:
          maxLength: 40
          type: string
      required:
      - name
      - facility
      - metro_area_network
      - devices
      - id
      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)*'
          type: string
        connection:
          nullable: true
          type: string
        consuming_account:
          description: 'The `id` of the account consuming a service.


            Used to be `owning_customer`.

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

            a default MAY be chosen by the implementer.

            *(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:
          maxLength: 80
          type: string
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

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

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

            Query the device''s capabilities for available types.

            '
          example: 10GBASE-LR
          maxLength: 20
          type: string
        name:
          default: ''
          description: Name of the port (set by the exchange)
          maxLength: 80
          readOnly: true
          type: string
        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:
      - state
      - managing_account
      - consuming_account
      - billing_account
      - role_assignments
      - id
      - media_type
      - device
      - pop
      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.
          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:
          type: string
        port:
          description: 'This field will be null, until a port will

            be allocated.'
          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:
      - state
      - id
      - connection
      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
        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.
          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
        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
      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
        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: 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 aggregate interval as a

            string representation is used. For example: `5m`, `1d`, `30d`,

            `1y`.


            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:
            30d:
              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'
              precision: 3600
              title: 30 Days
              total_samples: 720
            5m:
              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'
              precision: 300
              title: 5 Minutes
              total_samples: 1
          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:
      - aggregates
      - light_levels_tx
      - light_levels_rx
      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
        type:
          description: 'A URI reference (see RFC3986) that identifies the

            problem type.


            This specification encourages that, when

            dereferenced, it provide human-readable documentation

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

            [W3C.REC-html5-20141028]).


            When this member is not present, its value is assumed

            to be "about:blank".

            '
          example: about:blank
          type: string
      required:
      - type
      title: ProblemResponse
      type: object
    ProductOffering:
      description: Polymorphic Product Offering
      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'
        propertyName: type
      oneOf:
      - $ref: '#/components/schemas/ConnectionProductOffering'
      - $ref: '#/components/schemas/ExchangeLanNetworkProductOffering'
      - $ref: '#/components/schemas/P2PNetworkProductOffering'
      - $ref: '#/components/schemas/MP2MPNetworkProductOffering'
      - $ref: '#/components/schemas/P2MPNetworkProductOffering'
      - $ref: '#/components/schemas/CloudNetworkProductOffering'
      title: ProductOffering
      type: object
    ProductOfferingPatch:
      description: Polymorphic Product Offering
      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'
        propertyName: type
      oneOf:
      - $ref: '#/components/schemas/ConnectionProductOfferingPatch'
      - $ref: '#/components/schemas/ExchangeLanNetworkProductOfferingPatch'
      - $ref: '#/components/schemas/P2PNetworkProductOfferingPatch'
      - $ref: '#/components/schemas/MP2MPNetworkProductOfferingPatch'
      - $ref: '#/components/schemas/P2MPNetworkProductOfferingPatch'
      - $ref: '#/components/schemas/CloudNetworkProductOfferingPatch'
      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:
          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:
      - name
      - required_fields
      - id
      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:
          type: string
        role:
          description: 'The `id` of a role the contact is assigned to.

            '
          example: role:23
          type: string
      required:
      - role
      - contact
      - id
      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:
      - role
      - contact
      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:
      - role
      - contact
      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:
      - name
      - required_fields
      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:
      - name
      - required_fields
      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:
          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:
          type: string
        nfc_required_contact_roles:
          description: 'The configuration will require at least one of each of the

            specified roles assigned to contacts.


            The role assignments is associated with the network feature

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

            to specify the same session_mode as the route server.

            '
          enum:
          - public
          - collector
          example: public
          type: string
        type:
          example: route_server
          type: string
      required:
      - id
      - name
      - required
      - flags
      - network_service
      - asn
      - fqdn
      - address_families
      - session_mode
      - available_bgp_session_types
      - type
      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)*'
          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:
          maxLength: 80
          type: string
        insert_ixp_asn:
          default: true
          description: 'Insert the ASN of the exchange into the AS path. This function
            is only

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

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

            referenced by ID.


            Only IDs of IPs assigned to the corresponding network service

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

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

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

            session will be droped.

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

            session will be droped.

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

            *(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
        type:
          example: route_server
          type: string
      required:
      - state
      - managing_account
      - consuming_account
      - billing_account
      - role_assignments
      - network_feature
      - network_service_config
      - asn
      - session_mode
      - bgp_session_type
      - ip
      - id
      - type
      title: RouteServerNetworkFeatureConfig
      type: object
    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.'
          type: string
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

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

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

            session will be droped.

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

            session will be droped.

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

            '
          enum:
          - public
          - collector
          example: public
          type: string
        type:
          example: route_server
          type: string
      required:
      - type
      title: 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)*'
          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
        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.'
          type: string
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

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

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

            session will be droped.

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

            session will be droped.

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

            *(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
        type:
          example: route_server
          type: string
      required:
      - managing_account
      - consuming_account
      - billing_account
      - role_assignments
      - network_feature
      - network_service_config
      - asn
      - session_mode
      - bgp_session_type
      - ip
      - type
      title: RouteServerNetworkFeatureConfigRequest
      type: object
    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.'
          type: string
        managing_account:
          description: 'The `id` of the account responsible for managing the service
            via

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

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

            session will be droped.

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

            session will be droped.

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

            '
          enum:
          - public
          - collector
          example: public
          type: string
        type:
          example: route_server
          type: string
      required:
      - managing_account
      - consuming_account
      - asn
      - session_mode
      - bgp_session_type
      - ip
      - type
      title: RouteServerNetworkFeatureConfigUpdate
      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:
      - severity
      - tag
      - message
      - timestamp
      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
        vlan_type:
          example: dot1q
          type: string
      required:
      - vlan_type
      title: VLanConfigDot1Q
      type: object
    VLanConfigPort:
      allOf:
      - $ref: '#/components/schemas/VlanConfig'
      description: A Port vlan configuration
      properties:
        vlan_type:
          example: port
          type: string
      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
        vlan_type:
          example: dot1q
          type: string
      required:
      - inner_vlan
      - vlan_type
      title: VLanConfigQinQ
      type: object
    ValidationErrorProperty:
      description: A failed validation
      properties:
        name:
          type: string
        reason:
          type: string
      required:
      - name
      - reason
      title: ValidationErrorProperty
      type: object
    VlanConfig:
      description: 'The vlan configuration defines how the service

        is made available on the connection.'
      discriminator:
        mapping:
          dot1q: '#/components/schemas/VLanConfigDot1Q'
          port: '#/components/schemas/VLanConfigPort'
          qinq: '#/components/schemas/VLanConfigQinQ'
        propertyName: vlan_type
      oneOf:
      - $ref: '#/components/schemas/VLanConfigDot1Q'
      - $ref: '#/components/schemas/VLanConfigQinQ'
      - $ref: '#/components/schemas/VLanConfigPort'
      title: VlanConfig
      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.


    # 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.4.1
openapi: 3.0.0
paths:
  /accounts:
    get:
      description: 'Retrieve a list of `Account`s.


        This includes all accounts the currently authorized account

        is managing and the current account itself.


        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: Filter by state
        in: query
        name: state
        required: false
        schema:
          type: string
      - description: Filter by state__is_not
        in: query
        name: state__is_not
        required: false
        schema:
          type: string
      - description: Filter by managing_account
        in: query
        name: managing_account
        required: false
        schema:
          type: string
      - description: Filter by billable
        in: query
        name: billable
        required: false
        schema:
          type: integer
      - description: Filter by external_ref
        in: query
        name: external_ref
        required: false
        schema:
          type: string
      - description: Filter by name
        in: query
        name: name
        required: false
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Account'
                type: array
          description: 'List of: Account'
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Some fields did not validate.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
                - 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 parts of an account.
      operationId: accounts_partial_update
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      requestBody:
        content:
          application/merge-patch+json:
            schema:
              $ref: '#/components/schemas/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: 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
  /connections:
    get:
      description: List all `connection`s.
      operationId: connections_list
      parameters:
      - description: Filter by id
        explode: false
        in: query
        name: id
        required: false
        schema:
          example: id1,id2,id3
          items:
            type: string
          type: array
        style: form
      - description: Filter by state
        in: query
        name: state
        required: false
        schema:
          type: string
      - description: Filter by state__is_not
        in: query
        name: state__is_not
        required: false
        schema:
          type: string
      - description: Filter by mode
        in: query
        name: mode
        required: false
        schema:
          type: string
      - description: Filter by mode__is_not
        in: query
        name: mode__is_not
        required: false
        schema:
          type: string
      - description: Filter by name
        in: query
        name: name
        required: false
        schema:
          type: string
      - description: Filter by metro_area_network
        in: query
        name: metro_area_network
        required: false
        schema:
          type: string
      - description: Filter by pop
        in: query
        name: pop
        required: false
        schema:
          type: string
      - description: Filter by facility
        in: query
        name: facility
        required: false
        schema:
          type: string
      - description: Filter by 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 by external_ref
        in: query
        name: external_ref
        required: false
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Connection'
                type: array
          description: 'List of: Connection'
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Some fields did not validate.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
                - 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
                      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
                  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: Partially 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: 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
      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
        '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
        '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
        '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
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
                - {}
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
                - {}
          description: PermissionDenied
        '404':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 404
                    title:
                      example: Not found.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/not-found.html
                      type: string
                  type: object
                - {}
          description: NotFound
      tags:
      - connections
  /contacts:
    get:
      description: List available contacts managed by the authorized account.
      operationId: contacts_list
      parameters:
      - description: Filter by id
        explode: false
        in: query
        name: id
        required: false
        schema:
          example: id1,id2,id3
          items:
            type: string
          type: array
        style: form
      - description: Filter by managing_account
        in: query
        name: managing_account
        required: false
        schema:
          type: string
      - description: Filter by consuming_account
        in: query
        name: consuming_account
        required: false
        schema:
          type: string
      - description: Filter by external_ref
        in: query
        name: external_ref
        required: false
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Contact'
                type: array
          description: 'List of: Contact'
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Some fields did not validate.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
                - 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 parts of a contact
      operationId: contacts_partial_update
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      requestBody:
        content:
          application/merge-patch+json:
            schema:
              $ref: '#/components/schemas/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: 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: Filter by name
        in: query
        name: name
        required: false
        schema:
          type: string
      - description: Filter by capability_media_type
        in: query
        name: capability_media_type
        required: false
        schema:
          type: string
      - description: Filter by capability_speed
        in: query
        name: capability_speed
        required: false
        schema:
          type: integer
      - description: Filter by capability_speed__lt
        in: query
        name: capability_speed__lt
        required: false
        schema:
          type: integer
      - description: Filter by capability_speed__lte
        in: query
        name: capability_speed__lte
        required: false
        schema:
          type: integer
      - description: Filter by capability_speed__gt
        in: query
        name: capability_speed__gt
        required: false
        schema:
          type: integer
      - description: Filter by capability_speed__gte
        in: query
        name: capability_speed__gte
        required: false
        schema:
          type: integer
      - description: Filter by facility
        in: query
        name: facility
        required: false
        schema:
          type: string
      - description: Filter by pop
        in: query
        name: pop
        required: false
        schema:
          type: string
      - description: Filter by metro_area_network
        in: query
        name: metro_area_network
        required: false
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Device'
                type: array
          description: 'List of: Device'
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Some fields did not validate.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
                - 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
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/ApiExtensions'
                type: array
          description: 'List of: Implementation specific API extensions'
      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: Filter by capability_media_type
        in: query
        name: capability_media_type
        required: false
        schema:
          type: string
      - description: Filter by capability_speed
        in: query
        name: capability_speed
        required: false
        schema:
          type: integer
      - description: Filter by capability_speed__lt
        in: query
        name: capability_speed__lt
        required: false
        schema:
          type: integer
      - description: Filter by capability_speed__lte
        in: query
        name: capability_speed__lte
        required: false
        schema:
          type: integer
      - description: Filter by capability_speed__gt
        in: query
        name: capability_speed__gt
        required: false
        schema:
          type: integer
      - description: Filter by capability_speed__gte
        in: query
        name: capability_speed__gte
        required: false
        schema:
          type: integer
      - description: Filter by organisation_name
        in: query
        name: organisation_name
        required: false
        schema:
          type: string
      - description: Filter by metro_area
        in: query
        name: metro_area
        required: false
        schema:
          type: string
      - description: Filter by metro_area_network
        in: query
        name: metro_area_network
        required: false
        schema:
          type: string
      - description: Filter by address_country
        in: query
        name: address_country
        required: false
        schema:
          type: string
      - description: Filter by address_locality
        in: query
        name: address_locality
        required: false
        schema:
          type: string
      - description: Filter by postal_code
        in: query
        name: postal_code
        required: false
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Facility'
                type: array
          description: 'List of: Facility'
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Some fields did not validate.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
                - 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:
                items:
                  $ref: '#/components/schemas/Facility'
                type: array
          description: 'List of: Facility'
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
                - {}
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
                - {}
          description: PermissionDenied
        '404':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 404
                    title:
                      example: Not found.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/not-found.html
                      type: string
                  type: object
                - {}
          description: NotFound
      tags:
      - facilities
  /health:
    get:
      description: Get the IX-API service health status.
      operationId: 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: Filter by managing_account
        in: query
        name: managing_account
        required: false
        schema:
          type: string
      - description: Filter by consuming_account
        in: query
        name: consuming_account
        required: false
        schema:
          type: string
      - description: Filter by external_ref
        in: query
        name: external_ref
        required: false
        schema:
          type: string
      - description: Filter by network_service
        in: query
        name: network_service
        required: false
        schema:
          type: string
      - description: Filter by network_service_config
        in: query
        name: network_service_config
        required: false
        schema:
          type: string
      - description: Filter by network_feature
        in: query
        name: network_feature
        required: false
        schema:
          type: string
      - description: Filter by network_feature_config
        in: query
        name: network_feature_config
        required: false
        schema:
          type: string
      - description: Filter by version
        in: query
        name: version
        required: false
        schema:
          type: integer
      - description: Filter by fqdn
        in: query
        name: fqdn
        required: false
        schema:
          type: string
      - description: Filter by prefix_length
        in: query
        name: prefix_length
        required: false
        schema:
          type: integer
      - description: Filter by valid_not_before
        in: query
        name: valid_not_before
        required: false
        schema:
          type: string
      - description: Filter by valid_not_after
        in: query
        name: valid_not_after
        required: false
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/IpAddress'
                type: array
          description: 'List of: IP-Address'
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Some fields did not validate.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
                - 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
      tags:
      - ips
  /ips/{id}:
    get:
      description: Get a single ip addresses by it's id.
      operationId: ips_read
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IpAddress'
          description: IP-Address
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
                - {}
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
                - {}
          description: PermissionDenied
        '404':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 404
                    title:
                      example: Not found.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/not-found.html
                      type: string
                  type: object
                - {}
          description: NotFound
      tags:
      - ips
    patch:
      description: 'Update parts of an ip address.



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

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

        error when attempting an update.


        If the ip address was allocated for you, you might

        not be able to change anything but the `fqdn`.'
      operationId: ips_partial_update
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      requestBody:
        content:
          application/merge-patch+json:
            schema:
              $ref: '#/components/schemas/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: '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: Filter by managing_account
        in: query
        name: managing_account
        required: false
        schema:
          type: string
      - description: Filter by consuming_account
        in: query
        name: consuming_account
        required: false
        schema:
          type: string
      - description: Filter by external_ref
        in: query
        name: external_ref
        required: false
        schema:
          type: string
      - description: Filter by network_service_config
        in: query
        name: network_service_config
        required: false
        schema:
          type: string
      - description: Filter by address
        in: query
        name: address
        required: false
        schema:
          type: string
      - description: Filter by assigned_at
        in: query
        name: assigned_at
        required: false
        schema:
          type: string
      - description: Filter by valid_not_before
        in: query
        name: valid_not_before
        required: false
        schema:
          type: string
      - description: Filter by valid_not_after
        in: query
        name: valid_not_after
        required: false
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/MacAddress'
                type: array
          description: 'List of: MAC-Address'
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Some fields did not validate.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
                - 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: Filter by network_service
        in: query
        name: network_service
        required: false
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/MemberJoiningRule'
                type: array
          description: 'List of: Polymorphic Member Joining Rule'
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Some fields did not validate.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
                - 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: Partially update a joining rule
      operationId: member_joining_rules_partial_update
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      requestBody:
        content:
          application/merge-patch+json:
            schema:
              $ref: '#/components/schemas/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: 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: Filter by name
        in: query
        name: name
        required: false
        schema:
          type: string
      - description: Filter by metro_area
        in: query
        name: metro_area
        required: false
        schema:
          type: string
      - description: Filter by service_provider
        in: query
        name: service_provider
        required: false
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/MetroAreaNetwork'
                type: array
          description: 'List of: MetroAreaNetwork'
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Some fields did not validate.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
                - 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
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/MetroArea'
                type: array
          description: 'List of: MetroArea'
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Some fields did not validate.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
                - 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:
                items:
                  $ref: '#/components/schemas/MetroArea'
                type: array
          description: 'List of: MetroArea'
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
                - {}
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
                - {}
          description: PermissionDenied
        '404':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 404
                    title:
                      example: Not found.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/not-found.html
                      type: string
                  type: object
                - {}
          description: NotFound
      tags:
      - metro-areas
  /network-feature-configs:
    get:
      description: Get all network feature configs.
      operationId: network_feature_configs_list
      parameters:
      - description: Filter by id
        explode: false
        in: query
        name: id
        required: false
        schema:
          example: id1,id2,id3
          items:
            type: string
          type: array
        style: form
      - description: Filter by state
        in: query
        name: state
        required: false
        schema:
          type: string
      - description: Filter by state__is_not
        in: query
        name: state__is_not
        required: false
        schema:
          type: string
      - description: Filter by managing_account
        in: query
        name: managing_account
        required: false
        schema:
          type: string
      - description: Filter by consuming_account
        in: query
        name: consuming_account
        required: false
        schema:
          type: string
      - description: Filter by external_ref
        in: query
        name: external_ref
        required: false
        schema:
          type: string
      - description: Filter by type
        in: query
        name: type
        required: false
        schema:
          enum:
          - route_server
          type: string
      - description: Filter by service_config
        in: query
        name: service_config
        required: false
        schema:
          type: string
      - description: Filter by network_feature
        in: query
        name: network_feature
        required: false
        schema:
          type: string
      - 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'
        '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 parts of a network feature configuration
      operationId: network_feature_configs_partial_update
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      requestBody:
        content:
          application/merge-patch+json:
            schema:
              $ref: '#/components/schemas/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: 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: Filter by type
        in: query
        name: type
        required: false
        schema:
          enum:
          - route_server
          type: string
      - description: Filter by required
        in: query
        name: required
        required: false
        schema:
          type: string
      - description: Filter by network_service
        in: query
        name: network_service
        required: false
        schema:
          type: string
      - description: Filter by name
        in: query
        name: name
        required: false
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/NetworkFeature'
                type: array
          description: 'List of: Polymorphic Network Feature'
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Some fields did not validate.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
                - 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: Filter by state
        in: query
        name: state
        required: false
        schema:
          type: string
      - description: Filter by state__is_not
        in: query
        name: state__is_not
        required: false
        schema:
          type: string
      - description: Filter by managing_account
        in: query
        name: managing_account
        required: false
        schema:
          type: string
      - description: Filter by consuming_account
        in: query
        name: consuming_account
        required: false
        schema:
          type: string
      - description: Filter by external_ref
        in: query
        name: external_ref
        required: false
        schema:
          type: string
      - description: Filter by type
        in: query
        name: type
        required: false
        schema:
          enum:
          - exchange_lan
          - p2p_vc
          - p2mp_vc
          - mp2mp_vc
          - cloud_vc
          type: string
      - description: Filter by inner_vlan
        in: query
        name: inner_vlan
        required: false
        schema:
          type: integer
      - description: Filter by outer_vlan
        in: query
        name: outer_vlan
        required: false
        schema:
          type: integer
      - description: Filter by capacity
        in: query
        name: capacity
        required: false
        schema:
          type: integer
      - description: Filter by network_service
        in: query
        name: network_service
        required: false
        schema:
          type: string
      - description: Filter by connection
        in: query
        name: connection
        required: false
        schema:
          type: string
      - 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'
        '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
                      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
                  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 parts of an exisiting `network-service-config`.
      operationId: network_service_configs_partial_update
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      requestBody:
        content:
          application/merge-patch+json:
            schema:
              $ref: '#/components/schemas/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: 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
        '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/Aggregate'
          description: Mapping of Aggregated Statistics
        '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
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
                - {}
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
                - {}
          description: PermissionDenied
        '404':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 404
                    title:
                      example: Not found.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/not-found.html
                      type: string
                  type: object
                - {}
          description: NotFound
      tags:
      - network-service-configs
  /network-services:
    get:
      description: List available `NetworkService`s.
      operationId: network_services_list
      parameters:
      - description: Filter by id
        explode: false
        in: query
        name: id
        required: false
        schema:
          example: id1,id2,id3
          items:
            type: string
          type: array
        style: form
      - description: Filter by state
        in: query
        name: state
        required: false
        schema:
          type: string
      - description: Filter by state__is_not
        in: query
        name: state__is_not
        required: false
        schema:
          type: string
      - description: Filter by managing_account
        in: query
        name: managing_account
        required: false
        schema:
          type: string
      - description: Filter by consuming_account
        in: query
        name: consuming_account
        required: false
        schema:
          type: string
      - description: Filter by external_ref
        in: query
        name: external_ref
        required: false
        schema:
          type: string
      - description: Filter by type
        in: query
        name: type
        required: false
        schema:
          enum:
          - exchange_lan
          - p2p_vc
          - p2mp_vc
          - mp2mp_vc
          - cloud_vc
          type: string
      - description: Filter by pop
        in: query
        name: pop
        required: false
        schema:
          type: string
      - description: Filter by product_offering
        in: query
        name: product_offering
        required: false
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/NetworkService'
                type: array
          description: 'List of: Polymorphic Network Services'
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Some fields did not validate.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
                - 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
                      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
                  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: Partially update a network service
      operationId: network_services_partial_update
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      requestBody:
        content:
          application/merge-patch+json:
            schema:
              $ref: '#/components/schemas/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: 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
        '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}/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
        '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
        '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: Filter by facility
        in: query
        name: facility
        required: false
        schema:
          type: string
      - description: Filter by metro_area_network
        in: query
        name: metro_area_network
        required: false
        schema:
          type: string
      - description: Filter by capability_media_type
        in: query
        name: capability_media_type
        required: false
        schema:
          type: string
      - description: Filter by capability_speed
        in: query
        name: capability_speed
        required: false
        schema:
          type: integer
      - description: Filter by capability_speed__lt
        in: query
        name: capability_speed__lt
        required: false
        schema:
          type: integer
      - description: Filter by capability_speed__lte
        in: query
        name: capability_speed__lte
        required: false
        schema:
          type: integer
      - description: Filter by capability_speed__gt
        in: query
        name: capability_speed__gt
        required: false
        schema:
          type: integer
      - description: Filter by capability_speed__gte
        in: query
        name: capability_speed__gte
        required: false
        schema:
          type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/PointOfPresence'
                type: array
          description: 'List of: Point Of Presence'
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Some fields did not validate.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
                - 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: 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'
        '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
                      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
                  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: Partially 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: 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
      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
        '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
        '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: Filter by state
        in: query
        name: state
        required: false
        schema:
          type: string
      - description: Filter by state__is_not
        in: query
        name: state__is_not
        required: false
        schema:
          type: string
      - description: Filter by media_type
        in: query
        name: media_type
        required: false
        schema:
          type: string
      - description: Filter by pop
        in: query
        name: pop
        required: false
        schema:
          type: string
      - description: Filter by name
        in: query
        name: name
        required: false
        schema:
          type: string
      - description: Filter by external_ref
        in: query
        name: external_ref
        required: false
        schema:
          type: string
      - description: Filter by device
        in: query
        name: device
        required: false
        schema:
          type: string
      - description: Filter by speed
        in: query
        name: speed
        required: false
        schema:
          type: string
      - description: Filter by connection
        in: query
        name: connection
        required: false
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Port'
                type: array
          description: 'List of: Port'
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Some fields did not validate.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
                - 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
        '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
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
                - {}
          description: Authentication
        '403':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 403
                    title:
                      example: You do not have permission to perform this action.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/permission-denied.html
                      type: string
                  type: object
                - {}
          description: PermissionDenied
        '404':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 404
                    title:
                      example: Not found.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/not-found.html
                      type: string
                  type: object
                - {}
          description: NotFound
      tags:
      - ports
  /product-offerings:
    get:
      description: List all (filtered) products-offerings available on the platform
      operationId: product_offerings_list
      parameters:
      - description: Filter by id
        explode: false
        in: query
        name: id
        required: false
        schema:
          example: id1,id2,id3
          items:
            type: string
          type: array
        style: form
      - description: Filter by type
        in: query
        name: type
        required: false
        schema:
          enum:
          - connection
          - exchange_lan
          - p2p_vc
          - mp2mp_vc
          - p2mp_vc
          - cloud_vc
          type: string
      - description: Filter by resource_type
        in: query
        name: resource_type
        required: false
        schema:
          enum:
          - connection
          - port_reservation
          - network_service
          - network_service_config
          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: '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'
        '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: Filter by contact
        in: query
        name: contact
        required: false
        schema:
          type: string
      - description: Filter by role
        in: query
        name: role
        required: false
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/RoleAssignment'
                type: array
          description: 'List of: A role assignment for a contact'
        '400':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 400
                    title:
                      example: Some fields did not validate.
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/validation-error.html
                      type: string
                  type: object
                - 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: 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'
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
                - {}
          description: Authentication
      tags:
      - roles
  /roles/{id}:
    get:
      description: Get a single `Role`.
      operationId: roles_read
      parameters:
      - description: Get by id
        in: path
        name: id
        required: true
        schema:
          description: ''
          title: ''
          type: string
      - description: Filter by id
        explode: false
        in: query
        name: id
        required: false
        schema:
          example: id1,id2,id3
          items:
            type: string
          type: array
        style: form
      - description: Filter by name
        in: query
        name: name
        required: false
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Role'
          description: Role for a Contact
        '401':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemResponse'
                - properties:
                    status:
                      example: 401
                    title:
                      example: Authentication Credentials Invalid
                    type:
                      enum:
                      - https://errors.ix-api.net/v2/authentication-error.html
                      - https://errors.ix-api.net/v2/signature-expired.html
                      type: string
                  type: object
                - {}
          description: Authentication
      tags:
      - roles
security:
- 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: '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.'
  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
